Atenção: esse artigo tem um vídeo complementar. Clique e assista!

De que se trata o artigo

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. Atividades essenciais de desenvolvimento de linha de produto de software.

Os três círculos da Figura 1 indicam que as atividades de uma LP são altamente interligadas e iterativas. As flechas rotativas indicam que, além dos artefatos gerados no desenvolvimento de produtos do núcleo, são também realizadas revisões dos artefatos ou até mesmo inclusão de novos artefatos.

Uma das principais atividades de gerenciamento de LP é o gerenciamento de variabilidades, que começa tão logo o processo de LP se inicia.

...

Quer ler esse conteúdo completo? Tenha acesso completo