Olá leitores,
Hoje abro um novo tipo de artigo no meu blog. São artigos dedicados à Engenharia da Computação. O artigo de estreia é sobre Linhas de Produtos de Software e seu conteúdo é inteiro baseado em um fichamento que estou produzindo para minha Dissertação de Mestrado. O site de origem das informações pode ser acessado aqui: http://www.softwareproductlines.com/
O trabalho do autor se baseia em sua própria experiência de
cerca de duas décadas em reuso de software e campos de linhas de produto de
software.
O site está organizado na forma de livro online com
capítulos de introdução e primeiros passos além de benefícios e casos de
sucesso. Ao final são destacados artigos do próprio autor e de pesquisadores
voluntários falando sobre as perspectivas da área seguidas de um capítulo de
recursos onde podem ser encontradas mais referencias sobre o tema como sites,
artigos e livros.
Existem diversas referencias a casos de sucesso de empresas
grandes como HP, Phillips e outras.
Nesses casos de sucesso são destacadas melhorias no time-to-market,
custo de engenharia, tamanho do portfolio e taxa de defeitos na ordem de 3 para
50. A origem dessa ordem de magnitude é o reuso estratégico de software:
consolidar aspectos comuns ao longo da linha de produto, estrategicamente
gerenciar toda a variação da linha de produto e agressivamente eliminar toda a
duplicação de esforços de engenharia.
Produção em massa – é a habilidade de criar muitas cópias do
mesmo produto. Isso representa um avanço enorme no mundo da manufatura, mas é
algo trivial para a engenharia de software.
Customização em massa – é a habilidade de eficientemente
criar muitas variações de um produto. Esse é um enorme avanço tanto para a
manufatura quanto para a engenharia de software e a chave para isso é maximizar
os aspectos comuns e eficientemente gerenciar as variações na linha de produto.
Linhas de produto de software podem ser descritos a partir
de quatro conceitos:
- Ativos de software: requisitos, componentes de software na forma de código fonte, casos de teste, arquitetura e documentação.
- Decisões de produto: descreve características opcionais e variáveis para os produtos na linha de produto. Sua representação pode variar desde descrições informais até descrições formais feitas em linguagem de máquina. O processo de decisão pode também estar associado a papeis como engenheiros de aplicação, engenheiros de domínio, gerente comercial ou cliente.
- Mecanismo de produção: meios para a composição e configuração dos ativos de software. Pode ser automatizada, manual ou uma combinação de ambos.
- Produto de software: coleção de todos os produtos que podem ser criados a partir da linha de produto.
Cada ativo de software tem um papel bem definido dentro de
uma arquitetura comum para a linha de
produto. Para que seja possível a variação entre os produtos, alguns desses
ativos precisam ser comuns e outros precisam ser passíveis de configuração de
modo a proverem diferentes comportamentos. Durante o processo de produção as
escolhas para cada uma das características opcionais e variáveis são utilizadas
para determinar quais ativos a usar e como configurá-los.
"The characteristic that distinguishes software product lines from previous efforts is predictive versus opportunistic software reuse. Rather than put general software components into a library in hopes that opportunities for reuse will arise, software product lines only call for software artifacts to be created when reuse is predicted in one or more products in a well defined product line."
Os objetivos principais da linha de produtos de software:
tirar proveito das características comuns e gerenciar a variação de modo a
reduzir tempo, esforço, custo e complexidade na criação e gerenciamento de
linha de produto de softwares similares.
A variação presente em alguns dos ativos de software pode
ser acessada em alguns momentos especiais durante o processo produtivo. Dentre
esses momentos destacam-se:
- Código fonte: durante o reuso e configuração de artefatos fonte
- Desenvolvimento: durante arquitetura, projeto e codificação.
- Instanciação estática do código: durante a montagem do código antes da compilação
- Build: durante a compilação
- Empacotamento: durante a montagem de coleções binárias e executáveis
- Cliente: durante codificação personalizada no cliente
- Instalação: durante a instalação do produto de software
- Inicialização: durante a inicialização do sistema
- Tempo de execução: durante a execução do sistema
Quanto ao escopo existem duas abordagens de gerenciamento do
escopo de linha de produtos de software: proativa e reativa. Na abordagem
proativa todos os produtos necessários no horizonte previsível são suportados
pela linha de produtos. No caso da abordagem reativa somente os produtos
necessários imediatamente são suportados pela linha de produto e novos produtos
são incrementalmente adicionados à medida que as necessidades mudam. É comum
que artefatos como arquitetura tenham um escopo mais proativo do que artefatos
como código fonte.
“strategic software reuse: consolidate commonality throughout the product line, strategically manage all product line variation, and aggressively eliminate all duplication of engineering effort”
Quanto à adoção de linhas de produtos de softwares nas
empresas existe diversas abordagem que suportam esse processo. Alguns estudos
mostram esforços que variam de 2 meses à 5 anos. Esse esforço é influenciado
principalmente pela origem dos ativos de software. A fonte dos ativos de
software que mais tarde comporão a linha de produto inclui: artefatos
reutilizáveis de uma biblioteca existente, artefatos encapsulados em produtos
existentes, ou ainda artefatos desenvolvidos do zero. Enfim, muito tempo pode
ser ganho se os ativos forem extraídos de produtos existentes, repositórios
existentes e bibliotecas comerciais. No entanto, existem técnicas leves que podem
ajudar a diminuir o esforço da adoção de linhas de produtos de software:
- Minimizar diferenças entre sistemas únicos e linha de produto
- Utilizar uma adoção incremental para inicialmente fazer a transição de um pequeno subconjunto dos ativos, produtos, subsistemas ou pessoas
- Oferecer ferramentas e tecnologias de apoio à linha de produtos
- Usar abordagens reativas para adiar o desenvolvimento de produtos e esforço de implantação
- Estruturar produção para minimizar a necessidade de fusões complexas e custosas
O autoatendimento pode, obviamente, tirar grande vantagem da abordagem usando Linha de Produtos de Softwares. Imagine que uma aplicação de autoatendimento pode ser ela própria uma Linha de Produto e cada serviço que ela disponibiliza é um produto do conjunto. Cada um desses serviços ou produtos podem possuir pontos de personalização ou configuração que permitem mudar o comportamento do produto de modo a, por exemplo, oferecer um serviço de saque com fluxo para cartão de crédito e outro para débito. A própria linha de produto com opções de configuração para execução em equipamentos dotados de telas touch screen ou sem esse recurso e assim por diante. O fato é que essa abordagem permite uma séria de combinações que ao final resultarão em redução dos custos, do tempo de desenvolvimento e na estabilidade geral do produto mediante o reuso expressivo dos artefatos de software.
É isso. Até o próximo artigo!!!
4 comentários:
Hi! I know this is somewhat off topic but I was wondering if you knew where I could get a captcha plugin for my comment form? I'm using the same blog platform as yours and I'm having trouble finding one? Thanks a lot! capitalone com login
When someone writes an paragraph he/she keeps the plan of a user in his/her brain that how a user can be aware of it. Therefore that's why this paragraph is amazing. Thanks! hotmail sign in email
What's up to every body, it's my first pay a visit of this web site; this webpage consists of remarkable and genuinely good stuff in support of visitors. netflix.com login
Estou utilizando o aplicativo espião no celular da minha filha para conseguir ver tudo que ela acessa ou com quem ela conversa. É muito bom fiquei impressionado como é simples e fácil de usar recomendo muito usarem. https://brunoespiao.com.br/espiao-de-sms
Postar um comentário