Utilize este identificador para referenciar este registo:
https://hdl.handle.net/1822/8137
Título: | Methodological approaches and techniques for model driven development of software product lines |
Autor(es): | Bragança, Alexandre Manuel Tavares |
Orientador(es): | Machado, Ricardo J. |
Data: | 21-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. |
Tipo: | Tese de doutoramento |
Descrição: | Tese de Doutoramento em Sistemas de Informação - Engenharia de Programação e dos Sistemas Informáticos |
URI: | https://hdl.handle.net/1822/8137 |
Acesso: | Acesso aberto |
Aparece nas coleções: |
Ficheiros deste registo:
Ficheiro | Descrição | Tamanho | Formato | |
---|---|---|---|---|
Pág. Iniciais.pdf | 89,96 kB | Adobe PDF | Ver/Abrir | |
PhD_AlexandreBraganca.pdf | 3,35 MB | Adobe PDF | Ver/Abrir |