Week 2 Flashcards
Principles of Design First
Suitability Simplicity Software Reuse Module Cohesiveness Separation of Concerns Modularization Module Encapsulation Abstraction
What is Suitability Principle?
The software design represents a system that satisfies its requirements and serves its purpose.
What is Simplicity Principle?
The optimal software design is the simplest design that can be used to build a suitable system
What is seperation of concerns?
A software system is made of separate modules that communicate with each other through their connections
What is Tight Coupling?
Strong and lasting connections between modules
What is Loose Coupling?
Weaker and or temporary connections between modules
What is High Cohesiveness?
Concerns of a module are highly related to each other
What is Low Cohesiveness?
Concerns of a module are very little or not related to each other
What are Highly Cohesive Classes?
Classes are highly cohesive when the field variables and methods they define are highly related to each other
Cohesive characteristics are?
Necessary and sufficient to define an object’s identity
Cohesive methods are?
necessary and sufficient to implement the class’s main concern or responsibility
What is Module Cohesiveness Principle?
All elements of a highly cohesive modules are necessary and sufficient to implement the module’s concern
What is Separation of Concerns Principle?
Software modules defined by the software design shall be as loosely coupled as possible
What is Modularization Principle?
A software design shall divide a system in highly cohesive modules that each represents a discrete system concern and is loosely coupled with other modules
How do objects communicate?
Through Dependencies (USES relaationships) Associations (HAS-A relationship)
What are Dependency relationship?
Dependencies are temporary relationships that exist only while a method is executing.
What are Associations?
Are permanent relationships that exist for the entire life time of an object
What is stronger Association or Dependency?
Associations are stronger and lead the tight coupling between separated concerns
What is Module Encapsulation Principle?
A software module design shall maximize the information and functionality of the module that is hidden from other modules and minimize its interface
What is Software Reuse Principle?
A software design shall maximize reuse by ensuring no artefact or parts of an artefact are duplicated
What is Abstraction Principle?
Software design is simplified by defining and maximizing dependencies on abstractions
What is GRASP?
Design strategies.
General Responsibility Assignment Software Patterns or Principles
What is SOLID Design Principle?
Describe the micro-architecture of object-oriented software applications
What is Software Degradation?
A software degradation is the aging effect of software loosing its qualities as it evolves over time