Reutilização de Software

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

Agenda do Curso. Reuso de Software. Agenda da Aula. Tipos de Reuso. Vantagens de Reuso. Reuso de Software. Eduardo Figueiredo

Técnicas para Reutilização de Software

Técnicas para Reutilização de Software Prof. Eduardo Figueiredo Estagiário: Johnatan Oliveira

ENGENHARIA DE SOFTWARE. Aula 17 Reuso de software

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

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

Processos de Software. O que é modelo de processo? Vantagens. Modelos de Processo Gerais. O que é um processo 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

Modelagem Orientada a Objetos

DESENVOLVIMENTO BASEADO EM COMPONENTES

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

Frameworks. Viviane Torres da Silva

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

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

Reuso de Software Aula Maio 2012

Model Driven Development (MDD)

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

ARCHITECTURAL DESIGN. Ian Sommerville, 8º edição Capítulo 11 Aula de Luiz Eduardo Guarino de Vasconcelos

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

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

MODELOS DE PROCESSOS (PARTE 2)

Análise e Projeto de Software

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

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

15/09/2014. Aula 01: Apresentação. Review to 1 st Exam. Aula 02: Técnicas de Reuso. Panorama de Reuso. Aula 03: POO e Padrões. Bibliografia da Aula 02

01/03/2015. Bibliografia Principal. Apresentação da Disciplina. Site da Disciplina. Método de Avaliação. As datas podem mudar. Prova Substitutiva

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

Apresentação da Disciplina

PLANO DE ENSINO 2016

Estilos Arquiteturais

Falha de Comunicação no Desenvolvimento de Software

Engenharia de Software. Projeto de Arquitetura

Arquitetura de Software

Engenharia de Software. Prof. Me. Clodoaldo Brasilino

Bibliografia Principal. Apresentação da Disciplina. Site da Disciplina. Estagiário da Disciplina. Método de Avaliação. Prova Substitutiva

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

Apresentação da Disciplina

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

Tópicos da Aula. O que é anunciado. Falha de Comunicação no Desenvolvimento de Software. Engenharia de Software: Conceitos Fundamentais

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

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

Trabalho Prático. Eduardo Figueiredo.

Desenvolvimento Ágil de Software

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

Apresentação da Disciplina

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

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

Tópicos da Aula. Desenvolvimento Dirigido por Modelos (MDD) Reusar cada vez mais... Reusar cada vez mais... O que é modelagem? Reuso: Código x Modelos

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

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?

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

Engenharia de Software I

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

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

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

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

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

Engenharia de Software I

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Prof. Fabiano Papaiz IFRN

Apresentação da Disciplina

Modelos de Processo de Software. Profª Jocelma Rios

RUP RATIONAL UNIFIED PROCESS

Desenvolvimento ágil de software

Rosana T.Vaccare Braga

Processos 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)