The architectural design is the highest abstract version of the system, identifying the software as a system with many components interacting with each other.
The architectural design provides the designers with the idea of the proposed solution domain.
The high-level design breaks the 'single entity-multiple component' concept of architectural design into a less-abstracted view of sub-systems and modules and depicts their interaction with each other.
The high-level design focuses on how the system along with all of its components can be implemented in forms of modules.
The high-leveldesign recognizes the modular structure of each sub-system and their relation and interaction among each other.
Detailed design deals with the implementation part of what is seen as a system and its sub-systems in the previous two designs.
Detailed design is more detailed towards modules and their implementations.
Detailed design defines the logical structure of each module and their interfaces to communicate with other modules.
Modularization is a technique to divide a software system into multiple discrete and independent
modules, which are expected to be capable of carrying out task(s) independently. These modules
may work as basic constructs for the entire software. Designers tend to design modules such that
they can be executed and/or compiled separately and independently.
Cohesion is a measure that defines the degree of intra-dependability within elements of a module.
The greater the cohesion, the better is the program design.
There are seven types of cohesion: Co-incidental cohesion, Logical cohesion, Temporal Cohesion, Procedural cohesion, Communicational cohesion, Sequential cohesion, and Functional cohesion.
Co-incidental cohesion is unplanned and random cohesion, which might be the result of breaking the program into smaller modules for the sake of modularization.
Because it is unplanned, Co-incidental cohesion may serve confusion to the programmers and is generally not-accepted.
Logical cohesion is when logically categorized elements are put together into a module.
Temporal Cohesion is when elements of module are organized such that they are processed at a similar point in time.
Procedural cohesion is when elements of module are grouped together, which are executed sequentially in order to perform a task.
Communicational cohesion is when elements of module are grouped together, which are executed sequentially and work on same data (information).
Sequential cohesion is when elements of module are grouped because the output of one element serves as input to another and so on.
Functional cohesion is considered to be the highest degree of cohesion, and it is highly expected.
Elements of module in functional cohesion are grouped because they all contribute to a single well-defined function.
Functional cohesion can also be reused.
Cohesion is a measure that defines the degree of intra-dependability within elements of a module.
The greater the cohesion, the better is the program design.
There are seven types of cohesion: Co-incidental cohesion, Logical cohesion, Temporal Cohesion, Procedural cohesion, Communicational cohesion, Sequential cohesion, and Functional cohesion.
Co-incidental cohesion is unplanned and random cohesion, which might be the result of breaking the program into smaller modules for the sake of modularization.
Because it is unplanned, Co-incidental cohesion may serve confusion to the programmers and is generally not-accepted.
Logical cohesion occurs when logically categorized elements are put together into a module.
Temporal Cohesion is when elements of module are organized such that they are processed at a similar point in time.
Procedural cohesion occurs when elements of module are grouped together, which are executed sequentially in order to perform a task.
Communicational cohesion occurs when elements of module are grouped together, which are executed sequentially and work on same data (information).
Sequential cohesion occurs when elements of module are grouped because the output of one element serves as input to another and so on.
Functional cohesion is considered to be the highest degree of cohesion, and it is highly expected.
Elements of module in functional cohesion are grouped because they all contribute to a single well-defined function.
Functional cohesion can also be reused.
Coupling is a measure that defines the level of inter-dependability among modules of a program, indicating at what level the modules interfere and interact with each other.
The lower the coupling, the better the program.
There are five levels of coupling: Content coupling, Common coupling, Control coupling, Stamp coupling, and Data coupling.
Content coupling occurs when a module can directly access or modify or refer to the content of another module.
Common coupling is when multiple modules have read and write access to some global data.