An intentional and creative process
Design
The conception, planning and production of objects, structures or processes to achieve specific objectives.
Design
It involves the synergy of functionality, UX and aesthetics
Design
It is the iterative translation of requirements into a blueprint for software construction through the definition architecture, components, interfaces, and other characteristics of a software involving the creation of diagrams, models and other representations
Software Design
It is the representation of the logical relationship among individual elements of data.
Data Structure
Types of Data Structures?
Scalar and Vector
An atomic domain value representing a piece of information, addressed by an identifier
Scalar Data structure
The most common data structure accessible through variable indexing
Vector
It is the process of breaking a high-level design into more specific and detailed components.
Stepwise Refinement
It enforces constraints to procedures and data.
Information hiding
It is a principle that ensures a system is composed of independent components (modules) that can be connected in different configurations.
Modularization
Criteria for Effective Modularization (5)
Decomposability, Understandability, Composability, Continuity, Protection
This criterion for effective modularization makes easier management of complexity by breaking down a system into smaller, manageable and independent modules.
Decomposability
This criterion assesses if a module is well-documented, clear interfaces and follows proper naming conventions that are easily comprehended by developers and stakeholders.
Understandability.
This criterion ensures that modules can easily be assembled, integrated or combined to form a complete and larger system.
Composability
This criterion enforces consistency and stability over its iterations through version control, rigorous resting and adherence to best practices.
Continuity
This criterion hides inner workings and exposes necessary interfaces only safeguarding from unintended interactions and failures
Protection
The measure of the internal structure of a module, or the close relation of functions within a module.
Cohesion (Note: High cohesion means that the functions and the data are closely related and the module performs a single and well-defined task.)
It is a measure of the degree of dependence between two modules at a time.
Coupling (Note: High coupling means that a module is highly dependent on another, making it problematic as one changes to one module will also require changes in other affected modules.)
It is a process of hiding the complex details of a system and providing a simple layer of interaction, enabling manageable interactions and reducing cognitive load.
Abstraction
Levels of Abstraction?
Control Abstraction, Process Abstraction and Data Abstraction
Simplifying control mechanisms, focusing more on high-level design, loops and declarative approaches.
Control Abstraction
This type of abstraction focuses on external behavior without concerning the intricate details of implementation; functions/methods.
Process abstraction
The simplification of complex data structures, exposing the essential details only; Object-Oriented Design.
Data Abstraction