Software Design

Software Design is concerned with how to produce a solution that meets the requirements. Good software design allows us to produce good software that is acceptable, dependable, efficient and maintainable. During design, we figure out how things decompose into smaller problems and then combine back together.

Link to original

KISS

KISS: Keep It Simple, Stupid.

Link to original

Loose Coupling

Loose Coupling: Minimal dependencies between different parts of code.

Link to original

High Cohesion

High Cohesion: Modules consist of elements which belong together. Or otherwise the module appears to do one specific task / focus in one area.

Link to original

Design Pattern

A design pattern is a description of a recurring solution for a recurring design problem in a certain context.

Link to original

The Law of Demeter

The Law of Demeter

This is a guideline which restricts the interactions between objects. If you adhere to this guideline, you naturally reduce the coupling between modules.

When writing a method, the body of that method may only invoke specific other methods. The law wants that method to only talk to ‘close friends’.

Formally, any method of an object may only invoke methods of the following objects:

  • itself
  • arguments to
  • attributes of
  • objects created by
  • global variables has access to
Link to original