Services Practices

Pattern: Overview

By Michael posted 03-08-2019 08:39


What are Patterns?

  • Initially developed by architect Christopher Alexander as a ”language to describe common architectural problems and their solutions".
  • Adapted in Software Engineering (Design Patterns) to capture “Elements of Reusable Object Oriented Software”.
  • Ever since, pattern languages have been developed for many fields.
  • Great way for capturing best practices without having to worry about their interplay initially.

Sometimes, the term "best practice" is used as well.

What are Product Development Patterns?

Product development patterns are intended to pragmatically (1) address issues with product development, or (2) apply them for continuous improvement. Generally, we assume that processes are already in place, so they are not intended to establish a development approach from scratch (there are plenty o frameworks available, SAFe, RUP, etc.)

How to use this Pattern Catalog?

  1. Identify a pain point, or an area that needs improvement. Some patterns help you with this (e.g. Engineering Efficiency Empowerment)
  2. Measure what you want to improve. This can be quantified (duration of reviews) or qualitative (frustration level of engineers)
  3. Budget for the improvement initiative, both with respect to time and money
  4. Find an owner, a sponsor and get buy-in from the team
  5. Apply the pattern(s)
  6. Measure the outcome

Work in Progress!

This is work in progress. If you think an important pattern is missing, please add a comment here. Do you think an existing pattern needs to be improved? Then please comment on the page of that pattern.

Classification By Discipline

Often, you know already what area needs improvement: Do you have:

  • Structural issues: Problems with your development artifacts, e.g. incoherent and missing traceability?
  • Quality issues?
  • Inconsistent or missing processes?
  • Problems with changes?
Structural Quality Process Change Mgmt
Black Box x x
Define Workflows x x x
Separate Project Structure From Traceability x x
V-Model x x x x
Define and Enforce a Data Model x x
Interfaces x x x
Behavior/Test Driven Development (BDD) x x
Consistency Criteria x x
Branch and Merge x x
Evolve Hardware and Software Together x x
Functional Descriptions x x
Good Requirements x x
Review x x
Don't Repeat Yourself (DRY) x x
One-Pager x x
Use Meta Data x x
Engineering Efficiency Empowerment x x
Define Hand-Over Points x x