Embedded systems shape and govern our world today. We can hardly imagine a life without these systems. Examples are mobile phones, DVD players, pacemakers, train control systems, and automotive components. Embedded systems are frequently part of complex safety-critical systems that can be found in the following domains: automotive, avionics, medical, consumer electronics, automation. A main characteristic of the development process of these complex safety-critical systems is the division of labour. The manufacturer usually decomposes the complex system into subsystems and assigns the development of these subsystems to divisions within the company or to external suppliers. Once they are developed, the manufacturer integrates them into the system. Of course, the suppliers get a list of requirements, that the subsystem they are responsible for, should fulfil. However, they usually have a lot of freedom in developing these subsystems. The manufacturer, on the other hand, has a black-box view on the supplied subsystems and is only able to make small modifications and, thus, integration of the subsystems into a complex system is a challenging task. The communication between suppliers and manufacturer can and should be improved. If each supplier develops not only his own subsystem, but makes also his expectations with regard to other subsystems and the overall system explicit, this would facilitate integration a lot. Yet, frequently, these expectations remain implicit and are not documented in a systematic and structured way. To facilitate integration, suppliers should document not only the requirements their developed subsystem fulfils but also the assumptions they make about the environment of the subsystem, i.e. the domain knowledge. However, it is not sufficient to tell developers to document domain knowledge. Since domain knowledge is knowledge about the environment and the environment is a part of the real world, the question is what to document. Actually, everything could be documented. Developers need guidance as regards the questions what to document and how. Of course, there are existing approaches that provide support in this regard. However, they do not take the peculiarities of embedded systems development and the challenges that arise from them into account. The main objective of this thesis is therefore to develop methods that support software documentation during requirements engineering and are tailored to the peculiarities of embedded systems development. An embedded system must satisfy different types of requirements. For each type of requirement, a different type of domain knowledge must be documented. In this thesis, we answer the questions which type of domain knowledge must be documented for which type of requirement and how it should be documented. We consider functional requirements, safety requirements, security requirements, trustworthiness requirements, and product line requirements. We consider functional requirements since these are relevant for each system. Safety requirements are important because embedded control systems are frequently part of complex safety-critical systems (like cars and airplanes). Today, these safety-critical systems are connected to the Internet which results in new challenges regarding security and trustworthiness of these systems. Therefore, we also consider security and trustworthiness requirements. Suppliers developing embedded control systems often use product line engineering approaches since they develop usually not only one system but different versions of this system to be able to supply the whole market and not only a single customer. Therefore, we consider also product line requirements. The methods that we developed are all problem-based. This means that we use problem diagrams for documentation, since they are well suited for this purpose. To illustrate the applicability of the developed methods, we use two case studies from the automotive domain.
Read more