Agenda da Aula. Reuso de Software. Tipos de Reuso. Potenciais Problemas. Vantagens de Reuso. Introdução a Reuso de Software

Documentos relacionados
Técnicas para Reutilização de Software

Reutilização de Software

Técnicas de Reutilização. Reutilização em Programação Orientada a Objetos. Considere três classes... Reuso de Classes.

Tópicos da Aula. POO e Padrões de Projetos. Considere três classes... Reuso de Classes. Locadora de DVD. Sistema Acadêmico

Agenda da Aula. Arquitetura de Software e Padrões Arquiteturais. Elementos de um Padrão. Arquitetura de Software. Arquitetura de Software

Reuso de Software Aula Maio 2012

Agenda Atual do Curso. Desenvolvimento Dirigido por Modelos (MDD) Abordagem MDD. Agenda da Aula. Abordagem MDD. Manutenção e Geração

Estimativa de Esforço. Estimativas de Software. Subjetividade da Estimativa. Incerteza de Estimativa. Técnicas de Estimativas

Perguntas da Aula 2. Respostas da Pergunta 2. Respostas da Pergunta 1. Respostas da Pergunta 4. Respostas da Pergunta 3. Processos de Software

Desenvolvimento de Software. Testes de Software. Tópicos da Aula. Onde estamos... Verificação x Validação. Testes de Software

Processos de Software. O que é modelo de processo? Vantagens. Modelos de Processo Gerais. O que é um processo de software?

Histórico: Linha de Produção. Linha de Produtos de Software. Reuso vs. Customização. Mercado Competitivo. Linha de Produtos de Software

Engenharia de Software. Projeto de Arquitetura

Frameworks. SSC-526 Análise e Projeto Orientados a Objeto Profa. Dra. Elisa Yumi Nakagawa 2º semestre de 2013

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

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

Linguagem de Programação Orientada a Objeto Polimorfismo, Classes Abstractas e Interfaces

Análise e Projeto de Software

UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICA. Sistemas Distribuídos

Capítulo 6. Projeto de arquitetura Pearson Pren0ce Hall. Todos os direitos reservados. 1. slide 1

REUSO E REUSABILIDADE

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

Verificação e Validação. Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 22 Slide 1

Processos de software

Atividades de Desenvolvimento. Desenvolvimento de Software. Especificação de Requisitos. Atividades de Desenvolvimento. Especificação de Requisitos

Engenharia de Software II

Arquitetura de Software

Campus Capivari Análise e Desenvolvimento de Sistemas (ADS) Prof. André Luís Belini /

Fábricas de Software. Processos de Software. Fábricas de Software. Fábricas de Software 17/08/2010. Jorge Dias

SISTEMA DE GERENCIAMENTO DO CENTRO DE PRÁTICAS CLÍNICAS E CIRÚRGICAS DO IFC CAMPUS ARAQUARI

As Visões. Visões arquiteturais (revisão)

Campus Capivari Análise e Desenvolvimento de Sistemas (ADS) Prof. André Luís Belini /

Por que é importante?

Linguagens de Domínio Específico

PROJETO DE PROGRAMAS. Projeto de Programas PPR0001

Introdução à Análise e Projeto de Sistemas

De Olho na Pista. Documento de Arquitetura. De Olho na Pista Documento de Arquitetura Data: 23/03/2013. AJA Software

Aula 2: Arquitetura em Três Camadas e APIs

Desenvolvimento Baseado em Componentes e o Enfoque de Linha de Produtos

Princípios da Engenharia de Software aula 03

Roni Fabio Banaszewski UTFPR Universidade Tecnológica Federal do Paraná

ENGENHARIA DE SOFTWARE. Aula 03 Processos de Software

Definição de Padrões. Padrões Arquiteturais. Padrões Arquiteturais. Arquiteturas de Referência. Da arquitetura a implementação. Elementos de um Padrão

Engenharia de Software. Prof. Raquel Silveira

Engenharia de Software Aula 2.1 Introdução à Engenharia de Requisitos. Prof. Bruno Moreno

Leitura: Cap : Sommerville; cap20: Pressman

2

Linguagens de Programação Classificação

Análise e Projeto Orientados a Objetos

3 Arquitetura para a Coordenação e a Composição de Artefatos de Software

MODELOS DE PROCESSOS (PARTE 2)

ClassGenerator - Desenvolvendo aplicações em PHP com qualidade e eficiência.

Engenharia de Software II

Engenharia de Software. Prof. Me. Clodoaldo Brasilino

Requisitos de Software

Prof. Luiz A. Nascimento

Banco de Dados Relacional

Engenharia de Requisitos

Campus Capivari Análise e Desenvolvimento de Sistemas (ADS) Prof. André Luís Belini /

Projeto de Arquitetura

Introdução aos computadores, à Internet e à World Wide Web. Prof. Marcelo Roberto Zorzan

Engenharia de Software Orientada a Serviços

Por que melhorar o processo? Melhoria do Processo de Software. De onde veio a idéia? Qualidade de Software

QUALIDADE DE SOFTWARE

Plataforma de desenvolvimento JAVA para terminal POS

Tópicos da Aula. Diretrizes Gerais. Trabalho Prático (TP) Pontuação do TP. Tema do Trabalho. Projeto de Software Diagrama de Classes

ENGENHARIA DE SOFTWARE

Verificação e Validação (V & V)

Requisitos de sistemas

Introdução ao Zend Framework 2

Engenharia de Software II

UNIVERSIDADE ESTADUAL PAULISTA INSTITUTO DE BIOCIÊNCIAS, LETRAS E CIÊNCIAS EXATAS DEPARTAMENTO DE CIÊNCIAS DE COMPUTAÇÃO E ESTATÍSTICA

5 Trabalhos Relacionados

Principais conceitos de CORBA

Construção de Compiladores. Capítulo 1. Introdução. José Romildo Malaquias. Departamento de Computação Universidade Federal de Ouro Preto 2014.

RUP RATIONAL UNIFIED PROCESS PRÁTICAS RECOMENDADAS. Prof. Fabiano Papaiz IFRN

INTRODUÇÃO A ENGENHARIA DE SOFTWARE

Entrega contínua: automatizar o pipeline de implantação

Protótipo de uma ferramenta de apoio para desenvolvimento de sistemas web para WebIntegrator

Aula 1: Apresentação. Revisão para Prova 1. Aula 2: Motivação. O que é software? Eng. de Software em Camadas. O que é Engenharia de Software?

2.1 NesC Seguem alguns dos principais desafios impostos à linguagem NesC:

Desenvolvimento ágil de software

TESTES DE SOFTWARE Lista de Exercício 02. Luiz Leão

Documento de Arquitetura de Software- SGE

Estruturas de Dados Aula 1: Introdução e conceitos básicos 28/02/2011

Introdução a Teste de Software

Linguagem de Programação I Apresentação da Disciplina

Manutenção de Software

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

CAPÍTULO 1 O AMBIENTE DE DESENVOLVIMENTO DE SISTEMAS. Tereza Gonçalves Kirner

Introdução aos computadores, à Internet e à World Wide Web. Prof. Marcelo Roberto Zorzan

ENGENHARIA DE SOFTWARE. Aula 12 Testes de software

EA975 - Laboratório de Engenharia de Software

Métodos Ágeis e Programação Extrema (XP)

Engenharia Reversa e Reengenharia. Engenharia de Software Profa. Dra. Elisa Yumi Nakagawa 1º semestre de 2015

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

Resumo de TCC: MAGIC: Um framework para jogos de cartas. Ademir Coelho

Transcrição:

Reuso de Software Aula 02 Agenda da Aula Introdução a Reuso de Software Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo reuso.software@gmail.com Introdução a Reuso de Software Abordagens de Reuso Bibliotecas Padrões de Projeto Frameworks Reuso de Modelos Linhas de Produtos de Software 07 Março 2012 Reuso de Software Abordagem de desenvolvimento com o objetivo de maximizar o uso de software pré-existente Nos últimos 20 anos, muitas técnicas foram desenvolvidas para apoiar o reuso Bibliotecas (API) Classes de objetos Componentes, etc. Tipos de Reuso Reuso de Objetos e Funções Tipo mais comum de reuso Ocorre nos últimos 40 anos Reuso de Componentes Reuso de média granularidade. Exemplo, componente arquitetural ou sub-sistema Reuso de Sistema Um sistema pode ser reusado por incorporação à outro sistema Pode ser necessário customização Vantagens de Reuso Potenciais Problemas Redução de tempo e custos O sistema pode ser entregue em menor prazo, que reduz os custos Maior confiabilidade do produto O software reusado já foi testado antes Menor risco no processo O custo de software existente já é conhecido Adequação aos padrões Alguns padrões (exemplo, GUI) podem ser implementados como componentes reusáveis Custo de Manutenção Componentes reusados podem se tornar incompatíveis em versões futuras Falta de Apoio de Ferramenta Ambientes de desenvolvimento podem não estar preparados para reuso É caro manter um biblioteca para reuso É difícil encontrar e entender o software que se pretende reusar

Planejamento para Reuso Fatores do Planejamento O reuso não ocorre por acaso Ele deve ser planejado e incentivado em toda a organização Muitas empresas desenvolvem sistemas de um mesmo domínio Surgem situações potenciais para o reuso Alguns fatores a considerar no planejamento de reuso Cronograma de desenvolvimento Ciclo de vida do software Conhecimento e experiência da equipe Domínio da aplicação Cronograma e Ciclo de Vida Equipe e Domínio Cronograma de Desenvolvimento Se o cronograma de entrega é apertado, reusar pode agilizar a entrega do produto Ciclo de Vida do Software Se o sistema terá vida longa e deve passar por muitas manutenções, reuso deve ser evitado Componentes de terceiros podem ser de difícil manutenção (ou de código proprietário) Conhecimento e experiência da equipe na abordagem de reuso Muitas abordagens de reuso são difíceis de serem usadas e requerem experiência Domínio da aplicação Em alguns domínios, é fácil encontrar componentes e bibliotecas para reuso Em outros domínios, é mais complicado Abordagens de Reuso Biblioteca e Framework

Bibliotecas de Software Bibliotecas implementam serviços que podem ser usados por programas É um forma bem comum de reuso Disponibiliza funcionalidades comuns a diferentes tipos de sistemas Converter informação entre formatos conhecidos (e.g., string para inteiro) Acesso a recursos, arquivos, BD, etc. Tipos abstratos de dados: fila, pilha, lista... Uso de Biblioteca em Java import java.util.vector; public class Customer { String name; Vector phonenumbers = new Vector(); void removephonenumber(string c){ phonenumbers.removeelement(c); } void addphonenumber(string c){ phonenumbers.addelement(c); }... } Framework Frameworks são aplicações incompletas São formados por interfaces, classes abstratas e classes concretas (OO) O conjunto de classes e interfaces formam uma estrutura genérica Um sistema é implementado pela adição de componentes para preencher partes do projeto Por exemplo, pela implementação das classes abstratas do framework Tipos de Frameworks Frameworks de infra-estrutura Apóiam a criação de infra-estruturas de sistemas, tais como comunicações, interfaces de usuário e compiladores Frameworks de integração Apóiam a comunicação e a troca de informações de componentes Frameworks de aplicações Apóiam o desenvolvimento de um tipo de aplicações (e.g., aplicações Web) Extensão de Frameworks Principal Problema Frameworks são entidades grandes que devem ser estendidas para reusados Exemplos de extensão Adição de classes concretas que implementam métodos abstratos Adição (sobrescrita) de métodos que implementam comportamento padrão Adição de arquivos de configuração (XML) Framework são uma entidade complexa Leva um longo tempo para entendêlo e usá-lo efetivamente O desenvolvedor pode querer apenas uma funcionalidade simples

Padrões de Projeto Padrão de Projeto e Padrão de Arquitetura Um padrão é uma descrição do problema e a essência da sua solução Documenta boas soluções para problemas recorrentes Permite o reuso de conhecimento anterior documentados em boas práticas Deve ser suficientemente abstrato para ser reusado em aplicações diferentes Elementos de um Padrão Exemplo de Problema Nome Um identificador significativo para o padrão Descrição do problema Descrição da solução Um template de solução que pode ser instanciado em maneiras diferentes Consequências Os resultados e compromissos de aplicação do padrão Padrão Observer Padrão Obsever Solução do Observer Nome Observer Descrição do problema Separa o objeto de sua forma de apresentação Descrição da solução (próximo slide) Consequências Otimizações para melhorar a atualização da apresentação

Padrões Arquiteturais Arquitetura em Camadas Padrões arquiteturais expressam formas de organizar a estrutura fundamental do sistema Permitem a construção de uma arquitetura aderente a certas propriedades O conhecimento de padrões arquiteturais pode ajudar na definição da estrutura macro do sistema Organiza o sistema em um conjunto de camadas Cada camada oferece um conjunto de serviços Uma camada somente Solicita serviços da camada inferior Fornece serviços para a camada superior Exemplo 1: Protocolos OSI Modelo de camadas para sistemas de comunicação Exemplo 2: Três Camadas Camada de Apresentação Camada de Negócios Camada de Dados Motivação Reuso de Modelos e Geração de Código O reuso no nível de código é geralmente difícil Envolve vários detalhes específicos da solução ou tecnologia adotada

Solução (MDD) Modelos x Código Elevar o nível de abstração O reuso passa ao nível de modelos Reuso de código -> Reuso de modelos Pelo uso de geradores, o programa (código) é automaticamente gerado Modelos têm vida útil mais longa Modelos facilitam a comunicação entre desenvolvedores (e clientes) Modelos são geralmente produzidos, mesmo que não se use um abordagem de geração de código Desenvolvimento Dirigido por Modelos Abordagem MDD Propõe que o desenvolvimento, manutenção, evolução e reuso sejam feitos no nível de projeto Reuso de modelos ainda é uma técnica pouco adotada Se limitam a alguns domínios específicos ou em centros de pesquisa Modelos Executáveis Código de Alto Nível Código de Baixo Nível Compilador de Modelos Compilador de Código Os modelos são independentes de software Assim como, código de alto nível é independente de hardware Abordagem MDD O Processo MDD Modelos Executáveis Código de Alto Nível Código de Baixo Nível Compilador de Modelos Compilador de Código Modelos podem ser compilados para várias linguagens de programação Modelos podem ser parcialmente ou totalmente reusados em diferentes contextos Selecionar um modelo existente Recortar as partes do modelo que interessam Pode ser necessário projetar novos modelos ou adaptar os modelos existentes Integrar as partes selecionadas ao modelo do sistema Selecionar uma tecnologia de implementação Descrever (ou reusar) o mapeamento dos modelos para a implementação Gerar o sistema

Potenciais Problemas Imaturidade do desenvolvimento dirigido por modelos Falta de suporte de ferramentas e ambientes de desenvolvimento Modelos são vistos como extras Código seria o principal Desenvolvedores são resistentes Não gostam de brincar com figuras Temem por seus empregos como programadores Linhas de Produtos de Software Linha de Produtos Conjunto de aplicações definidas sobre uma arquitetura comum e que compartilham componentes Criada a partir de várias aplicações desenvolvidas sobre o mesmo domínio Uma forma efetiva de reuso em larga escala Usa outras técnicas de reuso Frameworks, componentes, etc. Extração da Linha A extração de uma linha de produtos geralmente ocorre em etapas 1. Cria uma aplicação 2. Cria outra aplicação no mesmo domínio 3. Reusa algo da primeira aplicação na segunda 4. Cria uma terceira aplicação e reusa... e assim por diante Processo de Desenvolvimento 1. Levantar os requisitos dos usuários 2. Escolher elementos da linha de produtos que atendem de forma aproximada os requisitos 3. Negociar os requisitos com o cliente para minimizar alterações 4. Adaptar o sistema para atender todos os requisitos 5. Integrar o novo membro a família Cada nova aplicação é um novo membro da linha de produtos Componentes de uma Linha Elementos mandatórios Aquelas que são encontradas em todos os membros da linha de produto Elementos variáveis Opcionais: um produto pode ou não contê-los Alternativos: um produto deve conter uma das alternativas

Exemplo de Linha de Produtos Características Mandatórias Todo produto deve permitir a visualização, adição, remoção e edição da legenda View, Add, Delete, Edit Label Características Opcionais Características Alternativas Os produtos não precisam conter a características opcionais Capture Photo, Sort by Views, etc. Os produtos devem considerar algum tamanho para a tela To be continue... Continuamos a conversa sobre linha de produtos de software na Aula 4 Bibliografia Principal Ian Sommerville. Engenharia de Software, 9ª Edição. Pearson Education, 2011. Cap. 16 Reuso de Software Ian Sommerville. Engenharia de Software, 8ª Edição. Pearson Education, 2007. Cap. 18 Reuso de Software

Próxima Aula Reuso de software e desenvolvimento orientado a objetos Reuso de objetos e funções Reuso de bibliotecas Framework de aplicações