The process of designing high-quality software systems is one of the major issues in software engineering research. Over the years, this has resulted in numerous design methods, each with specific qualities and drawbacks. For example, the Rational Unified Process is a comprehensive design process, which is proposed to support the major phases in the software engineering life-cycle. Agile processes, like for instance Extreme Programming, aim at flexibility, since the design steps are not defined rigidly. Although the current software methods have largely proven their applicability and there exists a plethora of different design processes to be used, the current methods naturally suffer from the existence of imperfect information. Imperfection during software design is the occurrence of information, which is uncertain or incomplete to a certain degree. This can have many different causes, such as for instance incomplete information sources or an imprecise view of what the system should do. The existence of imperfection makes the design processes difficult to apply, since such information typically has one or more elements that are ambiguous in their interpretation. When a system is designed by using only one of the possible interpretations, there is a risk that the interpretation turns out to be wrong in due time. This can lead to redesigning the system, and consequently to very high costs. Unfortunately, current design methods neglect the existence of imperfect information. For example, modern software design processes explicitly require crisp and, preferably, complete requirement specifications, although it is generally acknowledged that this is difficult to accomplish. Similarly, imperfect information during design activities is also commonly neglected. However, imperfection is an inherent problem of almost every design process as well. Rather than trying to model the imperfection that inevitably exists, imperfection is generally neglected by making explicit and crisp assumptions, which may eventually result in wrong design decisions. The impact of neglecting imperfection in requirement specifications or design activities is higher in the early phases of software development. As the design process progresses, both the software engineers and the stakeholders may come to have new insights about what the system is supposed to do and which steps are to be taken. Because this information only becomes gradually available along with the design process, in the early phases it is not possible to transform imperfect information into a perfect one. In this thesis, we identify the problems in the two areas in which imperfect information can manifest itself, namely in contextual information (predominantly requirement specifications) and in software design activities. We analyze the types of imperfection, and the way in which the imperfection should be interpreted. Based on this analysis, we propose generic extensions to software design processes for modeling imperfect information. By this way, different interpretations of a design choice may be captured and considered according to their appropriateness without committing to one of them too early. By modeling alternative interpretations of a design choice, the design becomes more flexible. This is because the new insights which are gained during the software development process can be taken into account in the decision process more conveniently, without a need to redesign the system. In our proposed method we have combined the techniques used in various disciplines such as software architecture design, probability theory and fuzzy set theory, to ensure that we capture the relevant properties of both the software engineering process as well as the nature of the imperfect information. For a real-world application our approach can become very labor-intensive. In order to aid the software engineer, tooling support is considered essential. For this purpose the proposed methods have been implemented in a prototype. The tools relieve the user from the mathematical computation and optimization effort, and ensure that the user only has to focus on providing the relevant input. The effectiveness and ease of use of the tools are evaluated by means of a pilot study.
|Award date||5 Jul 2007|
|Place of Publication||Enschede|
|Publication status||Published - 5 Jul 2007|
- SE-SC: Soft Computing applied to Software Engineering