270 likes | 354 Views
Instituto Politécnico de Beja Escola Superior de Tecnologia e Gestão Engenharia Informática – Engenharia de Software. Docente Responsável: Dra. Isabel Brito. Design Patterns. Cláudio Pedro N.º 3805 Francisco Rocha N.º 3747. Histórico.
E N D
Instituto Politécnico de BejaEscola Superior de Tecnologia e GestãoEngenharia Informática – Engenharia de Software Docente Responsável: Dra. Isabel Brito Design Patterns Cláudio Pedro N.º 3805 Francisco Rocha N.º 3747
Histórico • A ideia de armazenar informação sobre patterns, observados num contexto, pode ser atribuída ao arquitecto Christopher Alexander e foi elaborada no contexto de arquitectura • “Um pattern descreve um problema que se repete várias vezes num determinado meio, e em seguida descreve o núcleo da sua solução, de modo que esta solução possa ser usada milhares e milhares de vezes.” (Alexander, 1978) Design Patterns
Histórico (Cont.) • Em 1995, 4 autores – Erich Gamma, Richard Helm, Ralph Johnson e John Vlissides – conhecidos como “The Gang of Four”, publicaram o primeiro catálogo de Design Patterns para programas orientados a objetos, com o título: Design Patterns: Elements of Reusable Object-Oriented Software Design Patterns
Em que consistem? • Documentação de soluções genéricas e reutilizáveis, aplicáveis em problemas recorrentes • Descrição de soluções que funcionaram e se tornaram receitas para situações similares • Conjunto de classes e objectos relacionados que representam uma solução para um problema abstracto, e que serão particularizados em cada situação concreta Design Patterns
Objectivos • Fornecer uma solução provada para problemas relacionados com o desenvolvimento de software • Isolar a variabilidade que pode existir nos requisitos do sistema • Tornar o sistema mais fácil de entender e manter Design Patterns
Objectivos (Cont.) • Tornar a comunicação entre os designers de software mais eficiente • Permitir que os designers de software visualizem imediatamente o projecto de alto nível nas suas mentes, quando eles sabem o nome do pattern utilizado para determinado problema • Aumentar a produtividade na fase de design e a qualidade do software produzido Design Patterns
Características • Descrição • Classificação Design Patterns
Características - Descrição • Nome e Classificação • Identifica o pattern • Propósito • Tipo de problema que o pattern trata • Outros nomes • Conjunto de outros nomes para o pattern • Motivação • Um cenário que ilustra o problema e como o pattern o resolve Design Patterns
Características - Descrição (Cont.) • Aplicação • Situações em que este pattern pode ser aplicado • Estrutura • Representação gráfica das classes do pattern • Participantes • Classes que participam no pattern e respectivas responsabilidades Design Patterns
Características - Descrição (Cont.) • Colaborações • Como os participantes interagem para cumprir as suas responsabilidades • Consequências • Resultados e efeitos causados pelo uso do pattern • Implementação • Dicas e técnicas que o designer deve saber, e possíveis armadilhas para as quais deve estar preparado Design Patterns
Características - Descrição (Cont.) • Exemplo de código • Fragmentos de código que ilustram como o pattern deve ser implementado • Usos conhecidos • Exemplos de utilização do pattern em sistemas já implementados • Patterns relacionados • Patterns fortemente relacionados com o pattern em questão e príncipais diferenças Design Patterns
Características – Classificação • Quanto ao seu propósito: • Criacão • Descreve a melhor maneira de criar um objecto • Estrutural • Diz respeito à composição de objectos e classes • Comportamental • Caracteriza o modo como classes e objectos interagem e compartilham responsabilidades Design Patterns
Características – Classificação (Cont.) • Quanto ao escopo: • Classes • Tratam do relacionamento entre classes e subclasses • Objectos • Tratam relacionamentos entre objectos que podem ser alterados em tempo de execução • Exemplo • Um pattern estrutural de classes utiliza herança para compor as classes, enquanto que um pattern estrutural de objectos descreve como estes devem ser agrupados Design Patterns
Características – Classificação (Cont.) Fig. 1 – “Os 23 design patterns clássicos organizados segundo a sua classificação” Design Patterns
Design Patterns & Reutilização • Em que consiste a reutilização? • “Utilização de produtos de software, construídos ao longo do processo de desenvolvimento, numa situação diferente daquela para a qual foram originalmente produzidos.” (Freeman, 1980) • Objectivo da reutilização • Aumentar a qualidade e produtividade no desenvolvimento de software Design Patterns
Design Patterns & Reutilização (Cont.) • Reutilização foi provavelmente a grande motivação para o desenvolvimento de design patterns • É fulcral compreender os aspectos fundamentais que possibilitam a reutilização, para depois se poder propor um pattern específico de reutilização Design Patterns
Design Patterns & Framework • Em que consiste um framework? • Técnica de reutilização orientada a objectos que compreende tanto design como código, com uma representação física em termos de classes, métodos e objectos • Objectivo de um framework • Diminuir a quantidade de código necessária para implementar aplicações similares Design Patterns
Design Patterns & Framework (Cont.) • Design Patterns são soluções mais abstractas e genéricas do que as frameworks, que sendo mais específicas se relacionam sempre com apenas um domínio de aplicação • Design Patterns permitem a reutilização da arquitectura • Frameworks permitem a reutilização do código Design Patterns
Design Patterns & Framework (Cont.) • Design Patterns possuem menores arquitecturas • Um framework pode conter em si vários patterns • Design Patterns descrevem como fazer um design, enquanto que um framework é o próprio design Design Patterns
Exemplo • Desenvolvimento de um framework para cálculo de impostos • Existe a necessidade de criar uma única instância da classe Emissor, pois uma vez instanciada, poderá ser usada pelo resto da aplicação. • Deverá então ser utilizado o pattern Singleton na implementação do framework Design Patterns
Exemplo (Cont.) • Nome e Classificação: • Singleton • Pattern de criação • Propósito: • Garantir que uma classe só tenha uma única instância e prever um ponto de acesso global a essa instância • Motivação • Garantir que apenas um objecto exista, independentemente do número de requisições que receber para criá-lo Design Patterns
Exemplo (Cont.) • Estrutura: Design Patterns
Exemplo (Cont.) • Consequências: • Acesso controlado à instância única • Espaço de nomes reduzido • Permite refinamento de operações e representação • Permite um número variável de instancias • Mais flexível do que operações de classes • Implementação: • Garantir a existência de uma única instância • Criando subclasses da classe Singleton Design Patterns
Exemplo (Cont.) Fig. 2 – “Diagrama de classes da classe Emissor implementando o pattern Singleton” Design Patterns
Relação com Engenharia de Software • Engenharia de Software estabelece e usa sólidos princípios de engenharia para que se possa obter economicamente um software que seja confiável e eficaz • Design Patterns são então uma ferramenta documental para a resolução de problemas durante a fase de design do software, compreendida na Engenharia de Software Design Patterns
Referências Bibliográficas • Formato convencional • Gamma, Helm,Johnson, Vlissides – Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley Publishing Company, 1995 • Buschmann, Meunier, Rohnert, Sommerlad, Stal – Pattern-Oriented Software Architecture: A System of Patterns, J. Wiley and Sons Ltd., 1996 • Formato digital • http://www2.fundao.pro.br/articles.asp?cod=144 • http://www.inf.furb.br/seminco/2004/artigos/105-vf.pdf • http://www.ctp.di.fct.unl.pt/mei/dsoo/TEXTOS/Aula10.pdf • http://www.inf.ucp.br/profs/tavares/2002_01/aulaDP-1.ppt • http://www.inf.ucp.br/profs/tavares/2002_01/aulaFramework.ppt • http://www.lia.ufc.br/~eti/menu/modulos/Pattern/aulaDesignPatternsI4pp.pdf • http://www.psphome.hpg.ig.com.br/downloads/ENG_SOFTWARE_(Slides).ppt Design Patterns
Design Patterns FIM