Function-Oriented Design in Software Engineering: Concepts, Process & Examples

Software Engineering • Chapter 20

Function-Oriented Design in Software Engineering: Concepts, Process & Examples

Function-Oriented Design may look difficult at first because students have to understand functions, Data Flow Diagrams, module hierarchy, structure charts, coupling, and cohesion together. The basic idea, however, is simple: break a large software system into smaller functions and arrange those functions in a clear hierarchy.

Instead of starting with objects or classes, Function-Oriented Design focuses on what processing the software has to perform. A large problem is divided into smaller functions until each part becomes easy to understand, design, test, and maintain.

Direct Answer Function-Oriented Design is a software design approach in which a complete system is divided into a hierarchy of functions or modules. Each module performs a specific task, receives some input, processes it, and produces an output. Data Flow Diagrams and Structure Charts are commonly used to move from system requirements to a modular software design.

What is Function-Oriented Design?

Function-Oriented Design in Software Engineering: Concepts, Process & Examples

Function-Oriented Design is a traditional software design technique in which the system is organised around the functions performed by the software.

A complex problem is first divided into major functions. Each major function is then divided into smaller sub-functions. This decomposition continues until every module becomes simple enough to design and implement independently.

Basic View of Function-Oriented Design
Input Data enters the system
→
Processing Functions Different modules perform operations
→
Output Useful result is produced
Easy Way to Remember Function-Oriented Design asks: “What functions must the software perform?” Object-Oriented Design asks: “What objects exist in the system?”

Basic Idea Behind Function-Oriented Design

Suppose we are developing an online result system. Writing the complete system as one large program would make it difficult to understand and maintain.

Instead, we can divide the work into functions such as:

Input Function

Accept student roll number and marks.

Processing Function

Calculate total, percentage, grade, and result status.

Output Function

Display or print the final student result.

These functions can again be divided into smaller functions. This is called functional decomposition.

Main Characteristics of Function-Oriented Design

1. Function-Centred

The main focus is on processing functions instead of objects and classes.

2. Top-Down Approach

Design normally starts from the complete system and gradually moves towards smaller modules.

3. Functional Decomposition

Complex functionality is divided into manageable sub-functions.

4. Data Flow Based

Data Flow Diagrams are commonly used to understand how information moves through the system.

5. Modular Structure

The final software is divided into modules having clearly defined responsibilities.

6. Hierarchical Design

Modules are usually organised from the main control module to lower-level processing modules.

Important Components of Function-Oriented Design

1. Function

A function performs a particular operation on data. Examples include calculating salary, checking login details, generating a report, or updating student marks.

2. Module

A module is a manageable part of the software responsible for one or more closely related functions.

3. Data Flow Diagram

A Data Flow Diagram (DFD) shows how data moves between processes, external entities, and data stores. During structured design, the DFD helps the designer understand the major processing activities that later become software modules.

4. Structure Chart

A Structure Chart represents the hierarchical organisation of modules and shows which module calls another module.

5. Module Interface

Modules have to communicate. Their interface describes the information passed from one module to another.

Functional Decomposition

Functional decomposition means dividing a large function into smaller and more specific functions.

Online Result System
Accept Student Data
Process Result
Generate Result
Validate Marks
Calculate Total
Calculate Grade
Display Report

Notice that the system becomes easier to understand when one large task is divided into smaller responsibilities.

Process of Function-Oriented Design

Function-Oriented Design is not simply about randomly dividing a program into functions. A structured process is normally followed.

1
Study the Requirements Understand what the software must do by studying the Software Requirement Specification and system requirements.
2
Prepare or Study the DFD Identify processes, input data, output data, external entities, and data stores.
3
Identify Major Functions Find the major operations responsible for transforming input into useful output.
4
Perform Functional Decomposition Divide large functions into smaller modules with clear responsibilities.
5
Create the Structure Chart Arrange the modules into a hierarchy and show calling relationships.
6
Check Coupling and Cohesion Try to keep interaction between different modules low while keeping the internal responsibilities of each module closely related.
7
Refine the Design Remove unnecessary dependencies, improve module responsibilities, and make interfaces clear.
Complete Design Flow
Requirements Understand system needs
→
DFD Understand data movement
→
Functions Identify processing tasks
→
Structure Chart Create module hierarchy
→
Refinement Improve design quality

Transform Analysis

Transform Analysis is commonly used when a DFD has a clear input → processing → output pattern.

The central processing area where incoming information is converted into output is called the transform centre.

Input Flow
Incoming data
→
Transform Centre
Main processing
→
Output Flow
Final result

Example of Transform Analysis

Consider a student marks processing system. Marks are entered, calculations are performed, and a result report is produced.

Enter Marks
→
Validate Marks
→
Calculate Result
→
Generate Report

Here, entering and validating marks belong to the incoming side, result calculation forms the main transform, and report generation belongs to the outgoing side.

Steps in Transform Analysis

Identify Input Flow

Determine where information enters and how it moves towards the main processing area.

Identify Transform Centre

Find the processes that perform the central transformation of the data.

Identify Output Flow

Determine how processed information moves towards the final output.

Perform First-Level Factoring

Create high-level input, transform, and output control modules.

Transaction Analysis

Not every system follows one simple input-process-output path. Sometimes one incoming request may activate several different processing paths.

In such cases, Transaction Analysis can be used.

Simple Meaning A transaction centre receives a request, checks its type, and sends control to the correct processing path.

Example: ATM System

After a customer enters a valid card and PIN, the next request may be completely different.

ATM Transaction
Withdraw Cash
Deposit Money
Check Balance
Print Statement

The transaction control module determines which branch should be executed.

Structure Chart in Function-Oriented Design

A Structure Chart is a graphical representation of the software module hierarchy. It shows how a large function is divided into smaller modules and which module controls or calls another module.

Main Control Module
Input Module
Processing Module
Output Module
Validate Input
Perform Calculation
Store Data
Generate Report

What Does a Structure Chart Show?

A Structure Chart can help the designer understand module hierarchy, module calls, data communication, control relationships, and the overall organisation of the software.

Do Not Confuse DFD and Structure Chart A DFD shows how data moves through the system, while a Structure Chart shows how software modules are organised and connected.

Complete Example of Function-Oriented Design

Example: Library Book Issue System

Suppose we have to design a system that allows a student to issue a book from a college library.

Step 1: Identify Input

The system receives Student ID and Book ID.

Step 2: Identify Major Processing Functions

The software must validate the student, check book availability, verify issue limits, create the issue record, and update book status.

Step 3: Identify Output

The system produces either an issue confirmation or an error message.

Student ID + Book ID
→
Validate Student
→
Check Book
→
Issue Book
→
Confirmation

Possible Structure Chart

Book Issue System
Accept Request
Validate Request
Process Issue
Generate Response
Check Student
Check Book
Create Issue Record
Update Book Status

This example shows the main idea of Function-Oriented Design clearly: start from the complete task and break it into smaller functions with clear responsibilities.

Role of Coupling and Cohesion

Simply creating many modules does not guarantee a good design. The relationship between those modules is also important.

High Cohesion

Operations inside a module should be strongly related to the same responsibility.

Low Coupling

Different modules should depend on each other as little as reasonably possible.

Important Exam Point A good Function-Oriented Design generally aims for high cohesion and low coupling.

Important Design Principles

Abstraction

Concentrate on the important behaviour of a module without exposing every internal detail.

Modularity

Divide the software into logical and manageable parts.

Information Hiding

Internal implementation details should remain inside the responsible module whenever possible.

Clear Interfaces

Communication between modules should be simple and well defined.

Function-Oriented Design vs Object-Oriented Design

Basis Function-Oriented Design Object-Oriented Design
Main Focus Functions and processes Objects and classes
Decomposition System is divided into functions System is divided into objects
Typical Design Style Top-down functional decomposition Object modelling and interaction
Data Data may move between multiple functions Data and behaviour are commonly grouped inside objects
Common Models DFD and Structure Chart Class, object, sequence and other UML diagrams
Change Impact Changes in shared data or function flow may affect several modules Encapsulation can help localise many changes
Best Fit Process-oriented and function-heavy systems Systems naturally modelled around interacting entities

Advantages of Function-Oriented Design

Easy Decomposition

A large system can be divided into smaller and more manageable functions.

Clear Control Flow

The hierarchical structure helps developers understand which module controls another.

Suitable for Structured Systems

It works naturally with structured analysis techniques such as DFDs.

Easier Individual Testing

Well-designed modules can often be tested separately before complete integration.

Easy to Understand Initially

For procedural systems, functions provide a direct representation of the work that has to be performed.

Supports Stepwise Refinement

Designers can progressively move from broad system functions to detailed modules.

Limitations of Function-Oriented Design

Data and Functions Are Separate

Data is not naturally encapsulated together with its behaviour as it is in object-oriented design.

Change Can Spread

Changes to common data structures may affect several functions.

Less Natural for Object-Rich Systems

Modern applications with many interacting real-world entities may be easier to represent using object-oriented techniques.

Large Hierarchies Become Complex

Poor decomposition can create too many modules and difficult control relationships.

Common Mistakes Students Make

Mistake 1: DFD and Structure Chart Are the Same They are not. DFD represents data movement, while a Structure Chart represents module organisation.
Mistake 2: More Modules Always Mean Better Design Too many unnecessary modules can make the system harder to understand.
Mistake 3: Ignoring Coupling and Cohesion Module quality matters. Functional decomposition should result in meaningful, focused modules rather than random divisions.

Memory Trick

Remember: R-D-F-S-Q-R R – Requirements
D – DFD
F – Functions
S – Structure Chart
Q – Quality check using coupling and cohesion
R – Refinement

Important Exam Questions

Q1. What is Function-Oriented Design? Function-Oriented Design is a software design approach in which the system is divided into a hierarchy of functions and sub-functions. The main focus is on the processing operations performed by the software.
Q2. What is functional decomposition? Functional decomposition is the process of breaking a complex system function into smaller and simpler sub-functions until each module has a clear and manageable responsibility.
Q3. What is a Structure Chart? A Structure Chart is a graphical representation of the hierarchy of software modules. It shows module relationships and how control is divided within a system.
Q4. What is Transform Analysis? Transform Analysis is a structured design technique used when data flows through an input section, a central transformation section, and an output section.
Q5. What is Transaction Analysis? Transaction Analysis is used when one incoming transaction can activate one of several possible processing paths.

Long Answer Question

Explain Function-Oriented Design with its process and suitable example. For a long-answer question, start with the definition of Function-Oriented Design. Explain functional decomposition, DFD and Structure Chart. Then write the design process in steps: study requirements, analyse DFD, identify major functions, decompose the functions, prepare the Structure Chart, check coupling and cohesion, and refine the design. Finally, draw a small example such as a library issue system or student result system.

Quick Revision Notes

Focus:
Functions and processing
Approach:
Usually top-down
Main Technique:
Functional decomposition
Analysis Tool:
Data Flow Diagram
Design Representation:
Structure Chart
Quality Goal:
High cohesion and low coupling
Transform Analysis:
Input → Transform → Output
Transaction Analysis:
One request → Different processing branches

Frequently Asked Questions

Is Function-Oriented Design the same as structured design?

They are closely related. Structured design commonly uses functional decomposition, DFDs, transform or transaction analysis, and Structure Charts to produce a function-oriented modular design.

Which diagram is mainly used in Function-Oriented Design?

Data Flow Diagrams are useful during analysis, while Structure Charts are commonly used to represent the resulting module hierarchy during design.

What is the main objective of Function-Oriented Design?

Its main objective is to divide a complex software system into smaller, understandable, and manageable functional modules.

What is a good module in Function-Oriented Design?

A good module has a clear responsibility, high cohesion, a simple interface, and minimum unnecessary dependency on other modules.

Is Function-Oriented Design still useful?

Yes. It remains useful for understanding structured software design, procedural systems, functional decomposition, legacy systems, and core Software Engineering concepts.

Conclusion

Function-Oriented Design becomes easy once you understand that the whole method is based on one simple idea: divide a large problem into smaller functions.

Requirements and Data Flow Diagrams help us understand what the system has to process. Functional decomposition converts large tasks into manageable modules, while the Structure Chart arranges those modules into a clear hierarchy. Transform Analysis and Transaction Analysis help designers map different data flow patterns into software structure.

For exams, remember the complete connection: Requirements → DFD → Functional Decomposition → Structure Chart → Coupling and Cohesion → Refinement. If this flow is clear, most questions related to Function-Oriented Design become much easier to answer.

Post a Comment

0 Comments
* Please Don't Spam Here. All the Comments are Reviewed by Admin.
Join Telegram Exam updates and free resources