©2003, alexandre vasconcelos & augusto sampaio cin-ufpe1/38 análise e projeto de sistemas...
Post on 07-Apr-2016
216 Views
Preview:
TRANSCRIPT
CIn-UFPECIn-UFPE 11/38/38©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio
Análise e Projeto de SistemasAnálise e Projeto de Sistemas
Introdução à Análise e ao Projeto de Introdução à Análise e ao Projeto de SoftwareSoftware
CIn-UFPECIn-UFPE 22/38/38©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio
Objetivos da AulaObjetivos da Aula
Discutir as diferenças entre Análise e Projeto
Introduzir o processo de projeto de software
Descrever os diferentes estágios deste processo
Discutir as estratégias de projeto de software funcional e
orientada a objeto
Discutir alguns atributos de qualidade de projeto de software
CIn-UFPECIn-UFPE 33/38/38©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio
Análise x ProjetoAnálise x Projeto
Na Análise, investigamos o problema e descobrimos o QUE precisa estar no sistema
Durante o Projeto: detalhamos a Análise de modo a encontrar uma solução
computacional que satisfaça os requisitos do software estruturamos COMO o sistema será implementado
O projeto oferece uma ponte entre a Análise e a Implementação
CIn-UFPECIn-UFPE 44/38/38©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio
Análise x ProjetoAnálise x Projeto
No conceito de MDA (Model Driven Architecture) da OMG (Object Management Group) ... Análise corresponde aos modelos independentes de plataforma
(PIM – Platform Independent Model) No projeto, os modelos podem estar vinculados a uma
tecnologia particular (PSM – Platform Specific Model)
CIn-UFPECIn-UFPE 55/38/38©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio
Características do Projeto de SoftwareCaracterísticas do Projeto de Software
Processo criativo Baseado no aprendizado
Prática
Experiência, exemplos
Padrões
Deriva uma solução que satisfaz os requisitos de software
Influenciado pela implementação computacional Deve incluir detalhes (baixo nível) que foram
ignorados no modelo de análise
CIn-UFPECIn-UFPE 66/38/38©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio
Definição de Projeto de SoftwareDefinição de Projeto de Software
“Após a análise do problema, você deve decidir a abordagem do projeto. O projeto do sistema é uma estratégia de alto nível para resolução de problemas e construções de soluções. O projeto do sistema inclui decisões sobre a organização do sistema em termos de subsistemas, a evolução de subsistemas para componentes de software e hardware, bem como as principais decisões conceituais e políticas.”[Rumbaugh]
CIn-UFPECIn-UFPE 77/38/38©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio
Principais Fases do Processo de ProjetoPrincipais Fases do Processo de Projeto
Analisar o problema Olhar para o problema de diferentes ângulos Descobrir os requisitos de projeto
Identificar uma ou mais soluções Avaliar possíveis soluções Escolher a mais apropriada
Descrever as abstrações da solução Usar notações gráficas ou descritivas para especificar os
componentes do projeto Repetir este processo para cada abstração identificada até o
projeto estar expresso em termos primitivos
CIn-UFPECIn-UFPE 88/38/38©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio
Refinamento de ProjetoRefinamento de Projeto
O sistema é projetado iterativamente emdiferentes níveis de abstração
Informal Informaldesign
Moreformaldesign
Finisheddesign
designoutline
CIn-UFPECIn-UFPE 99/38/38©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio
Fases do Processo de ProjetoFases do Processo de Projeto
Architecturaldesign
Abstractspecificatio
n
Interfacedesign
Componentdesign
Datastructuredesign
Algorithmdesign
Systemarchitecture
Softwarespecification
Interfacespecification
Componentspecification
Datastructure
specification
Algorithmspecification
Requirementsspecification
Design activities
Design products
CIn-UFPECIn-UFPE 1010/38/38©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio
Fases do Processo de ProjetoFases do Processo de Projeto
Projeto de arquitetura: Identifica subsistemas e outros elementos de projeto
Especificação abstrata: Para cada subsistema (e outros elementos de projeto) é produzida uma especificação abstrata de suas funções e das restrições dentro das quais deve operar.
Projeto de interface: Especifica as interfaces entre subsistemas
CIn-UFPECIn-UFPE 1111/38/38©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio
Fases do Processo de ProjetoFases do Processo de Projeto
Projeto de componentes: Transforma (possivelmente decompondo) subsistemas em componentes individuais para se ajustar à arquitetura
Projeto de estrutura de dados: Projeta estrutura de dados para armazenar os dados do sistema
Projeto de algoritmos: Descreve os algoritmos a serem usados na solução do problema
CIn-UFPECIn-UFPE 1212/38/38©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio
Notações para Descrição de ProjetoNotações para Descrição de Projeto
Notações gráficas: Usadas para descrever os elementos de projeto e os relacionamentos entre estes.
Linguagens de descrição de programa: Baseadas em linguagens de programação, porém com mais flexibilidade para representar conceitos abstratos.
Texto informal: Descrição em linguagem natural.
CIn-UFPECIn-UFPE 1313/38/38©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio
Notações Gráficas Notações Gráficas para Modelagem de Projetopara Modelagem de Projeto
Qualquer projeto pode ser modelado como um grafo
direcionado
Nós: entidades (elementos de projeto)
Classes, Tipos, processos, subsistemas,
funções, ...
Arestas: relacionamentos
CIn-UFPECIn-UFPE 1414/38/38©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio
Métodos Estruturados de Projeto Métodos Estruturados de Projeto
Características Notações para expressar o projeto Diretrizes para criar e avaliar um projeto
Exemplos Projeto Estruturado (Yourdon) JSD (Jackson Method) Booch, OMT, UML + RUP
Suporte de Ferramentas CASE Documentação padronizada Redução de custo (treinamento, manutenção) Produtividade
Mas padronização é fundamental ...
CIn-UFPECIn-UFPE 1515/38/38©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio
Tipos de Modelos nos Métodos EstruturadosTipos de Modelos nos Métodos Estruturados
Modelo de fluxo de dados: transformação de dados Modelo estrutural: elementos do sistema e suas
interações Modelo entidade-relacionamento: estrutura lógica dos dados Modelo de herança e composição de objetos, se o método for
orientado a objetos Modelos complementares: diagrama de estados,
dicionário de dados
CIn-UFPECIn-UFPE 1616/38/38©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio
Deficiências dos Métodos EstruturadosDeficiências dos Métodos Estruturados
Existem diretrizes e não métodos no sentido matemático. Projetistas diferentes criam projetos bastante diferentes
Não oferecem mecanismos de garantia de consistência entre os diversos modelos gerados
Uma alternativa é complementar estes métodos com uma notação mais precisa para descrever comportamento Exemplo: UML + OCL
CIn-UFPECIn-UFPE 1717/38/38©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio
Estratégias de decomposiçãoEstratégias de decomposiçãoProjeto Top-down x Bottom-upProjeto Top-down x Bottom-up
System level
Sub-systemlevel
CIn-UFPECIn-UFPE 1818/38/38©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio
Projeto Top-down x Bottom-upProjeto Top-down x Bottom-up
Na prática, o projeto de grandes sistemas nunca é
inteiramente top-down.
Os projetistas reutilizam experiência (e
componentes)
No processo, ocorre brainstorm nos dois sentidos
CIn-UFPECIn-UFPE 1919/38/38©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio
Estratégias de DecomposiçãoEstratégias de DecomposiçãoFuncional x DadosFuncional x Dados
Decomposição Funcional Decomposição do sistema em componentes
funcionais O estado do sistema é centralizado e
compartilhado entre as funções Experiência mostrou inadequação para
estruturação de modelos de análise e projeto (as regras de negócio mudam constantemente)
Entretanto, útil para estruturar requisitos, planejar e gerenciar projetos
CIn-UFPECIn-UFPE 2020/38/38©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio
Estratégias de DecomposiçãoEstratégias de DecomposiçãoFuncional x DadosFuncional x Dados
Decomposição Baseada em Dados O sistema é visto como uma coleção de entidades
que interagem (ou objetos, no paradigma OO) O estado do sistema é descentralizado Pode existir uma considerável sobreposição entre
os modelos de análise e de projeto. Na prática muitas porções do modelo de
análise podem ser reusadas no projeto Mostrou-se adequada como mecanismo de
estruturação (estabilidade de dados com relação a funções) de modelos de análise e projeto
CIn-UFPECIn-UFPE 2121/38/38©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio
Visão Funcional de um CompiladorVisão Funcional de um Compilador
AnalyseBuild
symboltable
Scansource
Generatecode
Symboltable
Outputerrors
Sourceprogram
Tokens Tokens Syntaxtree
Objectcode
ErrorindicatorSymbols Symbols
Errormessages
CIn-UFPECIn-UFPE 2222/38/38©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio
Visão Orientada a Objetos de um CompiladorVisão Orientada a Objetos de um Compilador
Sourceprogram
Tokenstream
Symboltable
Syntaxtree
Grammar Errormessages
Abstractcode
Objectcode
Scan Add
Check Get
Build Print
Generate
Generate
CIn-UFPECIn-UFPE 2323/38/38©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio
Top-down x Bottom-up e Top-down x Bottom-up e Funcional X DadosFuncional X Dados
Estratégias ortogonais (independentes) Por exemplo, uma estratégia Top-Down baseada
em dados decompõe classes usando o mecanismo de herança
Uma estratégia Bottom-Up baseada em dados usaria generalização
Uma estratégia Top-Down funcional inicia com a visão funcional do sistema e decompõe em subunidades
Uma estratégia Bottom-Up funcional reutilizaria bibliotecas de funções no projeto de funções mais complexas
CIn-UFPECIn-UFPE 2424/38/38©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio
Atributos de Qualidade de ProjetoAtributos de Qualidade de Projeto
A qualidade é uma propriedade relativa a prioridades específicas da organização
Características de qualidade são igualmente aplicáveis a projetos orientados a objeto ou a função
Os atributos discutidos aqui estão relacionados principalmente a facilidades de evolução e manutenção de um projeto
CIn-UFPECIn-UFPE 2525/38/38©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio
O Atributo Coesão O Atributo Coesão
Medida da proximidade das partes (elementos) de um sub-componente
Um componente deve implementar uma única entidade lógica ou função
ImportânciaQuando uma mudança tiver que ser feita, ela será facilmentelocalizada
CIn-UFPECIn-UFPE 2626/38/38©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio
Coesão em Orientação a ObjetosCoesão em Orientação a Objetos
Herança de atributos de uma superclasse enfraquece a coesão Para entender a estrutura de uma classe, a superclasse e a
própria classe precisam ser examinadas
CIn-UFPECIn-UFPE 2727/38/38©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio
Medida da intensidade das interconexões entre componentes do sistema
Importância Baixo acoplamento implica que mudanças em um componente
tendem a não afetar outros componentes
O Atributo AcoplamentoO Atributo Acoplamento
CIn-UFPECIn-UFPE 2828/38/38©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio
Acoplamento ForteAcoplamento Forte
Module A Module B
Module C Module D
Shared dataarea
CIn-UFPECIn-UFPE 2929/38/38©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio
Acoplamento FracoAcoplamento Fraco
Module A
A’s data
Module B
B’s data
Module D
D’s data
Module C
C’s data
CIn-UFPECIn-UFPE 3030/38/38©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio
Sistemas orientados a objeto são, potencialmente, fracamente acoplados Geralmente não compartilham estado A comunicação é feita através de passagem de mensagens
Entretanto... uma classe está acoplada a sua superclasse (mudanças nos
atributos ou operações se propagam a todas as subclasses) Relacionamentos cíclicos (em particular, bidirecionais) também
geram forte acoplamento
Acoplamento em Orientação a ObjetosAcoplamento em Orientação a Objetos
CIn-UFPECIn-UFPE 3131/38/38©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio
Relacionado a várias características do componente Acoplamento e Coesão. Cada componente modela
(completamente) uma única abstração?
Nomes. São usados nomes sugestivos?
Documentação. O projeto está bem documentado?
Complexidade. Algoritmos complexos são utilizados?
Padrões. Soluções conhecidas são utilizadas?
O Atributo EntendimentoO Atributo Entendimento
CIn-UFPECIn-UFPE 3232/38/38©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio
Medida da facilidade de mudança nos componentes Alguns fatores relevantes
Componentes fracamente acoplados Componentes fortemente coesos Boa documentação
O Atributo AdaptabilidadeO Atributo Adaptabilidade
CIn-UFPECIn-UFPE 3333/38/38©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio
Herança aumenta a adaptabilidade Componentes podem ser adaptados sem mudanças através da
definição de uma subclasse que é efetivamente modificada.
Por outro lado, O aumento da profundidade da hierarquia a torna mais complexa
Adaptabilidade em Orientação a ObjetosAdaptabilidade em Orientação a Objetos
CIn-UFPECIn-UFPE 3434/38/38©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio
Fatores que Influenciam o ProjetoFatores que Influenciam o Projeto
Funcionalidade Performance - tempo de resposta, tempo total de execução Eficiência - uso eficiente do dispositivo de armazenamento
e do hardware Portabilidade - funcionar em novas plataformas Segurança Disponibilidade - disponível quando requerido Robustez Generalidade Usabilidade Reusabilidade
CIn-UFPECIn-UFPE 3535/38/38©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio
Compromissos de ProjetoCompromissos de Projeto
É impossível alcançar todos os objetivos Performance X Portabilidade Performance X Generalidade
CIn-UFPECIn-UFPE 3636/38/38©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio
Compromissos de ProjetoCompromissos de Projeto
Projeto acontece no contexto do mundo real Portanto, deve levar em consideração:
Investimento custos de projeto e execução
Prazos bom projeto leva mais tempo Os resultados obtidos a partir do sistema implementado
devem acontecer na data apropriada Integração com outros sistemas Habilidades
da equipe de projeto e usuários Padrões
internos e externos
CIn-UFPECIn-UFPE 3737/38/38©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio
Medindo a Eficiência do ProjetoMedindo a Eficiência do Projeto
Sucesso deve ser mostrado em termos de objetivos mensuráveis Funcionalidade - presente ou ausente Eficiência
tempo de resposta Portabilidade
plataformas
CIn-UFPECIn-UFPE 3838/38/38©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio
Disponibilidade ex. Sistema funcionando 98% do tempo.
Robustez ex. 90% das falhas são recuperadas em uma hora
Usabilidade tempo para aprender a usar o sistema freqüência de erros tempo para recuperar de erros específicos tempo para re-aprender o sistema depois de um período sem
usá-lo atitude e satisfação do usuário (questionário)
Medindo a Eficiência do ProjetoMedindo a Eficiência do Projeto
CIn-UFPECIn-UFPE 3939/38/38©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio
Projeto é um processo de engenharia (modelagem), mas exige criatividade
Atividades de projeto incluem Projeto de arquitetura Especificação de sistema Projeto de interface Projeto de componentes Projeto de estrutura de dados Projeto de algoritmos
Pontos PrincipaisPontos Principais
CIn-UFPECIn-UFPE 4040/38/38©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio
Pontos PrincipaisPontos Principais
Decomposição funcional considera o sistema como um conjunto de unidades funcionais (estado centralizado) Importante para definir escopo, planejar, gerenciar e testar
Orientação a objetos considera o sistema como uma coleção de objetos (estado descentralizado) Importante na modelagem estrutural e de dados
Projetistas devem procurar produzir sistemas Fortemente coesos Fracamente acoplados
top related