Utilize este identificador para referenciar este registo: https://hdl.handle.net/1822/8137

TítuloMethodological approaches and techniques for model driven development of software product lines
Autor(es)Bragança, Alexandre Manuel Tavares
Orientador(es)Machado, Ricardo J.
Data21-Abr-2008
Resumo(s)Two recent approaches in software engineering are capturing the attention of the academic community as well as the industry: model driven engineering and software product lines. The software product line approach to software development is being put into practice from several years and the results seen very promising. However, the resources required to implement this approach are very significant and, as such, a wide adoption of the software product line approach is still not a reality. This is in some sort a result of the heavy methods that such an approach requires. These methods usually require the use of high level abstractions to capture domain knowledge which is commonly represented using models. These abstractions are usually far from the abstractions used to implement the software solutions. Also, the processes are more complex than the ones commonly used for developing single software systems, since they imply a domain engineering approach to develop reusable assets as well as an application engineering approach to develop final applications in the domain. Model driven engineering approaches promise to promote the use of models as assets of development to the same level as code. Models should be treated as first class entities in software development, similarly to what happens with code. To achieve this goal, some technologies have been proposed, such as, metamodeling frameworks and model transformation languages. These technologies have the potential to support the automation of many software development tasks of heavy methods, particularly those that rely significantly on modeling activities and that use models as a source for producing software. This is the case for the majority of the software product line development methods. This thesis is about supporting the development of software product lines by adopting a model driven engineering approach. For that, we start by analyzing major domain engineering and product line methods. We identify and discuss fundamental concepts for product line development. Resulting from that, a set of common and crucial activities for software product line development are identified and contextualized in a variant of software product line development that we call domain-specific platform approach. This thesis presents methodological approaches and techniques to support the referred activities using several kinds of models and a model driven engineering approach. We particularly show how concepts, such as commonality and variability, can be modeled at different levels of abstraction during the development activities. We present approaches on how to relate concepts that are present at different levels of abstraction or from different perspectives of the system. The approaches presented in this thesis are essentially focused on computation independent models since these are the kind of models that have less support at the moment. This results from their nature of being computation independent and, therefore, more difficult to relate to the computation concepts that are used in models that support the implementation of the software system being developed. Consequently, the proposals presented in this thesis are essentially related to the following kinds of models: use cases; feature; entity; activity; component; and class. This thesis contributes to the foundations of the novel model driven approach to software product line development. The approaches presented in this thesis, when applied, enable the automation of previously manual based tasks, such as: feature modeling; the creation of the first logical architecture of a software product line; and multi-stage domain specific modeling. The approaches presented in this thesis are illustrated through demonstration cases. These demonstration cases reflect experimentations of our approaches using problems described on other publications in the field or result from our own experience in applying the approaches in the context of projects developed at a software development company. We also discuss how the methodological approaches and techniques can be realized by using metamodeling frameworks and model transformation languages, particularly EMF and QVT.
Duas recentes aproximações no campo da engenharia de software estão a capturar a atenção da comunidade académica e da indústria: a engenharia de software baseada em modelos e as linhas de produtos de software. O modelo de desenvolvimento de software baseado em linhas de produtos é já adoptado na indústria há alguns anos e os resultados são bastante prometedores. No entanto, os recursos necessários para a implementação deste modelo de desenvolvimento de software são bastante significativos e, portanto, a adopção em larga escala desta abordagem ainda não é uma realidade. Isto resulta, certamente, dos métodos pesados que são necessários para essa abordagem. Estes métodos normalmente requerem o uso de abstracções de alto nível que permitem capturar conhecimento do domínio que é, vulgarmente, representado através de modelos. Estas abstrações encontram-se muitas vezes bastante distantes das abstrações usadas nas implementações das soluções de software. Para além disso, os processos são mais complexos que os vulgarmente usados no desenvolvimento de sistemas de software singulares (por oposição a linhas de produtos), uma vez que estes implicam dois sub-processos: engenharia de domínio para desenvolver artefactos reutlizáveis e engenharia de aplicações para desenvolver as aplicações finais do domínio. A engenhria de software baseada em modelos promete promover a utilização de modelos como artefactos de desenvolvimento em igualdade com o código. Os modelos passam a ser tratados como entidades de primeira classe no desenvolvimento de software, à semelhança do código. Para se atingir este objectivo foram propostas algumas tecnologias, tais como, ferramentas de meta-modelação e linguagens de transformação de modelos. Estas tecnologias têm características que potenciam a automação de muitas tarefas de desenvolvimento de software usadas em métodos mais pesados, particularmente aqueles que dependem signifcativamente de actividades de modelação e que usam modelos como fonte para a produção de software. Este é o caso da maioria dos métodos de desenvolvimento de linhas de produtos de software. O tema desta tese é o desenvolvimento de linhas de produtos de software através da adopção de uma aproximação baseada em modelos (model driven). Nesse contexto, começa-se por analisar diversos métodos relevantes de engenharia de domínio e desenvolvimento de linhas de produtos de software. Identificam-se e analisam-se conceitos fundamentais para o desenvolvimento de linha de produtos de software. Em resultado dessa análise, um conjunto de actividades comuns e cruciais para o desenvolvimento de linhas de produtos de software são identificadas e contextualizadas numa especialização do processo típico de desenvolvimento de linhas de produtos de software que designamos por aproximação ao desenvolvimento de linhas de produtos de software baseada em plataformas especificas de domínio. Esta tese apresenta aproximações metodológicas e técnicas para suportar as referidas actividades usando diversos tipos de modelos e uma proposta para a engenharia de linhas de produtos de software baseada em modelos. Em particular, mostra-se como conceitos, tais como as características comuns ou variáveis dos sistemas, podem ser modeladas em diferentes níveis de abstração e em diferentes perspectivas nas diversas actividades de desenvolvimento de software. As propostas apresentadas nesta tese são essencialmente focalizadas em modelos independentes da computação, uma vez que este tipo de modelos são os menos suportados actualmente pelos métodos de desenvolvimento de software. Isto resulta da sua natureza, ou seja, de representarem conceitos que não são directamente suportados pelos sistemas computacionais actuais e, como tal, é mais difícil relacionar estes conceitos com os conceitos usados na implementação das soluções de software. Em consequência, as propostas apresentadas nesta tese estão essencialmente relacionadas com os seguintes tipos de modelos: diagramas de casos de utilização; diagramas de características; diagrams de entidades; diagramas de actividades; diagramas de componentes e diagramas de classes. Esta tese contribui para as bases de uma nova aproximação ao desenvolvimento de linhas de produtos de software baseada em modelos. As propostas apresentadas nesta tese, quando aplicadas, permitem a automação de tarefas de desenvolvimento de linhas de produtos de software que são, no presente, fundamentalmente manuais, tais como: a modelação de características de linhas de produtos; a criação de arquitecturas lógicas de linhas de produtos; a modelação especifica de domínio em multíplas etapas ou sítios. As propostas apresentadas nesta tese são ilustradas através de casos de estudo. Estes casos de estudo refletem os resultados de experiências na implementação das referidas propostas usando problemas descritos noutras publicações do mesmo campo científico ou resultam da própria experiência do autor deste documento na aplicação das propostas no contexto de projectos desenvolvidos numa empresa de desenvolvimento de soluções informáticas. Esta tese também descreve como as metodologias e técnicas propostas podem ser implementadas através de ferramentas de meta-modelação e linguagens de transformação de modelos tais como o EMF e o QVT.
TipoTese de doutoramento
DescriçãoTese de Doutoramento em Sistemas de Informação - Engenharia de Programação e dos Sistemas Informáticos
URIhttps://hdl.handle.net/1822/8137
AcessoAcesso aberto
Aparece nas coleções:BUM - Teses de Doutoramento

Ficheiros deste registo:
Ficheiro Descrição TamanhoFormato 
Pág. Iniciais.pdf89,96 kBAdobe PDFVer/Abrir
PhD_AlexandreBraganca.pdf3,35 MBAdobe PDFVer/Abrir

Partilhe no FacebookPartilhe no TwitterPartilhe no DeliciousPartilhe no LinkedInPartilhe no DiggAdicionar ao Google BookmarksPartilhe no MySpacePartilhe no Orkut
Exporte no formato BibTex mendeley Exporte no formato Endnote Adicione ao seu ORCID