1️⃣ Structured Analysis vs. Structured Design
📌 Structured Analysis (WHAT?) vs. Structured Design (HOW?)
Aspect | Structured Analysis (WHAT?) | Structured Design (HOW?) |
---|---|---|
Goal | Understand business needs, functions, and data flow. | Define a modular system architecture. |
Focus | Processes, data flow, and system functionalities. | Modular decomposition, control flow, and function interactions. |
Key Techniques | DFD (Data Flow Diagram), ERD (Entity-Relationship Diagram) | Modular Design, Flowcharts, Structure Charts |
Output | Logical model of the system. | High-level architecture and modular breakdown. |
✅ Example:
- Analysis: DFDs define how data moves through a system.
- Design: Define modular components and how they interact, such as separating UI, business logic, and data access layers.
2️⃣Object-Oriented Analysis (OOA) vs. Object-Oriented Design (OOD)
📌 OOA (WHAT?) vs. OOD (HOW?)
Aspect | Object-Oriented Analysis (WHAT?) | Object-Oriented Design (HOW?) |
---|---|---|
Goal | Identify objects in the system and their behaviors. | Define system structure and object interactions. |
Focus | Conceptual model of real-world entities. | Class structure, design patterns, and object collaboration. |
Key Techniques | Use Case Diagrams, Conceptual Class Diagrams | Detailed Class Diagrams, Sequence Diagrams, Component Diagrams |
Output | Identified objects and relationships. | Object structure and interaction blueprint. |
✅ Example:
- Analysis: Identify objects like Book, Member, LibrarySystem.
- Design: Define class relationships, interactions, and method signatures, such as defining a
Book
class withborrowBook()
andreturnBook()
methods.
3️⃣ Domain-Driven Analysis vs. Domain-Driven Design (DDD)
📌 Domain-Driven Analysis (WHAT?) vs. Domain-Driven Design (HOW?)
Aspect | Domain-Driven Analysis (WHAT?) | Domain-Driven Design (HOW?) |
---|---|---|
Goal | Understand the domain and its business rules. | Define system architecture based on domain models. |
Focus | Identifying domain entities, value objects, and aggregates. | Implementing bounded contexts, repositories, and services. |
Key Techniques | Domain Models, Event Storming, Ubiquitous Language | Defining Aggregates, Entities, Value Objects, Repositories |
Output | A shared understanding of the domain. | Architecture and technical structure using domain principles. |
✅ Example:
- Analysis: Identify domain concepts like Order, Customer, Invoice.
- Design: Define
Order
as an Aggregate Root and choose a relational database to store Orders.
4️⃣ Event-Driven Analysis vs. Event-Driven Design
📌 Event-Driven Analysis (WHAT?) vs. Event-Driven Design (HOW?)
Aspect | Event-Driven Analysis (WHAT?) | Event-Driven Design (HOW?) |
---|---|---|
Goal | Identify events that trigger actions in the system. | Define event flow and architecture. |
Focus | Capturing domain events and dependencies. | Event producers, consumers, and event-driven communication. |
Key Techniques | Event Storming, Event Mapping | Event Sourcing, CQRS, Message Brokers (Kafka, RabbitMQ) |
Output | Defined business events and their relationships. | System structure based on event flow. |
✅ Example:
- Analysis: Define domain events like
OrderPlaced
,PaymentProcessed
,OrderShipped
. - Design: Choose Kafka as the event broker and define how
OrderService
will publishOrderPlaced
events.
5️⃣ Microservices Analysis vs. Microservices Design
📌 Microservices Analysis (WHAT?) vs. Microservices Design (HOW?)
Aspect | Microservices Analysis (WHAT?) | Microservices Design (HOW?) |
---|---|---|
Goal | Identify services that should be independent. | Define API contracts, service boundaries, and communication. |
Focus | Business capabilities and service decomposition. | API structure, message protocols, and orchestration. |
Key Techniques | Service Identification, Bounded Contexts | REST, gRPC, Event-Driven Communication |
Output | Defined services and their responsibilities. | Architectural blueprint for microservices. |
✅ Example:
- Analysis: Identify services like
UserService
,OrderService
,PaymentService
. - Design: Define API contracts using REST or gRPC, and determine how services communicate.
6️⃣ Data-Centric Analysis vs. Data-Centric Design
📌 Data-Centric Analysis (WHAT?) vs. Data-Centric Design (HOW?)
Aspect | Data-Centric Analysis (WHAT?) | Data-Centric Design (HOW?) |
---|---|---|
Goal | Understand data requirements and relationships. | Define data storage, normalization, and access patterns. |
Focus | Data entities, integrity, and business rules. | Database schema, indexing, replication, and access strategies. |
Key Techniques | Data Modeling, ERD, Normalization | SQL Schema Design, NoSQL Schema Design, Caching Strategies |
Output | Conceptual and logical data model. | Optimized database schema and query patterns. |
Note: There were many people who used to take this approach in past but something like Data Centric Analysis & Design term is not well documented in academics and in the industry there are new approaches to analysis and design so this may be considered for reference but not as a standard method.
7️⃣Top-Down Analysis vs. Top-Down Design
📌 Top-Down Analysis (WHAT?) vs. Top-Down Design (HOW?)
Aspect | Top-Down Analysis (WHAT?) | Top-Down Design (HOW?) |
---|---|---|
Goal | Break system into broad components. | Define architecture and refine components into sub-components. |
Focus | Understanding high-level system functions. | Designing subsystems and detailed module interactions. |
Key Techniques | High-Level Decomposition, Context Diagrams | Modular Design, Stepwise Refinement |
Output | Hierarchical breakdown of system requirements. | Defined system architecture and interactions. |
Note: The "Top-Down" approach is used broadly in algorithm design, systems engineering, and project decomposition, but there is no single, universal "Top-Down Analysis vs. Design" model. It’s not a named, published method.
Why is This Distinction Important?
Understanding the boundary between analysis and design is crucial for:
✅ Avoiding premature decisions – Jumping into design without thorough analysis may lead to incorrect architectures.
✅ Maintaining flexibility – Keeping analysis independent ensures the system remains adaptable to business changes.
✅ Ensuring clarity in documentation – Teams must differentiate between conceptual models (analysis) and implementation structures (design).
Key Takeaways
1️⃣ Analysis = Understanding the problem and defining WHAT the system should do.
2️⃣ Design = Making architectural decisions and defining HOW the system should be structured.
3️⃣ Implementation = Writing and deploying the actual code based on the design.
Comments
Post a Comment