Skip to main content

Difference between analysis and design

Analysis and design are two different but related phased in software development. As per approach to the analysis and design, focus & techniques differ. Here we are trying to understand difference using different approaches:

1️⃣ Structured Analysis vs. Structured Design

📌 Structured Analysis (WHAT?) vs. Structured Design (HOW?)

AspectStructured Analysis (WHAT?)Structured Design (HOW?)
GoalUnderstand business needs, functions, and data flow.Define a modular system architecture.
FocusProcesses, data flow, and system functionalities.Modular decomposition, control flow, and function interactions.
Key TechniquesDFD (Data Flow Diagram), ERD (Entity-Relationship Diagram)Modular Design, Flowcharts, Structure Charts
OutputLogical 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.
Note: The distinction between analysis and design in not much standardized, in old days you understand the requirements, define DFD and ERD: Up to you, you call it analysis & design or design. Design was often database design and UI design if UI exists. Mostly it was client server paradigm. 


2️⃣Object-Oriented Analysis (OOA) vs. Object-Oriented Design (OOD)

📌 OOA (WHAT?) vs. OOD (HOW?)

AspectObject-Oriented Analysis (WHAT?)Object-Oriented Design (HOW?)
GoalIdentify objects in the system and their behaviors.Define system structure and object interactions.
FocusConceptual model of real-world entities.Class structure, design patterns, and object collaboration.
Key TechniquesUse Case Diagrams, Conceptual Class DiagramsDetailed Class Diagrams, Sequence Diagrams, Component Diagrams
OutputIdentified 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 with borrowBook() and returnBook() methods.

3️⃣ Domain-Driven Analysis vs. Domain-Driven Design (DDD)

📌 Domain-Driven Analysis (WHAT?) vs. Domain-Driven Design (HOW?)

AspectDomain-Driven Analysis (WHAT?)Domain-Driven Design (HOW?)
GoalUnderstand the domain and its business rules.Define system architecture based on domain models.
FocusIdentifying domain entities, value objects, and aggregates.Implementing bounded contexts, repositories, and services.
Key TechniquesDomain Models, Event Storming, Ubiquitous LanguageDefining Aggregates, Entities, Value Objects, Repositories
OutputA 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?)

AspectEvent-Driven Analysis (WHAT?)Event-Driven Design (HOW?)
GoalIdentify events that trigger actions in the system.Define event flow and architecture.
FocusCapturing domain events and dependencies.Event producers, consumers, and event-driven communication.
Key TechniquesEvent Storming, Event MappingEvent Sourcing, CQRS, Message Brokers (Kafka, RabbitMQ)
OutputDefined 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 publish OrderPlaced events.

5️⃣ Microservices Analysis vs. Microservices Design

📌 Microservices Analysis (WHAT?) vs. Microservices Design (HOW?)

AspectMicroservices Analysis (WHAT?)Microservices Design (HOW?)
GoalIdentify services that should be independent.Define API contracts, service boundaries, and communication.
FocusBusiness capabilities and service decomposition.API structure, message protocols, and orchestration.
Key TechniquesService Identification, Bounded ContextsREST, gRPC, Event-Driven Communication
OutputDefined 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?)

AspectData-Centric Analysis (WHAT?)Data-Centric Design (HOW?)
GoalUnderstand data requirements and relationships.Define data storage, normalization, and access patterns.
FocusData entities, integrity, and business rules.Database schema, indexing, replication, and access strategies.
Key TechniquesData Modeling, ERD, NormalizationSQL Schema Design, NoSQL Schema Design, Caching Strategies
OutputConceptual 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?)

AspectTop-Down Analysis (WHAT?)Top-Down Design (HOW?)
GoalBreak system into broad components.Define architecture and refine components into sub-components.
FocusUnderstanding high-level system functions.Designing subsystems and detailed module interactions.
Key TechniquesHigh-Level Decomposition, Context DiagramsModular Design, Stepwise Refinement
OutputHierarchical 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

Popular posts from this blog

Virtual environments in python

 Creating virtual environments is essential for isolating dependencies and ensuring consistency across different projects. Here are the main methods and tools available, along with their pros, cons, and recommendations : 1. venv (Built-in Python Virtual Environment) Overview: venv is a lightweight virtual environment module included in Python (since Python 3.3). It allows you to create isolated environments without additional dependencies. How to Use: python -m venv myenv source myenv/bin/activate # On macOS/Linux myenv\Scripts\activate # On Windows Pros: ✅ Built-in – No need to install anything extra. ✅ Lightweight – Minimal overhead compared to other tools. ✅ Works across all platforms . ✅ Good for simple projects . Cons: ❌ No dependency management – You still need pip and requirements.txt . ❌ Not as feature-rich as other tools . ❌ No package isolation per project directory (requires manual activation). Recommendation: Use venv if you need a simple, lightweight solut...

Building a Simple Text Generator: A Hands-on Introduction

Introduction Text generation is one of the most exciting applications of Natural Language Processing (NLP) . From autocorrect and chatbots to AI-generated stories and news articles , text generation models help machines produce human-like text. In this blog post, we’ll introduce a simple yet effective text generation method using Markov Chains . Unlike deep learning models like GPT, this approach doesn’t require complex neural networks—it relies on probability-based word transitions to create text. We’ll walk through: ✅ The concept of Markov Chains and how they apply to text generation. ✅ A step-by-step implementation , fetching Wikipedia text and training a basic text generator. ✅ Example outputs and future improvements. The Concept of Markov Chains in Text Generation A Markov Chain is a probabilistic model that predicts future states (or words) based only on the current state (or word), rather than the full sentence history. How it works in text generation: 1️⃣ We analyze a gi...

Mastering Trade-Off Analysis in System Architecture: A Strategic Guide for Architects

 In system architecture and design, balancing conflicting system qualities is both an art and a science. Trade-off analysis is a strategic evaluation process that enables architects to make informed decisions that align with business goals and technical constraints. By prioritizing essential system attributes while acknowledging inevitable compromises, architects can craft resilient and efficient solutions. This enhanced guide provides actionable insights and recommendations for architects aiming to master trade-off analysis for impactful architectural decisions. 1. Understanding Trade-Off Analysis Trade-off analysis involves identifying and evaluating the conflicting requirements and design decisions within a system. Architects must balance critical aspects like performance, scalability, cost, security, and maintainability. Since no system can be optimized for every quality simultaneously, prioritization based on project goals is essential. Actionable Insights: Define key quality ...