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