INF1013 MODELAGEM DE SOFTWARE Departamento de Informática PUC-Rio Ivan Mathias Filho ivan@inf.puc-rio.br Programa Capítulo 1 O Paradigma Orientado a Objetos A Linguagem UML Descrição da Arquitetura 1
Programa Capítulo 1 O Paradigma Orientado a Objetos A Linguagem UML Descrição da Arquitetura O Paradigma da Orientação a Objetos (1) A Análise Orientada a Objetos enfatiza a descoberta e a descrição dos objetos de um domínio de aplicação; O Projeto Orientado a Objetos foca no mapeamento dos objetos de domínio para objetos de software. 2
O Paradigma da Orientação a Objetos (2) A modelagem orientada a objetos, usada em conjunto com alguma linguagem orientada a objetos, ajuda a diminuir o gap semântico entre os componentes de software e a concepção humana de um domínio de aplicação, facilitando, assim, a compreensão do design de um sistema. Programa Capítulo 1 O Paradigma Orientado a Objetos A Linguagem UML Descrição da Arquitetura 3
A Linguagem UML UML significa Unified Modeling Language; Tem por objetivo especificar, visualizar, construir e documentar artefatos de software; Aplicada em todas as etapas do ciclo de vida de software; Adequada à construção de modelos gráficos. A UML é uma Linguagem Uma linguagem fornece um vocabulário e regras para a combinação de palavras desse vocabulário, com o objetivo de comunicar algo; Uma linguagem de modelagem é uma linguagem cujo vocabulário e as regras têm seu foco voltado para a representação conceitual e física de sistemas; O vocabulário e as regras de uma linguagem de modelagem indicam como criar e ler modelos bem formados, mas não apontam quais modelos devem ser criados nem em que sequência. 4
A UML para Visualização e Especificação Facilita a construção de modelos visuais de sistemas, descrevendo detalhadamente a estrutura (parte estática ) e o comportamento (parte dinâmica); Fornece os símbolos gráficos para a representação de artefatos de software; Emprega símbolos com sintaxe e semântica bem definidas; Favorece a construção de modelos precisos, completos e sem ambiguidades. A UML para Construir Os modelos UML podem ser diretamente traduzidos para várias linguagens de programação; Isso significa que é possível mapear modelos UML para linguagens de programação tais como, Java, C++ e C#; Esse mapeamento permite a realização de uma engenharia de produção (geração de código) a partir de modelos UML; Permite reconstruir alguns modelos a partir do código fonte escrito em alguma linguagem de programação. Este processo inverso é chamado de engenharia reversa. 5
Suporte a Diferentes Tecnologias Interface com o usuário (Swing,.NET, HTML) Lógica do negócio (Java, C++, C#) Persistência (SQL, EJB, Hibernate) Projete o seu sistema independente da tecnologia de implementação Promoção da Reutilização Múltiplas Plataformas Componentes Reutilizáveis 6
A UML para Documentar Os requisitos do sistema; A arquitetura do sistema e todos os seus detalhes; As atividades de planejamento do projeto; As atividades de realização de testes; O gerenciamento de versões. As Vantagens da UML Padrão aberto e não proprietário (OMG); Independência de processo de desenvolvimento; Aplicável em todas as fases do ciclo de desenvolvimento; Independência de linguagem de programação; Integração das melhores práticas de modelagem; É uma linguagem extensível. 7
A História da UML (1) É o resultado da unificação das notações utilizadas nos métodos Booch, OMT (Object Modeling Technique) e OOSE (Object-Oriented Software Engineering); Adotada como linguagem padrão de modelagem por grande parte da indústria de software e por fornecedores de ferramentas CASE. A História da UML (2) 8
Programa Capítulo 1 O Paradigma Orientado a Objetos A Linguagem UML Descrição da Arquitetura Descrição da Arquitetura Diferentes participantes têm visões e interesses distintos em relação a um sistema; Eles trazem contribuições próprias em diferentes momentos ao longo do desenvolvimento; A descrição da arquitetura de um sistema deve permitir o gerenciamento adequado destes diferentes pontos de vista ao logo do ciclo de vida de um sistema. 9
O Que é Arquitetura? A arquitetura é o conjunto de decisões significativas sobre: A organização de um sistema de software; A seleção dos elementos estruturais que irão compor um sistema; O comportamento de um sistema, conforme especificado nas colaborações entre esses elementos; A decomposição desses elementos estruturais e comportamentais em subsistemas progressivamente maiores; O estilo arquitetural que orienta a organização desses elementos aspectos estáticos, dinâmicos, suas interfaces, colaborações e composições. Visões da Arquitetura A arquitetura de um sistema complexo pode ser adequadamente descrita através de cinco visões complementares: 10
Visão de Casos de Uso (1) Descreve um sistema do ponto de vista externo, através das interações entre esse sistema e os agentes externos a ele. Visão de Casos de Uso (2) Utiliza os seguintes recursos: Descrição textual Diagramas de casos de uso Diagramas de estados Diagramas de interações Diagramas de atividades 11
Visão de Projeto (1) Enfatiza as características de um sistema que dão suporte, tanto estrutural quanto comportamental, às funcionalidades externamente visíveis desse sistema. Visão de Projeto (2) Utiliza os seguintes recursos: Diagramas de classes Diagramas de interações Diagramas de estados 12
Visão de Processos (1) Mostra o fluxo de controle entre as várias partes, incluindo mecanismos de concorrência e sincronização. Essa visão cuida principalmente das questões referentes ao desempenho, à escalabilidade e ao throughput de um sistema. Visão de Processos (2) Utiliza os mesmos diagramas que a visão de projeto, mas com foco voltado para as classes ativas (processos ou threads) que controlam um sistema e as mensagens que passam por essas classes. 13
Visão de Implementação (1) Abrange o gerenciamento de versões de um sistema e dos componentes e artefatos utilizados para a montagem e distribuição do mesmo. Diz respeito também ao mapeamento dos componentes lógicos para os artefatos físicos. Visão de Implementação (2) Utiliza os seguintes recursos: Diagramas de componentes Diagramas de interações Diagramas de estados Diagramas de atividades 14
Visão de Implantação (1) Abrange os nós que formam a topologia do hardware em que um sistema será executado. Essa visão trata principalmente da distribuição, do fornecimento e da instalação dos componentes físicos de um sistema. Visão de Implantação (2) Utiliza os seguintes recursos: Diagramas de implantação Diagramas de interações Diagramas de estados Diagramas de atividades 15
Bibliografia (1) Bezerra, E. Princípios de Análise e Projeto de Sistemas com UML. 1ª edição, Campus, 2006. Larman, C. Utilizando UML e Padrões. 3ª edição, Bookman, 2007. Meyer, B. Object-Oriented Software Construction. 2nd edition, Prentice Hall PTR, 2000. Page-Jones, M. Practical Guide to Structured Systems Design. 2nd edition, Prentice Hall PTR, 1988. Bibliografia (2) Pressman, R.S. Software Engineering: A Practitioner's Approach. 5th edition. McGraw-Hill, 2003. 16
Exemplo Descrição de Caso de Uso Exemplo Diagrama de Casos de Uso 17
Exemplo Diagrama de Estados Exemplo Diagrama de Interação 18
Exemplo Diagrama de Atividades Exemplo Diagrama de Classes 19
Exemplo Diagrama de Atividades Exemplo Diagrama de Interação 20
Exemplo Diagrama de Componentes Exemplo Diagrama de Implantação 21