Topic 4 - Software Design Flashcards
Software Design
Deriving a solution that satisfies software requirements
Major categories of Software design
- Component
- Algorithm
- Data structure
- Interface
Open systems approach
Designing software in modules that can be re-used all over the place and maintained using standards.
Modularity
Keeping unrelated aspects of the system seperate. You do it through coupling and cohesion
Coupling
How many connections modules have
Degrees of coupling
the amount of control one module has over the other
Types of coupling
- content
- common
- control
- stamp
- data
Cohesion
How much a module’s internal elements depend on each other
Types of cohesion
- coincidental
- logical
- temporeal
- procedural
- communicational
- functional
- informational
Interface
Shows what services the software unit provides
Information hiding
Only giving as much control from outside the module as you need. This helps with cohesion and coupling.
Modular Design Criteria
The way you design your modules to work together.
Criteria: Modular …
- Decomposability
- Composability
- Understandability
- Continuity
- Protection
- Reusability
Refactoring
cleaning up code, removing old code, improving efficiency
Complexity (formula)
A way to measure how difficult your code is to understand.
Complexity = e - n + p, where e = number of edges n = number of nodes p = number of connected components
Design Pattern
A coding method or structure that is used alot. One example is the proxy pattern (creating a copy instead of giving client direct access)