Lecture 16: Analysis vs. Design
Unit 3: Requirement Analysis and Design (4353202)
Lecture Agenda
- Recap of Good Software Design Characteristics
- What is Software Analysis?
- What is Software Design?
- Key Differences: Analysis vs. Design
- The Transition from Analysis to Design
- Key Takeaways
Recap of Good Software Design Characteristics
A good software design is characterized by modularity, high cohesion, low coupling, abstraction, encapsulation, simplicity, and flexibility.
What is Software Analysis?
Software Analysis (often called Requirements Analysis) is the process of determining the needs and expectations of the users for a new or modified system.
- Focus: What the system should do (problem domain).
- Perspective: User's viewpoint.
- Output: Detailed requirements, often documented in an SRS.
- Goal: To understand the problem thoroughly.
What is Software Design?
Software Design is the process of planning and creating the architecture, components, interfaces, and other characteristics of a system or component.
- Focus: How the system will achieve its goals (solution domain).
- Perspective: Developer's viewpoint.
- Output: Design documents, architectural diagrams, class diagrams.
- Goal: To define a solution that meets the requirements.
Key Differences: Analysis vs. Design
| Aspect | Analysis | Design |
|---|---|---|
| Primary Question | What? | How? |
| Domain | Problem Domain | Solution Domain |
| Perspective | User-oriented | Developer-oriented |
| Output | Requirements (SRS) | System Architecture, Models |
| Level of Abstraction | Higher (conceptual) | Lower (detailed) |
The Transition from Analysis to Design
Analysis and design are distinct but highly interdependent activities. Analysis provides the raw material (requirements) that design transforms into a workable solution.
- Analysis ensures we build the right product.
- Design ensures we build the product right.
The transition involves moving from understanding the problem to conceiving a solution.
Key Takeaways
- **Analysis** focuses on **what** the system needs to do (the problem).
- **Design** focuses on **how** the system will do it (the solution).
- They are sequential but iterative phases in software development.
- Both are crucial for delivering a successful software product.
Next Lecture
Topic: Classification of Cohesion
Q & A
Questions & Discussion

