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)