Please enable JavaScript.
Coggle requires JavaScript to display documents.
Chapter 1: SDA Introduction - Coggle Diagram
Chapter 1: SDA Introduction
Session 3
Roles Software Designer
System Engineer
design system using holistic approach, which includes designing how software, hardware, people to achieve the system's goal
Software Architect
design system using black-box modeling approach to determine the system's quality and support the further design of functional requirement
Component Designer
design the internal structure and behavior of software components identified during the architecture phase
User Interface Designer
Design software's user interface for increasing the usability of system.
Software Design Fundamentals
Design Priciples
Modularization
principle that drives the continues decomposition of software system until-fine-grained components are created.
Abstraction
principle that focuses on essential characteristics of entities -- in their active context -- while deferring unnecessary details
Encapsulation
principle that deals with providing access necessary data of the service of abstracted entities
when do abstraction, we hide details...
when do encapsulation, we revise our abstractions to enforce that abstracted entities only expose essential information.
Coupling
refers to the manner and degree of interdependence between software modules.
Measurement of Dependency between unit
. The higher coupling, the higher dependency
Content Coupling - most severe(danger) type -> modules that modify and rely on internal information of other modules
Common Coupling - dependencies based on common access are, e.g., global variable.
Data Coupling - dependency through data passed between module, e.g., through function parameter.
Cohesion
the manner and degree to which the task performed by a single software module are related to one another.
High cohesion good, low cohesion bad
Functional cohesion
Procedural (or sequential) cohesion
Temporal cohesion
Communication cohesion
Separation of Interface and Implementation
deal with creating modules in such way that a stable interface is identified and separated from its implementation (簡單來説就是開一個interface, 然後module implement interface)
while encapsulation dictates hiding details of implementation, this principle dictates their separation.
Sufficiency
deatl with capturing enough characteristics of the abstraction to persist meaningful interaction
must provide full set of operations to allow a client proper interaction with the abstraction
implies minimal interface
Completeness
deals with interface capturing all the essential characteristics of the abstraction
implies an interface general enough for any prospective client
Design Strategies
Objected-Oriented design Strategy
Design strategy which system is expressed in term of
objects and connections between those objects
.
Focus on object decomposition that have
state, well-defined behavior, and unique identity
.
supports intheritance and polymorphism
Structured (or Functional) design strategy
Deisgn strategy which system is
decomposed into single-purpose, independent modules, using an iterative top-down approach
.
Focus on
-- functions that system need to provide
-- the decomposition of these function,
-- the creation of modules that incorporate these function
largely inappropriate for use with OOP language
Practical Software Design Considerations
Design for minimizing complexity
Design for change