Please enable JavaScript.
Coggle requires JavaScript to display documents.
Lecture 1: Software Design (Software Design Principles (Cohesion :red…
Lecture 1: Software Design
Software Design
Process perspective
Product perspective
Software Design Challenges
Requirements volatility
Inconsistent development processes
Ever changing technology
Ethical and professional practices
Managing design influences
Software Design Process
Architecture
Identifying views
Identifying patterns
Detailed design
Interface design
Component design
Construction design
Flow-based design
Table-based design
Human-computer interface design
Software Design Principles
Coupling
:red_flag:Refers to the manner and degree of interdependance between software modules
Control coupling
:red_flag: When one modules passes parameters or a return code to control the behavior of another module
Stamp coupling
:red_flag: When complex data structures are passed between modules
Common coupling
:red_flag: Modules exchange data using the global data block (instead of arguments)
Content coupling
:red_flag:A module directly references the content of another module
Data coupling
:red_flag:Only data values are passed
Cohesion
:red_flag: Refer to the dependence within and among a module's internal elements (e.g. data, functions, internal module)
Procedural cohesion
:green_cross:All the operation the module performs are related to a sequence of steps performed in the program
Temporal cohesion
:green_cross:Module's data and functions related because they are used at the same time in an execution
Communicational cohesion
:green_cross:Operates on the same data set
Logical cohesion
:green_cross:parts are related only by the logic structure of code
Functional cohesion
:green_cross:All elements essential to a single function are contained in one module, and all of the elements are essential to the performance of the function
Coincidental
:green_cross:part are unrelated to one another
Informational cohesion
:green_cross:Adaption of functional cohesion to data abstraction and object-based design
Encapsulation
Deals with providing access to services of abstracted entities by exposing only the
information
that is
essential
to carry out such services while hiding details of how the services are carried out
Separation of interface and implementation
Involves defining a component by specifying a
public
interface (known to the client of the component) that is separate from the
details
of how the component (implementation) is realized
Abstraction
Is a view of an object that focuses on the
information relevant
to a particular purpose and ignores the remainder of the information
Sufficiency
Measures how well the designed units are at
providing
only the services that are sufficient for achieving the intent (no more).
Modularity
Is the process of continuous
decomposition
of the software system until fine-grained components are created
Completeness
Measures how well designed units provide the
required
services to achieve the intent (no less).