Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Prévia do material em texto

28/02/2025
1
Fundamentos de Projeto
2
Objetivos
• Princípios de Projeto:
– abstração;
– refinamento;
– ocultamento da informação;
– independência funcional;
– modularidade;
– coesão e
– acoplamento.
• Projeto Detalhado.
• Critérios.
• Implementação.
3
Princípios de Projeto de SW
• Projeto: processo em que se aplicam várias técnicas e 
princípios a fim de definir um dispositivo, um processo ou um 
sistema com detalhes suficientes para permitir sua 
implementação.
• Core do processo de desenvolvimento de software.
1
2
3
28/02/2025
2
4
Princípios de Projeto de SW (cont.)
• Processo Iterativo: Inicialmente representado em nível alto 
de abstração, levado a maior detalhe com iterações e 
refinamentos.
• Segmentado:
– vários (sub-)projetos dentro de um único;
– várias especialidades;
– diversidade de conhecimento.
5
• Projeto de Arquitetura: definição de grandes 
componentes estruturais e relacionamentos;
• Projeto de Dados: estruturação dos dados necessária à 
implementação;
• Projeto de Interfaces:
– internas - comunicação interna;
– externas - entre sistemas;
– usuário - com pessoas.
• Projeto Procedimental: refinar e detalhar os 
procedimentos de relacionamento estrutural.
Princípios de Projeto de SW (cont.)
6
Fluxo da Informação
4
5
6
28/02/2025
3
7
Conceitos
• Abstração: início em nível próximo a análise, sendo reduzido 
a medida que se avança;
• processo pelo qual identificamos os aspectos importantes de 
um fenômeno ignorando seus detalhes.
• Refinamento: processo de elaboração, o projeto vai de níveis 
de abstração mais altos para menores;
8
Conceitos (cont.)
• Ocultação de Informação: dados e procedimentos de um 
módulo / componente inacessível a outro;
• Modularidade: deve estruturar o sistema como 
módulos/componentes coesos e fracamente acoplados;
9
• Independência Funcional: interações entre módulos 
minimizada;
• o quanto o sistema é independente de particularidades de 
linguagens, das características do S.O. e domínio.
• Critérios de qualidade:
– coesão e 
– acoplamento.
Conceitos (cont.)
7
8
9
28/02/2025
4
10
Fundamentos
• Abstração
– apresentação em diferentes níveis de detalhes:
• procedimental.
• dados.
• Refinamento
– processo de elaboração:
• projeto top-down (passo a passo).
11
Fundamentos (cont.)
• Modularidade
– divisão em componentes nomeáveis e endereçáveis:
• viabiliza administração;
• conceitua tipos abstratos de dados.
• Arquitetura
– Referência a:
• estrutura hierárquica de componentes (módulos);
• estrutura de dados.
12
• Arquitetura (cont.)
Fundamentos (cont.)
10
11
12
28/02/2025
5
13
• Arquitetura: diferentes estruturações
Fundamentos (cont.)
14
• Hierarquia
Fundamentos (cont.)
15
• Estrutura de Dados
– representação do relacionamento lógico entre elementos de dados 
individuais.
– tão importante quanto a arquitetura pois afeta o projeto procedimental 
final.
Fundamentos (cont.)
13
14
15
28/02/2025
6
16
• Procedimento de Software
– detalhes de processamento de cada módulo;
– especifica:
• processamento.
• sequência de eventos.
• pontos de decisão exatos.
• operações representativas.
• estrutura e / ou organização de dados.
Fundamentos (cont.)
17
• Ocultamento de Informação
– aspecto fundamental da modularidade;
– critério que melhora a fase de teste;
– facilita a manutenção do software;
– módulos devem ter responsabilidades bem definidas e ser soberanos 
sobre as decisões de projeto que ensejam.
Fundamentos (cont.)
18
Acoplamento
• o quão "amarrado" uma parte do sistema é às outras partes. 
• o quão dependente uma parte do sistema é das estruturas 
internas das outras partes do sistema. 
• uma medida do quanto uma classe conhece do mundo à sua 
volta (O.O.). 
16
17
18
28/02/2025
7
19
Acoplamento (cont.)
• Baixo acoplamento: 
– facilita o entendimento do código; 
– facilita a manutenção do código; 
– minimiza efeitos colaterais, que um dano em um dado / módulo se 
propague; 
– facilita o teste / debug isolado.
20
Coesão
• é uma medida da diversidade dos "tópicos" abordados por um 
módulo.
• quanto menor, maior a sua coesão. 
• um módulo focado em um aspecto do sistema, é coeso. 
• sistemas onde os aspectos são difusos, são pouco flexíveis e 
dificultam extensões, modificações e reutilizações. 
• exemplos: classes, métodos, funções, etc. 
21
Coesão (cont.)
• Facilita o reuso:
– simples utilização se necessário;
– sem “extras” associados;
• Facilita a manutenção:
– sem duplicação de código;
• Facilita o entendimento do código:
– responsabilidades bem definidas;
19
20
21
28/02/2025
8
22
Encapsulamento
• reforça a alta coesão e baixo acoplamento; 
• consiste em ocultar detalhes de implementação; 
• Interação por interfaces; 
• evitar o acesso público a atributos, baixando o acoplamento; 
• na prática, garante-se encapsulamento por:
– atributos privados (private);
– interface de métodos não-privado.
23
Modularidade
• módulo: componente de sistema que fornece um ou mais 
serviços para outros módulos.
• normalmente utiliza os serviços de outros módulos, não sendo 
portanto considerado um sistema independente.
24
Modularidade (cont.)
• conceito fundamental para o projeto de sistemas complexos
• em um desenvolvido de forma monolítica, o número de 
caminhos de controle, variáveis e a complexidade global 
tornariam sua compreensão praticamente impossível.
22
23
24
28/02/2025
9
25
• tomemos as funções C(x), complexidade de um problema, e 
E(x), esforço associado para resolver o problema.
• dado dois problemas P1 e P2, observa-se:
• se C(P1) > C(P2) então E(P1) > E(P2)
Modularidade (cont.)
26
• simplificando: demora mais para se resolver um problema mais 
difícil.
• Também temos que:
• C(P1 + P2) > C(P1) + C(P2)
– a complexidade de um problema que combine P1 e P2 é maior do que 
a complexidade percebida quando cada problema é considerado 
separadamente.
• E(P1 + P2) > E(P1) + E(P2)
– é mais fácil resolver um problema complexo quando ele é dividido em 
partes 
Modularidade (cont.)
27
Modularidade (cont.)
25
26
27
28/02/2025
10
28
Projeto Detalhado
• Etapas:
– checar pré-requisitos e pós-requisitos;
– definir informação a ser ocultada, entradas, saídas e tratamento de 
erros;
– projetar testes para os módulos;
– analisar aspectos de eficiência;
– pesquisar algoritmos e estruturas de dados;
– escrever script em pseudolinguagem, através de refinamentos 
sucessivos;
– analisar e projetar estruturas de dados;
– fazer inspeção final.
29
Projeto Detalhado (cont.)
• Revisão:
– correção da tradução do projeto para a linguagem de programação;
• por exemplo, relacionamentos, heranças e interfaces (UML) 
implementados da maneira correta.
– correção das interfaces dos módulos projetados;
• as operações estão corretas e documentadas corretamente.
30
• Revisão (cont.):
– correção das máquinas de estado;
• não possuem estados inatingíveis nem deadlocks (ciclos de 
estados sem saída).
• estados e transições são completos e ortogonais (contemplam 
todas as situações possíveis sem intersecção).
– correção da lógica do pseudocódigo;
• condições são logicamente corretas e otimizadas
Projeto Detalhado (cont.)
28
29
30
28/02/2025
11
31
Critérios de Projeto
• exibir organização hierárquica que faça uso inteligente do 
controle entre os componentes de software.
• modularidade, deve ser logicamente dividido em componentes 
que executem funções e subfunções específicas.
• conter uma representação distinta e separável de dados e 
procedimentos.
• módulos que apresentem características funcionais 
independentes
32
Critérios de Projeto (cont.)
• interfaces que reduzam a complexidade de conexões entre os 
módulos e com o ambiente externo.
• deve ser derivado usando-se um método capaz de permitir 
repetições e que seja orientado pelas informações obtidas 
durante a análise de requisitos de software.
33
Implementação
• Codificação
– transformar script em comentários de altonível;
– preencher código abaixo de cada comentário derivado do 
pseudocódigo;
– checar código quanto à correção lógica;
– checar código quanto às regras de codificação;
– fazer inspeção final.
31
32
33
28/02/2025
12
34
Implementação (cont.)
• Revisão
– correção da digitação;
– correção sintática;
– correção lógica;
– inclui consistência com desenho detalhado;
– obediência ao padrão de codificação;
– qualidade e consistência dos comentários.
35
Implementação (cont.)
• Finalização
– checagem formal do desenho detalhado e código do módulo;
– compilação dos componentes do módulo;
– testes de unidade necessários.
36
Pontos Chave
• abstração: ignore detalhes, foco no core.
• refinamento: detalhamento.
• ocultamento: módulos soberanos.
• independência: não dependente de particularidades.
• coesão: foco dos módulos.
• acoplamento: dependência.
34
35
36
28/02/2025
13
37
Pontos Chave (cont.)
• modularidade: divisão em componentes. Otimização de 
custos.
• Projeto Detalhado:
– verificação de requisitos;
– projetar testes;
– analisar eficiência;
– estrutura de dados.
38
• Critérios:
– modularidade;
– independência de dados;
– independência de funcionalidades;
– simplicidade;
– cumprir com requisitos.
• Implementação:
– regras de codificação;
– comentários;
– consistência, correção e qualidade.
Pontos Chave (cont.)
FIM
37
38
39

Mais conteúdos dessa disciplina