EMBEDDED SYSTEMS SOFTWARE TRAINING CENTER SOFTWARE DESIGN COPYRIGHT © 2011 DSR CORPORATION Objectives Understand what software design is Understand the software design techniques and approaches COPYRIGHT © 2011 DSR CORPORATION 2 Agenda 1. What is Software Design? 2. Software Design Strategies 3. Software Design Techniques 4. Key Issues in Software Design 5. Software Architectural Styles and Patterns 6. Software Design Documentation 7. Software Design Quality COPYRIGHT © 2011 DSR CORPORATION 3 Coupling and Cohesion: Coupling Pfleeger and Atlee, Software Engineering: Theory and Practice, Chapter 5 COPYRIGHT © 2011 DSR CORPORATION 4 Coupling and Cohesion: Coupling (cont.) We can measure coupling along a range of dependence Pfleeger and Atlee, Software Engineering: Theory and Practice, Chapter 5 COPYRIGHT © 2011 DSR CORPORATION 5 Coupling and Cohesion: Cohesion Pfleeger and Atlee, Software Engineering: Theory and Practice, Chapter 5 COPYRIGHT © 2011 DSR CORPORATION 6 Coupling and Cohesion: Cohesion Examples Pfleeger and Atlee, Software Engineering: Theory and Practice, Chapter 5 COPYRIGHT © 2011 DSR CORPORATION 7 Summary Software Design is a crucial process of the software life cycle It involves design strategies, techniques, styles, and patterns Different aspects must be taken into consideration Software Design Document must contain as much as possible the information necessary for implementation as well as the design flow Design validation is one way to achieve good product quality COPYRIGHT © 2011 DSR CORPORATION 8 References 1. SWEBOK. Guide to the Software Engineering. Body of Knowledge. 2004 Version / A project of the IEEE Computer Society Professional Practices Committee 2. Software Engineering: Theory and Practice / Shari Lawrence Pfleeger 3. IEEE Std 610.12-1990, IEEE Standard Glossary of Software Engineering Terminology COPYRIGHT © 2011 DSR CORPORATION 9 Questions and exercises 1. What are the main and supplementary software design activities? What are the input and output for every activity? 2. What are the key software design strategies? Give the characteristic for every strategy. When it is used? What kind of the diagrams is used for its description? 3. What are the key software design techniques? Give the short characteristic for every technique. 4. What are coupling and cohesion? What software quality characteristic it influences the most? What the coupling among components depends on? Give the example of low cohesion and high cohesion. COPYRIGHT © 2011 DSR CORPORATION 10