Software Design Concepts
- Principles
- Algorithm
- Abstraction
- Abstract - Concrete
- Logical - Physical
- High Level - Low Level
- Implementation
- Data Representation - Mapping
- Virtual Machine
- Layering
- Information Hiding
- Encapsulation
- Redundancy
- Coupling (dependency)
- Low (loose) Coupling - one module does not have not have to be
concerned with the internal implementation of another module
- High (tight) Coupling
- Cohesion - a measure of how well the lines of source code within a module work together
to provide a specific piece of functionality
- Module - software entity that groups a set of subprograms and data structures
- Interface
- Abstract Data Types
- Structured
- Data - Event
- Process - Flow - Store
- Data Dictionary
- DFD - Data Flow Diagram
- STD - State Transition Diagram
- ERD - Entity Relationship Diagram
- Structure Chart
- Pseudo Code, Structured English
- Essential Model - a model of what the system must do
- Enviromental Model
- Statement of purpose
- Context Diagram
- Event list
- External flows and stores
- Behavioural Model
- Implementation Model
- Design - a model of how the system works
- Processor Model
- Task Model
- Program Implemenation Model
- Top Down refinement/decomposition - requirements, specification, design, implementation
- Object Oriented
- Concurrency