Aula 5 ProjetoSoftware
Aula 5 ProjetoSoftware
Aula 5 ProjetoSoftware
Engenharia de Software
Projeto de
Dados
Codificação
Programas
Projeto Software
Procedimental Teste Integrado e
Validado
3
Ponto de Vista Técnico
DADOS: o modelo de domínio da informação é
transformado nas estruturas de dados que serão exigidas
para implementar o software.
5
Projeto preliminar
Projeto detalhado
Projeto procedimental
Projeto de interface
Projeto arquitetural
Projeto de dados
6
Fomentar a qualidade durante o processo de
desenvolvimento.
7
Sistema instável.
Manutenção
Falhará quando pequenas mudanças Manutenção
forem feitas. Difícil de testar.
Qualidade não pode ser verificada
Teste
até um ponto tardio do processo
de desenvolvimento. Teste
Implementação
Implemen-
Projeto tação
COM projeto
SEM projeto
8
Modelo de
Modelo
Informação
Comportamental
Modelo Projeto de Dados
Funcional Objetivo
Outros Projeto de Interface
Requisitos Projeto Projeto Selecionar
Arquitetural
representações lógicas
Projeto dos dados (estruturas de
de Dados Codificação
dados), identificados
Projeto Programas
durante a fase de
Procedimental especificação dos
Software
Teste Integrado e
requisitos.
Validado
9
ESTRUTURA DE DADOS: é uma representação do
relacionamento lógico entre elementos de dados
individuais.
10
Você moraria em uma casa em que
não há um projeto (planta) ?
11
Modelo de
Modelo
Informação
Comportamental
Modelo Projeto Arquitetural
Funcional Objetivo
Outros Projeto de Interface
Requisitos Projeto Projeto Desenvolver uma
Arquitetural
estrutura modular do
Projeto sistema e representar as
de Dados Codificação relações de controle
Projeto entre os módulos.
Programas
Procedimental Software
Teste Integrado e
Validado
12
O projeto arquitetural une a estrutura de programa
e a estrutura de dados, definindo interfaces que
possibilitam que os dados fluam pelo programa.
13
Propriedades que devem ser especificadas
como parte de um projeto arquitetural:
14
Propriedades que devem ser especificadas
como parte de um projeto arquitetural:
15
Propriedades que devem ser especificadas
como parte de um projeto arquitetural:
16
O projeto arquitetural pode ser representado
usando-se um ou mais modelos:
◦ Modelo estrutural: representa a arquitetura como
uma coleção organizada de componentes de
programa.
◦ Modelo de arcabouço (framework): aumenta o nível
de abstração de projeto por meio de tentativas de
identificar padrões de projeto arquitetural
repetidos, encontrados em tipos de aplicações
similares.
17
O projeto arquitetural pode ser representado
usando-se um ou mais modelos:
◦ Modelo dinâmico: cuida dos aspectos
comportamentais da arquitetura do programa,
indicando como a estrutura ou configuração do
sistema pode mudar em reação a eventos externos.
18
O projeto arquitetural pode ser representado
usando-se um ou mais modelos:
19
CONCEITOS
Abstração
Refinamento
Modularidade
Ocultação da Informação
Independência Funcional
Arquitetura
Particionamento Estrutural
20
ABSTRAÇÃO: possibilita que o projetista
represente os procedimentos, os dados e o
controle em vários níveis de detalhes.
Uma solução:
é declarada em termos amplos usando-se a alto
linguagem do ambiente do problema
Nível
é estabelecida usando-se uma terminologia de
orientada à implementação Abstração
é estabelecida de uma forma que possa ser
diretamente implementada baixo
21
Abstração Procedimental: uma sequência de
instruções designadas que têm uma função
específica e limitada.
22
Abstração de Dados: uma coleção designada
de dados que descrevem um objeto de
dados.
23
Abstração de Controle: implica um mecanismo
de controle do programa sem especificar
detalhes internos.
24
REFINAMENTO passo a passo: é uma antiga
estratégia de projeto top-down (1971)
25
MODULARIDADE: o software é dividido em
componentes (módulos), que são integrados
para atender aos requisitos do problema.
◦ Dividir para conquistar.
26
MODULARIDADE
A submodularidade ou a
supermodularidade devem
É mais fácil resolver um
ser evitadas.
problema complexo
quando ele é dividido em COMO DEFINIR UM TAMANHO
partes. DE MÓDULO APROPRIADO?
Dividir indefinidamente torna
o problema infinitamente
pequeno?
NÃO
27
28
OCULTAÇÃO DE INFORMAÇÕES: o conceito de
modularidade leva o projetista de software a
uma questão fundamental:
“Como decompor uma solução de software para
obter o melhor conjunto de módulos? ”
29
Os módulos devem ser especificados e
projetados de tal forma que as informações
(procedimentos e dados) contidas num módulo
sejam inacessíveis a outros módulos que não
tenham necessidade de tais informações.
30
INDEPENDÊNCIA FUNCIONAL: produto direto da
modularidade e do conceito de ocultação da
informação.
Alcançada desenvolvendo-se módulos com
função "com um só propósito" e "aversão" a
interações excessivas com outros módulos;
Um software com módulos independentes é
mais fácil de ser desenvolvido e mais fácil de
ser mantido => fundamental para um bom
projeto.
31
A INDEPENDÊNCIA FUNCIONAL é medida
usando-se dois critérios qualitativos:
COESÃO
ACOPLAMENTO
32
A INDEPENDÊNCIA FUNCIONAL é medida
usando-se dois critérios qualitativos:
COESÃO COESÃO
Medida da força
funcional relativa
ACOPLAMENTO de um módulo.
Pode ser vista como
a força que mantém unidos
os elementos de um módulo.
33
A INDEPENDÊNCIA FUNCIONAL é medida
usando-se dois critérios qualitativos:
COESÃO
ACOPLAMENTO
É o grau de ACOPLAMENTO
interdependência
entre os módulos.
34
PARTICIONAMENTO ESTRUTURAL: a estrutura do
programa deve ser particionada
horizontalmente e verticalmente
particionamento horizontal: Função 3
Função 1
define três partições:
entrada, transformação de
dados (processamento) e
saída.
Função 2 35
PARTICIONAMENTO ESTRUTURAL: a estrutura do
programa deve ser particionada
horizontalmente e verticalmente
particionamento vertical: Função 3
Função 1
módulos de nível mais Módulos de
alto devem realizar tomada
funções de controle; os de decisão
módulos de nível mais
baixo devem realizar as
tarefas de entrada,
processamento e saída. Módulos
`trabalhadores´
Função 2 36
ARQUITETURA DE SOFTWARE é a estrutura
hierárquica de componentes de programa
(módulos), o modo pelo qual estes
componentes interagem e as estruturas de
dados que são usadas pelos componentes.
37
Projeto Arquitetural: ARQUITETURA DO
SOFTWARE
38
Projeto Arquitetural: ARQUITETURA DO
SOFTWARE
de projetoaos
Correspondem
Princípios básicos módulos
para do sistema.
arquiteturas
modulares:
(1) unidades modulares;
(2) poucas interfaces;
(3) interfaces pequenas (fraco acoplamento);
(4) interfaces explícitas;
(5) ocultação de informações.
39
Projeto Arquitetural: ARQUITETURA DO
SOFTWARE
Para conseguir baixo acoplamento:
o número de interfaces entre os
módulos e a quantidade de informações
Princípios básicos de projeto para arquiteturas
que se movimentam por uma interface
modulares: devem ser minimizados.
40
Projeto Arquitetural: ARQUITETURA DO
SOFTWARE
41
Projeto Arquitetural: ARQUITETURA DO
SOFTWARE
42
Modelo de
Modelo
Informação
Comportamental
Modelo
Funcional
Outros Projeto de Interface Projeto Procedimental
Requisitos Projeto Projeto Objetivo
Arquitetural
Projeto
Especificar os detalhes
de Dados Codificação dos algoritmos de forma
43
PROCEDIMENTO DE SOFTWARE: focaliza os
detalhes de processamento de cada módulo
individualmente.
44
Linguagem de projeto de programa
(inglês estruturado ou pseudocódigo)
45
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 as
estruturas 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
Nas fases iniciais, costuma-se usar
declarações que informam
◦ Pré-condições
◦ Pós-condições
É uma linguagem baseada em lógica
matemática
Usado por exemplo em casos de uso e
contratos.
47
Modelo de Projeto de Interface
Modelo
Informação
Comportamental Objetivo
Modelo
Funcional
Outros Projeto de Interface Estabelecer os
Requisitos Projeto Projeto mecanismos de
Arquitetural interação e layout para a
Projeto interação homem-
de Dados Codificação máquina
Projeto Programas
Procedimental Software
Teste Integrado e
Validado
48
Processoiterativo, abrangendo as
atividades:
◦ 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
◦ 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
Regras de Ouro.
◦ Coloque o usuário no controle.
◦ Reduza a sobrecarga cognitiva do usuário.
◦ Faça a interface consistente.
◦ ...
51
Modelo de
Informação Modelo
Comportamental
Modelo
Funcional
Projeto de Interface
Outros
Requisitos Projeto Projeto
Arquitetural
Projeto de
Dados
Codificação
Programas
Projeto Software
Procedimental Teste Integrado e
Validado
52
SSC - 5764
Engenharia de Software