Learn how to use a wide variety of design paradigms at different levels, from detailed design to architecture. Also learn fundamental design principles, data structure design, design creativity methods, and nonfunctional requirements.
About Software Design
Duration: 8h 13m
Resources: Course Workbook, Activities Workbook, Key Points, Quizzes
Designs created from the same requirements can differ by more than a factor of 10 in the volume of code required to implement the requirements. Those same designs also vary greatly in terms of correctness, complexity, maintainability, reusability, and performance. Too many designers and developers depend on an overly restricted set of design paradigms that might have worked on past projects but that are inappropriate for the current project.
This course provides a survey of a wide variety of alternative design paradigms at different levels (architecture, high-level, and detailed). It also explains the fundamental design principles that lead to high-quality designs that require low implementation effort and low long-term maintenance effort.
After you complete this course, you’ll be able to
- Create better, higher quality, easier to understand, easier to implement, and easier to maintain designs
- Effectively document your designs so that others can more easily maintain them over the service life of the software
Your instructor—Construx principal consultant Steve Tockey—has designed this course to help you deal with common misconceptions and common problems related to designing software:
- Many developers don’t understand the role of design. This course provides a thorough understanding of what design is and why it is so important for developing quality software on time and on budget.
- Many developers don’t understand that a wide variety of design paradigms exists and that each paradigm is more or less appropriate in specific situations. This course provides a survey of many important, useful, flexible, and reliable design paradigms, along with guidance on when to use them.
- Unfortunately, developers often underestimate the importance of managing design complexity, which should be one of the development team’s top priorities. This course explains how to manage complexity and the fundamental design principles that lead to high-quality designs that require low implementation effort.
- Too few designers provide documentation for their designs. Those that do provide design documentation usually waste time describing things that are better described in the code. Volumes of documentation are produced that fail to explain the few critical design elements that need to be explained and that can be explained efficiently and economically.
This course is developers, technical leads, designers, and architects who want to vastly expand the number of design paradigms in their toolbox.
Design Patterns Design patterns are powerful, predefined solutions to common software design problems. Patterns provide a powerful form of reuse because they are transportable across different languages and software architectures. The course introduces and explains the highest-leverage design patterns in a clear way that’s easy to understand. You’ll learn how to use specific design patterns to improve your designs, and you’ll practice applying design patterns to sample design problems. You will also see how design patterns can improve your design process overall.