Emergent Design

Error message

  • Strict warning: Declaration of role_expire_handler_field_rid::pre_render() should be compatible with views_handler_field::pre_render(&$values) in require_once() (line 83 of /home2/netobje2/public_html/sites/all/modules/role_expire-7.x-1.0-beta2/role_expire/role_expire.views.inc).
  • Strict warning: Only variables should be passed by reference in eval() (line 3 of /home2/netobje2/public_html/modules/php/php.module(80) : eval()'d code).
  • Strict warning: Declaration of mediafront_handler_field_player::options_submit() should be compatible with views_handler_field::options_submit(&$form, &$form_state) in _registry_check_code() (line 3146 of /home2/netobje2/public_html/includes/bootstrap.inc).

Ready to Enroll?
If you don't see a scheduled public course in your area don't worry! We specialize in providing in-house training to meet your particular needs, or we can arrange a Public Course in your local area if you have 6 or more team members committed to attend.

View Full Course Schedule or Fill Out Our Inquiry Form

Course Tabs

Course Overview

As software continues to evolve and mature, software development processes become more complicated, relying on a variety of methodologies and approaches. This course integrates the best of today’s most important development disciplines into a unified, streamlined, realistic, and fully actionable approach to developing software. Drawing on patterns, refactoring, and test-driven development, our instructors offer a blueprint for moving efficiently through the entire software lifecycle, smoothly managing change, and consistently delivering systems that are robust, reliable, and cost-effective.

This course combines two of our most popular courses (Design Patterns for Agile Developers and Sustainable Test-Driven Development) into a 5-day course. This compresses two 3-day courses into five days with the natural fit between these two areas of study.

Course Objectives: 
  • Writing Maintainable Code
  • Coding First Principles: Loose Coupling, Strong Cohesion, No Redundancy
  • Advice from the Gang of Four (the authors of Design Patterns: Elements of Re-usable Object-Oriented Design)
  • Basic Object-Oriented Principles: Polymorphism, Encapsulation, Composition
  • Discovering the Strategy and Bridge Patterns
  • What Are Design Patterns?
    • Design Patterns As Coding Best Practices
    • Design Patterns As Ways to Contain Variation
    • Design Patterns As Forces
  • A Comparison of Design Approaches
    • "Standard" Entity and Behavior Analysis
    • Variation Based Design
    • Pattern Based Design
    • Emergent Design
  • Commonality/Variability Analysis: How to Design For Variation
  • The Strategy Pattern
  • The Analysis Matrix and the Abstract Factory
  • The Template Method Pattern
  • The Bridge Pattern
  • The Adapter Pattern
  • The Facade
  • The Singleton Pattern
  • The New Perspective of Object-Oriented Design
  • The Family of Proxy Patterns
  • The Decorator Pattern
  • The Chain  of Responsibility Pattern
  • The Null Object Pattern
  • A Case Study Using Design Pattern
  • A brief overview of the motivations behind Agility, and TDD specifically
  • As a group, we all get the testing framework up and running on all needed machines.
  • Review Code Qualities, and how they relate to Testing and Testability
  • Unit-testing in general, leading to the benefits of TDD
  • A Unit-testing/TDD exercise focused on sustainability
  • Mock Objects, with an exercise
  • Code Smells, and Refactoring
  • Refactorong to the open-closed, just in time design
  • Legacy code refactoring exercise and debrief
  • Incremental testing of refactored code

Target Audience:

Primary Audience: 

This course is for experienced developers, testers, designers, architects, technical leads, and those who manage development teams. They should have intermediate to advanced object-oriented experience. If the team uses Agile methods it is suggested they consider our Agile Design Patterns course as an alternative as that is more directed to Agile teams.

Secondary Audience: 
Less experienced developers will find value and should be included if part of an experienced team. In this case we provide pre-course material to help bring them up to speed. If the entire team is inexperienced in Object-Orientation, they will be better served with our Effective Object-Oriented Analysis and Design Course. Project managers have often attended this course to learn the approach of their teams and have found that to be useful.
Learning Objectives: 
  • How to add functionality to designs while minimizing complexity
  • What design patterns really are, and are not
  • About 12 specific design patterns
  • What code qualities you need to maintain to keep code flexible
  • How to use design patterns to keep code quality high without overdesign
  • How to analyze requirements to obtain better tests
  • How to write unit tests
  • How to use mock objects
  • How to refactor legacy code
  • Why and how to be "test-driven"

All the Details

Category: Design Patterns ATDD TDD

Level: Intermediate

Length: 5 Days

Share This Course

Certification and PDUs
Category B
Maximum Number in Class
24 (Approximate. Depends upon make up and experience level of team.)
Room Setup and Equipment Needed
A laptop or desktop computer with XUnit installed and an IDE with which they are comfortable working is needed for every pair of participants. Students will sit in pairs, and so tables to accommodate this are needed. Whiteboard and Projector, Flip Chart