Software Design Priniples and Terminology


  • Single Responsibility Principle An entity should have one, and only one, responsibility.

  • Agile Software Development A methodology that espouses producing software by iteratively publishing subsets of functionality in working deliverables, acceptance of change throughout the development life-cycle, personal interaction with team members and stakeholders, and implements continuous improvement.

  • Interface-oriented Design

  • Object-oriented Design

  • Aspect-oriented Design

  • Law of Demeter A principle that improves quality by reducing coupling and increasing cohesiveness by mandating that the body of a method should only access argurments and their direct members, local variables and their direct members, and members of the containing class.  Sometimes referred to “only talk to your friends”.


  • Cohesion, cohesiveness

  • Coupling

  • Concern, concerns

  • Aspect, aspects

  • Cyclomatic Complexity A means by judging complexity of a method, class, module, or system by counting the number of conditional statements.

  • Lack of Cohesion of Methods

  • Coupling Between Objects

  • Abstraction, Data Abastraction

  • Polymorphism A concept of OO

  • Inheritance A concept of OO

  • Encapsulation A concept of OO

  • Modularity A concept of OO

  • Class  A concept of OO

  • Object  A concept of OO

  • Method  A concept of OO

  • Message Passing A concept of OO

  • Information Hiding A generalization

  • Code Smell

  • Duck Typing A means of matching a class interface, a method interface, or property interface based upon it’s signature not by its inheritance.  e.g. Rather than requiring a type to implement an interface with a known method, duck typing to simply check the object for a method that matches and executes it.

  • Critical Region a.k.a. mutex, binary semaphore.

  • Counting Semaphore A semaphore whose count is more than 1.

  • Binary Semaphore A semaphore whose count is 1, so possible values are 0 and 1: binary.

  • Explict Threading Threading by explicictly creating threads.  See Windows Threading, Joe Duffy

  • Opqaue Value

  • Quantum


Leave a Reply

Your email address will not be published. Required fields are marked *