• Nenhum resultado encontrado

Este cap´ıtulo apresentou os conceitos necess´arios para o entendimento do novo mo- delo proposto COSMOS*-VP, e para a compreens˜ao do contexto de utiliza¸c˜ao em que ele se encaixa. Os principais conceitos de desenvolvimento baseado em componentes

utilizados em COSMOS*-VP foram apresentados na Se¸c˜ao 2.1, onde foram descritos o m´etodo de desenvolvimento UML Components e os conceitos e vantagens da ar- quitetura de software, bem como o modelo COSMOS*, que permite a cria¸c˜ao de um mapeamento dos elementos arquiteturais no c´odigo, possibilitando que as vantagens da arquitetura de software seja refletida no c´odigo. A Se¸c˜ao 2.2 apresentou os concei- tos de Linhas de Produtos de Software, englobando a forma com que uma LPS pode ser projetada, especificada e implementada. Al´em disso, nessa se¸c˜ao foram descritos os conceitos de variabilidade de software e de pontos de varia¸c˜ao, bem como a forma que eles podem ser utilizados na cria¸c˜ao de Arquiteturas de Linhas de Produtos de Software, o que facilita o processo de cria¸c˜ao de novos produtos. Este cap´ıtulo ainda cont´em a Se¸c˜ao 2.3, onde foram apresentadas as duas mais populares linguagens de programa¸c˜ao orientada a aspectos, AspectJ e CaesarJ, detalhando suas principais caracter´ısticas e vantagens. Essa se¸c˜ao descreveu tamb´em o conceito de Crosscuting

Programming Interfaces (XPIs), que ´e uma moderna abordagem criada com o intuito

Evolu¸c˜ao de ALPs

componentizadas

Neste cap´ıtulo s˜ao apresentados os principais cen´arios representativos de evolu¸c˜ao de LPS reais considerados neste trabalho, e como esses cen´arios implicam em evolu¸c˜oes no diagrama de caracter´ısticas das LPS. Este cap´ıtulo detalha, tamb´em, como duas abordagens que melhoram a modularidade e facilitam a evolu¸c˜ao de software, o Desenvolvimento Baseado em Componentes e a Programa¸c˜ao Orientada a Aspectos, podem ser combinadas. Essa combina¸c˜ao traz benef´ıcios para ALPs. Por exemplo, quando s˜ao utilizados aspectos e componentes na cria¸c˜ao de ALPs o n´umero de elementos arquiteturais pode ser diminu´ıdo, devido ao uso de componentes, e os elementos arquiteturais podem apresentar uma coes˜ao mais alta do que a alcan¸cada sem a utiliza¸c˜ao de aspectos [58]. Esses benef´ıcios podem diminuir a complexidade arquitetural e facilitar a evolu¸c˜ao de ALPs.

Apesar dos significativos benef´ıcios, integrar aspectos com componentes n˜ao ´e o suficiente para resolver todos os problemas que ocorrem durante a evolu¸c˜ao de ALPs. Portanto, este cap´ıtulo descreve, tamb´em, os problemas do forte acoplamento arqui- tetural e do espalhamento da implementa¸c˜ao de pontos de varia¸c˜ao de ALPs. Esses problemas, se n˜ao tratados corretamente, podem causar instabilidades arquiteturais, que por sua vez, geram grandes impactos nas ALPs, durante a evolu¸c˜ao da linha.

Na Se¸c˜ao 3.1 s˜ao identificados o conjunto de cen´arios de evolu¸c˜ao que podem ocorrer no diagrama de caracter´ıstica de uma LPS, como adi¸c˜ao, aperfei¸coamento e divis˜ao de caracter´ısticas, considerados por este trabalho. Na Se¸c˜ao 3.2 ´e apresen- tado como o modelo de componentes COSMOS* pode ser integrado com a utiliza¸c˜ao

de Programa¸c˜ao Orientada a Aspectos para a cria¸c˜ao e evolu¸c˜ao de ALPs compo- nentizadas. Nessa se¸c˜ao, tamb´em ´e apresentado o problema do forte acoplamento entre elementos aspectuais. Na se¸c˜ao seguinte (Se¸c˜ao 3.3) ´e apresentado o problema do espalhamento de pontos de varia¸c˜ao.

3.1

Diferentes Tipos de Cen´arios de Evolu¸c˜ao

´

E consenso que sistemas de software evoluem, caso contr´ario seu uso se torna paula- tinamente menos satisfat´orio [43]. Neste contexto ´e importante entender como LPS evoluem, e como essas evolu¸c˜oes impactam em sua ALP.

Svahnberg e Bosch [53] identificaram cen´arios representativos de evolu¸c˜ao de LPS reais, e os categorizaram em seis grupos, de acordo com a evolu¸c˜ao dos requisitos que os originam. Os seis grupos s˜ao:

• Nova Fam´ılia de Produtos: Cen´ario de evolu¸c˜ao representativo que ocorre quando surgem novos requisitos para a cria¸c˜ao de uma nova fam´ılia de produtos. O conjunto de novos produtos ´e adicionado `a LPS de uma s´o vez.

• Novo Produto: Cen´ario que ocorre quando surge requisitos para a cria¸c˜ao de um novo produto da LPS.

• Aperfei¸coamento de Funcionalidade: Ocorre quando surgem requisitos para o melhoramento das funcionalidades providas pelos produtos j´a existen- tes. Esse cen´ario geralmente ´e necess´ario para atualizar as funcionalidades dos produtos da linha, de acordo com as novas exigˆencias do mercado em que o produto se encaixa.

• Extens˜ao de Suporte Padr˜ao: Essa categoria ´e relacionada com a ante- rior. ´E originado quando as tecnologias padr˜oes, em que os produtos da LPS, depende s˜ao evolu´ıdas.

• Nova Vers˜ao da Infra-estrutura: Essa categoria ocorre quando a infra- estrutura de Hardware e/ou de Software em que os produtos da linha s˜ao baseados evoluem.

• Aperfei¸coamento dos Atributos de Qualidade: Ocorre quando existe a necessidade de melhorar a qualidade dos produtos da linha.

Os cen´arios de evolu¸c˜ao representativos identificados por Svahnberg e Bosch, geralmente, implicam na modifica¸c˜ao do diagrama de caracter´ıstica da LPS. Por exemplo, a adi¸c˜ao de uma fam´ılia de produtos inteira, pode acarretar na adi¸c˜ao de diversas novas caracter´ısticas mandat´orias, opcionais e alternativas. Outro exemplo de cen´ario ´e a adi¸c˜ao de um novo produto, que pode, por exemplo, implicar na divis˜ao de uma caracter´ıstica em duas ou mais caracter´ısticas opcionais ou alternativas. Isso ocorre quando as funcionalidades do novo produto adicionado ´e, de certa forma, um subconjunto das funcionalidades de algum produto j´a existente. A Tabela 3.1 lista os cen´arios de evolu¸c˜ao que podem ocorrer no diagrama de caracter´ısticas, mapeando-os aos representativos cen´arios de evolu¸c˜ao dos requisitos, identificados por Svahnberg e Bosch em [53], que podem origin´a-los.

Tabela 3.1: Lista de cen´arios de evolu¸c˜ao do diagrama de caracter´ısticas

Cen´arios de

Evolu¸c˜ao de

Caracter´ısticas

Cen´arios de Evolu¸c˜ao

nos Requisitos Exemplos Adi¸c˜ao de ca- racter´ıstica man- dat´oria Extens˜ao de Suporte

Padr˜ao, Nova Vers˜ao da

Infra-estrutura e Aper- fei¸coamento dos Atributos de Qualidade

Novas caracter´ısticas mandat´orias podem ser necess´arias quando as tecnologias em que as LPS depende evolu´ı adicionando novas funcio- nalidades. Pode ocorrer tamb´em quando aper- fei¸coamento da qualidade ´e necess´ario, por exemplo, o aperfei¸coamento do atributo de

dependabilidade1

pode implicar na adi¸c˜ao da caracter´ıstica mandat´oria de Tratamento de

Exce¸c~oes Adi¸c˜ao de ca- racter´ısticas n˜ao-mandat´oria (opcional ou alter- nativa)

Nova Fam´ılia de Produtos e Novo Produto

Ocorre quando os novos produtos adiciona- dos apresentam novas funcionalidades n˜ao- mandat´orias.

Aperfei¸coamento

de caracter´ısticas

mandat´orias

Extens˜ao de Suporte

Padr˜ao, Nova Vers˜ao da

Infra-estrutura e Aper- fei¸coamento dos Atributos de Qualidade

Ocorre quando as tecnologias em que as LPS depende evolu´ı melhorando as funcionalidades j´a existentes. Tamb´em pode ocorrer quando atributos de qualidade devem ser melhorados, como a necessidade de melhor o desempenho de todos os produtos da linha.

Transforma¸c˜ao de caracter´ısticas mandat´orias em n˜ao-mandat´orias (opcionais ou alternativas)

Nova Fam´ılia de Produtos e Novo Produto

Ocorre quando o conjunto de funcionalida- des do novo produto adicionado ´e, de algum

forma, diferente do conjunto do n´ucleo man-

dat´orio da linha.

Divis˜ao de carac-

ter´ısticas

Nova Fam´ılia de Produtos e Novo Produto

Isso ocorre quando uma ou mais carac- ter´ısticas de um novo produto adicionado ´e, de certa forma, uma subcaracter´ıstica da li- nha.

3.2

Integra¸c˜ao de Aspectos ao Modelo de Compo-