|Feature modeling embebbed software software product lines tool support|
The insight that family-based software development in the large is not feasible without a coherent tool chain for all phases of the development process was the starting point for the work presented in this dissertation. Projects where family-based software was developed without adequate tool support could not exploit the full benefits of that approach. The main reason was that with the growth of the family it became more and more complex to select and deploy the appropriate family member. A solution for this problem has to provide support in the areas of configuration and composition of software families. However, configuration and composition requires configurable and composable entities. The design of these entities is the result of the domain decomposition process that starts each family-based software development. Therefore, tool support should start as early as in the domain analysis phase right at the beginning of software development. The main contribution presented in this work is a rule-based configuration method for component-based software families. It significantly eases the problems sketched above, especially for projects that require very fine-grained software configurability. It does so by gathering and representing configuration knowledge throughout the software development process in a uniform way. The method is based on already known software engineering techniques like domain engineering and program families but combines them in a novel way. It does not require a new software development process but can be seen rather as an addition to existing approaches for software development process models. The introduction of domain mappings from the family application domain to component configuration domains allows a new degree of reuse for family-based software components. Instead of components that are bound to a particular application domain model of a software family, it is then possible to reuse components in other application domains. This is achieved by providing an appropriate domain mapping of the application domain to the components configuration domain. The description of several examples where the proposed method has been applied under different prerequisites shows its usefulness and applicability to projects in the intended application domain of embedded systems.