Designing software is like building something sturdy, useful, and fun. First, you gather lots of different ideas and knowledge from books, catalogs, and your own experiences. Then, you pick the best ideas that match what you need. This process helps you create the final product.
Designing software is always changing and improving. Even though it might not be as formal as other types of engineering, we still have ways to make sure our designs are good. This chapter teaches us the basics of software design, like how to pick the right ideas and make them work together.
In the design phase, analysis classes from the requirements model are refined into design classes to enable implementation. There are five types of design classes:
Separation of concerns is a design concept that suggests that any complex problem can be more easily handled if it is subdivided into pieces that can each be solved and/or optimized independently. A concern is a feature or behavior that is specified as part of the requirements model for the software. By separating concerns into smaller, and therefore more manageable pieces, a problem takes less effort and time to solve.
Hewlett-Packard came up with FURPS to help measure software quality. FURPS stands for Functionality, Usability, Reliability, Performance, and Supportability. Here's what they mean: