Dissertação

{en_GB=Normalized Systems: An Assessment of Evolvability Based on Metrics} {} EVALUATED

{pt=A evolutibilidade é uma qualidade fundamental de sistemas, que é valorizada em todas as áreas de desenvolvimento de software. Ao longo dos anos, foram sugeridas técnicas para obter esta qualidade, obtendo resultados discutíveis por requererem grande disciplina por parte dos programadores, uma arquitectura adequada, ou o uso de ferramentas complexas. A teoria dos Sistemas Normalizados (SN) defende que a evolutibilidade do software pode ser obtida aplicando quatro princípios bem definidos, que podem ser efectivamente seguidos através da sistemática reutilização do conhecimento de arquitectura e desenho utilizando geração de código. Apesar das capacidades promissoras dos SN, não existem avaliações concretas da sua aplicabilidade a projectos de software reais, especialmente no que toca à evolutibilidade das aplicações por si produzidas. Neste trabalho, revemos o conceito de evolutibilidade e as abordagens existentes para a atingir, identificando também as lacunas existentes na literatura acerca da avaliação da evolutibilidade de aplicações desenvolvidas usando SN e outras abordagens. De seguida, procedemos à definição de um caso de estudo que consiste no desenvolvimento de um sistema de informação baseado na web, usando ferramentas dos SN, uma abordagem tradicional, e um abordagem de Engenharia Baseada em Modelos. Finalmente, avaliamos a evolutibilidade das implementações utilizando análise estática de código na forma de métricas de código, que medem características de evolutibilidade, e comparamos os resultados. Estes demonstram que as ferramentas dos SN produzem de facto aplicações altamente estáveis e evolutivas, mesmo quando comparadas com as restantes abordagens. No entanto não são perfeitos, e várias desvantagens foram identificadas. , en=Evolvability is a fundamental quality of systems that is valued across all areas of software development. Over the years, techniques have been suggested to achieve this quality, with disputable results mostly because they require a great deal of developer discipline, an appropriate architecture, or because they require embracing complex new frameworks. Normalized Systems (NS) Theory posits that software evolvability rests on four well-defined principles that can be effectively achieved by systematically reusing design and architectural knowledge through code generation. Despite their promising capabilities, NS lack a proper evaluation of their applicability to real software projects, specifically with regards to the evolvability of the applications they produce. In this work, we overview the concept of evolvability and the existing approaches to achieve it, also identifying the existing gaps in the literature regarding the evolvability assessment of applications developed using NS and other approaches. We then proceed to define a case study consisting in developing a web based information system using NS tools, a traditional approach, and a Model Driven Engineering (MDE) approach. Finally, we evaluate the implementations evolvability using static code analysis in the form of code metrics that measure evolvability characteristics, and compare their results. The results show that \ac{NS} tools indeed produce highly stable and evolvable applications, even when compared to the remaining approaches. However, they were proven to not be perfect, and several disadvantages are identified.}
{pt=Sistemas Normalizados, Evolutibilidade, Engenharia Baseada em Modelos, Desenho e Arquitectura de Software, Métricas de Código, en=Normalized Systems, Evolvability, Model-Driven Engineering, Software Design and Architecture, Code Metrics}

Novembro 8, 2016, 13:0

Publicação

Obra sujeita a Direitos de Autor

Orientação

ORIENTADOR

Paulo Jorge Fernandes Carreira

Departamento de Engenharia Informática (DEI)

Professor Auxiliar