Prévia do material em texto
<p>Área: Informática</p><p>Subárea: Engenharia de Software I</p><p>Aula 03</p><p>Prof. Matheus Ben Hur Guterres de Souza</p><p>Introdução</p><p>● Em nossa terceira aula, falaremos sobre a modelagem de software,</p><p>desde os primeiros tipos de diagramas e modelos até a atual</p><p>linguagem unificada de modelagem de sistemas. Veremos também</p><p>sobre os aspectos dinâmicos e estáticos no processo de modelagem de</p><p>software.</p><p>Modelagem de Software - Aspectos Essenciais</p><p>● Entende-se por método o caminho a ser percorrido através de</p><p>etapas, aplicando-se um conjunto de técnicas, permitindo a</p><p>construção de um software eficiente e seguro. Métodos sempre</p><p>envolvem tarefas tais como:</p><p>1) Planejamento do Projeto;</p><p>2) Análise de Requisitos;</p><p>3) Projeto de Estruturas de Dados, Arquitetura e Algoritmos;</p><p>4) Codificação, Teste e Manutenção;</p><p>Tipos de Modelagem de Software</p><p>● Estruturado - Possui uma visão</p><p>macro e parte-se de um marco</p><p>zero para enxergar a totalidade.</p><p>Outras características de um</p><p>modelo estruturado é possuir</p><p>características top-down,</p><p>modelagem de banco de dados e</p><p>de processos.</p><p>Tipos de Modelagem de Software - MER</p><p>Tipos de Modelagem de Software - Diagrama de Estados</p><p>Tipos de Modelagem de Software - Fluxograma</p><p>Tipos de Modelagem de Software - Dicionário de Dados</p><p>Tipos de Modelagem de Software - Pseudo-código</p><p>Tipos de Modelagem de Software - Essencial</p><p>● O modelo essencial de sistemas surgiu em decorrência do grande</p><p>número de diagramas e documentação que a modelagem estruturada</p><p>demandava. Este modelo tenta utilizar o mínimo possível de diagramas</p><p>e que possuam uma manutenção efetiva.</p><p>Tipos de Modelagem de Software - OO</p><p>● Orientado a objetos: A UML é composta por diagramas derivados das</p><p>metodologias de Rumbaugh, Coad e Booch. Utiliza-se da abstração de</p><p>objetos da realidade mapeados para os sistemas. Possui uma</p><p>organização que mantém as especificações de seus diagramas (OMG –</p><p>Object Managment Group).</p><p>Object Management Group – Wikipédia, a enciclopédia livre</p><p>(wikipedia.org)</p><p>https://pt.wikipedia.org/wiki/Object_Management_Group</p><p>https://pt.wikipedia.org/wiki/Object_Management_Group</p><p>Modelagem de Software - UML</p><p>Modelagem de Software - UML</p><p>● A linguagem de modelagem unificada é muito mais difundida e</p><p>utilizada com efetividade que os modelos anteriores por conseguir</p><p>representar conceitos reais através de objetos representados em uma</p><p>linguagem visual. Sua principal característica, quando utilizada no</p><p>nível de análise de requisitos, é ser independente de linguagem de</p><p>programação e processo de desenvolvimento.</p><p>Modelagem de Software - UML</p><p>● A UML trabalha com as visões</p><p>de:</p><p>● Casos de uso;</p><p>● Projeto;</p><p>● Implementação;</p><p>● Implantação;</p><p>● Processo.</p><p>Modelagem de Software - UML</p><p>Possibilita a construção de</p><p>modelos comportamentais, que</p><p>representam as funcionalidades</p><p>do sistema, além dos modelos</p><p>estáticos, que mapeiam classes,</p><p>objetos e relacionamentos do</p><p>sistema.</p><p>Modelagem de Software - Casos de Uso</p><p>● Estes diagramas representam as funcionalidades externas observáveis</p><p>do sistema e de elementos que interajam com o sistema. Sua</p><p>concepção ocorreu em 1970 por Ivar Jacobson, o qual trabalhava na</p><p>Ericson como engenheiro. O diagrama foi incorporado à UML</p><p>juntamente com os diagramas de Rumbaugh e Booch. Ele direciona o</p><p>restante do ciclo de vida do sistema. Sua modelagem é centrada no</p><p>usuário. Representa quem faz o que com o sistema, sem considerar o</p><p>comportamento interno do sistema.</p><p>Modelagem de Software - Casos de Uso</p><p>Modelagem de Software - Casos de Uso</p><p>Este diagrama:</p><p>● Descreve o que acontece dentro</p><p>do sistema;</p><p>● Ajuda na comunicação entre</p><p>Stakeholders e desenvolvedores;</p><p>● Demonstra as funcionalidades do</p><p>sistema;</p><p>● Captura o comportamento do</p><p>sistema.</p><p>O que especificar:</p><p>● Identificador do caso de uso;</p><p>● Breve descrição;</p><p>● Ator;</p><p>● Prioridade;</p><p>● Requisitos não funcionais</p><p>associados;</p><p>● Precondições;</p><p>● Pós condições;</p><p>● Fluxo de eventos principal;</p><p>Modelagem de Software - Casos de Uso</p><p>Modelagem de Software - Classes (Estático)</p><p>Diagrama de Classes</p><p>● Este diagrama permite a compreensão da estrutura interna para que as</p><p>funcionalidades externas sejam produzidas. É um modelo estático</p><p>porque demonstra a estrutura das classes de objetos e as relações entre</p><p>as mesmas;</p><p>Tipos de Diagramas de Classes</p><p>● Domínio: Representa classes do domínio do negócio. Construído na</p><p>fase de análise.</p><p>Modelagem de Software - Classes (Estático)</p><p>Tipos de Diagrama de Classes</p><p>● Especificação: Extensão do modelo de domínio;</p><p>● Adição de detalhes específicos à solução escolhida. Construído no</p><p>projeto;</p><p>● Implementação: Extensão do modelo de especificação;</p><p>● Classes já descritas na linguagem de programação;</p><p>● Construído na implementação do software;</p><p>Elementos importantes:</p><p>● Classe</p><p>● Atributo</p><p>● Método</p><p>● Relacionamento</p><p>Modelagem de Software - Classes (Estático)</p><p>Podem ser dirigidos por dados:</p><p>Ênfase na identificação da estrutura dos</p><p>conceitos relevantes. Ou dirigidos por</p><p>responsabilidades: identificado nas</p><p>responsabilidades que cada classe deve ter</p><p>dentro do sistema.</p><p>Elementos importantes:</p><p>● Classe - Representa um objeto ou um conjunto de objetos que</p><p>compartilham uma estrutura e um comportamento comum;</p><p>● Atributo - São as propriedades de um objeto;</p><p>● Método - São as ações que um objeto pode realizar;</p><p>● Relacionamento - São as ligações entre os elementos;</p><p>Modelagem de Software - Classes (Estático)</p><p>Elementos importantes:</p><p>● Classe</p><p>● Atributo</p><p>● Método</p><p>● Relacionamento</p><p>Modelagem de Software - Classes (Estático)</p><p>Qualificadores:</p><p>● Protegido - Significa que, além dos objetos da classe, os métodos de</p><p>suas subclasses também poderão enxergá-lo;</p><p>● Privado - Significa que apenas os objetos da classe poderão enxergá-lo;</p><p>● Pública - Significa que a classe pode ser utilizada por qualquer objeto;</p><p>Modelagem de Software - Classes (Estático)</p><p>● Associação - Descreve um vínculo entre as classes;</p><p>Modelagem de Software - Relacionamentos</p><p>● Agregação - Tipo especial de associação;</p><p>● Demonstra que as informações de um objeto precisam ser</p><p>complementadas por um objeto de outra classe;</p><p>○ objeto-todo;</p><p>○ objeto-parte;</p><p>Modelagem de Software - Relacionamentos</p><p>● Composição - Uma variação do tipo agregação;</p><p>● Representa um vínculo mais forte entre objetos-todo e objetos-parte;</p><p>● Objetos-parte têm que pertencer ao objeto-todo;</p><p>○ O todo não existe sem as partes;</p><p>○ As partes não existem sem o todo;</p><p>Modelagem de Software - Relacionamentos</p><p>● Generalização / Especialização - Identificar superclasses (geral) ou</p><p>(classe-mãe) e subclasses (especializadas) ou (classe-filha);</p><p>Modelagem de Software - Relacionamentos</p><p>● Herança - Ela permite que classes compartilhem atributos e métodos</p><p>através de hierarquia de classes;</p><p>● Uma subclasse herda os atributos e operações da superclasse e pode</p><p>adicionar novos métodos;</p><p>● Vantagens da Herança -</p><p>○ Fonte de conhecimento sobre o domínio do sistema;</p><p>○ Mecanismo de abstração usado para classificar entidades;</p><p>○ Mecanismo de reutilização em vários níveis;</p><p>Modelagem de Software - Relacionamentos</p><p>● Desvantagens da Herança -</p><p>○ Uma subclasse pode herdar métodos que ela não necessita ou</p><p>que não deveria ter;</p><p>Modelagem de Software - Relacionamentos</p><p>● Dependência - Como o nome sugere, indica um grau de dependência</p><p>entre uma classe e outra;</p><p>● Uma dependência difere de uma associação porque a conexão entre</p><p>as classes é temporária;</p><p>● Representada por uma seta tracejada entre duas classes;</p><p>Modelagem de Software - Relacionamentos</p><p>Referências de Apoio</p><p>● BOOCH, Grady; RUMBAUGH, James; JACOBSON, Ivar. UML</p><p>Guia do Usuário. Editora Campus.</p><p>● GUEDES, Gilleanes. UML Uma Abordagem Prática. Editora</p><p>Novatec. São Paulo, 2007.</p>