Software Design

1. Software Design Fundamentals
1.1. General Design Concepts
1.2. Context of Software Design
1.3. Software Design Process
1.4. Software Design Principles
2. Key Issues in Software Design
2.1. Concurrency
2.2. Control and Handling of Events
2.3. Data Persistence
2.4. Distribution of Components
2.5. Error and Exception Handling and Fault Tolerance
2.6. Interaction and Presentation
2.7. Security
3. Software Structure and Architecture
3.1. Architectural Structures and Viewpoints
3.2. Architectural Styles
3.3. Design Patterns
3.4. Architecture Design Decisions
3.5. Families of Programs and Frameworks
4. User Interface Design
5. Software Design Quality Analysis and
Evaluation
6. Software Design Notations
7. Software Design Strategies and Methods
7.1. General Strategies
7.2. Function-Oriented (Structured) Design
7.3. Object-Oriented Design
7.4. Data Structure-Centered Design
7.5. Component-Based Design (CBD)
7.6. Other Methods