SMarty

Stereotype-based Management of Variability

Uma abordagem UML para gerenciamento de Variabilidade.

Apresentação


O panorama competitivo das companhias de desenvolvimento de software está mudando e se intensificando. O tamanho e a complexidade dos sistemas estão aumentando ao mesmo tempo em que a velocidade de inovação acelera. Além disso, a balança de pende cada vez mais para o cliente e pela sua habilidade de demanda por produtos altamente customizáveis. Essa situação tem levado muitas companhias a permanecerem em estado de prontidão para ``combater incêndios'', ocasionados pela elevação do custo no desenvolvimento de um novo produto e o aumento de tamanho e complexidade, enquanto, por outro lado, o número de produtos e adaptações específicas exigidas pelos clientes, aumenta constantemente. Isso ocasiona uma pressão sobre as organizações responsáveis por pesquisa e desenvolvimento (P & D), e no decorrer do tempo, causa a queda da posição competitiva das companhias, visto que não conseguem investir em inovações em seu portifólio de produtos e processos, uma vez que, permanecem com foco no desenvolvimento singular de entregáveis de curto prazo para seus clientes [1].

Os fatos descritos anteriormente não são únicos ou novos, de forma genérica, no entanto, durante a última década, a indústria tem chegado ao limite, no qual, apenas melhorar a P & D existentes não garante uma posição competitiva [1].

Despontou-se assim, na última década, a utilização por muitas companhias da noção de Linha de Produto de Software (LPS) para proporcionar um conjunto de práticas de trabalho que permitam a eles, aumentar a quantidade de recursos de P & D focados em funcionalidades altamente diferenciadas e, consequentemente, diminuir os investimentos em funcionalidades comuns [1]. LPS permite que uma família de produtos compartilhe um núcleo comum, uma plataforma, enquanto apoia a instanciação de funcionalidades específicas de produtos sob essa plataforma [2].

Entre os diversos benefícios proporcionados pela adoção de LPS estão: a redução de custo e do tempo no processo de desenvolvimento, a diminuição de riscos e de perdas e do time to market, justificando o retorno de investimento [2]. O Hall of Fame do Software Engineering Institute (SEI), destaca tais benefícios por meio de dados quantitativos que indicam: melhorias na produtividade em uma escala de 10x; melhoria na qualidade, em 10x; redução de custos em até 60%; redução em até 87% do trabalho empregado no desenvolvimento; diminuição em até 98% do time to market; e a possibilidade de inserção em novos mercados em meses, em vez de anos.

A adoção bem sucedida de LPS fornece uma significante oportunidade para as companhias melhorarem suas posições competitivas, decorrentes dos benefícios supracitados. Como apontado por [1], em algumas companhias, há sucesso inicial na adoção de LPS, porém no decorrer de um curto espaço de tempo esses benefícios começam a diminuir, tornando a adoção dispendiosa. Esse dispêndio está relacionado principalmente a falhas no gerenciamento sistemático de variabilidades.

O gerenciamento de variabilidades em LPS é fator crítico a ser tratado para que a adoção dessa abordagem forneça e mantenha posição competitiva e vantagens significativas para as organizações que dela fazem uso [1].

O gerenciamento de variabilidades tem como objetivo a identificação, representação e o rastreamento de variabilidades de uma LPS. Devido à sua importância para LPS, diversas propostas vêm sendo apresentadas pela literatura [3]. Entre tais abordagens para o gerenciamento conciso de variabilidades, há destaque para as baseadas na linguagem de modelagem unificada (UML), como por exemplo, o método PLUS [4], a abordagem de Ziadi et al. [5], a abordagem de [6].

A abordagem Stereotype-based Management of Variability (SMarty) [7][8] permite o gerenciamento de variabilidade por meio de um perfil UML e de um processo composto por atividades e diretrizes bem definidas para identificar, representar e rastrear variabilidades em modelos UML de uma LPS utilizando estereótipos propostos em seu perfil.


[1] Capilla, R.; Bosch, J. & Kang, K. Systems and Software Variability Management: Concepts, Tools and Experiences Springer, 2013.
[2] Pohl, K.; Böckle, G. & Linden, F. J. v. d. Software Product Line Engineering: Foundations, Principles, and Techniques Springer-Verlag, 2005.
[3] Chen, L.; Ali Babar, M. & Ali, N. Variability Management in Software Product Lines: a Systematic Review Proc. Int. Software Product Line Conference, Carnegie Mellon University, 2009, 81-90.
[4] Gomaa, H. Designing Software Product Lines with UML: From Use Cases to Pattern-Based Software Architectures Addison Wesley, 2004.
[5] Ziadi, T.; Helouet, L. & marc Jezequel, J. Towards a UML Profile for Software Product Lines Product Family Engineering Conference, Springer, 2003, 129-139.
[6] Halmans, Gü. & Pohl, K. Communicating the Variability of a Software-Product Family to Customers Software and Systems Modeling, Springer Verlag, 2003, 2, 15-36.
[7] Oliveira Junior, E. A.; Gimenes, I. M. S. & Maldonado, J. C. Systematic Evaluation of Software Product Line Architectures Journal of Universal Computer Science, 2013, 19, 25-52.
[8] Oliveira Junior, E. A.; Gimenes, I. M. S.; Huzita, E. H. M. & Maldonado, J. C. A Variability Management Process for Software Product Lines Proc. Conf. of the Centre for Advanced Studies on Collaborative research, IBM Press, 2005, 225-241.