Reutilização de Software

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

ENGENHARIA DE SOFTWARE. Aula 17 Reuso de software

Reúso de Software. Adaptado de. Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 18 Slide by Pearson Education

Processos de Software

15/04/2013. Pensar Orientado a Objetos. Projeto Orientado a Objetos. Características de Objetos. Classe de Objetos. Comunicação entre Objetos

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

CBSE. Independência e Padronização. Características da CBSE. Fundamentos da CBSE. Middleware e Processo 22/05/2013

Frameworks. Viviane Torres da Silva

DCC / ICEx / UFMG. O Modelo CMMI. Eduardo Figueiredo.

Reuso de Software Aula Maio 2012

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

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

MODELOS DE PROCESSOS (PARTE 2)

Introdução a Engenharia de Software

Projeto de Arquitetura

REUSO E REUSABILIDADE

14/11/2014. Engenharia de Software. Modelos de software. Modelo Clássico - Cascata

Desenvolvimento Dirigido por Modelos: Ferramentas

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

Engenharia de Requisitos

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

SOFTWARE REUSE. Ian Sommerville, 8º edição Capítulo 18. Aula de Luiz Eduardo Guarino de Vasconcelos

Estilos Arquiteturais

Engenharia de Software. Projeto de Arquitetura

Aula 01: Apresentação. Revisão para Prova 1. Aula 02: Técnicas de Reuso. Panorama de Reuso. Aula 03: POO e Padrões. Bibliografia da Aula 02

Qualidade de Software. Qualidade de Software. Adequado à Especificação. Alguns Atributos de Qualidade. Equipe de Qualidade

Processos de software

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

INTRODUÇÃO A ENGENHARIA 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

Reengenharia, Refatoração e Bad Smell

Desenvolvimento Ágil de Software

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

Modulo I Princípios e Padrões de Projeto de SW em Java

Engenharia de Software Aula 21. Revisão da Prova 2. Eduardo Figueiredo.

Técnicas de Elicitação de Requisitos

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

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

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

15/04/2013. Outro Diagrama de Classes. Primeiro Diagrama de Classes. Diagrama de Classes. Atributos. Eduardo Figueiredo

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

Arquitetura de Software: Introdução. Prof. Fellipe Aleixo

Análise de Sistemas - Atividade Modelos de Ciclo de Vida

Engenharia de Software I

Eng. de Requisitos: Atividades. Engenharia de Requisitos. Eng. de Requisitos: Processo. O Documento de Requisitos. Stakeholders. Estudo de Viabilidade

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

Projeto de software Estrutura do software e arquitetura SWEBOK

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

PROJETO ARQUITETURAL PARTE II: PADRÕES DE PROJETO. Projeto de Programas PPR0001

Processos de Software

Processo de Desenvolvimento. Edjandir Corrêa Costa

Manutenção Leitura: Sommerville; Pressman

ENGENHARIA DE SOFTWARE. Aula 12 Testes de software

Engenharia de Software II

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Prof. Fabiano Papaiz IFRN

Modelos de Processo de Software. Profª Jocelma Rios

RUP RATIONAL UNIFIED PROCESS

Desenvolvimento ágil de software

Desenvolvimento de um método e uma ferramenta para a reutilização de processos de software

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

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

Instituto Federal da Bahia Análise e Desenvolvimento de Sistemas INF022 Tópicos Avançados. Evolução de Software

Transcrição:

DCC / ICEx / UFMG Reutilização de Software Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo

Reutilização 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, objetos, componentes, etc. O movimento open source cria uma enorme base de código disponível

Tipos de Reutilização Objetos e Funções Tipo mais comum de reutilização Ocorre nos últimos 40 anos Componentes Reuso de média granularidade. Exemplo, componente arquitetural ou sub-sistema Sistema Um sistema pode ser reusado por incorporação à outro sistema Pode ser necessário customização

Vantagens de Reutilização 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 Uso eficaz de especialistas Especialistas compartilham o conhecimento Adequação aos padrões Padrões de interface podem ser componentes reusáveis

Potenciais Problemas 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 reutilização É caro manter uma biblioteca É difícil encontrar e entender o software que se pretende reusar

Planejamento para Reutilização Reutilização não ocorre por acaso Ele deve ser planejado e incentivado em toda a organização Muitas empresas desenvolvem sistemas em um mesmo domínio Surgem situações potenciais para reutilização

Fatores do Planejamento Alguns fatores a considerar no planejamento de reutilização Cronograma de desenvolvimento Ciclo de vida do software Conhecimento e experiência da equipe Domínio da aplicação +

Cronograma e Ciclo de Vida Cronograma de Desenvolvimento Se o cronograma de entrega é apertado, reusar pode agilizar a entrega do produto Ciclo de Vida do Software Reusar pode ser um problema em sistemas que sofrem manutenções frequentes Componentes de terceiros (código proprietário) dificultam a manutenção

Equipe e Domínio Conhecimento e experiência da equipe na abordagem de reutilização Muitas abordagens 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 reusar Em outros domínios, é mais complicado

Panorama de Reutilização Frameworks Padrões de projeto Aplicações configuráveis Padrões de arquitetura Linha de produtos de software Biblioteca de programas Integração de COTS Desenvolvimento baseado em componentes Empacotamento de sistemas legados Geradores de programas Desenvolvimento orientado a aspectos Desenvolvimento dirigido por modelos Sistemas orientados a serviços

Técnicas (1 de 3) Padrões de projeto e de arquitetura Padrões são soluções genéricas para problemas recorrentes Frameworks de aplicação Coleção de classes abstratas e concretas que criam a estrutura de uma aplicação Componentes Subsistemas que são integrados para criação da aplicação

Técnicas (2 de 3) Empacotamento de sistemas legados Sistemas legados são empacotados pela definição de interfaces de acessos Sistemas orientados a serviços Sistemas desenvolvidos pela criação de serviços compartilhados Linhas de produtos de software Família de aplicações desenvolvidas em torno de uma arquitetura comum

Técnicas (3 de 3) Bibliotecas de programas Classes e funções que implementam abstrações comumente usadas Desenvolvimento dirigido por modelos O código é gerado a partir de modelos de domínio e modelos de implementação Desenvolvimento orientado a aspectos Técnica avançada de modularização de código para apoiar a reutilização

Bibliografia Ian Sommerville. Engenharia de Software, 9ª Edição. Pearson Education, 2011. Cap. 16 Reuso de Software (até Seção 16.1)