Chapter 9 - Architecting and designing software. In this chapter you will learn about the following: Design as a series of design decisions; various approaches and types of design, including top-down design starting with the architecture, and bottom-up design starting with utilities; design principles that lead to maintainable software, such as ‘divide and conquer’, striving for high cohesion and low coupling, as well as using good abstractions to hide details, thus simplifying the system;. | Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 9: Architecting and Designing Software The Process of Design Definition: Design is a problem-solving process whose objective is to find and describe a way: To implement the system’s functional requirements. While respecting the constraints imposed by the non-functional requirements. including the budget And while adhering to general principles of good quality © Lethbridge/Laganière 2001 Design as a series of decisions A designer is faced with a series of design issues These are sub-problems of the overall design problem. Each issue normally has several alternative solutions: design options. The designer makes a design decision to resolve each issue. This process involves choosing the best option from among the alternatives. © Lethbridge/Laganière 2001 Making decisions To make each design decision, the software engineer uses: Knowledge of the requirements the design as created | Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 9: Architecting and Designing Software The Process of Design Definition: Design is a problem-solving process whose objective is to find and describe a way: To implement the system’s functional requirements. While respecting the constraints imposed by the non-functional requirements. including the budget And while adhering to general principles of good quality © Lethbridge/Laganière 2001 Design as a series of decisions A designer is faced with a series of design issues These are sub-problems of the overall design problem. Each issue normally has several alternative solutions: design options. The designer makes a design decision to resolve each issue. This process involves choosing the best option from among the alternatives. © Lethbridge/Laganière 2001 Making decisions To make each design decision, the software engineer uses: Knowledge of the requirements the design as created so far the technology available software design principles and ‘best practices’ what has worked well in the past © Lethbridge/Laganière 2001 Design space The space of possible designs that could be achieved by choosing different sets of alternatives is often called the design space For example: © Lethbridge/Laganière 2001 Component Any piece of software or hardware that has a clear role. A component can be isolated, allowing you to replace it with a different component that has equivalent functionality. Many components are designed to be reusable. Conversely, others perform special-purpose functions. © Lethbridge/Laganière 2001 Module A component that is defined at the programming language level For example, methods, classes and packages are modules in Java. © Lethbridge/Laganière 2001 System A logical entity, having a set of definable responsibilities or objectives, and consisting of hardware, software or both. A system can have a specification which is then .