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

Example 1: ArchiMate relationship in PlantUML code to demonstrate 15 relationship types

 Following section presents 15 types of relationships in ArchiMate and PlantUML to generate the diagram. Since this code is generated by GEN-AI it may require precision on aspects other than PlantUML syntax: Diagram Plant UML Code:  @startuml '!includeurl https://raw.githubusercontent.com/plantuml-stdlib/Archimate-PlantUML/master/Archimate.puml ' Another way of including Archimate Library (above is commented for following) !include <archimate/Archimate> !theme archimate-standard from https://raw.githubusercontent.com/plantuml-stdlib/Archimate-PlantUML/master/themes title ArchiMate Relationships Overview <style> element{     HorizontalAlignment: left;     MinimumWidth : 180;     Padding: 25; } </style> left to right direction rectangle Other {     Business_Role(Role_SeniorManager, "Senior Manager")     Business_Role(Role_Manager, "Manager") } rectangle Dynamic {     Business_Event(Event_CustomerReques...

Examples 7: ArchiMate flow relationship between elements in layers

Diagram Code @startuml !include < archimate / Archimate > < style > element {     HorizontalAlignment : left ;     MinimumWidth : 180 ;     Padding : 20 ; } note {     BackgroundColor : #FFFFCC ;     RoundCorner : 5 ;     MaximumWidth : 250 ; } </ style > title "ArchiMate 3.2 Valid Flow Relationships" left to right direction ' Business Layer Flow Relationships rectangle "Business Layer Flows" {     Business_Process ( bp1 , "Order Process" )     Business_Process ( bp2 , "Payment Process" )     Rel_Flow ( bp1 , bp2 , "Order data" )     note on link         Flow between Business Processes     end note         Business_Function ( bf1 , "Sales Function" )     Business_Function ( bf2 , "Delivery Function" )     Rel_Flow ( bf1 , bf2 , "Sales information" )     note on link     ...

SmartSimpleTextGenerator: A Smarter Way to Generate Text

  Introduction In the world of text generation, simple n-gram models can produce decent results, but they often lack context-awareness and coherence. To address these limitations, I have developed SmartSimpleTextGenerator , an improved version of my previous project, ImprovedSimpleTextGenerator . This new version enhances the text generation process by integrating Part-of-Speech (POS) tagging , n-gram models , and a back-off strategy , making the generated text more meaningful and contextually relevant. Key Features of SmartSimpleTextGenerator ✅ N-Gram Model with POS Tagging – Uses trigrams (default n=3) and applies POS tagging for better word prediction. ✅ Back-off Strategy – If a trigram sequence is unavailable, it falls back to bigrams and unigrams to ensure smooth text generation. ✅ Sentence Tokenization & Structure Preservation – Tokenizes input text properly while maintaining sentence integrity. ✅ Randomized Word Selection – Generates diverse outputs rather ...