Software Design Priniples and Terminology

Principles 




  • 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”.

Terminology




  • 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 *