Princípios de Linhas de Produtos de Software. Prof. Alberto Costa Neto alberto@ufs.br



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

Introdução à Engenharia de Software

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

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

ENGENHARIA DE SOFTWARE I

Análise de Sistemas. Visão Geral: Orientação a Objetos. Prof. José Honorato Ferreira Nunes honorato.nunes@bonfim.ifbaiano.edu.br

Fundamentos de Engenharia de Software. Josino Rodrigues

Fábrica de Software 29/04/2015

Linha de Produto de Software

Introdução à Engenharia de. Software. Introdução à Engenharia de. Software. O que é a Engenharia de Software? Software

AULA 1 INTRODUÇÃO - ENGENHARIA DE SOFTWARE. Prof. Msc. Hélio Esperidião

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

Levantamento, Análise e Gestão Requisitos. Aula 12

Metodologia e Gerenciamento do Projeto na Fábrica de Software

Introdução a Computação Móvel

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

Moip Assinaturas. Gerencie mensalidades, assinaturas e cobranças recorrentes

Metodologia de Desenvolvimento de Software. Prof. M.Sc. Sílvio Bacalá Jr

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Modelos de Processo de Desenvolvimento de Software

Processos de Desenvolvimento de Software

Qualidade de Software. Aécio Costa

APOO Análise e Projeto Orientado a Objetos. Requisitos

Conectando sonhos e negócios.

O que é o Virto ERP? Onde sua empresa quer chegar? Apresentação. Modelo de funcionamento

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

Professor: Curso: Disciplina:

Sistemas de Informação I

Introdução à Computação

Engenharia de Software II: Definindo Projeto III. Prof. Msc Ricardo Britto DIE-UFPI

EVOLUÇÃO DE SOFTWARE

Aula 2 Revisão 1. Ciclo de Vida. Processo de Desenvolvimento de SW. Processo de Desenvolvimento de SW. Processo de Desenvolvimento de SW

Motivação. Motivação (software) Customização em massa. Outros exemplos de uso de plataformas

Introdução ao OpenUP (Open Unified Process)

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

MODELO CMM MATURIDADE DE SOFTWARE

6 Quarta parte logística - Quarterização

Aplicações Móveis e sua aplicação na saúde: micd, exemplo prático

COMPUTADORES NAS EMPRESAS Cloud Computing Prof. Reginaldo Brito

IntroduçãoaoGuia SWEBOK. Ernani Lopes Isensee 2014

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

Multiplexador. Permitem que vários equipamentos compartilhem um único canal de comunicação

Introdução à Computação Móvel. Carlos Maurício Seródio Figueiredo

Processos Técnicos - Aulas 4 e 5

FATEC Cruzeiro José da Silva. Ferramenta CRM como estratégia de negócios

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

Conversa Inicial. Olá! Seja bem-vindo à quarta aula de Fundamentos de Sistemas de Informação.

WHITEPAPER. Guia de compra para câmeras IP: tudo o que você precisa saber antes de adquirir a sua solução digital

Engenharia de Software: conceitos e aplicações. Prof. Tiago Eugenio de Melo, MSc tiagodemelo@gmail.com

OS 14 PONTOS DA FILOSOFIA DE DEMING

Guia para RFP de Outsourcing

ISHIFT: Informação em Movimento

! Software e Engenharia de Software! Engenharia de Software e Programação! Histórico. " Crise do Software

MÓDULO 11 ELEMENTOS QUE FAZEM PARTE DO PROJETO DO SISTEMA

REVISÃO ENGENHARIA DO SOFTWARE. Isac Aguiar isacaguiar.com.br

SERVIÇO DE ANÁLISE DE REDES DE TELECOMUNICAÇÕES APLICABILIDADE PARA CALL-CENTERS VISÃO DA EMPRESA

Os IDE s (Ambientes de Desenvolvimento Integrado) como ferramentas de trabalho em informática

! Software e Engenharia de Software! Engenharia de Software e Programação! Histórico. " Crise do Software

Prof. Daniela Barreiro Claro

Universidade Estadual de Maringá Centro de Tecnologia Departamento de Informática Programa de Pós-Graduação em Desenvolvimento de Sistemas para Web

FERRAMENTAS E SOLUÇÕES DE APOIO À GESTÃO E MANUTENÇÃO DE ATIVOS

Computação em Nuvem. Alunos: Allan e Clayton

Governança de TI. ITIL v.2&3. parte 1

Metodologia e Gerenciamento do Projeto na Fábrica de Software v.2

Governança Clínica. As práticas passaram a ser amplamente utilizadas em cuidados de saúde à partir de

Prof.: Gilberto Onodera

Processo de Desenvolvimento de Software. Engenharia de Software.

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

GESTÃO DA PRODUÇÃO E OPERAÇÕES

!!!!!!!!!!!! 2014! T +39 (11)

Conceitos de Banco de Dados

COMUNICAÇÃO NA ERA DO BIG DATA

Engenharia de Software Processo de Desenvolvimento de Software

FMC: Alinhando Tradição com Inovação através da Integração de Pessoas e Processos com Soluções de TI

Boas Práticas em Gerenciamento de Projetos Material utilizado nas aulas de Pós-graduação do Centro de Informática

Engenharia de Software 01 - Introdução. Márcio Daniel Puntel marciopuntel@ulbra.edu.br

Sistemas Operacionais

1. Desenvolver o software iterativamente. Um pouco de reflexão: Acabou aí? 31/08/2010

GESTÃO DE SUPRIMENTO TECNÓLOGO EM LOGÍSTICA

Resumo da solução SAP SAP Technology SAP Afaria. Gestão da mobilidade empresarial como vantagem competitiva

UM FRAMEWORK PARA DESENVOLVIMENTO DE

O QUE VOCÊ PRECISA SABER SOBRE A EVOLUÇÃO DO AMBIENTE DE TRABALHO Adaptando-se às Novas e Avançadas Tecnologias de Comunicações

04/08/2012 MODELAGEM DE DADOS. PROF. RAFAEL DIAS RIBEIRO, MODELAGEM DE DADOS. Aula 2. Prof. Rafael Dias Ribeiro. M.Sc.

Processo de Desenvolvimento de Software

Com metodologias de desenvolvimento

O processo de melhoria de processo

Service Level Management SLM. Gerenciamento de Níveis de Serviço

Sumário. Organização de Computadores Módulo 3. Primeira Geração Válvulas ( ) Primeira Geração Válvulas ( )

Sistemas Integrados de Gestão Empresarial

Introdução à Qualidade de Software. Profº Aldo Rocha

Sistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 05 Estrutura e arquitetura do SO Parte 2. Cursos de Computação

FTAD Formação Técnica em Administração de Empresas. Módulo: Administração de Materiais. Profª Neuza

Introdução. Hardware X Software. Corpo Humano Parte Física. Capacidade de utilizar o corpo em atividades especificas explorando seus componentes

CAPITULO 4 A ARQUITETURA LÓGICA PARA O AMBIENTE

A ferramenta que você necessitava para seu Buffet Infantil.

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

Engenharia de Requisitos

ENGENHARIA DE SOFTWARE/ SISTEMAS DE SOFTWARE

Transcrição:

Princípios de Linhas de Produtos de Software Prof. Alberto Costa Neto alberto@ufs.br

Surgimento das Linhas de Produtos Inicialmente produtos eram feitos artesanalmente Mas... Nº de pessoas que poderiam comprálos aumentou! Como atender a esta demanda? Alberto Costa Neto - DCOMP/UFS 2

Henry Ford No área automotiva, Henry Ford inventou a linha de produtos Produção em massa Preço mais baixo que produtos artesanais O primeiro automóvel produzido desta forma foi o Ford T (1908) Alberto Costa Neto - DCOMP/UFS 3

Customização x Custo de Produção Até 1914, o Ford T era produzido em várias cores (ao gosto do consumidor) Mas a partir daí, para cortar custos, passou a ser produzido somente na cor preta, o que durou até 1926. O carro é disponível em qualquer cor, contanto que seja preto. [Henry Ford] Alberto Costa Neto - DCOMP/UFS 4

Software individual x Software padrão Software individuais são muito caros Produzidos para satisfazer requisitos específicos do comprador Software padrões são mais baratos Sofrem de falta de diversificação para atender os vários clientes Alberto Costa Neto - DCOMP/UFS 5

Motivação para Customização Pessoas têm necessidades diferentes Carro simples para 5 pessoas Carro completo para 7 pessoas Carro com capacidade de carga e para 2 pessoas Carro com tração 4x4 Algumas podem pagar a mais por certas características do produto Outras querem mostrar que podem pagar a mais por produtos diferenciados Alberto Costa Neto - DCOMP/UFS 6

Customização de veículos Fonte: http://www.fiat.com.br Alberto Costa Neto - DCOMP/UFS 7

Customização de telefones celulares Source: http://sonyericsson.com.br Alberto Costa Neto - DCOMP/UFS 8

Customização em Massa Customização em massa é a produção em larga escala de bens voltados às necessidades individuais dos consumidores. [Davis 1987] Mas como lidar com o custo elevado da customização? Alberto Costa Neto - DCOMP/UFS 9

O que estes carros têm em comum? Alberto Costa Neto - DCOMP/UFS 10

Plataforma Uma plataforma é qualquer base de tecnologias sobre a qual outras tecnologias ou processos são construídos. [TechTarget 2004] Fonte: http://www.1302super.com Alberto Costa Neto - DCOMP/UFS 11

Software Product Line Engineering Plataforma comum para o des. de software + Customização em massa Engenharia de Linha de Produtos de Software Alberto Costa Neto - DCOMP/UFS 12

Desenvolvimento de Produtos Customizados Combinar plataforma e customização em massa traz implicações sobre: Processo de desenvolvimento Desenvolver a plataforma e depois as aplicações (ao invés de cada aplicação independentemente) Commonality first, differences later Organização da empresa Desenvolvimento e manutenção da plataforma pode requerer um grupo especial Produtos individuais podem ser responsabilidade de outros grupos Alberto Costa Neto - DCOMP/UFS 13

Flexibilidade é um fator chave Um componente deveria ser adaptável para vários produtos Componentes devem poder interagir com componentes diferentes Exemplo: retrovisores de veículos Citroën C3/Picasso e Peugeot 206/307 Renault Logan No contexto de LPS, flexibilidade é chamada de Variabilidade Alberto Costa Neto - DCOMP/UFS 14

Compartilhamento de Plataformas É possível compartilhar Plataformas entre Linhas de Produtos Quebra a relação direta entre Plataforma e LP Necessidade de manter um rastreamento entre uma plataforma e os produtos gerados por ela Alberto Costa Neto - DCOMP/UFS 15

Compartilhamento de Plataformas entre LP Plataforma GM4200 Opel Corsa A 1983 Opel Corsa B 1994 Chevrolet Corsa 1994 Chevrolet Agile 2009 Plataforma GM4300 Chevrolet Corsa 2002 Chevrolet Meriva 2002 Alberto Costa Neto - DCOMP/UFS 16

Motivações para LPS Redução do custo de desenvolvimento Redução do time to market Melhoria de qualidade Outras motivações: Redução do esforço de manutenção Facilidade para lidar com evolução Capacidade de lidar com complexidade Melhoria nas estimativas de custo Benefícios para os consumidores Alberto Costa Neto - DCOMP/UFS 17

Redução do custo de desenvolvimento Alberto Costa Neto - DCOMP/UFS 18

Redução do Time to Market Alberto Costa Neto - DCOMP/UFS 19

Demanda pela Engenharia de LPS Aumento da quantidade de dispositivos com software embarcado Variabilidade no Software também tem crescido muito É preciso tratar estas variabilidades antes no processo de desenvolvimento (não deixar para a implementação) Engenharia de LPS é um paradigma de desenvolvimento de aplicações usando plataformas e customização em massa Alberto Costa Neto - DCOMP/UFS 20

Controle de Variabilidade Desenvolver aplicações usando plataformas significa: Planejar proativamente para reuso Construir partes reusáveis Reusar o que foi construído para reuso Desenvolver aplicações para customização em massa significa: Empregar o conceito de Controle de Variabilidade Commonalities e diferenças nas aplicações da LPS têm que ser modeladas rotineiramente Requisitos, arquitetura, componentes, e artefatos de teste Alberto Costa Neto - DCOMP/UFS 21

Restrição sobre adaptações Há várias formas de adaptar um software Fácil de mudar e adaptar, mas... Pode corromper sua estrutura, comprometendo aspectos de qualidade: Facilidade de entendimento Manutenibilidade Em LPS, é preciso que as adaptações: Possam ser reproduzidas de forma controlada Ocorram em lugares que façam sentido Alberto Costa Neto - DCOMP/UFS 22

Plataforma de Computador Clássica Definição: Sistema de computador básico no qual aplicações podem rodar Pode ser o hardware (ex: processador) Ou mais comumente: hardware + software Exemplos: Symbian + processadores ARM da Nokia (Nokia, Motorola e Siemens) Android (Smartphones e Tablets) Microsoft Windows Phone Alberto Costa Neto - DCOMP/UFS 23

Plataformas na Arquitetura de Software A arquitetura de um software normalmente consiste de múltiplas camadas Do ponto de vista de uma camada, sua camada base é chamada de plataforma Exemplos: Java(ME, SE, J2EE) e.net Eclipse iworkplace (Infonet) WebIntegrator (Infox) Alberto Costa Neto - DCOMP/UFS 24

Por que a demora de LPS? Parnas já falava disso em 1975! Motivo: faltavam alguns pré-requisitos, como: Suporte tecnológico para implementar os princípios de LP Processos de desenvolvimento adequados para lidar com LP Conhecimento e experiência no domínio da aplicação para projetar a LP Alberto Costa Neto - DCOMP/UFS 25

Mas aí surgiram algumas tecnologias... POO Desenvolvimento baseado em Componentes Vinculação Tardia Middleware Gerenciamento de Configuração Alberto Costa Neto - DCOMP/UFS 26

E amadurecimento dos processos... CMM Engenharia de requisitos para lidar com: Commonality Variabilidade Técnicas de Modelagem (UML) e Ferramentas de suporte RUP Alberto Costa Neto - DCOMP/UFS 27

E a experiência no Domínio... Foi aumentando e sendo documentada através dos processos e modelos criados Mesmo assim, é preciso: Conhecer bem o domínio Sua falta pode levar a introduzir variações desnecessárias e não incluir as necessárias O domínio precisa ser estável Ao mudar muito, o investimento na linha pode ser perdido Alberto Costa Neto - DCOMP/UFS 28

Referências Software Product Line Engineering (Klaus Pohl) Capítulo 1 Henry Ford (Wikipedia) Plataformas GM (Wikipedia) iworkplace WebIntegrator On the Design and Development of Program Families (Parnas 75) Alberto Costa Neto - DCOMP/UFS 29