• Nenhum resultado encontrado

2.2 Linha de Produtos de Software

2.2.2 Diagrama de Caracter´ısticas

Caracter´ıstica7 ´e uma propriedade de sistema que ´e relevante para alguma parte

interessada8 [21]. Na defini¸c˜ao inicialmente proposta por Kang et al.[37], s˜ao atri-

butos de um sistema que afetam diretamente o usu´ario final. A primeira defini¸c˜ao ´e prefer´ıvel, por ser mais abrangente. Caracter´ısticas ´e um importante conceito em Linhas de Produtos de software, pois, al´em de bastante intuitivo, o conceito pode ser usado para identificar funcionalidades comuns a todos os produtos e funcionalidades vari´aveis de uma Linha de Produtos de Software [34].

As caracter´ısticas comuns, ou mandat´orias, de uma LPS s˜ao aquelas que est˜ao presentes em todos os produtos da LPS. Dessa forma, identificam o n´ucleo da LPS, ou seja, o conjunto de funcionalidades que ser˜ao providas por todos os produtos derivados da LPS. Identificar uma caracter´ıstica como vari´avel consiste em definir que tal caracter´ıstica, de acordo com as especifica¸c˜oes de cada produto, pode ser provida ou n˜ao por um produto derivado da LPS.

Gomaa [34] define trˆes tipos de caracter´ısticas:

• Mandat´orias: S˜ao as caracter´ısticas que devem ser providas por todos os pro- dutos derivados da linha. Essas caracter´ısticas tamb´em podem ser chamadas de caracter´ısticas comuns. Pode-se agrupar todos os requisitos comuns em ape- nas uma caracter´ıstica mandat´oria ou identific´a-los separadamente em v´arias caracter´ısticas mandat´orias. Isso ir´a depender do enfoque que se queira dar para o modelo de caracter´ısticas. Por exemplo, se todos os requisitos comuns s˜ao bem entendidos pode-se concentrar apenas nas caracter´ısticas vari´aveis, es- colhendo representar todos os requisitos comuns em apenas uma caracter´ıstica mandat´oria. Entretanto, quando os requisitos n˜ao s˜ao bem entendidos, ou deseja-se identificar as caracter´ısticas antes de defini-las como mandat´orias ou n˜ao, a segunda abordagem ´e a mais apropriada. Gomaa define a utiliza¸c˜ao do estere´otipo <<kernel >> para representar caracter´ısticas mandat´orias em diagramas de caracter´ısticas.

• Opcionais: S˜ao caracter´ısticas providas apenas por alguns dos produtos da linha. Todas as caracter´ısticas opcionais podem depender de caracter´ısticas mandat´orias, uma vez que as mandat´orias sempre estar˜ao presentes em um

7

do inglˆes Feature.

8

produto. Caracter´ısticas opcionais s˜ao identificadas, em diagramas de carac- ter´ısticas, atrav´es do estere´otipo <<optional >>.

• Alternativas: Duas ou mais caracter´ısticas podem ser alternativas entre si. Assim como as opcionais, elas podem assumir que as caracter´ısticas man- dat´orias ser˜ao providas. As caracter´ısticas alternativas, juntamente com as op- cionais, podem ser referenciadas como caracter´ısticas vari´aveis ou n˜ao-manda- t´orias, j´a que sua presen¸ca varia conforme cada produto. Caracter´ısticas alter- nativas s˜ao identificadas utilizando o estere´otipo <<alternative >>.

As caracter´ısticas de uma LPS, ou de um sistema de software, s˜ao comumente documentadas em um Diagrama de caracter´ısticas, representando a decomposi¸c˜ao hier´arquica das caracter´ısticas. No diagrama, al´em de identificadas atrav´es de seu tipo, as caracter´ısticas podem ser agrupadas de acordo com suas restri¸c˜oes de sele¸c˜ao. Tais restri¸c˜oes limitam o conjunto de poss´ıveis combina¸c˜oes de caracter´ısticas vari´aveis (opcionais ou alternativas) a serem providas por um dado produto da LPS. As ca- racter´ı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, ou seja, as caracter´ısticas desse grupo s˜ao mutuamente exclusivas. Gomaa define que grupos de caracter´ısticas desse tipo devem ser identificados utilizando o estere´otipo <<zero-or-one-of-feature-group >>.

• Apenas uma do grupo de caracter´ısticas: ´E outro caso em que as ca- racter´ısticas do grupo s˜ao mutuamente exclusivas. Por´em, neste caso obri- gat´oriamente uma das caracter´ısticas do grupo deve estar presente em cada um dos produtos da LPS. Grupos de caracter´ısticas desse tipo s˜ao identificadas, em diagramas de caracter´ısticas, utilizando os estere´otipo <<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¸c˜ao de que pelo menos uma delas devem compor cada produto da LPS. O estere´otipo <<at-least- one-of-feature-group>> ´e usado para identificar 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 parece desnecess´ario, uma vez que n˜ao h´a restri¸c˜ao de sele¸c˜ao de caracter´ısticas, pode ser vantajoso agrupar um conjunto de caracter´ısticas que dependam de alguma outra carac- ter´ıstica, por exemplo. Grupos de caracter´ısticas desse tipo s˜ao identificadas, em diagramas de caracter´ısticas, utilizando os estere´otipo <<zero-or-more- of-feature-group>>.

Para identificar caracter´ısticas como sendo pertencente a uma caracter´ıstica maior, ou a um grupo de caracter´ısticas, ´e utilizado o s´ımbolo de agrega¸c˜ao. Neste traba- lho, visando a simplifica¸c˜ao da representa¸c˜ao gr´afica de diagramas de caracter´ısticas, removemos o sufixo of feature group dos estere´otipos utilizados para identificar tipos de grupos de caracter´ısticas. Por exemplo, ao inv´es de utilizar o estere´otipo <<zero-or-one-of-feature-group >>para identificar um grupo de caracter´ısticas como sendo do tipo Zero ou uma do grupo de caracter´ısticas, utilizamos o estere´otipo <<zero-or-one >>.

A Figura 2.5 representa parte de um diagrama de caracter´ısticas de uma LPS de aplica¸c˜oes para Hot´eis. As caracter´ısticas Hotel, Reserva e Simples, que ´e respons´avel por reservar quartos individualmente, s˜ao mandat´orias, enquanto as de- mais s˜ao caracter´ısticas vari´aveis. Nesse exemplo, todas caracter´ısticas vari´aveis est˜ao agrupadas sobre algum tipo de grupo de caracter´ısticas. Por exemplo, as ca- racter´ısticas alternativas Localmente e Remotamente est˜ao dentro do grupo Log do tipo zero-ou-uma. Portanto, elas s˜ao mutuamente exclusivas, ou seja, apenas uma das caracter´ısticas n˜ao funcionais de log pode ser selecionada. Nesse caso, um dado produto far´a logging de sua execu¸c˜ao apenas localmente ou remotamente. O grupo de caracter´ısticas Coletiva do tipo zero-ou-mais, que agrupa as caracter´ısticas Turistas e Confer^encia. Desse grupo podemos selecionar zero, uma ou as duas caracter´ısticas. As caracter´ısticas referentes a pagamento com cart˜ao e com boleto, Cart~ao e Boleto, respectivamente, est˜ao agrupadas por Pagamento, que ´e do tipo pelo-menos-uma. Ent˜ao, ao menos uma das caracter´ısticas respons´aveis por reali- zar pagamentos deve ser provida por todos os produtos da linha.