IF718
Análise e Projeto de Sistemas
Augusto Sampaio - acas
Pedro Antonino – prga2 (Estágio docência)
2013.2
•
Parte do material cedido pela Qualiti Software Processes
Motivação
Essência de Análise e Projeto:
construção de modelos
O que é um modelo?
Por que construir modelos?
Quantos modelos construir para:
- capturar os elementos do problema
- Representar diferentes níveis de abstração
Em Engenharia de Software
- O que é Desenvolvimento Baseado em Modelos?
Um modelo é uma visão parcial
(representação) da realidade
- 4-
Realidade
Representa
Modelos
(visões parciais)
Sistema respiratório
Esqueleto
Outros modelos:
• Muscular,
• Nervoso,
• Circulatório,
• Digestivo,
• etc.
Multiplas visões:
controle da complexidade
Plumber's
view
Architect's
view
Landlord's
view
Renter's
view
Mason's
view
Interior
Designer's
view
Carpenter's
view
System
Electrician's
view
repOf
Tax
Collector's
view
Model
Desenvolvimento baseado em modelos
A principal motivação é aumentar a
produtividade:
- Independência de tecnologia
- Reutilização
- Automação
Aumentar o nível de abstração
- Foco no modelo, não no código
- “O modelo é o código ...”
Processos são essenciais para sistematizar o
desenvolvimento
O grande desafio ...
Vídeo: Modeling Through the Ages
Objetivos do curso
Processo de Análise e Projeto no RUP
Aspectos de modelagem de paradigmas recentes:
- SOA (Software-Oriented Architecture)
- MDD (Model-Driven Development)
Técnicas de modelagem OO em UML
Ênfase em Padrões de Projeto e Arquiteturais
Consolidação dos conceitos em um exemplo
construído incrementalmente
Uso de ferramentas de modelagem
Geração de esqueleto de código
Conteúdo do curso
Análise/projeto no RUP
- Disciplina de A&P
- Análise de caso de uso
- Projetar arquitetura
- Projetar casos de uso
Considerando SOA e
MDD
- Modelo de negócio
- Analisar serviços
- Projetar serviços
• Padrões de projeto e arquiteturais
• Projetar subsistemas (componentes)
• Projetar classes
• Projetar concorrrência e distribuição
• Projetar base de dados
Aulas conceituais e prática em laboratório
Exemplo único para ilustrar conceitos
Processos de software
Processo de software
Para ser uma atividade sistematizada,
Análise e Projeto deve ser parte de um
processo
Processo:
- O que é?
- Representação?
- Ciclo de vida?
- Execução?
- Modelos de processo
Análise e Projeto
no modelo Cascata
Análise e Projeto
no modelo Espiral
Análise e Projeto
no modelo iterativo do RUP
Fluxos de Processo
Fases
Concepção
Elaboração
Construção
Requisitos...............................
Análise e Projeto......................
Implementação........................
Testes...................................
Implantação............................
Fluxos de Suporte
Gerência de Configuração............
Planejamento e Gerenciamento.....
Inicial
Iterações
Transição
Análise e Projeto em SOA
(Service Oriented Architecture)
Requisitos
Especificação do
modelo de negócios
Modelagem do
Negócio
Analisar serviços
Planejamento
Projetar Serviços
Planejamento
Inicial
Implementação
Avaliação
Teste
Análise versus Projeto
Análise versus Projeto
Análise
-
-
Foco no problema
Comportamento (caixa preta,
sem detalhes de
implementação)
Estrutura geral da
arquitetura do sistema
Requisitos funcionais
Modelo simples
Projeto
-
-
Foco em uma solução
Operações e atributos
Representação próxima do
código
Requisitos não-funcionais
(exemplo: desempenho),
além dos funcionais
Modelo complexo
Fonte: Rational
Análise versus Projeto
Em MDD (Model Driven Development) 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)
Modelo de Análise e Projeto
Pode ser um só artefato
- evoluindo de uma visão abstrata (nas atividades
de análise), para uma visão detalhada (nas
atividades de projeto)
Podem ser feitos dois artefatos
- um modelo de análise
- um modelo de projeto (inicia igual à última
versão do modelo de análise e evolui
independentemente)
Documentação x esforço e disciplina de
manutenção
Estratégias de decomposição
Estratégias de Decomposição
Funcional x Dados
Decomposição Funcional
- Decomposição do sistema em componentes
-
funcionais (exemplo: casos de uso)
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, e realizar testes
Estratégias de Decomposição
Funcional 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
Mostrou-se adequada como mecanismo de
estruturação (estabilidade de dados com relação
a funções) de
• modelos de análise
• projeto e
• implementação
Estratégias de decomposição
Projeto Top-down x Bottom-up
System level
Sub-system
level
Projeto 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
Atributos de qualidade de
modelos de análise e projeto
Atributos de Qualidade
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
à função
Dois atributos importantes são coesão e
acoplamento
O Atributo Coesão
Medida da proximidade das partes
(elementos) de um componente do sistema
Um componente deve implementar uma
única entidade lógica ou função (abstração)
Importância
- Quando uma mudança tiver que ser feita, ela
-
será facilmente localizada
Reuso ...
Em Orientação a objetos, cada classe deve
modelar uma única entidade
O Atributo Acoplamento
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
Reuso ...
Acoplamento Forte
Module A
Module C
Module B
Module D
Shared data
area
Acoplamento Fraco
Module A
A’s data
Module B
B’s data
Module D
D’s data
Module C
C’s data
Acoplamento em Orientação
a Objetos
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
Padrões, anti-padrões e
frameworks
Padrões de Projeto e Arquiteturais
Projetistas experientes (re)utilizam soluções
bem sucedidas no passado
Padrões sistematizam soluções, incluindo
•
•
•
•
•
Nome
Problema
Solução
Conseqüência
Exemplo, ...
Durante as duas última décadas, surgiu uma
“comunidade” voltada a padrões
Exemplo: Padrão Fachada
Fachada
Anti-Padrões
São uma maneira de documentar soluções
recorrentes que não tiveram sucesso
• Podem também incluir soluções re-trabalhadas que
sejam efetivas
Frameworks
Usualmente baseado em padrões, mas já
voltados para uma linguagem de
programação
Especialização/instanciação
- Hot spots
- Herança
Relacionamento com outras
disciplinas do processo de software
Planejamento e Gerenciamento – planeja e
acompanha todo o desenvolvimento
Requisitos – entrada para a análise e projeto
do sistema
Implementação – o modelo de análise e
projeto é entrada a implementação
Gerência de Configuração e Ambiente –
oferece suporte aos artefatos gerados
(incluindo modelos)
Planejamento do Curso
Programa, cronograma, transparências,
referências, avaliação, projetos e
ferramentas:
- http://www.cin.ufpe.br/~if718
MAS SÓ DEPOIS DA QUINTA-FEIRA
Download

Aula1-Apresentacao