Different designers will create designs that differ by at least a factor of 10 in the code volume produced. How do you invent simple, straightforward designs and avoid complex, error-prone designs? Understand the fundamental design principles that lead to high-quality designs requiring low implementation effort. Learn both Agile and traditional approaches to create great designs quickly and economically.

3-day seminar


"Most valuable: Architecture design discussions and basic design concepts. Several topics have me now seeking ways to apply in our smaller projects."  -- Chris Soriano, Shell

"Although I was already aware of most of the concepts, it helped me to put all into better perspective. Quality of material is very good."  -- Marco de Vroed, Shell

"Well done overall. I'm looking forward to applying the techniques in my daily work. Most valuable: the polymorphism and patterns sections."  -- Brian Drell, Bottle Rocket 

"I very much enjoyed this seminar! A lot of relevant material was presented!"  -- Roy Froid, @Road


What you'll learn: 

  • a thorough understanding of what design is and why it is so important to developing quality software on-time and on-budget
  • how to manage design complexity along with the fundamental design principles that lead to high-quality designs that have low implementation efforts
  • how to use multiple design paradigms to arrive at better designs
  • how to document designs using either traditional or agile approaches

Who Should Attend

Developers, Technical Leads, Designers, Architects


All of our public classes are held at the Construx Training Center

What is “Design”?

  • Design as an activity vs. a product
  • Design as a tool for communicating
  • Managing complexity with design
  • Characteristics of excellent designs

Fundamental Design Principles

  • Use abstraction
  • Encapsulate design decisions
  • Maximize cohesion; minimize coupling
  • Design to invariants
  • Avoid premature optimization
  • Beware of Fisher's Fundamental Theorem

Managing Design Complexity

  • Dimensions of design (interface, data, function)
  • Measures of design complexity in each dimension
  • Balancing local and global complexity

Design attributes: The “-ilities”

  • ISO/IEC 9126 Quality Model
  • Non-ISO/IEC 9126 “-ilities”
  • Managing conflicts among the “-ilities”

Architectural Design

  • Pipes & filters
  • Model-view-controller
  • Layered architectures
  • Service-oriented architectures
  • Blackboard

Design Paradigms

  • Aspect-oriented design
  • Object-oriented design
  • Structured design
  • Design patterns

Detailed Design

  • Refactoring
  • Semantics-preserving transformations
  • Program design languages
  • Error processing

Design Documentation

  • Desirable properties of design documentation
  • IEEE STD 1016-1998 Recommended Practice for Software Design Descriptions
  • Agile design documentation

Creativity in Design

  • Factors that contribute to excellent designs
  • Value of creativity
  • Research on software creativity
  • Fudd's Law

Steve Tockey

Steve Tockey is the Principal Consultant at Construx Software. During more than three and a half decades in the software industry, he has worked as a programmer, ...