Software Design First Principles Flashcards
A principle is a?
Fundamental truth or proposition that serves as the foundation for a system of belief or behaviour or for a chain of reasoning.
Latin origin of principle?
Principium - beginning, origin, source, foundations
Software design principles are the?
Foundation of the software design field and its methodologies, practices and strategies
Software Design First Principles?
Suitability Simplicity Code Reuse Modularization Separation of Concerns Module Cohesiveness Module Encapsulation Abstraction
Suitability?
The software design represents a system that satisfies its requirements and serves its purpose
Simplicity?
The optimal software design is the simplest design that can be used to build a suitable system
Separation of Concerns?
A software system is made of separate modules that communicate with each other through their connections
Types of Coupling?
Tight Coupling
Loose Coupling
Tight Coupling?
Strong and lasting connections between modules
Loose Coupling?
Weaker and temporary connections between modules
Types of Cohesiveness?
High Cohesiveness
Low Cohesiveness
High Cohesiveness?
Concerns of a module are highly related to each other
Low Cohesiveness?
Concerns of a module are very little or not related to each other
Objects communicate through two major types of relationships?
Dependencies
Associations
Dependency?
Dependencies are temporary relationships that exist only while a method is executing