Você está na página 1de 4

Análise de projeto Desenvolvedores acumulam soluções

Métodos: Estruturado, Essencial e para os problemas que resolvem com


orientado a objetos. frequência, além de serem difíceis de se
Arquitetura de Software: elaborar elas podem aumentar a
Objetivos: Visão abstrata do software produtividade e a qualidade do software.
através de componentes e interfaces, Definição: Cada padrão descreve um
independência da plataforma e paradigma de problema que ocorre em nosso ambiente, e
programação. então descreve a sua solução para aquele
Técnica: Estilos arquiteturais, padrões problema, de tal maneira que seja possível
de projeto e Frameworks. usar essa solução milhões de vezes sem nunca
O que é: É a estrutura de um programa fazê-la da mesma forma duas vezes.
ou um sistema, seus relacionamentos e os Padrões de Projeto
princípios que guiam o seu projeto e a sua Tipos: Padrões de Criação, Estruturais e
evolução no tempo. Estabelece o contexto Comportamentais
para o design e implementação
Projeto de Software
Conceito: Permite que o sistema seja
modelado ou o produto seja construído.
Também é onde a qualidade do software é
estabelecida.
3 primeiras atividades técnicas: Projeto,
geração de código e teste.

Como se avalia a qualidade de um projeto de


software?
Todos os requisitos devem ser
implementados, o guia deve ser
legível/compreensível para quem gera e para
quem testa os códigos. Deve fornecer uma
visão completa do software
Projeto de Software – Abstração
Conceito: Um problema pode
apresentar vários níveis de abstração, alto –
termos abrangentes, baixo – descrição mais
detalhada
Projeto de Software – Arquitetura
Conceito: estrutura ou organização de
componentes do programa(módulos) e como
eles interagem e as estruturas de dados são
usadas pelos componentes.
Arquitetura de Software – Padrões de
Software
Por que padrões?
Padrões GoF - Adapter Estrutura:
Propósito: é um padrão de projeto
estrutural que permite objetos com interfaces
incompatíveis colaborarem entre si.
Adaptador de Classe:

Prós e contras:
++Você evita acoplamentos firmes
entre o criador e os produtos concretos.
--O código pode se tornar mais
complicado, pois você precisa introduzir
Adaptador de Objeto: muitas subclasses novas para implementar o
padrão. O melhor cenário é quando você está
introduzindo o padrão em uma hierarquia
existente de classes criadoras.
Padrões GoF – Abstract Factory
Propósito: é um padrão de projeto
criacional que permite que você produza
famílias de objetos relacionados sem ter que
especificar suas classes concretas.
Prós e contras: Solução:
++Princípio de responsabilidade única.
Você pode separar a conversão de interface ou
de dados da lógica primária do negócio do
programa.
--A complexidade geral do código
aumenta porque você precisa introduzir um
conjunto de novas interfaces e classes.
Algumas vezes é mais simples mudar a classe Estrutura:
serviço para que ela se adeque com o resto
do seu código.
Padrões GoF – Factory
Propósito: O Factory Method é um
padrão criacional de projeto que fornece uma
interface para criar objetos em uma
superclasse, mas permite que as subclasses
alterem o tipo de objetos que serão criados.

Prós e contras:
++Você pode ter certeza de que os
produtos que você obtém de uma fábrica são
compatíveis entre si.
++Você evita um vínculo forte entre
produtos concretos e o código cliente.
--O código pode tornar-se mais
complicado do que deveria ser, uma vez que
muitas novas interfaces e classes são
introduzidas junto com o padrão.
Padrões GoF – Singleton
Propósito: é um padrão de projeto
criacional que permite a você garantir que uma
classe tenha apenas uma instância, enquanto Prós e contras:
provê um ponto de acesso global para essa ++Você pode trocar algoritmos usados
instância. dentro de um objeto durante a execução.
Estrutura: ++Você pode isolar os detalhes de
implementação de um algoritmo do código
que usa ele.
++Você pode substituir a herança por
composição.
--Se você só tem um par de algoritmos
e eles raramente mudam, não há motivo real
para deixar o programa mais complicado com
novas classes e interfaces que vêm junto com
o padrão.
--Os Clientes devem estar cientes das
Prós e contras: diferenças entre as estratégias para serem
++Você pode ter certeza que uma capazes de selecionar a adequada.
classe só terá uma única instância. Padrões GoF – Iterator
++Você ganha um ponto de acesso Propósito: é um padrão de projeto
global para aquela instância. comportamental que permite a você percorrer
++O objeto singleton é inicializado elementos de uma coleção sem expor as
somente quando for pedido pela primeira vez. representações dele (lista, pilha, árvore, etc.)
--O padrão Singleton pode mascarar Estrutura:
um design ruim, por exemplo, quando os
componentes do programa sabem muito
sobre cada um.
Padrões GoF – Strategy
Propósito: é um padrão de projeto
comportamental que permite que você defina
uma família de algoritmos, coloque-os em
classes separadas, e faça os objetos deles
intercambiáveis.
Estrutura: Prós e contras:
++Você pode iterar sobre a mesma Propósito: é um padrão de projeto
coleção em paralelo porque cada objeto estrutural que fornece uma interface
iterador contém seu próprio estado de simplificada para uma biblioteca, um
iteração. framework, ou qualquer conjunto complexo
++Pelas mesmas razões, você pode de classes.
atrasar uma iteração e continuá-la quando Estrutura:
necessário.
--Aplicar o padrão pode ser um
preciosismo se sua aplicação só trabalha com
coleções simples.
--Usar um iterador pode ser menos
eficiente que percorrer elementos de algumas
coleções especializadas diretamente.
Padrões GoF – Composite
Propósito: é um padrão de projeto
estrutural que permite que você componha
objetos em estruturas de árvores e então Prós e contras:
trabalhe com essas estruturas como se elas ++Você pode isolar seu código da
fossem objetos individuais. complexidade de um subsistema.
Estrutura: --Uma fachada pode se tornar um
objeto deus acoplado a todas as classes de
uma aplicação.
Padrões GoF – Observer
Propósito: é um padrão de projeto
comportamental que permite que você defina
um mecanismo de assinatura para notificar
múltiplos objetos sobre quaisquer eventos que
aconteçam com o objeto que eles estão
observando.

Prós e Contras:
++Você pode trabalhar com estruturas
de árvore complexas mais convenientemente:
utilize o polimorfismo e a recursão a seu favor. Prós e contras:
--Pode ser difícil providenciar uma ++Você pode estabelecer relações
interface comum para classes cuja entre objetos durante a execução.
funcionalidade difere muito. Em certos --Assinantes são notificados em ordem
cenários, você precisaria generalizar muito a aleatória
interface componente, fazendo dela uma
interface de difícil compreensão.
Padrões GoF – Facade

Você também pode gostar