Projeto conceitual


Mostra ao cliente exatamente o que o sistema
fará
Respostas de algumas questões:







De onde virão os dados?
O que acontecerá com os dados no sistema?
Qual será a aparência do sistema para os usuários?
Que opções serão oferecidas para os usuários?
Qual é a seqüência de eventos?
Como será a aparência dos relatórios e das telas?
Características de um bom projeto conceitual




Ser escrito na linguagem do cliente e não conter jargão
técnico
Descrever as funções do sistema
Ser independente da implementação
Estar vinculado aos documentos de requisitos
Engenharia de Software: Teoria e Prática
Shari Lawrence Pfleeger
Capítulo 5
Prentice Hall
Projeto técnico


Mostra aos programadores o que o sistema
fará
Inclui:



descrição dos principais componentes de
hardware e de suas funções
hierarquia e funções dos componentes da
estrutura de dados de software
estrutura de dados e fluxo de dados
Engenharia de Software: Teoria e Prática
Shari Lawrence Pfleeger
Capítulo 5
Prentice Hall
Cinco modos para criar projetos





Decomposição modular
Decomposição orientada a dados
Decomposição orientada a eventos
Projeto ‘outside-in’
Projeto orientado a objetos
Engenharia de Software: Teoria e Prática
Shari Lawrence Pfleeger
Capítulo 5
Prentice Hall
Três níveis de projeto



Arquitetura: associa as capacidades do
sistema com os componentes
Projeto de código: envolve algoritmos e
estrutura de dados para cada componente
Projeto executável: projeto do código em um
nível de detalhes ainda inferior, incluindo
alocação de memória, formatos de dados,
padrões de bits etc.
Engenharia de Software: Teoria e Prática
Shari Lawrence Pfleeger
Capítulo 5
Prentice Hall
Estilos de projeto








Pipes and filters
Projeto orientado a objetos
Chamada implícita
Estilo de projeto em camadas
Repositórios
Interpretadores
Controle de processos
Cliente-servidor
Engenharia de Software: Teoria e Prática
Shari Lawrence Pfleeger
Capítulo 5
Prentice Hall
Exemplo de chamada implícita
DEBUG VALUE <syst em><f i l e><l i ne><var ><val ue>
DEBUG ENTER <syst em><f i l e><f unc><l i ne><val ue>
DEBUG EXI T <syst em><f i l e><f unc><l i ne><val ue>
EVENT ADD <syst em><i d#><event _t ype><f i l e><l i ne><t ext >
EVENT REMOVE <syst em><i d#><event _t ype><f i l e><l i ne><t ext >
STOP- ERROR <si gnal ><f i l e><l i ne>
DEBUG AT <syst em><f i l e><f unc><l i ne>
DEBUG FOCUS <syst em><f i l e><f unc><l i ne>
DEBUG CLEAR <syst em>
DEBUG RESET <syst em>
WHERE <syst em><l evel ><f i l e><f unc><l i ne><addr ><ar gs>
WHERE_DUMP <syst em><l evel ><name><val ue>
WHERE_BEGI N <syst em>
WHERE_END <syst em><l evel >
DEBUG SYSTEM <syst em>
DEBUG NOSYSTEM <syst em>
UPDATE <syst em><f i l e><l i ne>
Engenharia de Software: Teoria e Prática
Shari Lawrence Pfleeger
Capítulo 5
Prentice Hall
Exemplo de abstração
DO WHILE I is between 1 and (length of L)-1:
Set LOW to index of smallest value in L(I), ..., L(length of L)
Interchange L(I) and L(LOW)
END DO
DO WHILE I is between 1 and (length of L)-1
Set LOW to current value of I
DO WHILE J is between I+1 and (length of L)-1:
IF L(LOW) is greater than L(J)
THEN set LOW to current value of J
ENDIF
ENDDO
Set TEMP to L(LOW)
Set L(LOW) to L(I)
Set L(I) to TEMP
ENDDO
Engenharia de Software: Teoria e Prática
Shari Lawrence Pfleeger
Capítulo 5
Prentice Hall
Questões na criação do projeto



Modularidade e níveis de abstração
Projeto colaborativo
Projetando a interface com o usuário





metáforas, modelo mental, regras de navegação,
aspecto e impressão
questões culturais
preferências do usuário
Concorrência
Padrões de projeto e reutilização
Engenharia de Software: Teoria e Prática
Shari Lawrence Pfleeger
Capítulo 5
Prentice Hall
Engenharia de Software: Teoria e Prática
Shari Lawrence Pfleeger
Capítulo 5
Prentice Hall
Características de um bom projeto

Independência dos componentes




acoplamento
coesão
Identificação e tratamento da exceção
Prevenção de defeitos e tolerância a defeitos


ativo
passivo
Engenharia de Software: Teoria e Prática
Shari Lawrence Pfleeger
Capítulo 5
Prentice Hall
Técnicas de aprimoramento de projeto




Redução da complexidade
Projeto por contrato
Projeto com construção de protótipo
Análise da árvore de defeitos
Engenharia de Software: Teoria e Prática
Shari Lawrence Pfleeger
Capítulo 5
Prentice Hall
Avaliação e validação do projeto



Validação matemática
Medindo a qualidade do projeto
Comparando projetos



uma especificação, muitos projetos
tabelas de comparação
Revisões de projetos
Engenharia de Software: Teoria e Prática
Shari Lawrence Pfleeger
Capítulo 5
Prentice Hall
Engenharia de Software: Teoria e Prática
Shari Lawrence Pfleeger
Capítulo 5
Prentice Hall
Revisão de projetos

Revisão do projeto preliminar


Revisão crítica do projeto


reunião com clientes e usuários a fim de validar o projeto
conceitual
apresentar a visão geral do projeto técnico aos
desenvolvedores
Revisão do projeto do programa

Programadores apresentam seus planos sobre seus
projetos antes da implementação
Engenharia de Software: Teoria e Prática
Shari Lawrence Pfleeger
Capítulo 5
Prentice Hall
Questões para qualquer revisão de projetos
O projeto é uma solução para o problema?
O projeto é modular, bem-estruturado e fácil de entender?
Alguma coisa pode ser feita para melhorar a estrutura e a facilidade de compreensão do
projeto?
O projeto pode ser migrado para outras plataformas?
O projeto pode ser reutilizado?
O projeto é fácil de modificar ou expandir?
O projeto permite que os testes sejam realizados com facilidade?
O projeto maximiza o desempenho quando apropriado?
O projeto reutiliza componentes a partir de outros projetos quando apropriado?
Os algoritmos são adequados ou podem ser aprimorados?
Se o sistema tiver de ser desenvolvido em fases, as interfaces para as fases são boas o
suficiente para que haja uma fácil transição entre as mesmas?
O projeto está bem documentado, incluindo as opções de projeto e suas justificativas?
O projeto faz referência cruzada dos componentes e dados com os requisitos?
O projeto utiliza técnicas apropriadas para o tratamento de defeitos e para evitar a ocorrência
de falhas?
Engenharia de Software: Teoria e Prática
Shari Lawrence Pfleeger
Capítulo 5
Prentice Hall
Documentando o projeto
• justificativas do projeto
• formatos dos menus e de outras formas de display nas telas
• interface para uso de pessoas: teclas de função, descrições de tela
sensível ao toque, layout de teclados, uso de mouse ou joystick
• formatos dos relatórios
• ‘entrada’ de informações: onde os dados se originam, como são
formatados e em que mídia são armazenados
• ‘saída’: para onde os dados são enviados, como são formatados e
em que mídia são armazenados
• características funcionais gerais
• restrições de desempenho
• procedimentos de arquivamento
• abordagem de tratamento de defeitos
Engenharia de Software: Teoria e Prática
Shari Lawrence Pfleeger
Capítulo 5
Prentice Hall
Exemplo de sistema de informação
Opposition schedule = * Data flow *
Television company name
+ {Opposition transmission date
+ Opposition transmission time + Opposition program name
+ (Opposition predicted rating)}
Input: Opposition schedule
For each Television company name, create Opposition company.
For each Opposition schedule,
Locate the Episode where Episode schedule date = Opposition
transmission date AND Episode start time = Opposition
transmission time
Create instance of Opposition program
Create the relationships Planning and Competing
Output: List of Opposition programs
Engenharia de Software: Teoria e Prática
Shari Lawrence Pfleeger
Capítulo 5
Prentice Hall
Download

cap05