Linguagem de Modelagem Unificada A UML é uma linguagem para visualização especificação construção documentação de artefatos de um sistema com uma componente intensiva de software (software intensive system) UML não é uma metodologia não diz quem deve fazer o quê, quando e como UML pode ser usado segundo diferentes metodologias, tais como RUP (Rational Unified Process), FDD (Feature Driven Development), etc. UML não é uma linguagem de programação Estes slides estão baseados em material disponível na internet pela Rational Software. Foi utilizada tradução de João Pascoal Faria, Univ. do Porto
Histórico UML public feedback Minor revisions UML 2.1, 2007 Major revision UML 2.0, 2003 Minor revisions 1.3, 1.4, 1.5 OMG Acceptance, Nov 1997 Final submission to OMG, Sep 97 First submission to OMG, Jan 97 UML partners UML 2.0, 2.1 UML 1.3, 1.4, 1.5 UML 1.1 UML 1.0 Web - June 96 UML 0.9 OOPSLA 95 Unified Method 0.8 Other methods Booch method OMT OOSE
Unificação de métodos e formalismos Rumbaugh OMT Booch Booch method Meyer Before and after conditions Harel Statecharts Gamma, et al Frameworks and patterns, HP Fusion Operation descriptions and message numbering Embley Singleton classes and high-level view Jacobson OOSE Shlaer - Mellor Object lifecycles Odell Classification Wirfs-Brock Responsibilities
Vantagens da UML É um padrão aberto versão 1.1 aprovada pelo OMG (Object Management Group) em Novembro de 1997 Suporta todo o ciclo de vida do software modelagem do negócio (processos e objetos do negócio) modelagem de requisitos alocados ao software modelagem da solução de software Suporta diversas áreas de aplicação É baseada na experiência e necessidades da comunidade de usuários É suportada por muitas ferramentas
Parceiros UML Rational Software Corporation Hewlett-Packard I-Logix IBM ICON Computing Intellicorp MCI Systemhouse Microsoft ObjecTime Oracle Platinum Technology Taskon Texas Instruments/Sterling Software Unisys
Modelos, Diagramas e Visões (1.x) Use Case Use Case Diagramas de Sequência Use Case Use Case Diagramas de Casos de Uso State State Diagramas de Classes State State Diagramas de Objetos Scenario Scenario Diagramas de Colaboração Modelos State State Diagramas de Componentes Scenario Scenario Diagramas de Estados Diagramas de Atividades Component Component Diagramas de Implantação Um modelo é uma descrição completa de um sistema a partir de uma perspectiva particular.
Exemplo básico Hello World! import java.awt.graphics; class HelloWorld extends java.applet.applet { public void paint (Graphics g) { g.drawstring("hello, World!", 10, 10); } }
Modelos, Diagramas, Visões e Elementos (1) Um modelo é uma representação em pequena escala, numa perspectiva particular, de um sistema existente ou a criar Ao longo do ciclo de vida de um sistema são construídos vários modelos, sucessivamente refinados e enriquecidos Um modelo é constituído por um conjunto de diagramas (desenhos) consistentes entre si, acompanhados de descrições textuais dos elementos que aparecem nos vários diagramas
Modelos, Diagramas, Visões e Elementos (2) Um diagrama é uma visão sobre um modelo De acordo com o interesse de uma das partes envolvidas (stakeholder) Proporciona uma representação parcial do sistema Deve ser semanticamente consistente com outras visões Na UML 1.5, há 9 diagramas padrões e 3 de organização Diagramas de visão estática: casos de uso (use case), classes, objetos, componentes, implantação (deployment) Diagramas de visão dinâmica: sequência, colaboração, estados (statechart), actividades Diagramas de organização: pacotes, subsistemas e modelos O mesmo elemento (exemplo: classe) pode aparecer em vários diagramas de um modelo
Diferentes Visões Visão de Design Visão de implementação Classes, interfaces, collaborations Use cases Use Case View Components Visão de Processo Visão de implantação Active classes Nodes Organização Comportamento
Diagramas na UML 2.x Diagrama UML Diagrama Estrutural Diagrama de Classe Diagrama de Objetos Diagrama Comportamental Diagrama de Casos de Uso Diagrama de Atividades Diagrama de Componentes Diagrama de Implantação Diagrama de Pacotes Diagrama de Estruturas Compostas Diagrama de Máquinas de Estados Diagrama de Interação Diagrama de Seqüência Diagrama de Comunicação Diagrama de Visão Geral de Interação Diagrama de Temporização
Elementos de Modelagem (1) Elementos estruturais classe, interface, colaboração, caso de uso, classe ativa, componente, nó Elementos de comportamento interação, máquina de estados Elementos de agrupamento pacote (package), subsistema Outros elementos nota Fonte: Grady Booch
Elementos de Modelagem (2) Relações Dependência Associação Generalização Realização (realization) Fonte: Grady Booch Mecanismos de extensibilidade Estereótipos Propriedades (tagged values) Restrições (constraints) Fonte: Grady Booch
Diagrama de Casos de Uso (Use Case Diagram) Captura a funcionalidade do sistema tal como é visto pelos utilizadores Construído nos primeiros estágios do desenvolvimento Objetivo Especificar o contexto de um sistema Capturar os requisitos funcionais de um sistema Validar a arquitetura de um sistema Dirigir a implementação e gerar casos de teste Desenvolvido por analistas e especialistas de domínio
Diagrama de Casos de Uso (Use Case Diagram) Fonte: Grady Booch
Diagrama de Classes Captura o vocabulário de um sistema Construído e refinado ao longo do desenvolvimento Objetivo Nomear e modelar conceitos do domínio Especificar esquemas lógicos de bases de dados Especificar programas OO Desenvolvido por analistas, designers e implementadores
Diagrama de Objetos Mostra objetos (instâncias de classes) e ligações (instâncias de associações) Construído durante a análise e design Objetivo Ilustrar estruturas de dados/objetos Especificar instantâneos (snapshots) Desenvolvido por analistas, designers e implementadores
Diagrama de Componentes Captura a estrutura física da implementação (tipicamente arquivos) Construído como parte da especificação da arquitetura Objetivo Organizar o código fonte Construir uma release executável Especificar uma base de dados física Desenvolvido por arquitetos e programadores
Diagrama de Implantação (Deployment Diagram) Captura a topologia do hardware de um sistema Construído como parte da especificação da arquitetura Objetivo Especificar a distribuição de componentes Identificar estrangulamentos de desempenho Desenvolvido por arquitetos, engenheiros de redes, e engenheiros de sistemas
Diagrama de Sequência Captura comportamento dinâmico (orientado ao tempo) Objetivo Modelar fluxos de controle Ilustrar cenários típicos
Diagrama de Colaboração Captura comportamento dinâmico (orientado a mensagens) Objetivo Modelar fluxo de controle Ilustrar a coordenação entre estrutura de objetos e controle
Diagrama de Estados (Statechart Diagram) Captura comportamento dinâmico (orientado a eventos) Objetivo Modelar ciclo de vida de objetos Modelar objetos reativos (interfaces com o utilizador, dispositivos, etc.)
Diagrama de Actividades Captura comportamento dinâmico (orientado a atividades) Objetivo Modelar processos de negócio e workflows Modelar operações (algoritmos)