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