Técnicas para Reutilização de Software
|
|
|
- Jessica Ramalho Espírito Santo
- 9 Há anos
- Visualizações:
Transcrição
1 DCC / ICEx / UFMG Técnicas para Reutilização de Software Eduardo Figueiredo
2 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
3 Biblioteca e Framework
4 Bibliotecas de Software Bibliotecas implementam serviços que podem ser usados por programas É uma forma comum de reutilização 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...
5 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); } }...
6 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 lacunas Por exemplo, pela implementação das classes abstratas do framework
7 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)
8 Extensão de Frameworks Frameworks são entidades grandes que devem ser estendidas para reutilização 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)
9 Principal Problema Framework é normalmente uma entidade grande e complexa Pode levar um longo tempo para entendê-lo e usá-lo efetivamente O desenvolvedor pode querer apenas uma funcionalidade simples
10 Padrão de Projeto
11 Padrões de Projeto Um padrão é uma descrição do problema e a essência da sua solução Documenta boas soluções para problemas recorrentes Permite a reutilização de conhecimento anterior documentados em boas práticas Deve ser suficientemente abstrato para ser reusado em aplicações diferentes
12 Elementos de um Padrão 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
13 Exemplo de Problema Padrão Observer
14 Padrão Obsever Nome Observer Descrição do problema Separa o objeto de suas formas de apresentação Descrição da solução (próximo slide) Consequências Otimizações para melhorar a atualização da apresentação
15 Solução do Observer
16 Reutilização de Modelos e Geração de Código
17 Motivação A reutilização no nível de código é geralmente difícil Envolve vários detalhes específicos da solução ou tecnologia adotada
18 Proposta de Solução Elevar o nível de abstração Reutilização em nível de modelos Reutilização de código -> Reutilização de modelos Pelo uso de geradores, o programa (código) é automaticamente gerado
19 Modelos x Código 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
20 A Proposta MDD Desenvolvimento Dirigido por Modelos Propõe que o desenvolvimento, reuso, manutenção e evolução sejam feitos no nível de modelagem Reutilização de modelos ainda é uma técnica pouco adotada Se limitam a alguns domínios específicos ou em centros de pesquisa
21 Abordagem MDD Modelos Executáveis Código de Alto 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 Código de Baixo Nível
22 Abordagem 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
23 O Processo MDD Selecionar um modelo existente Recortar as partes do modelo que interessam Pode ser necessário criar 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
24 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
25 Bibliografia Ian Sommerville. Engenharia de Software, 9ª Edição. Pearson Education, Cap. 16 Reuso de Software (Seções 16.1 e 16.2) Seção 5.5 Engenharia Dirigida por Modelos
Reutilização de Software
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
Tópicos da Aula. POO e Padrões de Projetos. Considere três classes... Reuso de Classes. Locadora de DVD. Sistema Acadêmico
Reuso de Software Aula 03 Tópicos da Aula POO e Padrões de Projetos Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo [email protected] 12 Março 2012 Programação orientada a objetos Reuso de
Reúso de Software. Adaptado de. Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 18 Slide by Pearson Education
Reúso de Software Adaptado de Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 18 Slide 1 Reúso de Software Na maioria das disciplinas de engenharia, os sistemas são projetados por meio
ENGENHARIA DE SOFTWARE. Aula 17 Reuso de software
ENGENHARIA DE SOFTWARE Aula 17 Reuso de software OBJETIVOS Entender os benefícios e problemas de reuso de software durante o desenvolvimento de novos sistemas; Entender o conceito de um framework de aplicações
CBSE. Independência e Padronização. Características da CBSE. Fundamentos da CBSE. Middleware e Processo 22/05/2013
DCC / ICEx / UFMG CBSE Engenharia de Software baseada em Componentes (CBSE) Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo A CBSE foi proposta na década de 90 Foi motivado pelo limitado suporte
Model Driven Development (MDD)
Model Driven Development (MDD) Mestrado em Engenharia de Produção e Sistemas Computacionais Profa. Adriana Pereira de Medeiros [email protected] Sumário Introdução Desenvolvimento de Software
SOFTWARE REUSE. Ian Sommerville, 8º edição Capítulo 18. Aula de Luiz Eduardo Guarino de Vasconcelos
SOFTWARE REUSE Ian Sommerville, 8º edição Capítulo 18 Aula de Luiz Eduardo Guarino de Vasconcelos Objetivos Explicar os benefícios e alguns problemas do reuso de software Descrever diferentes tipos de
Frameworks. Viviane Torres da Silva
Frameworks Viviane Torres da Silva [email protected] http://www.ic.uff.br/~viviane.silva/es1 Frameworks Motivação Definição Classificação Características Propriedades Técnicas de Customização Frameworks
Estimativa de Esforço. Estimativas de Software. Subjetividade da Estimativa. Incerteza de Estimativa. Técnicas de Estimativas
DCC / ICEx / UFMG Estimativa de Esforço Estimativas de Software Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo É difícil fazer uma estimativa precisa de esforço de desenvolvimento Os requisitos
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
DCC / ICEx / UFMG Padrões de Projeto Padrões de Projeto Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo Um padrão é uma descrição do problema e a essência da sua solução Documenta boas soluções para
Reuso de Software Aula Maio 2012
Reuso de Software Aula 19 Tópicos da Aula Engenharia de Software baseada em Componentes (CBSE) Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo [email protected] Componentes Modelos de Componentes
15/04/2013. Pensar Orientado a Objetos. Projeto Orientado a Objetos. Características de Objetos. Classe de Objetos. Comunicação entre Objetos
DCC / ICEx / UFMG Pensar Orientado a Objetos Projeto Orientado a Objetos Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo Onde quer que você olhe no mundo real, você vê objetos Pessoas, animais, plantas,
Processos de Software
DCC / ICEx / UFMG Processos de Software Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo Processos Procedimentos e métodos definindo relação entre tarefas PROCESSO Pessoas com habilidades, treinadas
DCC / ICEx / UFMG. O Modelo CMMI. Eduardo Figueiredo.
DCC / ICEx / UFMG O Modelo CMMI Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo Um pouco de história Na década de 80, o Instituto de Engenharia de Software (SEI) foi criado Objetivos Fornecer software
Desenvolvimento Dirigido por Modelos: Ferramentas
DCC / ICEx / UFMG Desenvolvimento Dirigido por Modelos: Ferramentas Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo Existe MDD na prática? Poucos sistemas ainda são desenvolvidos usando a filosofia
Engenharia de Requisitos
DCC / ICEx / UFMG Engenharia de Requisitos Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo Motivação Motivação Porque levantar Requisitos é importante? Motivação Porque levantar Requisitos é importante?
Linguagem de Programação I Apresentação da Disciplina
Linguagem de Programação I Apresentação da Disciplina Apresentação da Disciplina Conteúdo: 1) Orientação a Objetos - Características da OO - Reutilização de código 2) Introdução à Linguagem Java - Histórico
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 04 Agenda da Aula Arquitetura de Software e Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo [email protected] 14 Março 2012 Arquitetura de Software Padrões arquiteturais
Estilos Arquiteturais
Estilos Arquiteturais Estilos Arquiteturais A arquitetura de um sistema pode aderir a um ou mais estilos arquiteturais Um estilo define os tipos de elementos que podem aparecer em uma arquitetura e as
Engenharia de Software Aula 21. Revisão da Prova 2. Eduardo Figueiredo.
Engenharia de Software Aula 21 Revisão da Prova 2 Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo [email protected] 16 Maio 2018 Aula 16: POO Um programa OO é geralmente constituído de várias classes
Processos de Software by Pearson Education Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 4 Slide 1
Processos de Software Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 4 Slide 1 Objetivos Apresentar modelos de processos de software Descrever três modelos genéricos de processo e quando
Arquitetura de Software visão emergente
Arquitetura de Software visão emergente Objetivos Visão abstrata do software através de componentes e interfaces Independência de plataforma Independência de paradigma de programação Técnicas Estilos Arquiteturais
Desenvolvimento de Software. Testes de Software. Tópicos da Aula. Onde estamos... Verificação x Validação. Testes de Software
Engenharia de Software Aula 17 Desenvolvimento de Software Testes de Software Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo [email protected] 7 Maio 2012 1. Especificação de requisitos 2. Projeto
Linguagem de Programação Orientada a Objeto Polimorfismo, Classes Abstractas e Interfaces
Linguagem de Programação Orientada a Objeto Polimorfismo, Classes Abstractas e Interfaces Professora Sheila Cáceres Polimorfismo Polimorfismo Polimorfismo é a característica única de linguagens orientadas
Desenvolvimento Ágil de Software
DCC / ICEx / UFMG Desenvolvimento Ágil de Software Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo Agenda Métodos ágeis Histórico e Motivação Manifesto ágil Desenvolvimento dirigido a planos e ágil
Paradigmas de Software
Paradigmas de Software Objetivos Introdução aos paradigmas de software. Descrição de modelos genéricos e sua aplicabilidade. Descrição dos processos de requisitos, desenvolvimento, teste e evolução. Modelo
Roni Fabio Banaszewski UTFPR Universidade Tecnológica Federal do Paraná
Roni Fabio Banaszewski UTFPR Universidade Tecnológica Federal do Paraná Reuso Motivações para reutilização de software Aspecto econômico Produtividade Time to market Qualidade Utilização de artefatos (código,
Linguagens de Domínio Específico
Linguagens de Domínio Específico Fabio Mascarenhas 2017.1 http://www.dcc.ufrj.br/~fabiom/dsl Por que DSLs? Melhorar a produtividade dos programadores input =~ /\d{3}-\d{3}-\d{4}/ Facilitar a escrita e
Análise e Projeto Orientado a Objetos. Nazareno Andrade Baseado no material dos profs. Hyggo Almeida e Jacques Sauvé
Análise e Projeto Orientado a Objetos Nazareno Andrade Baseado no material dos profs. Hyggo Almeida e Jacques Sauvé O que veremos hoje? Análise e Projeto Definição Comparação Análise e Projeto OO Definição
Histórico: Linha de Produção. Linha de Produtos de Software. Reuso vs. Customização. Mercado Competitivo. Linha de Produtos de Software
DCC / ICEx / UFMG Histórico: Linha de Produção Linha de Produtos de Software Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo Produtos em geral eram feitos manualmente Com o crescimento do consumo,
Prof. Me. Sérgio Carlos Portari Júnior
Prof. Me. Sérgio Carlos Portari Júnior Ambientes que visam desenvolver aplicações que precisam de um processamento paralelo e distribuído deverão saber lidar com algumas dificuldades. Isto decorre da heterogeneidade
Desenvolvimento Baseado em Componentes e o Enfoque de Linha de Produtos
Desenvolvimento Baseado em Componentes e o Enfoque de Linha de Produtos Segundo Workshop de Desenvolvimento Baseado em Componentes Itana Maria de Souza Gimenes [email protected] Departamento de Informática
Compiladores. Motivação. Tradutores. Motivação. Tipos de Tradutores. Tipos de Tradutores
Motivação Prof. Sérgio Faustino Compiladores Conhecimento das estruturas e algoritmos usados na implementação de linguagens: noções importantes sobre uso de memória, eficiência, etc. Aplicabilidade freqüente
Motivação. Estrutura de Dados. Motivação. Motivação. Por que estudar os tipos de dados? Duas são as principais preocupações em um projeto de software
Estrutura de Dados Aula 01 -Tipos Abstratos de de Dados Prof. Ms. Luiz Alberto Contato: [email protected] Motivação Por que estudar os tipos de dados? Duas são as principais preocupações em um projeto
Orientação a Objetos Parte I. Introdução a POO (Programação Orientada a Objetos)
Orientação a Objetos Parte I Introdução a POO (Programação Orientada a Objetos) Histórico Gerações de Linguagens de Programação Primeira Geração: Linguagem de máquina Segunda Geração: Linguagem de montagem
Manutenção Leitura: Sommerville; Pressman
Manutenção Leitura: Sommerville; Pressman Auxiliadora Freire Fonte: Engenharia de Software 6º - 8º Edição / Ian Sommerville 2000-2007 Slide 1 Manutenção de software É modificar um programa depois que ele
Linguagem de Programação II Programação Orientada a Objetos. Orientação a Objetos
Linguagem de Programação II Programação Orientada a Objetos Orientação a Objetos Prof. Alessandro Borges 2 Tópicos Introdução à Programação Orientada a Objetos Conceitos Objetivos Classes e Objetos Atributos
Comentários: Desenvolvimento de Sistemas Rogério Araújo
Comentários: Desenvolvimento de Sistemas Rogério Araújo [email protected] 1 Técnico de informática no Ministério Público Federal Professor da Equipe Itnerante Desenvolvimento de Sistemas Certificações
Perguntas da Aula 2. Respostas da Pergunta 2. Respostas da Pergunta 1. Respostas da Pergunta 4. Respostas da Pergunta 3. Processos de Software
Engenharia de Software Aula 03 Perguntas da Aula 2 Processos de Software Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo [email protected] 12 Março 2012 Inconsistente: perguntei laranjas, respondeu
Princípios da Engenharia de Software aula 03
Princípios da Engenharia de Software aula 03 Prof.: José Honorato Ferreira Nunes Material cedido por: Prof.: Franklin M. Correia Na aula anterior... Modelos de processos de software: Evolucionário Tipos
Requisitos de Software
Engenharia de requisitos Requisitos de Software Estabelece os serviços que o cliente requer de um sistema e as restrições sob as quais tal sistema operará e será desenvolvido. Tais serviços e restrições
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
Reutilização de Software Aula 13 Aula 01: Apresentação Revisão para Prova 1 Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo [email protected] 23 Setembro 2013 Bibliografia Método de avaliação
Apresentação do Capítulo 4 MDA (Model-Driven Archtecture) ALUNO: DOMENICO SCHETTINI FILHO NÚMERO USP:
Apresentação do Capítulo 4 MDA (Model-Driven Archtecture) ALUNO: DOMENICO SCHETTINI FILHO NÚMERO USP: 8429016 Definição de MDA OMG (Object Management Group) propôs uma aplicação abrangente das práticas
Introdução à Análise e Projeto de Sistemas
Introdução à I. O Que vamos fazer na Disciplina? Saber uma linguagem de programação orientada a objeto (OO) não é suficiente para criar sistemas OO Tem que saber Análise e Projeto OO (APOO) Isto é, Análise
Principais conceitos de CORBA
Principais conceitos de CORBA Tecgraf PUC-Rio fevereiro de 2011 Common Object Request Broker Architecture Uma arquitetura aberta para o desenvolvimento de aplicações distribuídas em um ambiente multilinguagem
2 Fluxos no Ciclo de Vida do Processo Unificado. O Processo Unificado consiste da repetição de uma série de ciclos durante a vida de um sistema.
Processo Unificado Universidade Federal do Maranhão UFMA Pós Graduação de Engenharia de Eletricidade Grupo de Computação Assunto: Ciclo de Vida - Fluxos Autoria:Aristófanes Corrêa Silva Adaptação: Alexandre
igrpweb Índice gráfico Cliente NOSi igrpweb Referência Versão 1.00 Status
igrpweb Índice gráfico Cliente NOSi igrpweb Referência Versão 1.00 Status Conteúdo Enquadramento... 2 1 IGRP Studio... 3 2 O Guia Inicial Rápido... 4 3 O Gerador de Código... 5 4 O File editor... 6 5 BPMN
Capítulo 7 Conceção e Implementação 1
Capítulo 7 Conceção e Implementação Capítulo 7 Conceção e Implementação 1 Assuntos abordados Design orientado a objetos com recurso ao UML Padrões de design Questões de implementação Desenvolvimento de
Diagrama de Casos de Uso. Diagrama de Casos de Uso. Diagrama de Casos de Uso. Diagrama de Casos de Uso. Componentes do Diagrama
DCC / ICEx / UFMG Diagrama de Diagrama de Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo Adota uma linguagem simples Acessível ao cliente Objetivo é a compreensão do comportamento externo do sistema
Lista de Exercícios AV1
Seminários Engenharia Integrados de Usabilidade em Sistemas de Informação SEMINÁRIOS INTEGRADOS EM SISTEMAS DE INFORMAÇÃO Lista de Exercícios AV1 Luiz Leão [email protected] http://www.luizleao.com Questão
Modelo de Componentes CORBA
Modelo de Componentes CORBA Cláudia Brito L. N. da Silva [email protected] Roteiro 1. Visão geral 2.! Definindo componentes! Implementando componentes! Empacotando componentes! Instalando componentes!
Visões Arquiteturais. Visões Arquiteturais
Visões Arquiteturais Separar diferentes aspectos em visões separadas com o objetivo de gerenciar complexidade. Cada visão descreve diferentes conceitos da Engenharia. Visões permitem reduzir a quantidade
Diagrama de Componentes. Análise Orientada a Objetos
Diagrama de Componentes Análise Orientada a Objetos Diagramas de arquitetura Diagramas de arquitetura (ou estrutura) permitem A descrição física do software: Os diagramas de componentes são usados para
Requisitos de sistemas
Requisitos de sistemas Unidade III - Casos de Uso Identificação de casos de uso Conceitos de orientação a objetos Modelagem do diagrama de classes e casos de uso 1 Casos de uso CONCEITO Especifica o comportamento
especificação por meio de exemplos não é garantia de corretude, mas a experiência mostra que tende a ser melhor do que o estado da prática hoje
1 Introdução Testar é o conjunto de tarefas ou passos executados para verificar se um produto ou serviço atende à sua proposta. Dessa forma, a execução de testes em um programa contribui para a melhoria
