The SFB's primary goal is to investigate, develop, and promote technologies for the construction of large software systems based on generic methods. The term "generic method" in this context refers to all types of description techniques, generator techniques, and tools helping to systematically support the reuse of existing software artefacts, development processes, and design knowledge and experience for the construction of a new system. The results of the SFB will give important impetus to an engineering-style software technology allowing to construct large software systems within given time schedules and with predictable effort while at the same time meeting given quality requirements.
The characteristics typically attributed to large systems are:
The hope to automatically construct such systems based on complete formal specifications by stepwise transformations -as propagated the past 25 years- finally turned out to be illusive. On the contrary, ways have to be found to sensibly combine formal specifications with informal descriptions, and generator techniques with manual development steps. Such an integrative approach moreover has to support initially incomplete sets of requirements which are extended during the course of the project. A theoretical foundation of the approach, however, is deemed to be indispensable.
Reuse of software products, development steps and development experiences in this context implies falling back on relevant information gathered from previous projects. In this respect, state-of-the-art software technology still lacks adequate support for reuse. New development projects hardly profit from earlier projects since the end product (including its specification, design, and code) is the only asset available. A documentation of the design rationale, possible design alternatives and the reasons for specific design choices is seldom existing. This is where the SFB sets in. Software development projects in principle are considered as controlled experiments, during which all types of reusable information are continuously recorded. This includes products on all stages of the development process, the rationale behind design decisions, and measurements of development time and manpower. The practical implementation of this approach is based on a modeling of software development processes with all their relevant aspects, project-specific instantiations of such models, and the integration of these models and instantiations into a software engineering laboratory (SE-lab). Reuse then basically refers to a repeated instantiation of recorded development processes - until differing requirements or preconditions for the actual project cause serious discrepancies. Generators in this context can be regarded as tools for executing parameterized development processes. For well-understood subtasks, generators can be integrated seamlessly into the SE-lab.
Treating nonfunctional system properties such as performance and reliability as equally important requirements and supporting their systematic implementation based on respective requirements descriptions adds another challenge to the SFB's aims. The need to describe all the diverse aspects of a system on different levels of abstraction precludes using a single universal description technique but rather calls for combining various formal and informal techniques and for assuring consistency among these different descriptions.
In summary, the SFB understands software development as an engineering discipline where improvements concerning the underlying software technology are based on continuous measurements and evaluations of all subprocesses. The SE framework in figure 1 reflects this basic idea:
The SE core contains all product models, process models, action models, quality models, and description techniques required for the realization of large software development projects. In addition, the core provides a database of reusable products together with appropriate development processes and respective experiences. This information used in a feedback cycle to improve the models and description techniques for future development projects.
The SE core's models and description techniques are then used to instantiate a tailored project organization and a project plan -restricted to the lifetime of the project- for each new project. The project plan comprises customized models, description techniques, reusable components, and development steps, and lays the foundation for the realization of the envisioned system. During system development, all resulting products, tailored development processes, and experiences are recorded systematically and are fed back to the SE-core's database.
Consequently, the main research issues to be addressed by the SFB are:
SFB 501 - Development of Large Systems with Generic Methods