Software Design

The following are the design methods I find myself using most often, according to project needs:

UML

The Unified Modeling Language is the nearest thing to an industry-wide standard for graphical object-oriented software design. It has significantly matured since its origins in the 1990s, it has good tool support, and several of its main diagrams are useful for real-time software:

Yourdon

Yourdon Structured Analysis And Design is still useful for data and control design, despite harking back to the eighties before objects were in vogue, although the method makes reference to them. Its main weapons are:

  • Data flow diagrams
  • Data dictionaries
  • Process specifications
  • State transition diagrams
  • Balancing the models
Textual Narrative

About the only advantage of this approach is that it requires no prior knowledge to review, but this is usually overshadowed by its disadvantages:

  • Hard to achieve conciseness and clarity
  • Text and tables are harder to grasp that structured diagrams
  • Consistency and completeness are hard to demonstrate
  • Scant tool support