Full Course Description
Modern object-oriented developers and designers must have a deeper understanding of this technology paradigm to successfully create sustainable custom software solutions. This course prepares them for that.
Each topic will be reinforced with very interactive and targeted group exercises that will guide participants through complete software development cycles. These exercises will be done without computers to keep the focus on the principles being learned. Some more technical aspects will be demoed by the instructor.
Software development professionals looking for a deeper understanding of what it takes to create sustainable enterprise software solutions.
This class is also suitable for IT leaders looking for a broader understanding of designing robust solutions so that they can make more informed decisions.
Participants will learn to:
- Describe the advantages of object-oriented techniques
- Recall the advantages of agile software development methods
- Communicate designs with the Unified Modeling Language (UML) in a pragmatic way
- Create high-level use case diagrams
- Write effective use cases and/or user stories to capture customer needs
- Use sequence diagram notation to visually describe system interactions
- Effectively identify business concepts to minimize the representation gap
- Depict relevant business concepts in a domain model using static structure notation
- Identify acceptance criteria for relevant functionality
- Map acceptance tests to unit tests (behavior-driven development)
- Identify the aspects of a ‘good’ design
- Identify the aspects of a ‘bad’ design
- Explain core principles such as Low Coupling and High Cohesion
- Assign responsibility to appropriate classes using the GRASP patterns
- Use the SOLID principles as design guidelines
- Recognize the most common Design Patterns
- Know when and where to apply Design Patterns
- Depict object collaboration using interaction diagrams
- Portray classes and their dependencies using static structure notation
- Recognize how code is mapped from a design
- Apply test-driven development concepts
- Understand when not to create analysis and design artifacts