1.4 Organização deste Trabalho
2.1.2 Modelo de Características
Característica2 é uma propriedade de sistema que é relevante para alguma parte in-
teressada3 [17]. Na denição inicialmente proposta por Kang et al. [32], são atributos
de um sistema que afetam diretamente o usuário nal. Além das Características serem um importante conceito em LPS, elas podem ser usadas para identicar funcionalidades comuns a todos os produtos e funcionalidades variáveis de uma Linha de Produtos de Software [25].
As características podem ser classicadas em mandatórias, opcionais ou alternativas. As características comuns ou mandatórias de uma LPS são aquelas que estão presentes em todos os produtos da LPS. Dessa forma, identicam o núcleo da LPS, ou seja, o conjunto de funcionalidades que serão providas por todos os produtos derivados da LPS. Identicar
2Inglês: Feature 3Inglês: Stakeholder
2.1. Linha de Produtos de Software 11 uma característica como variável consiste em denir que tal característica, de acordo com as especicações de cada produto, pode ser provida ou não por um produto derivado da LPS.
Gomaa [25] dene três tipos de características:
• Mandatórias: São as características que devem ser providas por todos os pro- dutos derivados da linha. Essas características também podem ser chamadas de características comuns. Pode-se agrupar todos os requisitos comuns em apenas uma característica mandatória ou identicá-los separadamente em várias características mandatórias. Isso irá depender do enfoque que se queira dar para o modelo de carac- terísticas. Por exemplo, se todos os requisitos comuns são bem entendidos pode-se concentrar apenas nas características variáveis, escolhendo representar todos os re- quisitos comuns em apenas uma característica mandatória. Entretanto, quando os requisitos não são bem entendidos, ou deseja-se identicar as características antes de deni-las como mandatórias ou não, a segunda abordagem é a mais apropriada. Gomaa dene a utilização do estereótipo kernel para representar características mandatórias em diagramas de características.
• Opcionais: São características providas apenas por alguns dos produtos da linha. Todas as características opcionais podem depender de características mandatórias, uma vez que as mandatórias sempre estarão presentes em um produto. Carac- terísticas opcionais são identicadas, em diagramas de características, através do estereótipo optional.
• Alternativas: Duas ou mais características podem ser alternativas entre si. As- sim como as opcionais, elas podem assumir que as características mandatórias serão providas. As características alternativas, juntamente com as opcionais, podem ser referenciadas como características variáveis ou não-mandatórias, já que sua pre- sença varia conforme cada produto. Características alternativas são identicadas utilizando o estereótipo alternative.
As características de uma LPS, ou de um sistema de software, são comumente docu- mentadas em um Diagrama de características, representando a decomposição hierárquica das características. No diagrama, além de identicadas através de seu tipo, as caracte- rísticas podem ser agrupadas de acordo com suas restrições de seleção. Tais restrições limitam o conjunto de possíveis combinações de características variáveis (opcionais ou alternativas) a serem providas por um dado produto da LPS. As características de um diagrama podem ser agrupadas em:
• Zero ou uma do grupo de características: Em uma LPS, dado um grupo de características opcionais apenas uma deve ser escolhida para compor um produto,
12 Capítulo 2. Fundamentos de Reuso de Software e Tolerância a Falhas ou seja, as características desse grupo são mutuamente exclusivas. Gomaa dene que grupos de características desse tipo devem ser identicados utilizando o estereótipo zero-or-one-of-feature-group.
• Apenas uma do grupo de características: E outro caso em que as caracte- rísticas do grupo são mutuamente exclusivas. Porém, neste caso obrigatoriamente uma das características do grupo deve estar presente em cada um dos produtos da LPS. Grupos de características desse tipo são identicadas, em diagramas de características, utilizando o estereótipo exactly-one-of-feature-group. • Pelo menos uma do grupo de características: Desse grupo, podemos escolher
uma ou mais características, mas tempos a restrição de que pelo menos uma delas de- vem compor cada produto da LPS. O estereótipo at-least-one-of-feature-group é usado para identicar grupos de características desse tipo.
• Zero ou mais do grupo de características: Desse grupo podemos escolher quantas características desejarmos. Embora esse grupo pareça desnecessário, uma vez que não há restrição de seleção de características, pode ser vantajoso agrupar um conjunto de características que dependam de alguma outra característica, por exemplo. Grupos de características desse tipo são identicadas, em diagramas de características, utilizando o estereótipo zero-or-more-of-feature-group. Para fazer os diagramas de característica presente neste trabalho, utilizamos o método apresentado em Gomaa[25]. O método de Gomaa foi escolhido por apresentar semelhanças com o UML, assim será mais fácil compreende-lo ao perceber que está familiarizado com a representação gráca do método. Neste trabalho, visando a simplicação da represen- tação gráca de diagramas de características, removemos o suxo of feature group dos estereótipos utilizados para identicar tipos de grupos de características. Por exemplo, ao invés de utilizar o estereótipo zero-or-one-of-feature-group para identicar um grupo de características como sendo do tipo Zero ou uma do grupo de característi- cas, utilizamos o estereótipo zero-or-one .
A Figura 2.1 representa parte de um diagrama de características de uma LPS de apli- cações para Hotéis. As características Hotel, Reserva e Simples, que são responsáveis por reservar quartos individualmente, são mandatórias, enquanto as demais são carac- terísticas variáveis. Nesse exemplo, todas as características variáveis estão agrupadas sobre algum tipo de grupo de características. Por exemplo, as características alternativas Localmente e Remotamente estão dentro do grupo Log do tipo zero-ou-uma. Portanto, elas são mutuamente exclusivas, ou seja, apenas uma das características não funcionais de log pode ser selecionada. Nesse caso, um dado produto fará logging de sua execu- ção apenas localmente ou remotamente. O grupo de características Coletiva do tipo
2.1. Linha de Produtos de Software 13 zero-ou-mais, que agrupa as características Turistas e Conferências. Desse grupo podemos selecionar zero, uma ou as duas características. As características referentes a pagamento com cartão e com boleto, Cartão e Boleto, respectivamente, estão agrupadas por Pagamento, que é do tipo pelo-menos-uma. Então, ao menos uma das caracte- rísticas responsáveis por realizar pagamentos deve ser provida por todos os produtos da linha.
Figura 2.1: Parte de um diagrama de características de uma LPS de Hotel.