Atenção: esse artigo tem um vídeo complementar. Clique e assista!
Neste artigo veremos o conceito de variabilidade em linha de produto de software e como é possível identificar, delimitar e representar variabilidades por meio de modelos UML.
Para que serve
Introduzir o conceito de variabilidade em linha de produto de software, bem como fornecer uma forma de identificar, delimitar e representar variabilidade usando uma notação amplamente consolidada tanto na academia como na indústria.
Em que situação o tema é útil
Pesquisadores e gerentes/arquitetos de software que pretendem adotar ou estão em processo de transição do modelo tradicional de desenvolvimento de produtos individuais para a abordagem de linha de produto de software. Além disso, também devem ser consideradas as organizações que já possuem uma linha de produto, mas não realizam efetivamente a atividade de gerenciamento de variabilidades.
Neste artigo veremos como é possível identificar, delimitar e representar variabilidade em modelos de casos de uso, classes e componentes de linha de produto de software (LP) baseados na notação UML (Unified Modeling Language). Para tanto, utilizaremos a LP Arcade Game Maker (AGM) do Software Engineering Institute (SEI) para ilustrar os respectivos conceitos.
Linha de produto de software
A abordagem de linha de produto de software (LP) vem se consolidando com o passar dos anos como uma forma efetiva de reutilização de artefatos de software tanto na indústria quanto na academia [2][6][11]. Várias são as abordagens existentes na literatura que visam à melhoria do processo de adoção e desenvolvimento de LP, com base em conceitos amplamente conhecidos, como desenvolvimento baseado em componentes e arcabouços (frameworks) [3][8].
Uma LP representa um conjunto de sistemas de software que compartilham características comuns e gerenciáveis, que satisfazem as necessidades de um segmento particular do mercado ou de uma missão [1]. Esse conjunto de sistemas de software é também chamado de família de produtos. Os membros da família são produtos específicos desenvolvidos de maneira sistemática a partir da instanciação de uma infraestrutura comum de uma LP, chamada de núcleo de artefatos.
Tradução do termo em inglês core assets. Alguns autores utilizam o termo “ativos centrais” para representar todos os artefatos envolvidos no processo de desenvolvimento de LP, desde recursos humanos
O núcleo de artefatos é essencial para o desenvolvimento de LP, além de formar a sua base. Normalmente inclui a Arquitetura de LP (ALP), componentes reusáveis, modelos de domínios, requisitos da LP, planos de teste e modelos de características e de variabilidades.
O desenvolvimento de LP segue, normalmente, duas atividades etapas: a Engenharia de Domínio, que tem como objetivo desenvolver o núcleo de artefatos e Engenharia de Aplicação, na qual será instanciado o núcleo de artefatos para gerar diferentes produtos.
O Software Engineering Institute (SEI), por meio da iniciativa PLP (Product Line Practice), estabeleceu as atividades essenciais de uma abordagem de LP [11]. Essas atividades são: o Desenvolvimento do Núcleo de Artefatos, que corresponde à Engenharia de Domínio; o Desenvolvimento do Produto, que corresponde à Engenharia de Aplicação; e o Gerenciamento de LP. A Figura 1 ilustra as interações entre essas atividades.
Figura 1"
[...] continue lendo...