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.