Análise e Projeto de Software Parte II. Marcos Dósea

Documentos relacionados
Realizando a Análise e Projeto

Engenharia de Software Orientada a objetos. Prof. Rogério Celestino dos Santos

Requisitos de sistemas

Interações entre objetos

Analisar Caso de Uso

Análise Orientada a Objetos. Análise e Projeto

Introdução Diagrama de Classes Diagrama de Seqüência Diagrama de Atividades. Diagramas UML. Classe, Seqüência e Atividades. Marcio E. F.

Análise e Projeto de Software Parte I. Marcos Dósea

Desenvolvimento de Sistemas Orientados a Objetos com UML UP/RUP: Projeto

PROJETO DE ARQUITETURA

Diagrama de Classes. Régis Patrick Silva Simão. Régis Simão Diagrama de Classes 1/42

PCS3413 Engenharia de Software e Banco de Dados

PROJETO ARQUITETURAL PARTE II: PADRÕES DE PROJETO. Projeto de Programas PPR0001

Análise e Projeto em SOA (Service Oriented Architecture)

Visões Arquiteturais. Visões Arquiteturais

15/04/2013. Pensar Orientado a Objetos. Projeto Orientado a Objetos. Características de Objetos. Classe de Objetos. Comunicação entre Objetos

Modelos. Banco de dados. Professor: Jarbas Araújo CENTRO EDUCACIONAL RADIER.

DMS - DOCUMENTO DE MODELAGEM DE SISTEMA VERSÃO: [NOME DO SISTEMA] [SIGLA] [AUTORES]

Modelagem Orientada a Objetos

Análise e Projeto no RUP

Análise e Projeto no RUP

RUP RATIONAL UNIFIED PROCESS PRÁTICAS RECOMENDADAS. Prof. Fabiano Papaiz IFRN

4 Processo de Transformação

PROJETO DE DESENVOLVIMENTO DE SOFTWARE

Introdução. Conceitos Básicos. Conceitos Básicos. Conceitos Básicos

Visões Arquiteturais. Arquitetura de Software Thaís Batista

Levantamento de classes (Análise de casos de uso)

Introdução. Conceitos Básicos. Conceitos Básicos. Conceitos Básicos

Ferramenta MVCASE - Estágio Atual: Especificação, Projeto e Construção de Componentes

Modelagem de Casos de Uso (Parte 1)

Desenvolvimento de Aplicações Desktop

Tarciane Andrade.

MER e DER Entidades Relacionamentos Atributos Ferramentas CASE Exemplos de DERs Exemplo de Minimundo. Banco de Dados. Aula 1.

Agenda da Aula. Arquitetura de Software e Padrões Arquiteturais. Elementos de um Padrão. Arquitetura de Software. Arquitetura de Software

Técnicas de Identificação

Engenharia de Domínio e Desenvolvimento Baseado em Componentes. Processo DBC-Arch-DE Apoio do Ambiente Odyssey no Processo Considerações Finais

FORMULÁRIO DE REGISTRO DE PLANO DE CURSO 2013.I

Arquitetura de software

UML (Linguagem Modelagem Unificada) João Paulo Q. dos Santos

Modelagem Estática e Dinâmica: Estudo de Caso - Sistema de Caixa Automático

Modelagem de Sistemas. Análise de Requisitos. Modelagem

Banco de Dados I Curso: Sistemas de Informação

Levantamento de classes (Análise de casos de uso) Prof. Cesar Augusto Tacla

Introdução. Conceitos Básicos. Conceitos Básicos. Conceitos Básicos

Visões Arquiteturais. Visões Arquiteturais. Visões Arquiteturais. Visão Conceitual

Metodologias de Desenvolvimento (I)

PROJETO DE PROGRAMAS. Projeto de Programas PPR0001

EA975 - Laboratório de Engenharia de Software

Estilos Arquiteturais

Tópicos da Aula. Diretrizes Gerais. Trabalho Prático (TP) Pontuação do TP. Tema do Trabalho. Projeto de Software Diagrama de Classes

Rational Unified Process (RUP)

Processo de Desenvolvimento

Desenvolvimento de Software Baseado em Componentes. Paulo C. Masiero

Análise de Sistemas 4º Bimestre (material 3)

Engenharia de Software II

5 Processo de Reificação e de Desenvolvimento com ACCA

Engenharia de Software. Projeto de Arquitetura

PROJETO DE PROGRAMAS. Projeto de Programas PPR0001

BCD29008 Banco de dados

DESENVOLVIMENTO BASEADO EM COMPONENTES

Modelagem Dinâmica. Toda a ação é designada em termos do fim que procura atingir. Niccolo Maquiavel. O pensamento é o ensaio da ação.

Matéria Introdutória. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

Como Fazer Diagramas de Interação

RUP Unified Process. Profª Jocelma Rios

Análise e Projeto Orientados a Objetos

Banco de Dados. SGBD - Sistema de Gerenciamento de Banco de Dados Parte 2. Prof. Leonardo Vasconcelos

Programação para Games II. Professor Ariel da Silva Dias Orientação a Objetos

Universidade Federal de Uberlândia Faculdade de Computação Prof. Fabiano Dorça. Introdução. Padrões de projeto

Curso de Sistemas de Informação. Karla Donato Fook DESU / DComp. Modelagem de Dados UML

Modelagem semântica permite aproximar o modelo obtido do mundo real Exemplo de modelos:

Modelagem de Dados e Funcional Portal XPRecife

Campus Capivari Análise e Desenvolvimento de Sistemas (ADS) Prof. André Luís Belini /

MATA60 BANCO DE DADOS Aula 3- Modelo de Entidades e Relacionamentos. Prof. Daniela Barreiro Claro

MODELAGEM DE DADOS UNIDADE 2 Projeto de Banco de Dados. Luiz Leão

FUNDAÇÃO UNIVERSIDADE ESTADUAL DE MARINGÁ

PROJETO DE BANCO DE DADOS

Lista de Exercícios AV1

Análise. Orientada a Objetos Modelo Funcional, Modelo Estrutural e Modelo Comportamental. Linguagens: Java, C++, etc.

A modelagem de Negócio com UML

Classes de Projeto. Prof. Anderson Cavalcanti UFRN-CT-DCA

EA975 - Laboratório de Engenharia de Software

IFSC/Florianópolis - CTI - Projeto de Sistemas - prof. Herval Daminelli

Processos de Software

PROJETO DE ARQUITETURA (PARTE 2)

Arquitetura de Software visão emergente

Desenvolvimento de Software Baseado em Componentes. Paulo C. Masiero

Introdução ao POO (Projeto Orientado a Objetos)

Agenda da Aula. Reuso de Software. Tipos de Reuso. Potenciais Problemas. Vantagens de Reuso. Introdução a Reuso de Software

Modelagem de Casos de Uso (Parte 2)

Banco de Dados Modelagem e Normalização

Aula 13 Modelagem da Arquitetura

Análise e Projeto de Sistemas

Padrões de Projeto de Software

2 Fluxos no Ciclo de Vida do Processo Unificado. O Processo Unificado consiste da repetição de uma série de ciclos durante a vida de um sistema.

Documento de Especificação de Requisitos

Unidade 2 Modelo Conceitual

15/04/2013. Outro Diagrama de Classes. Primeiro Diagrama de Classes. Diagrama de Classes. Atributos. Eduardo Figueiredo

ANHANGUERA ESTRUTURA DE DADOS AULA 02 O QUE É ESTRUTURA DE DADOS? Prof. Thomás da Costa

27) Em relação aos Projetos de Sistemas de Software, assinale a sequência correta de desenvolvimento de um sistema:

Transcrição:

Análise e Projeto de Software Parte II Marcos Dósea marcosdosea@gmail.com

Agenda Aula III Análise de Software Orientado à Objetos

Motivação Marcos Dósea marcosdosea@gmail.com

O que é análise e projeto?

Qual a importância?

Por onde começar? Visão do Sistema Modelagem de Negócio Requisitos Análise Projeto Implementação

Análise de Software Orientada a Objetos Marcos Dósea marcosdosea@gmail.com

Agenda Introdução Analisar Caso de Uso

Onde estamos? Introdução

Introdução Análise x Projeto Análise Foco no problema Comportamento caixa preta Estrutura geral da arquitetura do sistema Requisitos Funcionais Modelo simples Projeto Foco na solução Detalha operações e atributos dos objetos Representação próxima do código. Requisitos Funcionais e Não Funcionais Modelo complexo.

Introdução O que faremos? Análisar o Software

Introdução Arquiteto Projetar arquitetura Revisor do projeto Projetar subsistema Projetista Analisar caso de uso Projetar caso de uso Projetar classes Revisar projeto Projetista de banco de dados Projetar base de dados

Analisar Caso de Uso 1) Identificar as Classes de Análise 2) Identificar Persistência 3) Identificar Responsabilidades das Classes 4) Identificar Atributos e Relacionamentos

1) Identificar as Classes de Análise Para cada Caso de Uso são identificadas os três tipos de classe de análise: Fronteira: modela iteração entre ator e sistema. Entidade: Modela a informação manipulada pelo sistema. Conceito análogo ao modelo ER. Controle: Controla o fluxo de execução do caso de uso.

1) Identificar as Classes de Exemplo Análise

1) Identificar as Classes de Análise Como encontrar? Classes de Fronteira? Classes de Controle? Classes de Entidade?

1) Identificar as Classes de Análise Classes de Fronteira Regra: Uma classe para cada interação entre ator e um caso de uso. Devolver Livro Usuário TelaDevolverLivro

1) Identificar as Classes de Classe de Controle Análise Regra: Uma classe de controle para cada caso de uso. Quando muito simples pode-se utilizar uma única classe de controle para vários casos de uso. Outra possibilidade é usar uma classe de controle por entidade manipulada.

1) Identificar as Classes de Classe de Controle Análise Devolver Livro Usuário ou ou ControladorDevolucao ControladorBiblioteca ControladorLivro

1) Identificar as Classes de Classe de Entidade Análise Regra: Abordagem tradicional de filtrar substantivos. Ex: Objetos Físicos ou tangíveis, Lugares, Papéis de Pessoas, Eventos, etc. Balconista Livro Usuario Emprestimo

1) Identificar as Classes de Análise Classe de Entidade Passo a Passo Identifique substantivos nas fontes de informação (modelo de negócio, casos de uso, glossário, etc.). Remova candidatos redundantes e vagos. Remova atores que apenas interagem com o sistema mas não participam da modelagem. Remova atributos (serão pensados mais tarde) e operações (devem ficar na classe controladora).

Analisar Caso de Uso 1) Identificar as Classes de Análise 2) Identificar Persistência 3) Identificar Responsabilidades das Classes 4) Identificar Atributos e Relacionamentos

2) Identificar Persistência Identifica entre as classe de análise do tipo entidade aquelas que deverão ser persistidas. Classes persistentes são aquelas cujos atributos devem ser armazenados em meio não volátil (Ex: SGBD). Para cada classes persistente criar uma classe de cadastro usando o esteriótipo <<entity collection>>

2) Identificar Persistência Classes de Entidade Persistentes Livro Usuario Balconista Emprestimo <<entity collection>> CadastroLivros <<entity collection>> CadastroUsuarios <<entity collection>> CadastroBalconistas <<entity collection>> CadastroEmprestimos

Analisar Caso de Uso 1) Identificar as Classes de Análise 2) Identificar Persistência 3) Identificar Responsabilidades das Classes 4) Identificar Atributos e Relacionamentos

3) Identificar Responsabilidades das Classes Os diagramas de sequência e comunicação devem ser utilizados nessa fase para identificação das responsabilidades das classes. Cada caso de uso analisado adiciona novos comportamentos as classes. Cada caso de uso pode gerar um ou mais diagramas de sequência.

3) Identificar Responsabilidades das Classes

3) Identificar Responsabilidades das Classes Métodos identificados Importante utilizar boas ferramentas de modelagem para automatizar o processo. Emprestimo <<entity collection>> CadastroEmprestimos +buscaremprestimo() +atualizaemprestimo() <<<boundary>>> TelaDevolverLivro +devolverlivro()

Analisar Caso de Uso 1) Identificar as Classes de Análise 2) Identificar Persistência 3) Identificar Responsabilidades das Classes 4) Identificar Atributos e Relacionamentos

4) Identificar Atributos e Relacionamentos Onde encontrar os atributos e relacionamentos? Modelo de negócio Requisitos de Usuário e de Sistema Glossário etc.

4) Identificar Atributos e Relacionamentos As classes identificadas não funcionam sem relacionar-se com as outras. Os diagramas de sequência e comunicação são muito úteis nessa tarefa. Para cada ligação nesses diagramas deve ser gerado um relacionamento.

4) Identificar Atributos e Exemplo: Relacionamentos A ligação indica que existe um relacionamento entre a classe ControladorDevolucao e a classe CadastroEmprestimo

4) Identificar Atributos e Relacionamentos Relacionamentos Identificados <<entity>> Livro <<<boundary>>> TelaDevolverLivro <<entity>> Emprestimo possui * * +devolverlivro(emprestimo: Emprestimo) é realizado * 1 * 1 <<entity>> Balconista 1 * <<control>> ControladorDevolucao <<entity collection>> CadastroEmprestimos +buscaremprestimo(emprestimo: Emprestimo) +devolverlivro(emprestimo: Emprestimo) +calculamultaporatraso(emprestimo: Emprestimo) 1 1 +buscar(emprestimo: Emprestimo) +atualizar(emprestimo: Emprestimo)

4) Identificar Atributos e Relacionamentos Atributos Identificados <<<boundary>>> TelaDevolverLivro +devolverlivro(emprestimo: Emprestimo) * <<entity>> Emprestimo 1 possui * * é realizado * 1 <<entity>> Livro +isbn +nome <<entity>> Balconista 1 * +cpf +nome <<control>> ControladorDevolucao <<entity collection>> CadastroEmprestimos +buscaremprestimo(emprestimo: Emprestimo) +devolverlivro(emprestimo: Emprestimo) +calculamultaporatraso(emprestimo: Emprestimo) 1 1 +buscar(emprestimo: Emprestimo) +atualizar(emprestimo: Emprestimo)

Em resumo Glossário Documento da arquitetura Classes de Análise (detalhada) Documento de requisitos Analisar caso de uso Realização de caso de uso (atualizada) Modelo de caso de uso Modelo de Análise

Próximos passos Arquiteto Projetar arquitetura Revisor do projeto Projetar subsistema Projetista Analisar caso de uso Projetar caso de uso Projetar classes Revisar projeto Projetista de banco de dados Projetar base de dados

Atividade Sala III Crie o modelo de análise para o Caso de Uso Emprestar Livro

Agenda Aula IV Projetar Arquitetura Projeto do Software

Projetar Arquitetura Marcos Dósea marcosdosea@gmail.com

Agenda Introdução Projetar Arquitetura

Onde estamos? Introdução

Introdução O que faremos? Projetar Arquitetura

Introdução Arquiteto Projetar arquitetura Revisor do projeto Projetar subsistema Projetista Analisar caso de uso Projetar caso de uso Projetar classes Revisar projeto Projetista de banco de dados Projetar base de dados

Projetar Arquitetura Avaliar o conjunto das classes de análise. Definir elementos de projeto (classes de projeto e subsistemas) e organizá-los em pacotes. Definir a estrutura da aplicação para os projetistas possam detalhar a aplicação nas próximas fases.

Projetar Arquitetura 1) Definir o mapeamento entre as classes de análise e os elementos de projeto 2) Identificar subsistemas 3) Identificar oportunidades de Reuso 4) Definir a estrutura da aplicação

1) Definir o mapeamento entre as classes de análise e os elementos de projeto Para cada classe de análise deve-se definir se ela dará origem a: Uma classe de projeto. Mais de uma classe de projeto. Um subsistema Zero classes de projeto, ela será incorporada a uma outra classe de projeto já existente. A definição do mapeamento é muito dependente da experiência do arquiteto e do estilo arquitetural escolhido.

1) Definir o mapeamento entre as classes de análise e os elementos de projeto Algumas sugestões para definição Sugestão 1) 1 classe de análise é mapeada para 1 classe de projeto se ela for simples e representar uma única abstração. Sugestão 2) Classes de análises muito simples devem ser combinada em uma única classe de projeto. Sugestão 3) Classes de análises muito complexas devem ser quebradas em classes mais simples ou gerar um subsistema.

1) Definir o mapeamento entre as classes de análise e os elementos de projeto Algumas sugestões para definição Sugestão 4) Toda classe de entidade gera uma classe de projeto excluindo o esteriótipo.

1) Definir o mapeamento entre as classes de análise e os elementos de projeto Exemplos: <<<boundary>>> TelaDevolverLivro +devolverlivro() ITela TelaDevolverLivro +processa() Para cada classe de fronteira identificada que for uma tela de interação com o usuário deve-se criar uma classe com o mesmo nome que implementa a interface ITela. Essa classe deve conter apenas o método processa() que obtém os dados da interface e realiza a próxima operação.

1) Definir o mapeamento entre as classes de análise e os elementos de projeto Exemplos: <<entity>> Livro +isbn +nome Livro +isbn +nome Para cada classe de entidade identificada deve existir uma classe de projeto correspondente sem o esteriótipo.

1) Definir o mapeamento entre as classes de análise e os elementos de projeto Exemplos: <<control>> ControladorEmprestimo +emprestarlivro() <<control>> ControladorDevolucao +buscaremprestimo() +devolverlivro() +calculamultaporatraso() ControladorLivro +buscaremprestimo() +devolverlivro() +calcularmultaatraso() +emprestarlivro() IControladorLivro Classes de controle que manipulem uma mesma entidade devem ser unidas em uma única classe que implementa uma interface de projeto que vai unir as interfaces dessas classes de análise. O nome da classe de projeto e da interface criada deve referenciar a entidade que ela manipula.

Projetar Arquitetura 1) Definir o mapeamento entre as classes de análise e os elementos de projeto 2) Identificar subsistemas 3) Identificar oportunidades de Reuso 4) Definir a estrutura da aplicação

2) Identificar Subsistemas O que é um subsistema? O subsistema divide o sistema em partes independentes (componentes) que possuem uma interface bem definida e que pode ser desenvolvido, testado e implantado de forma independente dos demais.

2) Identificar Subsistemas O que é um subsistema? Cada subsistema deve possuir uma classe fachada que implementa a sua interface. Subsistema FachadaSubsistema ISubsistema

2) Identificar Subsistemas Como identificar subsistemas? Experiência do arquiteto conta muito. Algumas regras que podem ajudar: Sugestão 1) Classes de análise fronteira que fazem interface com outros sistemas são normalmente candidatos a serem subsistemas. <<boundary>> ComunicacaoEditora +atualizarlivro(isbn: long) ComunicacaoEditora Fachada IComunicacaoEditora +atualizarlivro(isbn: String)

2) Identificar Subsistemas Como identificar subsistemas? Sugestão 2) Classes que fornecem serviços complexos. Sugestão 3) Classes utilitárias e que dão suporte ao acesso ao banco de dados. Sugestão 4) Classes reusáveis autocontidas como softwares de comunicação, estruturas de dados, etc. ComunicacaoCatraca Fachada IComunicacaoCatraca +registraentrada(matricula: String) +registrasaida(matricula: String)

Projetar Arquitetura 1) Definir o mapeamento entre as classes de análise e os elementos de projeto 2) Identificar subsistemas 3) Identificar oportunidades de Reuso 4) Definir a estrutura da aplicação

3) Identificar Oportunidades de Reuso Verifica se um subsistema pode ser comprado ou reutilizado, ao invés de desenvolvido. Ex: Subsistema da catraca e utilitários. Deve-se analisar o impacto de mudar a interface do subsistema para adaptá-la à necessidade do novo sistema. Deve-se também avaliar a possibilidade de modificar um subsistema existente de forma a torná-lo reutilizável.

Projetar Arquitetura 1) Definir o mapeamento entre as classes de análise e os elementos de projeto 2) Identificar subsistemas 3) Identificar oportunidades de Reuso 4) Definir a estrutura da aplicação

4) Definir a Estrutura da Aplicação O arquiteto define o estilo arquitetural que será adotado, os padrões de projeto e idiomas. Essas definições devem estar registradas no documento de arquitetura. O documento de arquitetura é normalmente padrão para todos os sistemas de organização mas deve ser atualizado a cada necessidade de sistema. As regras de mapeamento devem ser atualizadas para adptar-se à estrutura da aplicação escolhida.

4) Definir a Estrutura da Aplicação Exemplo: Biblioteca Estilo Arquitetural: Camadas (Layer) Padrões de Projeto: Façade (Fachada): Para abstrair a camada de negócio. Singleton: Apenas uma instância para cada objeto responsável pela pela persistência dos dados.

4) Definir a Estrutura da Aplicação Exemplo: Biblioteca Estilo Arquitetural: Camadas (Layer) Interface com o usuário (GUI) Negócio Dados

4) Definir a Estrutura da Aplicação Por usar o estilo em camadas? Mudanças em uma camada não afeta as camadas adjascentes, desde que as interfaces sejam preservadas. Uma mesma versão da camada trabalhando com diferentes versões de outra camadas. Ex: Diferentes interfaces gráficas Diferentes forma de acesso a dados.

4) Definir a Estrutura da Aplicação No nosso exemplo da biblioteca temos: Camada GUI: Responsável por obter os dados da interface e invocar um método de negócio Camada de Negócio: Contém toda lógica de negócio da aplicação e caso necessário chama a camada de acesso a dados. Camada de Dados: Contém toda lógica necessária para acessar um meio persistente.

4) Definir a Estrutura da Aplicação Exemplo: Criando a Camada GUI <<<boundary>>> TelaDevolverLivro +devolverlivro() ITela TelaDevolverLivro +processa() Análise Projeto Interface com o usuário (GUI)

4) Definir a Estrutura da Aplicação Por que utilizar essa estrutura? Define uma forma padrão para processar os dados provenientes da interface.

4) Definir a Estrutura da Aplicação Exemplo: Criando a Camada Negocio <<control>> ControladorEmprestimo Fachada IFachada +emprestarlivro() <<control>> ControladorDevolucao ControladorLivro IControladorLivro +buscaremprestimo() +devolverlivro() +calcularmultaatraso() +emprestarlivro() +buscaremprestimo() +devolverlivro() +calculamultaporatraso() +buscaremprestimo() +devolverlivro() +calcularmultaatraso() +emprestarlivro() Análise Projeto Negócio

4) Definir a Estrutura da Aplicação Por que utilizar essa estrutura? A Fachada oferecer uma interface única para um conjunto de interfaces de um subsistema. Minimiza a dependência entre os subsistemas. Facilidade para os clientes da camada de negócio que precisam conhecer apenas uma única classe.

4) Definir a Estrutura da Aplicação Exemplo: Criando a Camada de Dados <<entity collection>> CadastroEmprestimos +buscar() +atualizar() RepositorioEmprestimoBDR +getinstance() Emprestimo * 1 <<entity>> Emprestimo IRepositorioEmprestimo +buscar() +atualizar() +inserir() Análise Projeto Dados

4) Definir a Estrutura da Aplicação Por que utilizar essa estrutura? RepositorioEmprestimoBDR +getinstance() RepositorioEmprestimoBDOO IRepositorioEmprestimo +getinstance() +buscar() +atualizar() +inserir() RepositorioEmprestimoFile +getinstance()

4) Definir a Estrutura da Aplicação Por que utilizar essa estrutura? O padrão singleton: Usado porque é desnecessário existirem várias instâncias de classes para acessar o banco de dados. Melhor utilização da memória. Define como acessar de forma controlada uma única instância da classe. Permite facilmente variar o número de instâncias caso seja necessário.

4) Definir a Estrutura da Aplicação TelaDevolverLivro GUI ITela +processa() Negocio Fachada IFachada ControladorLivro ControladorAluno IControladorLivro IControladorAluno Dados RepositorioEmprestimoBDR IRepositorioEmprestimo +getinstance()

Em Resumo Modelo de casos de uso Mapeamento das classes de análise em elementos de projeto Documento de requisitos Projetar Arquitetura Documento da arquitetura Modelo de análise e projeto (classes de análise) Modelo de análise e projeto (classes de projeto e subsistemas)

Próximos passos Arquiteto Projetar arquitetura Revisor do projeto Projetar subsistema Projetista Analisar caso de uso Projetar caso de uso Projetar classes Revisar projeto Projetista de banco de dados Projetar base de dados

Projeto de Software Orientada a Objetos Marcos Dósea marcosdosea@gmail.com

Agenda Introdução Projetar Caso de Uso

Onde estamos? Introdução

Introdução Análise x Projeto Análise Foco no problema Comportamento caixa preta Estrutura geral da arquitetura do sistema Requisitos Funcionais Modelo simples Projeto Foco na solução Detalha operações e atributos dos objetos Representação próxima do código. Requisitos Funcionais e Não Funcionais Modelo complexo.

Introdução O que faremos? Projetar o Software

Fluxo de Análise e Projeto Arquiteto Projetar arquitetura Revisor do projeto Projetar subsistema Projetista Analisar caso de uso Projetar caso de uso Projetar classes Revisar projeto Projetista de banco de dados Projetar base de dados

Projetar Caso de Uso Refinar as realizações de casos de uso substituindo os elementos de análise (elaboradas na análise de casos de uso) por elementos de projeto definido no mapeamento projeto da arquitetura. Incorporar persistência nas realizações O modelo final serve de referência para a implementação do caso de uso

Projetar Caso de Uso 1) Refinar as realizações de casos de uso 2) Simplificar os diagramas de interação.

1) Refinar as Realizações de Caso de Uso Substitui as classes de projeto e ou interfaces dos subsistemas associados seguindo as recomendações da arquitetura. Incorporar a persistência Atualizar os diagramas que realizam o caso de uso: Diagramas de interação Diagramas de Classes

1) Refinar as Realizações de Caso de Uso Como era a análise? <<boundary>> : TelaDevolverLivro <<control>> : ControladorDevolucao <<entity collection>> : CadastroEmprestimos : Balconista 1 : devolverlivro() <<create>> 2 <<entity>> : Emprestimo 4 : devolverlivro() 3 5 : buscar() 6 7 : calculamultaporatraso() 8 : atualizar() 11 : resultado() 10 9

1) Refinar as Realizações de Caso de Uso Como era na análise?

1) Refinar as Realizações de Caso de Uso Como ficou no projeto? Para projetar as classes deve-se obedecer as regras de mapeamento entre classes de análise e classe de projeto definidas pelo arquiteto. Para cada diagrama de interação de análise deve ser criado um diagrama de interação com as classes de projeto. É recomendado também criar o diagrama de classes de projeto que realizam o caso de uso.

Lembrando a Arquitetura TelaDevolverLivro GUI ITela +processa() Negocio Fachada IFachada ControladorLivro ControladorAluno IControladorLivro IControladorAluno Dados RepositorioEmprestimoBDR IRepositorioEmprestimo +getinstance()

1) Refinar as Realizações de Caso de Uso Como ficou no projeto?

1) Refinar as Realizações de Caso de Uso Como ficou no projeto?

2) Simplificar os diagramas de interação Identifique subfluxos comuns nos diagramas de interação e encapsule-os em subsistemas (possivelmente novos) Substitua os elementos internos pela interface dos subsistemas (nos diagramas) Interações internas ao subsistema serão descritas na atividade Projetar subsistema

2) Simplificar os diagramas de interação Quando encapsular fluxos em subsistemas? Quando um subfluxo: ocorre em vários casos de uso possui potencial de reuso é complexo e de fácil encapsulamento é responsabilidade de uma equipe/pessoa específica produz um resultado bem definido é encapsulado dentro de um componente de implementação É importante nessa etapa estabilizar a interface.

Projetar Caso de Uso Documento de requisitos Subsistemas de projeto Realização de caso de uso Projetar Caso de Uso Realização de caso de uso Caso de uso Classes de projeto

Atividade Sala IV Criar o modelo de projeto para o Caso de Uso Emprestar Livro.

Projeto da Disciplina 1) Criar o modelo de análise para o estudo de caso proposto, ou seja, para cada caso de uso identificado, apresentar os diagramas de interação e o diagrama de classes que o realizam. Crie um documento único que agrupe os vários modelos de análise criados.

Projeto da Disciplina 2) Definir (i) arquitetura do sistema do projeto proposto e (ii) as regras de mapeamento para os elementos de projeto. Utilize o template do RUP para documentação desses dois documentos.

Projeto da Disciplina 3) Crie o modelo de projeto de software utilizando as regras de mapeamento definidas pelo arquiteto. Crie um documento único que agrupe os vários modelos de projeto criados.

Projeto da Disciplina Em resumo... (1) Documento com Modelos de Análise (2) Documento da Arquitetura (3) Documento com Mapeamentos entre Modelos de Análise e Projeto (4) Documento com Modelos de Projeto