Engenharia de Software e Sistemas Danilo Veras e Rebeka Gomes.
Transcript of Engenharia de Software e Sistemas Danilo Veras e Rebeka Gomes.
![Page 1: Engenharia de Software e Sistemas Danilo Veras e Rebeka Gomes.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc142497959413d8df746/html5/thumbnails/1.jpg)
Engenharia de Software e Sistemas
Danilo Veras e Rebeka Gomes
![Page 2: Engenharia de Software e Sistemas Danilo Veras e Rebeka Gomes.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc142497959413d8df746/html5/thumbnails/2.jpg)
Agenda
2. Análise2. Análise
3. Projeto 3. Projeto
1. Revisão1. Revisão
4. Exercícios4. Exercícios
![Page 3: Engenharia de Software e Sistemas Danilo Veras e Rebeka Gomes.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc142497959413d8df746/html5/thumbnails/3.jpg)
REVISÃOREVISÃO
![Page 4: Engenharia de Software e Sistemas Danilo Veras e Rebeka Gomes.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc142497959413d8df746/html5/thumbnails/4.jpg)
Revisão
O que temos até agora: Fluxo principal de eventos; Modelo de Casos de Uso; Pre-condições; Pos-condições;
![Page 5: Engenharia de Software e Sistemas Danilo Veras e Rebeka Gomes.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc142497959413d8df746/html5/thumbnails/5.jpg)
Exemplos
[UC 01]: Cadastrar Produto
Ator CadastrarProduto
EfetuarLogin
<<include>>
![Page 6: Engenharia de Software e Sistemas Danilo Veras e Rebeka Gomes.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc142497959413d8df746/html5/thumbnails/6.jpg)
Exemplos
[UC 01]: Cadastrar Produto Fluxo Principal
<<include>> [UC 02: Efetuar Login] O ator preenche todas informações necessárias
ao novo produto e confirma a operação; O sistema verifica se o produto não existe. Caso
não, o produto é adicionado ao sistema; O ator é informado do sucesso da informação.
Fluxo Alternativo: Produto Existente [Passo 3 do FP]: Se acusar que o produto já
existe, o ator é informado, e dessa forma, não pode ser adicionado novamente.
![Page 7: Engenharia de Software e Sistemas Danilo Veras e Rebeka Gomes.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc142497959413d8df746/html5/thumbnails/7.jpg)
Exemplos
[UC 02]: Efetuar Login Fluxo Principal
O ator preenche as informações necessárias (login/senha, por exemplo) e confirma a transação;
O sistema verifica a existência de um usuário com aquele respectivo conjunto de informações. Caso exista, o ator tem acesso à tela principal do sistema.
Fluxo Alternativo: Usuário Inexistente [Passo 2 do FP]: Se não existir um usuário com
tais informações, o ator é informado do erro e da impossibilidade de obter acesso ao sistema.
![Page 8: Engenharia de Software e Sistemas Danilo Veras e Rebeka Gomes.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc142497959413d8df746/html5/thumbnails/8.jpg)
AnáliseAnálise
![Page 9: Engenharia de Software e Sistemas Danilo Veras e Rebeka Gomes.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc142497959413d8df746/html5/thumbnails/9.jpg)
Análise
Visão estática do sistema Cada caso de uso deve ser analisado
isoladamente Encontrar as classes iniciais do sistema e
distribuir o comportamento dos casos de uso entre elas
Cada classe tem suas responsabilidades, atributos e associações
![Page 10: Engenharia de Software e Sistemas Danilo Veras e Rebeka Gomes.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc142497959413d8df746/html5/thumbnails/10.jpg)
Para cada caso de uso: Encontrar classes de análise Identificar persistências
Para cada classe: Distribuir comportamento entre elas Descrever responsabilidades Descrever atributos e associações
Revisar resultados.
Diagrama de Classes
![Page 11: Engenharia de Software e Sistemas Danilo Veras e Rebeka Gomes.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc142497959413d8df746/html5/thumbnails/11.jpg)
O comportamento do caso de uso é distribuído em classes de análise dos seguintes tipos (estereótipos): Fronteira Controle Entidade
Utilizado apenas como convenções, devem sumir na fase de projeto.
Diagrama de Classes
![Page 12: Engenharia de Software e Sistemas Danilo Veras e Rebeka Gomes.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc142497959413d8df746/html5/thumbnails/12.jpg)
Fronteira
Modelam uma interação entre o sistema e um ator.
Esteriótipo <<boundary>>
FronteiraCadastrarProduto<<boundary>>
[UC 01]
Ator CadastrarProduto
![Page 13: Engenharia de Software e Sistemas Danilo Veras e Rebeka Gomes.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc142497959413d8df746/html5/thumbnails/13.jpg)
Entidade
Representam abstrações e conceitos chave dos casos de uso.
Identificando Entidades: Identificar substantivos no fluxo de eventos; Remover candidatos redundantes e vagos; Remover atores que apenas interagem com o
sistema mas não fazem parte da modelagem; Remover atributos (serão usados mais tarde)
e operações.
Esteriótipo <<entity>>
![Page 14: Engenharia de Software e Sistemas Danilo Veras e Rebeka Gomes.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc142497959413d8df746/html5/thumbnails/14.jpg)
Entidade
[UC 01]: Cadastrar Produto
[UC 02]: Efetuar Login
EntidadeAtor<<entity>>
EntidadeAtor<<entity>>
EntidadeProduto<<entity>>
![Page 15: Engenharia de Software e Sistemas Danilo Veras e Rebeka Gomes.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc142497959413d8df746/html5/thumbnails/15.jpg)
Controle
Coordenam o comportamento (lógica de controle) do caso de uso;
Interface entre fronteira e entidade. Esteriótipo <<control>>
Ator CadastrarProduto
EfetuarLogin
<<include>>
ControladorLogin<<control>>
ControladorCadastrarProduto<<control>>
![Page 16: Engenharia de Software e Sistemas Danilo Veras e Rebeka Gomes.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc142497959413d8df746/html5/thumbnails/16.jpg)
Persistência
Identificar as classes de entidade que devem ser persistentes,e para cada uma criar uma nova classe
Esteriótipo << Entity Collection >> [UC 01]: Cadastrar Produto
[UC 02]: Efetuar Login
EntidadeAtor<<entity>>
ColecaoAtor<<entity collection>>
EntidadeAtor<<entity>>
EntidadeProduto<<entity>>
ColecaoProdutos<<entity collection>>
ColecaoAtor<<entity collection>>
![Page 17: Engenharia de Software e Sistemas Danilo Veras e Rebeka Gomes.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc142497959413d8df746/html5/thumbnails/17.jpg)
Diagrama de Seqüências
É utilizado para representar aspectos dinâmicos do sistema através da troca de mensagens entre objetos.
É construído para cada caso de uso, utilizando seu respectivo fluxo de evento e classes de análise.
Os objetos trocam mensagens entre si para assim, realizar o caso de uso.
![Page 18: Engenharia de Software e Sistemas Danilo Veras e Rebeka Gomes.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc142497959413d8df746/html5/thumbnails/18.jpg)
Diagrama de Seqüências
[UC 01: Cadastrar Produto]
![Page 19: Engenharia de Software e Sistemas Danilo Veras e Rebeka Gomes.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc142497959413d8df746/html5/thumbnails/19.jpg)
Diagrama de Seqüências
[UC 02: Efetuar Login]
Poderia reportar um erro também!
![Page 20: Engenharia de Software e Sistemas Danilo Veras e Rebeka Gomes.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc142497959413d8df746/html5/thumbnails/20.jpg)
Diagrama de Classes
Já podemos identificar os relacionamentos, os métodos e os atributos das classes:
Cada iteração no diagrama de seqüência corresponde a um relacionamento no diagrama de classe
ControladorLogin<<control>>
FronteiraLogin<<boundary>>
![Page 21: Engenharia de Software e Sistemas Danilo Veras e Rebeka Gomes.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc142497959413d8df746/html5/thumbnails/21.jpg)
Relacionamentos
Associação
ControladorLogin<<control>>
FronteiraLogin<<boundary>>
Agregação X Composição Dependência
![Page 22: Engenharia de Software e Sistemas Danilo Veras e Rebeka Gomes.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc142497959413d8df746/html5/thumbnails/22.jpg)
Diagrama de Classes
Os métodos são identificados através do diagrama de seqüência;
Podemos identificar os atributos mais ainda não podemos identificar o tipo deles
![Page 23: Engenharia de Software e Sistemas Danilo Veras e Rebeka Gomes.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc142497959413d8df746/html5/thumbnails/23.jpg)
Diagrama de Classes
ControladorLogin<<control>>
FronteiraLogin<<boundary>>
EntidadeAtor<<entity>>
ColeçãoAtor<<entity collection>>
ColeçãoProduto<<entity collection>>
ControladorCadastrarProduto<<control>>
EntidadeProduto<<entity>>
FronteiraCadastrarProduto<<boundary>>[UC 01] [UC 02]
•Faltam os métodos e os atributos!!!
![Page 24: Engenharia de Software e Sistemas Danilo Veras e Rebeka Gomes.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc142497959413d8df746/html5/thumbnails/24.jpg)
ProjetoProjeto
![Page 25: Engenharia de Software e Sistemas Danilo Veras e Rebeka Gomes.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc142497959413d8df746/html5/thumbnails/25.jpg)
•Mais concreto do que o modelo de análise
•Depende da tecnologia de implementação
•Unificação em um único modelo
•Definição da arquitetura do sistema
•Proposição de padrões de projeto
•Projetar arquitetura
•Projetar Banco de Dados
Modelo de Projeto
![Page 26: Engenharia de Software e Sistemas Danilo Veras e Rebeka Gomes.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc142497959413d8df746/html5/thumbnails/26.jpg)
• Agrupar todas as classes de análise em um único diagrama
• Identificar redundância
• Criar ou remover classes
• Identificar interfaces entre os grupos maiores
Refinamento
![Page 27: Engenharia de Software e Sistemas Danilo Veras e Rebeka Gomes.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc142497959413d8df746/html5/thumbnails/27.jpg)
•Adicionar modificadores de visibilidade aos métodos e atributos
• Definir os tipos dos atributos
• Definir o tipo do retorno e dos parâmetro dos métodos
• Identificar padrões de projeto
Refinamento
![Page 28: Engenharia de Software e Sistemas Danilo Veras e Rebeka Gomes.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc142497959413d8df746/html5/thumbnails/28.jpg)
• Dividir o sistema em camadas
• A mais comum:
Arquitetura
Apresentação
Negócio
Dados
Comunicação
•Utilizar pacotes para organizar as classes em grupo
![Page 29: Engenharia de Software e Sistemas Danilo Veras e Rebeka Gomes.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc142497959413d8df746/html5/thumbnails/29.jpg)
Diagrama de Classes – Modelo de Projeto
![Page 30: Engenharia de Software e Sistemas Danilo Veras e Rebeka Gomes.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc142497959413d8df746/html5/thumbnails/30.jpg)
Perguntas