SCE 186- Engenharia de Software



Documentos relacionados
Programação Orientada a Objetos. Padrões de Criação

Programação com Objectos

Padrões de Projeto. Prof. Jefersson Alex dos Santos

Padrões de Projeto de Software Orientado a Objetos

Tópicos Avançados em Engenharia de Software

Design Patterns. Viviane Torres da Silva

Testes com Design Patterns

Prof.ª Esp. Talita Pagani

Padrões de projeto 1

Padrões GoF. Leonardo Gresta Paulino Murta

J930. Padrões. Projeto. Introdução. argonavis.com.br. Helder da Rocha

PADRÕES DE SOFTWARE. Jerffeson Teixeira de Souza, Ph.D. Tarciane de Castro Andrade. Grupo de Padrões de Software da UECE (GPS.

1Introdução Helder da Rocha

Engenharia de Requisitos

Prototype, um Design Patterns de Criação

Curso - Padrões de Projeto Módulo 1: Introdução

Análise e Projeto de Sistemas de Informação. Andrêza Leite andreza.lba@gmail.com

Conteúdo. Disciplina: INF Engenharia de Software. Monalessa Perini Barcellos. Centro Tecnológico. Universidade Federal do Espírito Santo

PRODUTO 1 (CONSTRUÇÃO DE PORTAL WEB)

Programação Estruturada e Orientada a Objetos. Fundamentos Orientação a Objetos

Roteiro para a escrita do documento de Especificação de Requisitos de Software (ERS)

Unisant Anna Gestão Empresarial com ERP 2014 Modelagem de Sistemas - UML e MER

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 14 PROFª BRUNO CALEGARO

Modelos de Sistema by Pearson Education. Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 8 Slide 1.

Projeto de Arquitetura

Tópicos em Engenharia de Software (Optativa III) AULA 2. Prof. Andrêza Leite (81 )

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

Requisitos de Software

Universidade Federal de Itajubá Instituto de Engenharia de Sistemas e Tecnologias da Informação-IESTI PCO203 Tópicos Especiais em Programação

Desenvolvimento de Sistemas Orientados a Objetos com UML UP/RUP: Projeto

Introdução à Engenharia de Software

Análise e Projeto Orientados por Objetos

Reuso. Curso de Especialização DEINF - UFMA Desenvolvimento Orientado a Objetos Prof. Geraldo Braz Junior

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação

Um Processo para Desenvolvimento de Aplicações Web Baseado em Serviços. Autores: Fábio Zaupa, Itana Gimenes, Don Cowan, Paulo Alencar e Carlos Lucena

2 Diagrama de Caso de Uso

Padrões GoF Iterator, State e Composite. SSC-526 Análise e Projeto Orientados a Objeto Profa. Dra. Elisa Yumi Nakagawa 2º semestre de 2013

Engenharia de Software na Prática Hélio Engholm Jr.

Análise e Projeto Orientados por Objetos

Engenharia de Software e Gerência de Projetos Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios

Programação Avançada. Padrões de Projeto de Software. Fonte: Oswaldo B. Peres e K19 Treinamentos

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação

Modelagemde Software Orientadaa Objetos com UML

Design Pattern Implementation in Java and AspectJ

Análise e Projeto de Sistemas. Engenharia de Software. Análise e Projeto de Sistemas. Contextualização. Perspectiva Histórica. A Evolução do Software

Fábrica de Software 29/04/2015

UML - Unified Modeling Language

Processos de Desenvolvimento de Software

3 SCS: Sistema de Componentes de Software

EVOLUÇÃO DE SOFTWARE

Módulo 4: Gerenciamento de Dados

Pós-Graduação em Gerenciamento de Projetos práticas do PMI

Categorias de Padrões

Capítulo 2. Processos de Software Pearson Prentice Hall. Todos os direitos reservados. slide 1

Unidade 8: Padrão MVC e DAO Prof. Daniel Caetano

Padrões Arquiteturais e de Integração - Parte 1

Engenharia de Software I: Análise e Projeto de Software Usando UML

BPMN Business Process Modeling Notation

ESTENDENDO A UML PARA REPRESENTAR RESTRIÇÕES DE INTEGRIDADE

Agenda da Aula. Resumo dos Padrões (Aula 4) Padrões Arquiteturais. Arquitetura Cliente-Servidor. Arquitetura Cliente-Servidor

Orientação à Objetos. Aécio Costa

Requisitos de Software

Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO)

ANEXO 11. Framework é um conjunto de classes que colaboram para realizar uma responsabilidade para um domínio de um subsistema da aplicação.

Padrões de Projeto. Padrões de Projeto. Além dos 23 Padrões GoF. Os 23 Padrões de Projeto. Documentação de um Padrão. Classificação dos Padrões

UFG - Instituto de Informática

Documento de Arquitetura

Testes de Software. Testes de Software. Teste de Validação. Teste de Defeito. Modelo de Entrada e Saída. Modelo de Entrada e Saída

Desenvolvendo uma Arquitetura de Componentes Orientada a Serviço SCA

Na medida em que se cria um produto, o sistema de software, que será usado e mantido, nos aproximamos da engenharia.

Engenharia de Software Aula 7 (Versão )

Decorator Pattern. SISMO - Sistemas e Mobilidade Junho de Departamento de Informática / UFMA

ENGENHARIA DE SOFTWARE I

Metadados. 1. Introdução. 2. O que são Metadados? 3. O Valor dos Metadados

Aprenda as melhores práticas para construir um completo sistema de teste automatizado

Sistemas Operacionais. Conceitos de um Sistema Operacional

Modelagem OO com UML. Vítor E. Silva Souza ~ vitorsouza

AUTOR: DAVID DE MIRANDA RODRIGUES CONTATO: CURSO FIC DE PROGRAMADOR WEB VERSÃO: 1.0

Gerenciamento de configuração. Gerenciamento de Configuração. Gerenciamento de configuração. Gerenciamento de configuração. Famílias de sistemas

UNIDADE 4. Introdução à Metodologia de Desenvolvimento de Sistemas

ADMINISTRAÇÃO DOS RECURSOS DE DADOS

Engenharia Reversa e Reengenharia

ARCO - Associação Recreativa dos Correios. Sistema para Gerenciamento de Associações Recreativas Plano de Desenvolvimento de Software Versão <1.

Conteúdo. Disciplina: INF Engenharia de Software. Monalessa Perini Barcellos

Análise e Projeto Orientados a Objetos Aula IV Requisitos. Prof.: Bruno E. G. Gomes IFRN

PROGRAMAÇÃO AVANÇADA -CONCEITOS DE ORIENTAÇÃO A OBJETOS. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

Banco de Dados Aula 1 Introdução a Banco de Dados Introdução Sistema Gerenciador de Banco de Dados

Wilson Moraes Góes. Novatec

Engenharia de Software

5 Framework para coordenação e mediação de Web Services para ambientes de aprendizado à distância

ISO/IEC 12207: Gerência de Configuração

Professor: Curso: Disciplina:

Roteiro 2 Conceitos Gerais

Eduardo Bezerra. Editora Campus/Elsevier

Apesar de existirem diversas implementações de MVC, em linhas gerais, o fluxo funciona geralmente da seguinte forma:

Transcrição:

Reuso de Software SCE 186- Engenharia de Software Profa Rosana T. Vaccare Braga (parte do material elaborado com base no tutorial sobre reuso da Profa. Claudia Werner) 1

Sumário Introdução Benefícios X Dificuldades Gerência de Reutilização Técnicas para Reuso Famílias de Produtos Padrões Frameworks Componentes (próxima aula) 2

Introdução O Reuso é inerente ao processo de solução de problemas utilizado pelos seres humanos Na medida em que soluções são encontradas, estas são utilizadas em problemas similares Nossa capacidade de abstração garante a adaptação necessária ao novo contexto O problema, portanto, não é a falta de reutilização na Engenharia de Software, mas a falta de uma sistemática ampla e formal para realizá-la 3

Definição de Reutilização Reutilização de software é o processo de incorporar em um novo produto: um novo código especificações de requisitos e projeto planos de teste, planos de teste, qualquer produto gerado durante desenvolvimentos anteriores, conhecimento em geral 4

Benefícios da reutilização Melhores índices de produtividade Produtos de melhor qualidade, mais confiáveis, consistentes e padronizados Redução dos custos e tempo envolvidos no desenvolvimento de software Maior flexibilidade na estrutura do software produzido, facilitando sua manutenção e evolução 5

Benefícios da reutilização (cont.) Uso efetivo dos especialistas no desenvolvimento de artefatos reutilizáveis Conformidade aos padrões, por exemplo, fazendo com que os usuários cometam menos erros ao utilizarem uma interface familiar. Desenvolvimento acelerado: economia no tempo de desenvolvimento e validação 6

Requisitos para reutilização Deve ser possível encontrar componentes reutilizáveis adequados catalogação e documentação externa efetivas. Deve-se ter certeza de que o componente se comportará conforme especificado e que será confiável certificação Deve ser possível compreender o componente para adaptá-lo à nova situação documentação interna detalhada 7

Dificuldades Identificação, recuperação e modificação de artefatos reutilizáveis Compreensão dos artefatos recuperados Qualidade de artefatos reutilizáveis Composição de aplicações a partir de componentes 8

Dificuldades Aumento nos custos de manutenção Falta de ferramentas de apoio Barreiras psicológicas: síndrome do não foi inventado aqui Barreiras legais e econômicas Necessidade da criação de incentivos à reutilização 9

Estado atual Diversos progressos na área técnica: sistemas de bibliotecas; técnicas de classificação, criação e distribuição de componentes; ambientes de suporte à reutilização de componentes; Trabalhos recentes tratam de aspectos não técnicos: aspectos gerenciais, econômicos, culturais e legais Temas de Pesquisas atuais: engenharia de domínio; reutilização de processos; desenvolvimento baseado em componentes 10

Gerência de reutilização Planejamento de Reutilização Criação de Artefatos Gerência de Artefatos Utilização de Artefatos 11

Gerência de Reutilização 12

Criação de artefatos Objetivo: produzir software e produtos associados para o reuso (Desenvolvimento para Reutilização Reuso Produtor) Atividades: Análise e modelagem do Domínio (Engenharia de Domínio) Desenvolvimento de uma Infraestrutura de Reutilização Evolução do processo 13

Reuso Produtor Questões a serem consideradas: Faça seu componente o mais geral possível, utilizando parâmetros e prevendo condições similares àquelas nas quais seu sistema invocará o componente Separe as dependência de forma que seções mais propensas a mudanças sejam isoladas das que devem permanecer iguais Mantenha a interface geral e bem-definida 14

Reuso Produtor Questões a serem consideradas: Inclua informações sobre problemas encontrados e resolvidos Use convenções claras para nomeação Documente as estruturas de dados e algoritmos Separe as seções de comunicação e tratamento de erros, para facilitar sua mudança. 15

Engenharia de Domínio Domínio: Uma coleção de problemas reais Uma coleção de aplicações que compartilham características comuns Definições p/ ED É o processo de identificar e organizar o conhecimento sobre uma classe de problemas, o domínio do problema, para dar suporte a sua descrição e solução Uma abordagem baseada em reutilização para definição do escopo, especificação da estrutura, e construção de recursos para uma classe de sistemas, subsistemas ou aplicações 16

Engenharia de Domínio 17

Engenharia de Domínio Objetivos Originar meta Originar meta-sistemas, ou seja, sistemas que são reutilizados na construção de aplicações específicas Descobrir e definir modelos de domínio e arquiteturas comuns às famílias de aplicações para suportar reutilização pré-planejada Tornar explícito e formalizar as teorias específicas ao domínio que permitem aos projetistas e especialistas do domínio a raciocinar sobre problemas e sistemas no domínio da aplicação 18

Engenharia de Domínio Etapas: Análise de Domínio: o conhecimento existente sobre o domínio é estudado e formalizado por meio de um modelo de domínio Projeto de Domínio: arquiteturas de software são construídas para atender aos requisitos identificados no modelo de domínio Implementação do Domínio: artefatos reutilizáveis são implementados para compor as arquiteturas 19

Utilização de Artefatos Objetivo: compor sistemas a partir de artefatos reutilizáveis (Desenvolvimento com Reutilização Reuso Consumidor) Atividades: Identificação, compreensão, avaliação, seleção, adaptação e integração de artefatos Feedback ao Planejamento, Criação e Gerência de Artefatos 20

Reuso Consumidor Questões a serem feitas: O componente executa a função e fornece os dados que você precisa? Se forem necessárias mudanças mínimas, trata-se de menos esforço do que construir o componente do zero? O componente está bem documentado, de forma que possa ser entendido sem ter que entender linha por linha do código? Existe um registro completo do teste do componente e histórico da revisão, para certificar que ele não tem erros? 21

Técnicas para Reuso Famílias de Produtos Padrões de software Frameworks Componentes Bibliotecas de Classes 22

Famílias de Produtos Uma família de produtos, ou linha de produtos, é um conjunto de aplicações relacionadas, que têm uma arquitetura de domínio específico em comum. Contudo cada aplicação específica é especializada de alguma maneira O núcleo em comum da família é reutilizado cada vez que uma nova aplicação é desejada. O novo desenvolvimento pode exigir que algumas partes de código sejam escritos, ou que sejam modificados alguns componentes já existentes. 23

Famílias de Produtos Tipos de especialização: Especialização da plataforma, por exemplo Windows, NT, Solaris e Linux (funcionalidade permanece inalterada) Especialização da configuração, por exemplo periféricos utilizados Especialização funcional (clientes com diferentes requisitos), por exemplo biblioteca pública ou privada têm diferentes tratamentos para multa ou privilégio dado a leitores 24

Padrões de Software descrevem soluções para problemas que ocorrem com freqüência no desenvolvimento de software Diversas categorias: padrões de processo, padrões arquiteturais, padrões de análise, padrões de projeto, padrões de programação,... 25

Vantagens de padrões reuso de soluções encontradas por especialistas experientes --> aumento da produtividade e qualidade melhoria na comunicação entre projetistas uniformidade na estrutura do software menor complexidade (blocos construtivos) 26

Exemplo: Padrão de análise (Boyd 98) STATIC 1 STATIC 2 name name description description set set get get 1..1 1..1 0..m ASSOCIATION begin_date end_date cost allocate_costs create_current_from_plan 0..m Atributos Comportamento

Sala nome descrição calcular custos da sala set get Exemplo Atribuição_Sala_Depto data_inicial data_final percentagem_alocação alocar_custos criar_atribuição Departamento nome descrição calcular custos depto set 1..1 1..1 0..m get 0..m

Padrões de Projeto - GoF Catálogo de Padrões de Projeto [Gamma95] Dois critérios de classificação Propósito - reflete o que o padrão faz De Criação: trata da criação de objetos Estrutural: cuida da composição de classes e objetos Comportamental: caracteriza o modo como as classes e objetos interagem e distribuem responsabilidades Escopo Classe: trata do relacionamento entre classes e subclasses (herança - relacionamento estático) Objetos: lida com a manipulação de objetos (podem ser modificados em tempo de execução) GoF: Gang of Four apelido dado aos quatro autores do livro 29

Padrões de Projeto - GoF Propósito De Criação Estrutural Comportamental Classe Factory Method Adapter Interpreter Template Method Escopo Objeto Abstract Factory Builder Prototype Singleton Adapter Bridge Composite Decorator Facade Flyweygth Proxy Chain of Responsability Command Iterator Mediator Memento Observer State Strategy Visitor 30

Padrões de Projeto Composite (Objeto Estrutural) Intenção (Intent) compõe objetos em estruturas de árvore para representar hierarquias part-whole. Composite deixa o cliente tratar objetos individuais e composição de objetos uniformemente. 31

Padrões de Projeto Motivação (Motivation) Editores gráficos permitem aos usuários construir diagramas complexos, agrupando componentes simples Implementação simples: definir uma classe para primitivas gráficas tais como Texto, Linhas e outras classes que agem como depósitos (containers) para essas primitivas Problema: Código que usa essas classes deve tratar primitivas e objetos do depósito diferentemente, tornando a aplicação mais complexa 32

Padrões de Projeto O Composite cria uma classe abstrata que representa primitivas e seus depósitos. 33

Padrões de Projeto Exemplo de composição recursiva de objetos 34

Padrões de Projeto Aplicabilidade (Applicability) representar hierarquias de objetos part-whole permitir aos usuários ignorar a diferença entre composições de objetos e objetos individuais. Todos os objetos na estrutura são tratados uniformemente 35

Padrões de Projeto Estrutura (Structure) 36

Padrões de Projeto Participantes (Participants) Component (Grafic) declara a interface para os objetos na composição implementa o comportamento padrão para a interface comum de todas as classes, quando apropriado declara uma interface para acessar e gerenciar os componentes filho define uma interface para acessar o pai de um componente na estrutura recursiva, implementado-o se for apropriado 37

Padrões de Projeto Leaf (Rectangle, Line, Text, etc.) representa objetos folha na composição. Uma folha não tem filhos define o comportamento para objetos primitivos na composição Composite (Picture) define o comportamento para componentes que têm filhos armazena componentes filho implementa operações relacionadas aos filhos na interface Component Client manipula objetos na composição pelo através da interface Component 38

Padrões de Projeto Colaboradores (Collaborations) Clients usam a interface Component para interagir com objetos na estrutura composta. Se o receptor é uma folha então o pedido é manipulado diretamente Se o receptor é um Composite então os pedidos são enviados para seus componentes filhos 39

Padrões de Projeto Conseqüências (Consequences) define hierarquias de classes que consistem de objetos primitivos e compostos simplifica o cliente. Clientes podem tratar estruturas compostas e objetos individuais de maneira uniforme facilita a adição de novos componentes 40

Padrões de Projeto Exemplo de Código (Sample Code) class Equipment { public: virtual ~Equipment(); const char* Name() { return _name; } virtual Watt Power(); virtual Currency NetPrice(); virtual Currency DiscountPrice(); virtual void Add(Equipment*); virtual void Remove(Equipment*); virtual Iterator* CreateIterator(); protected: Equipment(const char*); private: const char* _name; }; class CompositeEquipment : public Equipment { public: virtual ~CompositeEquipment(); virtual Watt Power(); virtual Currency NetPrice(); virtual Currency DiscountPrice(); virtual void Add(Equipment*); virtual void Remove(Equipment*); virtual Iterator* CreateIterator(); protected: CompositeEquipment(const char*); private: List _equipment; }; 41

Padrões de Projeto class FloppyDisk : public Equipment { public: FloppyDisk(const char*); virtual ~FloppyDisk(); }; virtual Watt Power(); virtual Currency NetPrice(); virtual Currency DiscountPrice(); 42

Padrões de Projeto Usos Conhecidos (Known Uses) Presente em quase todos os sistemas OO A classe original View do MVC RTL Smalltalk compiler framework Etc. 43

Padrões de Projeto Padrões Relacionados (Related Patterns) Chain of Responsibility Decorator Flyweight Iterator Visitor 44

Frameworks Aplicação semi-completa reutilizável que, quando especializada, produz aplicações personalizadas (Johnson & Foote, 1988) Coleção de classes abstratas e concretas e a interface entre elas, representando o projeto de um sub-sistema (Pree, 1995) 45

Conceitos Básicos Hot-Spots Representam as partes do framework de aplicação que são específicas de sistemas individuais São projetados para serem genéricos - podem ser adaptados às necessidades da aplicação Frozen-Spots Definem a arquitetura geral de um sistema de software - seus componentes básicos e os relacionamentos entre eles Permanecem fixos em todas as instanciações do framework de aplicação 46

Tipos de framework Framework Caixa Branca: reuso provido por herança Framework Caixa Preta reuso provido por composição Framework Caixa Cinza mistura 47

Framework Caixa Branca R Hot Spot R3 48

Framework Caixa Preta R Hot Spot R1 R2 R3 Ocorrência de variabilidade 49

Framework caixa-branca X caixa-preta framework caixa branca é mais fácil de projetar framework caixa preta é mais fácil de usar frameworks caixa-branca evoluem para se tornar mais caixa preta Aumenta o numero de objetos, mas eles ficam menores Complexidade está na interconexão Objetos compostos de objetos menores O Scripting fica mais importante e as linguagens visuais tornam-se possíveis 50

Tipos de framework Facilidade de desenvolvimento Caixa Branca Caixa Cinza Caixa Preta Facilidade de uso 51

Classificação de Frameworks de aplicação Frameworks de Infra-estrutura do Sistema simplificam o desenvolvimento da infra-estrutura de sistemas portáveis e eficientes, exemplos: sistemas operacionais, comunicação, interfaces com o usuário e ferramentas de processamento de linguagem em geral são usados internamente em uma organização de software e não são vendidos a clientes diretamente 52

Classificação de Frameworks de aplicação Frameworks de Integração de Middleware usados em geral para integrar aplicações e componentes distribuídos. projetados para melhorar a habilidade de desenvolvedores em modularizar, reutilizar e estender sua infra-estrutura de software para funcionar sem costuras em um ambiente distribuído exemplos: Object Request Broker (ORB), middleware orientado a mensagens e bases de dados transacionais 53

Classificação de Frameworks de aplicação Frameworks de Aplicação Empresarial voltados a domínios de aplicação mais amplos e são a pedra fundamental para atividades de negócios das empresas. exemplos: telecomunicações, aviação, manufatura e engenharia financeira. são mais caros para desenvolver ou comprar, mas podem dar um retorno substancial do investimento, já que permitem o desenvolvimento de aplicações e produtos diretamente 54

Desenvolvimento de Software Baseado em Frameworks Desenvolvimento do framework Análise de domínio, projeto arquitetural, projeto do framework, implementação, teste e documentação Uso do framework Evolução e manutenção do framework 55

Componentes de Software Objetivo: quebra de blocos monolíticos em componentes interoperáveis Componentes são construídos/empacotados com o objetivo de serem reutilizados em diferentes aplicações Um componente provê um conjunto de serviços acessíveis por meio de uma interface bem definida Motivações: desenvolvimento da Internet/WWW, arquitetura cliente/servidor, computação distribuída, Orientação a Objetos, Componentware, dentre outros 56

Documentação de Componentes Objetivos: Objetivos: definir a estrutura de dados e serviços necessários para descrever o formato de empacotamento usando padrões apoiar o empacotamento (desenvolvimento para reutilização) apoiar a avaliação (desenvolvimento com reutilização) e permitir anotações usar a tecnologia de hipermídia para apresentar a informação com interatividade 57

Desenvolvimento Baseado em Componentes (DBC) Metodologias para o DBC UML Components J. J. Cheesman and J. Daniels Catalysis (http://www.iconcomp.com/catalysis) D. D'Souza and A. A. Wills KobrA C. Atkinson et al. 58

Bibliotecas de Classes Classes de uso genérico podem ser disponibilizadas para reuso e importadas em múltiplas aplicações Em geral são incorporadas ao código final da aplicação, ou seja, são compiladas juntamente com o restante do código. 59