Software Design Methodology

Diversity is present in the solutions of most design problems. Design can be viewed as navigation in the solution space in order to reach the optimal solution. The questions are: what are the structures of the design spaces and how can we know that we are moving towards an optimal solution. Unfortunately, it is not conservative to say that we are still far away from any satisfactory answers to such questions. Since the 1980s, design methodologists have been developing a theory of design spaces as a general theory of design methodology and a basis for developing software systems for computer aided designs [1, 2]. In this chapter, we will study this theory and apply it to software development. The objectives of this chapter are:
To understand the structure of design space and how design spaces can be used to solve design synthesis and analysis problems;
To understand the differences between various software architectural elements and how the variety of these elements form a design space;
To deepen our understanding of software architectural styles by organising various styles into a design space.
The chapter is organised as follows. Section 8.1 is a brief introduction to the theory of design spaces. We will discuss the structures of design spaces and how design synthesis problems and analysis problems can be solved by using a design space in sub-sections 8.1.1 and 8.1.2, respectively. Section 8.2 and Section 8.3 look at the design spaces of architectural elements and styles, respectively.