Data-Oriented Design
Definition
Data-Oriented Design (DOD) is a design approach where the structure of the data (its layout, relationships, and flow) is the primary driver of the system design — the program's structure is derived from and mirrors the structure of the data it processes.
Core Idea
Unlike function-oriented design (which starts from "what processes are needed"), data-oriented design starts from "what does the data look like, and how does it flow" — the program structure follows from that.
Jackson Structured Programming (JSP) — Key Data-Oriented Technique
- Model the structure of the input data
- Model the structure of the output data
- Merge the input/output structures into a combined program structure
- Derive the program's control logic (sequence, iteration, selection) directly from this merged structure
Data Structure Notations Used
- Sequence — data items occur one after another
- Iteration — a data item repeats (0 or more times)
- Selection — a data item can be one of several alternative types
Advantages
- Well suited to data-processing-heavy applications (batch processing, file processing, report generation)
- Program structure closely mirrors data, making it intuitive to derive code
- Reduces mismatch between data format and program logic — fewer bugs handling malformed data
Disadvantages
- Not well suited to systems with complex, interactive, or GUI-driven logic
- Less popular today compared to Object-Oriented approaches
- Can become rigid if data structure changes significantly
When to Use
- Legacy data-processing systems
- Batch-oriented report/file processing applications
- Systems where data structure is stable and central to the problem
Exam tip: Contrast with Structured (Function-Oriented) Design: DOD derives structure from data; Structured Design derives structure from functions/processes (via DFD → Structure Chart).