• Nenhum resultado encontrado

Fundamentos de Projeto

N/A
N/A
Protected

Academic year: 2022

Share "Fundamentos de Projeto"

Copied!
13
0
0

Texto

(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.

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.

(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

Princípios de Projeto de SW

(cont.)

• 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.

6

Fluxo da Informação

(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;

Conceitos

(cont.)

• 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.

(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

Fundamentos

(cont.)

• Arquitetura (cont.)

(5)

13

Fundamentos

(cont.)

• Arquitetura: diferentes estruturações

14

Fundamentos

(cont.)

• Hierarquia

Fundamentos

(cont.)

• 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.

(6)

16

Fundamentos

(cont.)

• Procedimento de Software

– detalhes de processamento de cada módulo;

– especifica:

• processamento.

• seqüência de eventos.

• pontos de decisão exatos.

• operações representativas.

• estrutura e / ou organização de dados.

17

Fundamentos

(cont.)

• 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.

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.).

(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.

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;

(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.

(9)

25

Modularidade

(cont.)

• 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)

26

Modularidade

(cont.)

• 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.)

(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

Projeto Detalhado

(cont.)

• 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

(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.

Implementação

• Codificação

– transformar script em comentários de alto ní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.

(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.

(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

Pontos Chave

(cont.)

• 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.

FIM

Referências

Documentos relacionados

Para evitar, em uma proposta de pesquisa, confundir premissas, lampejos e hipóteses de trabalho com hipóteses de pesquisa, talvez a melhor tática, para o

A participação foi observada durante todas as fases do roadmap (Alinhamento, Prova de Conceito, Piloto e Expansão), promovendo a utilização do sistema implementado e a

Este trabalho traz uma contribuição conceitual sobre a utilização do sistema de gestão de produtividade que poderá motivar futuras pesquisas sobre o tema, bem

Essa trajetória é encenada em ‘Cássia Eller – o Musical’, que estréia em Belém, no período de 24 a 27 de setembro, no Theatro da Paz, com direção de João Fonseca e

Classificou as escolas em: isoladas rurais, isoladas urbanas, isoladas noturnas, escolas reunidas e grupos escolares (MATO GROSSO, 1927). Embora as medidas adotadas

c.4) Não ocorrerá o cancelamento do contrato de seguro cujo prêmio tenha sido pago a vista, mediante financiamento obtido junto a instituições financeiras, no

[r]

Os autores relatam a primeira ocorrência de Lymnaea columella (Say, 1817) no Estado de Goiás, ressaltando a importância da espécie como hospedeiro intermediário de vários parasitos