1 Engenharia de Software 2007.1 Projeto com Reuso 31/05/07.

Slides:



Advertisements
Apresentações semelhantes
Engenharia de Software
Advertisements

Modelagem de Software Orientado a Objetos
Projeto conceitual Mostra ao cliente exatamente o que o sistema fará
Engenharia de Software
FACULDADE DOS GUARARAPES
Design Patterns Builder Pattern
Projeto de Sistemas de Software
Projeto de Sistemas de Software
Projeto de Sistemas de Software
Componentes: A Abordagem Catalysis
Chain of Responsibility
Análise Estruturada O mais amplamente usado dos métodos de modelagem de requisitos Modelos que retratam fluxo e o conteúdo da informação (dados e controle)
Padrões - introdução O que é um padrão?
Padrão de Construção Factory Method
Design Patterns Projeto de Sistemas de Software.
Fundamentos de Engenharia de SW
Fundamentos da Engenharia de Software
Adriano S. Castro. Soluções para problemas recorrentes no desenvolvimento de software; Orientação a objetos; Facilitam a reutilização; Vocabulário comum;
Arquitetura de software
Visão crítica sobre padrões: Over Engineering
Projeto de Sistemas de Software
METODOLOGIA PARA DESENVOLVIMENTO DE SISTEMAS Prof. Dr. rer. nat. Daniel D. Abdala 1.
Arquiteturas de Referência
Arquitetura de Software Visão Geral
Análise e Projeto de Sistemas
Análise e Projeto de Sistemas
Padrões de Projeto Aplicações empresariais são complexas
Detalhes sobre o curso
Introdução a Desenvolvimento de Sistemas
APLICANDO O PROCESSO DIRIGIDO POR RESPONSABILIDADES PARA A CRIAÇÃO DE UM SUBFRAMEWORK PARA VALIDAÇÃO SINTÁTICA DE FÓRMULAS Autores: Rafael Hornung Simone.
Introdução a Desenvolvimento de Sistemas
Padrões de Projeto These slides complement the E-book, Programming in the Large With Design Patterns available on both Kindle and Nook. Additional supporting.
Design Pattern (Padrões de Projeto)
O Processo Unificado (UP)
RUP - Cap. 4 – Processo Centrado na Arquitetura
Introdução Padrões de Projeto
Padrões de Interação com o Usuário
April 05 Prof. Ismael H. F. Santos - 1 Módulo I Princípios e Padrões de Projeto de SW em Java Professores Eduardo Bezerra –
Processos de Software.
fábrica de software conceitos, idéias e ilusões
Copyright © 2006 Qualiti. Todos os direitos reservados. Uma Visão Crítica.
Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema.
CIGRÉ/BRASIL – COMITÊ NACIONAL BRASILEIRO CE-B5 – PROTEÇÃO E AUTOMAÇÃO SEMINÁRIO INTERNO DE 2005.
Padrão de desenvolvimento
April 05 Prof. Ismael H. F. Santos - 1 Modulo I Princípios e Padrões de Projeto de SW em Java Professores Eduardo Bezerra –
Padrões Arquiteturais (POSA I, II e III)
Padrões de Software Rossana Andrade
CK119 – Engenharia de Software Copyright © Rossana AndradeSlide 1 Padrões de Software Rossana Andrade Departamento de Computação.
Padrões de Projeto de Software Orientado a Objetos
Padrões de projeto M.Sc. Sílvio Bacalá Jr..
1 Design Patterns Israel Rios. 2 Origens A idéia de padrões de projeto não teve origem na ciência da computação Christopher Alexander A Pattern Language:
Desenvolvimento Global de Software
Frameworks e Componentes Daniel Fernando Pavelec.
CURSO DE ESPECIALIZAÇÃO EM TECNOLOGIA JAVA DESIGN PATTERNS PARTE 1: INTRODUÇÃO Prof. Cesar Augusto Tacla UTFPR/Campus.
Fábrica de software princípios, conceitos, e ilusões
1 - Introdução a Padrões de Projeto
Padrões de Projetos Orientados a Objetos I Wolley W. Silva.
PADROES DE PROJETO PROF. OSIEL MARLON. PADRÕES DE PROJETO INTRODUÇÃO Padrões de projeto têm emergido como uma das mais promissoras abordagens para a melhoria.
IF 718 Análise e Projeto de Sistemas Augusto Sampaio Vitor Braga (Estágio docência) Camila Sá (Monitora) Parte do material cedido pela Qualiti Software.
Padrões de Projeto. O que são?  Soluções provenientes de diversos projetos e utilizados por diversos programadores;  Documentados em catálogos como.
Uma Extensão do Fluxo de Análise e Projeto do RUP com suporte a Desenvolvimento Baseado em Componentes Eduardo Almeida
Padrões de Projeto de Criação Padrões de Projeto Orientados a Objetos Prof a. Danielle Martin Universidade de Mogi das Cruzes.
SISTEMA DE TRANSITIVIDADE: PARTICIPANTES PROCESSOS CIRCUNSTÂNCIAS.
Jadson Xavier Muller Oliveira.  É difícil encontrar alguma definição consensual de padrão.  Definição aceitável: - São idéias que foram úteis em algum.
1 Padrões de Projeto de Software Orientado a Objetos Programação Orientada a Objetos Prof. Fabio Kon - IME/USP.
1 Introdução aos Padrões de Projetos Créditos: Prof. Fabio Kon - IME/USP Adaptações: Prof. Nécio de Lima Veras.
Introdução a Padrões de Projeto Padrões de Projeto Orientado a Objetos Profa. Danielle Martin Universidade de Mogi das Cruzes.
Programação Orienta a Objetos (SI) Análise e Projetos de Sistemas (LCC) 1 - Introdução a Padrões de Projeto Eduardo de Lucena Falcão.
Introdução a Padrões de Projeto Padrões de Projeto Orientado a Objetos Profa. Danielle Martin Universidade de Mogi das Cruzes.
Padrões de Projeto.
Transcrição da apresentação:

1 Engenharia de Software Projeto com Reuso 31/05/07

2 Reutilização de software Na maioria das disciplinas de engenharia, sistemas são projetados com base na composição de componentes existentes que foram utilizados em outros sistemas. A engenharia de software, até então, tinha como base o desenvolvimento tradicional. Para alcançar software com mais qualidade, de forma mais rápida e com baixo custo, é necessário adotar um processo de desenvolvimento baseado na reutilização generalizada e sistemática de software.

3 Engenharia de software baseado no reuso de software Reuso de sistemas de aplicações Todo o sistema pode ser reutilizado pela sua incorporação, sem mudança, em outros sistemas Reuso de Componentes Componentes de uma aplicação que variam desde subsistemas até objetos isolados podem ser reutilizados Reuso de funções Componentes de software que implementam uma única função podem ser reutilizados

4 Artefatos reusáveis Afinal, o que se pode “reusar”? Código compilado Casos de testes Modelos e projetos: frameworks e padrões Interface de usuário Planos, estratégias e regras arquiteturais Soluções Idéias

5 Reuso de Software “Software reuse is the use of existing software knowledge or artifacts to build new software artifacts” [Frakes, 1995] Vantagens (em POTENCIAL) MAIS Qualidade MENOS Tempo de desenvolvimento MENORES custos TOTAIS no ciclo de vida Implementação, testes, integração, documentação, manutenção, evolução

6 Benefícios do Reuso Maior confiabilidade Os componentes já foram experimentados e testados em sistemas que já estão funcionando. Redução dos riscos de processo Menos incertezas sobre as estimativas de custos de desenvolvimento. Uso efetivo de especialistas Reuso de componentes ao invés de pessoas. Conformidade com padrões Os padrões são embutidos ao se reutilizar componentes. Ex: padrões de interfaces com o usuário Desenvolvimento acelerado Reduz tempo do desenvolvimento e validação, acelerando a produção

7 Resumindo -> Produtividade Trabalhar mais rápido Automação, ambientes, ferramentas Substituir trabalho humano Trabalhar mais inteligentemente Melhoria do(s) processo(s) Evitar/reduzir tarefas de pouco valor Evitar o trabalho propriamente dito Reuso de ARTEFATOS do CICLO DE VIDA  Evitar/reduzir o desenvolvimento de artefatos específicos para cada projeto Benefícios do Reuso

8 Modelo Incremental para adoção de Reuso None Code leverage Black box code reuse Managed workproducts Architecture reuse Systematic Domain- specific reuse Reduced Development time Reduced maintenance costs Broader coverage High reuse levels Reuse enabled business Investment, experience Benefit

9 O que são Padrões O que é? Nova categoria de conhecimento Conhecimento não é novo, mas falar sobre ele é Objetivo: conhecer o que você já conhece Como? Partindo de problemas e soluções recorrentes em diferentes áreas do conhecimento

10 O que é um Padrão (Cont.) Aplicação Arquitetura Ciência da Computação Engenharia de software Engenharia Mecânica Telecomunicações...

11 O que é um Padrão (Cont.) Por que padrões de software? engenheiros de software não iniciam o seu projeto do nada ao contrário, nós reutilizamos “idéias”que já vimos antes as mesmas técnicas são utilizadas repetitivamente a indústria de software necessita documentar o que nós fazemos

12 Diferentes Definições “Um padrão é uma entidade que descreve um problema que ocorre repetidamente em um ambiente e então descreve a essência da solução para este problema, de tal forma que você use esta solução milhões de vezes, sem nunca utilizá-la do mesmo modo,” Christopher Alexander

13 Diferentes Definições (Cont.) “Um padrão é um pedaço de literatura que descreve um problema de projeto e uma solução geral para o problema num contexto particular, ” James Coplien

14 Diferentes Definições (Cont.) “Um padrão é uma solução provada para um problema em um contexto, ” Comunidade de Software

15 Um Pouco da História Object-Oriented (OO) Metade do anos 80 Padrões de software emergiram de objetos Ward Cunningham and Kent Beck 1987: linguagem de padrões para interface de usuário James Coplien 1988: idioms Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides 1990  1995: Padrões de projeto (Design Patterns)

16 Diferentes tipos de padrões Etapas de Desenvolvimento de Sistemas Requisitos, Análise, Projeto, Implementação e Teste Domínio de Aplicação Segurança, BD, GUI, XML, Web, Sistemas Distribuídos Camada de Aplicação do Padrão Negócios, Apresentação, Integração (Sun) Classificação de Autores GoF: Estrutural, Comportamental, Criação POSA: Sistemas Interativos, Organização do Trabalho, Comunicação

17 Classificação dos Padrões de Software (Cont.) Requisitos AnáliseProjeto Implementação Padrões de Requisitos Padrões de Análise Padrões de Projeto Meta-Padrões Padrões Arquiteturais Idiomas

18 Padrões de Requisitos Documentam as necessidades do usuário e o comportamento genérico do sistema em um alto nível de abstração Ações que os desenvolvedores de software podem tomar para melhorar os requisitos não-funcionais Mostram os relacionamentos entre o usuário ou o operador e o sistema

19 Padrões de Requisitos (Cont.) Fault-tolerant telecommunication patterns Visa a manutenção dos sistemas de comutação Medidas apropriadas para serem tomadas no estágio de desenvolvimento de requisitos Padrões relacionados a confiabilidade (mensagens do sistema e falhas do sistema)  Five minutes of no escalation messages Padrões relacionados aos fatores humanos

20 Padrões de Análise Inicialmente apresentados como complementos aos padrões de projeto Um passo antes do projeto Modelo de análise que focaliza nas estruturas conceituais Padrões de análise do Martin Fowler Domínio de conhecimento de software de negócios Party, quantity, subtype state machines, entre outros

21 Padrões de Análise (Cont.) Party Problema: pessoas e organizações têm responsabilidades semelhantes Solução: Crie um tipo party como um supertype de uma pessoa ou organização

22 Padrões de Projeto Estrutura repetida de elementos de projeto “Um esquema para o refinamento de subsistemas ou de componentes de sistemas ou as relações entre eles.” “...resolvem um problema geral de projeto num contexto particular.”, GoF Padrões de projeto que incluem detalhes de código de baixo nível Aplicados a diferentes tipos de problemas Padrões Arquiteturais e Meta-Padrões podem ser considerados Padrões de Projeto.

23 Idiomas Relacionados com a implementação de características de projeto específicas Padrão de baixo nível específico para uma linguagem de programação Idiomas em C++ C++ Programming Styles and Idioms, James Coplien, 1991

24 Idiomas (Cont.) Nome: Counted Body Contexto: A interface de uma classe é separada de sua implementação (respectivamente, classes handle e body) Problema: atribuição em C++ é definida recursivamente como membro-por-membro com cópia quando a recursão termina Solução: Um contador de referência é adicionado à classe body para facilitar o gerenciamento de memória Autor e data: James Coplien, 1994

25 A Comunidade de Padrões Uma hierarquia de workshops de escritores Grupos de leitura local Grupo Hillside Livros com os artigos da conferência Conferências PLoP ao redor do mundo

26 Ética de Padrões Regra de Buschmann: nunca capture suas próprias idéias em um padrão Não pense que padrões resolvem tudo Tente sempre encorajar as pessoas a repassar os conhecimentos Sempre reconheça aqueles que criaram as técnicas ou que primeiro se empenharam a escrever sobre elas Padrões são “apenas” mais uma técnica para ajudá-lo no desenvolvimento de software

27 Reuso Conheça os padrões que estão disponíveis Catálogo de padrões de 2000 Escolha aquele que satisfaz as suas necessidades Um padrão é difícil de entender se você não necessita dele Apenas tenha uma visão geral Utilize o vocabulário dos padrões em revisões e sessões de projeto

28 Reuso (Cont.) GoF Bastante utilizado entre a comunidade de software Core J2EE Pattern Catalog Padrões Arquiteturais Frank Bushmann, Regine Meunier, Hans Rohnert, Peter Sommerlad, Michael Stal (Gang of Five)

29 GoF Design Patterns Creational patterns Abstract factory Builder Factory method Prototype Singleton Behavioral Patterns Chain of Responsibility Command Interpreter Iterator Mediator Memento Observer State Strategy Template Method Visitor Structural patterns Adapter Bridge Composite Decorator Facade Flyweight Proxy

30 Core J2EE Pattern Catalog Presentation Tier Intercepting Filter Front Controller View Helper Composite View Service to Worker Dispatcher View Integration Tier Data Access Object Service Activator Business Tier Business Delegate Service Locator Session facade Transfer Object Transfer Object Assembler Value List Handler Composite Entity

31 Architectural Patterns From Mud to Structure Layers Pipes and Filters Blackboard Adaptable Systems Reflection Microkernel Interactive Systems Model-View- Controller Presentation- Abstraction- Control Distributed Systems Broker Pipes and Filters Microkernel

32 Template GoFJ2EECoplienPOSA Nome Classificação Intenção Também Conhecido Como Motivação Aplicabilidade Estrutura Participantes Colaborações Implementação Código Exemplo Consequências Usos Conhecidos Padrões Relacionados Nome Problema Forças Solução - Estrutura - Estratégias Consequências Código Exemplo Padrões Relacionados Nome Contexto Problema Forças Solução Sketch Contexto Resultante Argumentação (Rationale) Nome Também Conhecido Como Exemplo Contexto Problema Solução Estrutura Dinâmica Implementação Exemplo Resolvido Variantes Usos Conhecidos Consequências Veja Também

33 Maiores Informações Página de Padrões do Grupo Hillside  Apontadores para listas, livros, arquivos ftp, padrões on- line, conferências, entre outros Listas Repositório de Padrões Portland

34 Em resumo... Arquitetos experientes não têm consciência que utilizam padrões Bons para compartilhar informação e capturar conhecimento Padrões funcionam como uma porta para troca de experiências Pode ajudar novos desenvolvedores a aprenderem com os mais experientes Vocabulário Comum Padrões dão uma competência arquitetural de organização

35 Em resumo... (Cont.) Você deve escrever padrões para Aprender mais sobre padrões Compartilhar conhecimento Provavelmente você usa alguma coisa que não foi documentada ainda Tarefa difícil e nem todos tem tempo ou vontade Você deve reutilizar padrões Em busca de uma melhoria no desenvolvimento de software

36 Component Dictionary definition A unit of, part of a model Hardware components Software components Differences?

37 What is a component? (1) 1.A component is a nontrivial, nearly independent, and replaceable part of a system that fulfills a clear function in the context of a well-defined architecture. A component conforms to and provides the physical realization of a set of interfaces. (Philippe Krutchen, Rational Software) 2. A runtime software component is a dynamically bindable package of one or more programs managed as a unit and accessed through documented interfaces that can be discovered at runtime. (Gartner Group)

38 What is a component? (2) 3. A software component is a unit of composition with contractually specified interfaces and explicit context dependencies only. A software component can be deployed independently and is subject to third-party composition. (Clemens Szyperski) 4. A business component represents the software implementation of an “autonomous” business concept or business process. It consists of the software artifacts necessary to express, implement, and deploy the concept as a reusable element of a larger business system. (Wojtek Kozaczynski, SSA)

39 What is a component? (3) 5. A reusable part of software, which is independently developed, and can be brought together with other components to build larger units. It may be adapted but may not be modified. A component can be, for example, a compiled code without a program source, or a part of a model and/or design. --- D'Souza and Wills

40 What is a component? (4) 6. A software component is a software element that conforms to a component model and can be independently deployed and composed without modification according to a composition standard. --- Councill and Heineman

41 What are in common? A piece of software Independently deployable Composable Self-contained Reusable A set of interfaces provided to, or required from the environment. An executable code, which can be coupled to the code of other components via interfaces.

42 Implications The following implications arise as a result of Szyperski’s definition: For a component to be deployed independently, a clear distinction from its environment and other components is required. A component must have clearly specified interfaces. The implementation must be encapsulated in the component and is not directly reachable from the environment.

43 Implications A software component simply cannot be differentiated from other software elements by the programming language used to implement the component. The difference is in how software components are used.

44 DBC Abordagem de desenvolvimento de software na qual todos os aspectos e fases do ciclo de vida do desenvolvimento, incluindo análise de requerimentos, arquitetura, projeto, construção, testes, distribuição, suporte técnico, e também a gerência de projeto, são baseados em componentes.

45 Commonality and Difference SP (Structured Programming) OOP (Object-Oriented Programming) COP (Component-Oriented Programming) What are common? What are different?

46 SPOOPCOP Divide and conquer for managing complexity break a large problem down into smaller pieces Yes Unification of data and function a software entity combines data and the functions processing those data. improve cohesion Yes Encapsulation The client of a software entity is insulated from how that software entity’s data is stored or how its functions are implemented. Reduce coupling Yes Identity Each software entity has a unique identity Yes Interface represent specification dependency divide a component specification into interfaces restrict inter-component dependency Yes

47 Composability Software entity and its ability of being integrated with other entities SP – functions, procedures: low OOP – classes, objects: high COP – components: very high

48 The Interchangeability Interchangeable parts are components of any device designed to specifications which insure that they will fit within any device of the same type. SP: Two different implementations can never be interchangeable. OOP: Two different objects implementing the same specification are interchangeable. COP: Two different components with different specifications are interchangeable as long as they satisfy those interface requirements for all client components.

49 Component Goals If you are asked to name three goals for using component technology, what are they? 1. Conquering complexity 2. Managing change 3. Reuse

50 Conquering Complexity We are living in a complex world! “The world produces between 1 and 2 exabytes of unique information per year, which is roughly 250 megabytes for every man, woman, and child on earth. An exabyte is a billion gigabytes, or bytes.” ts/how-much-info/summary.html ts/how-much-info/summary.html

51 Managing Change Change is inherent in software engineering. The user requirements change, specifications change, personnel change, budgets change, technology change, etc. etc. This means building for change, design for change, is necessary. It is important to place primary emphasis during architecture and design on the dependencies between the components, and the management of those dependencies.

52 Reuse Design and implement something once and use it over and over again in different contexts. This will realize large productivity gains, taking advantage of best-in-class solutions, the consequent improved quality, and so forth. Develop for reuse, and develop with reuse

53 CBSE Component-Based Software Engineering CBSE = COA + COD + COP + COM Two key activities: Development for reuse Development with reuse

54 Para se criar um componente, devemos primeiro garantir: Que os serviços que o componente oferece, independam do contexto Que os dados que o componente trabalha, sejam acessíveis em qualquer projeto Que o componente defina e implemente sua interface padrão Que o componente esteja dentro de um container padrão

55 Conclusão Objeto vs. Componente Componentes são independentes do contexto onde são usados. Criado de tal forma que funciona em qualquer projeto de software, módulo ou container. Objetos são projetados para um fim específico, e não podem (ou não devem) ser utilizados em outros contextos. Ex: se você criar um objeto Pedido para um sistema de atacado, dificilmente este objeto poderá ser utilizado em outro aplicativo como um aplicativo de gestão de recursos humanos.

56 Conclusão Objeto vs. Componente Quando modelamos objetos, pensamos primeiramente no problema que tentamos resolver Componentes são projetados para serem elementos chave de qualquer aplicativo de software Todo componente deve ter suas interfaces bem definidas 3’s C (Containers, Conectors and Components) Exemplos

57 Problemas com Reuso Aumento nos custos de manutenção »Código fonte de componentes não disponíveis Falta de ferramentas de apoio »Falta integração de CASEs com bibliotecas de componentes Síndrome do “não foi inventado aqui” Manutenção de uma biblioteca de componentes Encontrar e adaptar componentes reutilizáveis É preciso ser planejado e incorporado por meio de um programa de reuso da organização.

58 Referências Andrade, R.M.C, “Capture, Reuse, and Validation of Requirements and Analysis Patterns for Mobile Systems”, Ph.D. Thesis, University of Ottawa, Ottawa, Alexander, C., Ishikawa, S., Silverstein, M., Jacobson, M., Fiksdahl- King, I., and Angel, S., A Pattern Language: Towns, Buildings, Construction, Oxford University Press, New York, NY, Buschmann, F., Meunier, R., Rohnert, H., Sommerlad, P., Stal, M., Pattern-Oriented Software Architecture, John Wiley and Sons, New York, NY, Coplien, J. O., Software Patterns, SIGS books and Multimedia, June Fowler, M., Analysis Patterns: Reusable Object Models, Addison- Wesley, Reading, MA, 1997.

59 Referências (Cont.) Gamma E., Helm R., Johnson R., Vlissides J., “Design Patterns: Element of Reusable Object-Oriented Software”, Pattern Languages of Program Design I, II, III & IV; Patterns from the PLoP Conference at Allerton Park in Illinois, US and EuroPLoP in Europe; Addison-Wesley, Rising, Linda, “Patterns: A Way to Reuse Expertise,” IEEE Communications Magazine, Vol. 37, No. 4, April Rising, Linda, The Pattern Almanac 2000, Software Pattern Series, Addison-Wesley, ISBN Metodologias para o DBC Wang A.J.A, Qian K, Component Oriented Programming UML ComponentsJ. J.Cheesman and J.Daniels Catalysis D. D'Souza andA. A. Willshttp:// KobrA C.Atkinson et al.