Upload
dafina4275
View
216
Download
0
Embed Size (px)
Citation preview
8/15/2019 Aula 5 ProjetoSoftware
1/53
Prof. Paulo C. Masiero
SSC - 5764
Engenharia de Software
8/15/2019 Aula 5 ProjetoSoftware
2/53
2
Projeto
Análise de Sistema
Análise de Requisitos
Processo de Software Fases ou
Subprocessos
DEFINIÇÃO
CONSTRUÇÃO
MANUTENÇÃO
Processo peloqual osrequis i tos dosoftware sãot raduzidos
para umarepresentação
do software que permite suarealizaçãofísica.
Projeto
8/15/2019 Aula 5 ProjetoSoftware
3/53
3
Projeto
Codificação
Teste
ModeloComportamental
ModeloFuncional
Modelo deInformação
OutrosRequisitos
Projeto deDados
Projeto Procedimental
ProjetoArquitetural
Projeto de Interface
Programas
Software
Integrado eValidado
8/15/2019 Aula 5 ProjetoSoftware
4/53
Ponto de Vista TécnicoDADOS: o modelo de domínio da informação é
transformado nas estruturas de dados que serão exigidas
para implementar o software.
ARQUITETURAL: o relacionamento entre os grandes
componentes estruturais do programa é definido.
INTERFACE: os mecanismos de interação e layout para a
interação homem-máquina são estabelecidos.PROCEDIMENTAL: os componentes estruturais são
transformados em uma descrição procedimental do
software.
4
8/15/2019 Aula 5 ProjetoSoftware
5/53
Ponto de Vista Gerencial
PROJETO PRELIMINAR: preocupa-se com a
transformação dos requisitos do software em
uma arquitetura de software e de dados.
PROJETO DETALHADO: concentra-se nos
aprimoramentos da representação arquitetural
que levam à estrutura de dados detalhada e às
representações algorítmicas do software.
5
8/15/2019 Aula 5 ProjetoSoftware
6/53
6
Projeto preliminar
Projeto detalhado
Projeto de dados
Projeto arquitetural
Projeto procedimental
Projeto de interface
8/15/2019 Aula 5 ProjetoSoftware
7/53
Fomentar a qualidade durante o processo dedesenvolvimento.
Fornecer representações do software que podem
ser avaliadas quanto à qualidade.
Traduzir com precisão os requisitos de um cliente
num produto de software finalizado.
7
8/15/2019 Aula 5 ProjetoSoftware
8/538
Teste
SEM projeto
Manutenção
Implemen-
tação
COM projeto
Implementação
Projeto
Teste
Manutenção
Sistema instável.
Falhará quando pequenas mudanças
forem feitas. Difícil de testar.
Qualidade não pode ser verificadaaté um ponto tardio do processo
de desenvolvimento.
8/15/2019 Aula 5 ProjetoSoftware
9/539
Projeto
Codificação
Teste
Modelo
ComportamentalModelo
Funcional
Modelo de
Informação
Outros
Requisitos
Projetode Dados
ProjetoProcedimental
ProjetoArquitetural
Projeto de Interface
ProgramasSoftware
Integrado eValidado
Projeto de DadosObjetivo
Selecionarrepresentações lógicas
dos dados (estruturas de
dados), identificados
durante a fase deespecificação dos
requisitos.
8/15/2019 Aula 5 ProjetoSoftware
10/53
ESTRUTURA DE DADOS: é uma representação do
relacionamento lógico entre elementos de dados
individuais.
Determina a organização, métodos de acesso, grau
de associatividade e alternativas de processamento
de informações.
10
8/15/2019 Aula 5 ProjetoSoftware
11/5311
Você moraria em uma casa em que
não há um projeto (planta) ?
8/15/2019 Aula 5 ProjetoSoftware
12/5312
Projeto
Codificação
Teste
Modelo
ComportamentalModelo
Funcional
Modelo de
Informação
Outros
Requisitos
Projeto de Dados
ProjetoProcedimental
Projeto Arquitetural
Projeto de Interface
ProgramasSoftware
Integrado eValidado
Projeto ArquiteturalObjetivo
Desenvolver umaestrutura modular do
sistema e representar as
relações de controle
entre os módulos.
8/15/2019 Aula 5 ProjetoSoftware
13/53
O projeto arquitetural une a estrutura de programae a estrutura de dados, definindo interfaces que
possibilitam que os dados fluam pelo programa.
13
8/15/2019 Aula 5 ProjetoSoftware
14/53
Propriedades que devem ser especificadascomo parte de um projeto arquitetural:
◦ Propriedades estruturais: este aspecto da
representação do projeto arquitetural define oscomponentes do sistema (como módulos, objetos)e a maneira pela qual esses componentes sãoempacotados e interagem entre si.
14
8/15/2019 Aula 5 ProjetoSoftware
15/53
8/15/2019 Aula 5 ProjetoSoftware
16/53
Propriedades que devem ser especificadascomo parte de um projeto arquitetural:
◦ Famílias de sistemas relacionados: o projeto
arquitetural deve ter a capacidade de reusar blocosde construção arquitetural.
16
8/15/2019 Aula 5 ProjetoSoftware
17/53
O projeto arquitetural pode ser representadousando-se um ou mais modelos:
◦ Modelo estrutural: representa a arquitetura como
uma coleção organizada de componentes deprograma.
◦ Modelo de arcabouço (framework): aumenta o nívelde abstração de projeto por meio de tentativas de
identificar padrões de projeto arquiteturalrepetidos, encontrados em tipos de aplicaçõessimilares.
17
8/15/2019 Aula 5 ProjetoSoftware
18/53
O projeto arquitetural pode ser representadousando-se um ou mais modelos:
◦ Modelo dinâmico: cuida dos aspectos
comportamentais da arquitetura do programa,indicando como a estrutura ou configuração dosistema pode mudar em reação a eventos externos.
◦ Modelo de processo: focaliza o projeto de negócios
ou processo técnico que o sistema precisa atender.
18
8/15/2019 Aula 5 ProjetoSoftware
19/53
O projeto arquitetural pode ser representadousando-se um ou mais modelos:
◦ Modelo funcional: pode ser usado para representar
a hierarquia funcional do sistema.
19
8/15/2019 Aula 5 ProjetoSoftware
20/53
CONCEITOS Abstração Refinamento
Modularidade Ocultação da Informação Independência Funcional Arquitetura Particionamento Estrutural
20
8/15/2019 Aula 5 ProjetoSoftware
21/53
ABSTRAÇÃO: possibilita que o projetistarepresente os procedimentos, os dados e ocontrole em vários níveis de detalhes.
21
alto
baixo
Nível
deAbstração
Uma solução:
é declarada em termos amplos usando-se a
linguagem do ambiente do problema
é estabelecida usando-se uma terminologiaorientada à implementação
é estabelecida de uma forma que possa ser
diretamente implementada
8/15/2019 Aula 5 ProjetoSoftware
22/53
Abstração Procedimental: uma sequência deinstruções designadas que têm uma funçãoespecífica e limitada.
22
Ex: a palavra ´entrar´ numa portaSequência de passos procedimentais:
caminhe até a porta, aproxime-se esegure a maçaneta, gire a maçaneta
e empurre a porta, etc...
8/15/2019 Aula 5 ProjetoSoftware
23/53
Abstração de Dados: uma coleção designadade dados que descrevem um objeto dedados.
23
Ex: cheque de pagamento Trata-se de uma coleção de muitas infor-mações diferentes: nome da pessoa aquem se paga, quantia bruta paga,
imposto retido, contribuição para aprevidência, etc.
8/15/2019 Aula 5 ProjetoSoftware
24/53
Abstração de Controle: implica um mecanismode controle do programa sem especificardetalhes internos.
24
Ex: semáforo de sincronização
Utilizado para coordenar atividades de umsistema operacional.
8/15/2019 Aula 5 ProjetoSoftware
25/53
REFINAMENTO passo a passo: é uma antigaestratégia de projeto top-down (1971)
A arquitetura de um programa é desenvolvidarefinando-se, sucessivamente, os níveis dedetalhes procedimentais.
25
8/15/2019 Aula 5 ProjetoSoftware
26/53
MODULARIDADE o software é dividido emcomponentes (módulos), que são integradospara atender aos requisitos do problema.◦ Dividir para conquistar.
Um projeto modular reduz a complexidade,facilita a mudança e resulta numa
implementação mais fácil ao estimular odesenvolvimento paralelo de diversas partes deum sistema.
26
8/15/2019 Aula 5 ProjetoSoftware
27/53
É mais fácil resolver um
problema complexo quando ele é dividido em partes.
Dividir indefinidamente tornao problema infinitamente
pequeno?NÃO
27
MODULARIDADE A submodularidade ou a
supermodularidade devemser evitadas.
COMO DEFINIR UM TAMANHODE MÓDULO APROPRIADO?
8/15/2019 Aula 5 ProjetoSoftware
28/53
28
8/15/2019 Aula 5 ProjetoSoftware
29/53
OCULTAÇÃO DE INFORMAÇÕES: o conceito demodularidade leva o projetista de software auma questão fundamental:
“Como decompor uma solução de software paraobter o melhor conjunto de módulos? ”
O princípio da "ocultação de informações"
sugere que os módulos sejam "caracterizadospelas decisões de projeto que (cada módulo)esconde de todos os outros".
29
8/15/2019 Aula 5 ProjetoSoftware
30/53
Os módulos devem ser especificados eprojetados de tal forma que as informações(procedimentos e dados) contidas num módulosejam inacessíveis a outros módulos que nãotenham necessidade de tais informações.
A ocultação implica em uma modularidade talque um conjunto de módulos independentes
comunicam entre si somente aquelasinformações que são necessárias para se obtera função do software.
30
8/15/2019 Aula 5 ProjetoSoftware
31/53
INDEPENDÊNCIA FUNCIONAL produto direto damodularidade e do conceito de ocultação dainformação.
Alcançada desenvolvendo-se módulos comfunção "com um só propósito" e "aversão" ainterações excessivas com outros módulos;
Um software com módulos independentes é
mais fácil de ser desenvolvido e mais fácil deser mantido => fundamental para um bomprojeto.
31
8/15/2019 Aula 5 ProjetoSoftware
32/53
A INDEPENDÊNCIA FUNCIONAL é medidausando-se dois critérios qualitativos:
COESÃO
ACOPLAMENTO
32
8/15/2019 Aula 5 ProjetoSoftware
33/53
A INDEPENDÊNCIA FUNCIONAL é medidausando-se dois critérios qualitativos:
COESÃO
ACOPLAMENTO
33
COESÃO Medida da força
funcional relativade um módulo.
Pode ser vista comoa força que mantém unidosos elementos de um módulo.
8/15/2019 Aula 5 ProjetoSoftware
34/53
8/15/2019 Aula 5 ProjetoSoftware
35/53
PARTICIONAMENTO ESTRUTURAL a estrutura doprograma deve ser particionadahorizontalmente e verticalmente
35
particionamento horizontal:define três partições:
entrada, transformação de
dados (processamento) e
saída.
Função 1 Função 3
Função 2
8/15/2019 Aula 5 ProjetoSoftware
36/53
PARTICIONAMENTO ESTRUTURAL a estrutura doprograma deve ser particionadahorizontalmente e verticalmente
36
particionamento vertical:módulos de nível mais
alto devem realizar
funções de controle; os
módulos de nível mais baixo devem realizar as
tarefas de entrada,
processamento e saída.
Função 1 Função 3
Função 2
Módulos detomada
de decisão
Módulos
`trabalhadores´
8/15/2019 Aula 5 ProjetoSoftware
37/53
ARQUITETURA DE SOFTWARE é a estruturahierárquica de componentes de programa
(módulos), o modo pelo qual estescomponentes interagem e as estruturas dedados que são usadas pelos componentes.
37
8/15/2019 Aula 5 ProjetoSoftware
38/53
8/15/2019 Aula 5 ProjetoSoftware
39/53
39
Princípios básicos de projeto para arquiteturas
modulares:
(1) unidades modulares;
(2) poucas interfaces;
(3) interfaces pequenas (fraco acoplamento);
(4) interfaces explícitas;
(5) ocultação de informações.
Correspondem aos módulos do sistema.
Projeto Arquitetural:ARQUITETURA DO
SOFTWARE
8/15/2019 Aula 5 ProjetoSoftware
40/53
40
Princípios básicos de projeto para arquiteturas
modulares:
(1) unidades modulares;
(2) poucas interfaces;
(3) interfaces pequenas (fraco acoplamento);
(4) interfaces explícitas;
(5) ocultação de informações.
Para conseguir baixo acoplamento:
o número de interfaces entre osmódulos e a quantidade de informações
que se movimentam por uma interface
devem ser minimizados.
Projeto Arquitetural:ARQUITETURA DO
SOFTWARE
8/15/2019 Aula 5 ProjetoSoftware
41/53
41
Princípios básicos de projeto para arquiteturas
modulares:
(1) unidades modulares;
(2) poucas interfaces;
(3) interfaces pequenas (fraco acoplamento);
(4) interfaces explícitas;
(5) ocultação de informações.
Quando os módulos precisam se
comunicar , eles devem fazê-lo deuma maneira óbvia e direta.
Projeto Arquitetural:ARQUITETURA DO
SOFTWARE
P j A i l
8/15/2019 Aula 5 ProjetoSoftware
42/53
42
Princípios básicos de projeto para arquiteturas
modulares:
(1) unidades modulares;
(2) poucas interfaces;
(3) interfaces pequenas (fraco acoplamento);
(4) interfaces explícitas;
(5) ocultação de informações.
Todas as informações sobre um módulo
são escondidas do acesso externo.
Projeto Arquitetural:ARQUITETURA DO
SOFTWARE
8/15/2019 Aula 5 ProjetoSoftware
43/53
43
Projeto
Codificação
Teste
Modelo
ComportamentalModelo
Funcional
Modelo de
Informação
Outros
Requisitos
Projeto de Dados
ProjetoProcedimental
ProjetoArquitetural
Projeto de Interface
Programas
Software
Integrado eValidado
Projeto Procedimental
Objetivo
Especificar os detalhes
dos algoritmos de forma
não ambígua.
8/15/2019 Aula 5 ProjetoSoftware
44/53
PROCEDIMENTO DE SOFTWARE: focaliza osdetalhes de processamento de cada móduloindividualmente.
O Procedimento deve oferecer umaespecificação precisa do processamento (sequência de eventos, pontos de decisão,operações repetitivas e até mesmo estrutura eorganização de dados).
44
8/15/2019 Aula 5 ProjetoSoftware
45/53
8/15/2019 Aula 5 ProjetoSoftware
46/53
Características:
1- uma sintaxe fixa de palavras-chave que forneçam todas as
construções estruturadas, declarações de dados e
características de modularidade.
2- uma sintaxe livre de linguagem natural que descreva as
características de processamento.
3- facilidades de declaração de dados que incluam tanto asestruturas de dados simples como as complexas.
4- a definição de subprogramas ou técnicas de chamada que
apóiem vários modos de descrição de interfaces.
46
8/15/2019 Aula 5 ProjetoSoftware
47/53
Nas fases iniciais, costuma-se usardeclarações que informam◦ Pré-condições◦ Pós-condições
É uma linguagem baseada em lógicamatemática
Usado por exemplo em casos de uso econtratos.
47
8/15/2019 Aula 5 ProjetoSoftware
48/53
48
Projeto
Codificação
Teste
Modelo
ComportamentalModelo
Funcional
Modelo de
Informação
Outros
Requisitos
Projeto de Dados
ProjetoProcedimental
ProjetoArquitetural
Projeto de Interface
Programas
Software
Integrado eValidado
Projeto de InterfaceObjetivo
Estabelecer os
mecanismos deinteração e layout para a
interação homem-
máquina
8/15/2019 Aula 5 ProjetoSoftware
49/53
Processo iterativo, abrangendo asatividades:
◦ Análise e modelagem do usuário, tarefa, ambiente.
◦ Projeto da interface. Tempo de resposta do sistema. Facilidades de ajuda ao usuário.
Manipulação de informações de erro. Rotulação de comandos.
49
8/15/2019 Aula 5 ProjetoSoftware
50/53
◦Construção da interface. Ferramentas de projeto de interface e prototipagem.
Fornecem componentes de software “pré-empacotados” para criar uma interface com o usuário.
◦Validação da interface. Determinar se o protótipo operacional da interface
satisfaz as necessidades do usuário. Dados qualitativos.
Dados quantitativos. Experimentos de usabilidade Acessibilidade
50
8/15/2019 Aula 5 ProjetoSoftware
51/53
Regras de Ouro.◦ Coloque o usuário no controle.◦ Reduza a sobrecarga cognitiva do usuário.◦ Faça a interface consistente.◦ ...
51
8/15/2019 Aula 5 ProjetoSoftware
52/53
52
Projeto
Codificação
Teste
ModeloComportamental
ModeloFuncional
Modelo deInformação
Outros
Requisitos
Projeto deDados
Projeto Procedimental
ProjetoArquitetural
Projeto de Interface
Programas
Software
Integrado eValidado
8/15/2019 Aula 5 ProjetoSoftware
53/53
Profa. Ellen Francine
SSC - 5764
Engenharia de Software