SECTION 01 / 5

Section 1 · Introduction to Software Design

4 min read
On this page 7 headings

Learning goals: Explain what a design achieves; distinguish components, interfaces, data structures and algorithms; apply the criteria for good design.

Design begins after we understand the problem, but before implementation. This lecture asks what the design process produces and how we recognise a useful result.

From Requirements to Software Design

Design is a way of organising the code you will implement and providing a structure to the software system.

Similarly, software design identifies components, their responsibilities, and how they communicate. Design does not itself mean that the final software is already coded. It provides a structure that guides implementation and later maintenance.

Figure 1. The design plan bridges requirements and development.
Figure 1. The design plan bridges requirements and development.
Open image ↗
Illustration: Section 1 · Introduction to Software Design

Four Outcomes of the Design Process

This lecture describes four outcomes of the design process. Components (often called modules) bring together related functions and data to perform a well-defined job. Interfaces specify how those components exchange requests, results, and information. Data structures organise what a component stores, such as a list of inventory items. Algorithms describe the steps that operate on that data.

For example, an inventory module may expose a method to view stock, store product quantities in a suitable structure, and use an algorithm to decide whether a product is in stock. A complete design needs more than a list of screens: it must explain responsibilities, communication, data, and processing.

Figure 2. The four deliverables of a software design.
Figure 2. The four deliverables of a software design.
Open image ↗
Illustration: Section 1 · Introduction to Software Design

Recall: Can you name all four outcomes without looking?

High-Level Architecture and Internal Detail

Components and interfaces are the key elements of high-level software design, known as software architecture. Once the architecture is decided, we move to lower-level design details. The most popular notation for representing a high-level design is UML (Unified Modelling Language), which can describe different views — a user’s view, a functionality view, a messages view and so on.

Detailed design zooms inside a module. Within Inventory, developers must choose how to represent stock records and what sequence of actions handles add, view, or delete operations. High-level and detailed design are complementary: internal algorithms should respect the contracts agreed at the architectural level.

Figure 3. Architecture shows modules; detailed design shows internal data and processing.
Figure 3. Architecture shows modules; detailed design shows internal data and processing.
Open image ↗
Illustration: Section 1 · Introduction to Software Design

Seller Stories Become Software Components

From requirements and user stories we identify common functionalities, group them into tasks, and these form components: Catalogue Management, Inventory Management, Payment Tracking, Order Tracking, Sales Tracking, Customer Feedback.

Notice the distinction: 'View Inventory' is a user-visible capability, while Inventory Management is the component responsible for supplying it. A feature may use several components, and one component may support several related features. The designer's job is to allocate responsibility sensibly instead of creating arbitrary modules for every screen or button.

Figure 4. User stories are mapped to responsible modules.
Figure 4. User stories are mapped to responsible modules.
Open image ↗
Illustration: Section 1 · Introduction to Software Design

Seller Portal: The Six Main Modules

The Seller Portal example organises its functionality into six major components: Catalogue Management, Inventory Management, Payment Tracking, Order Tracking, Sales Tracking, and Customer Feedback. Their responsibilities differ, but together they support the seller's workflow.

The arrows in this picture mean the modules interact through intended interfaces. They do not mean every module must access every other module's internal data. Real implementations may refine the grouping, but the purpose of the illustration is to show how a large application becomes understandable by separating concerns.

Figure 5. Six major components used in the lecture’s Seller Portal example.
Figure 5. Six major components used in the lecture’s Seller Portal example.
Open image ↗
Illustration: Section 1 · Introduction to Software Design

Four Qualities of Good Software Design

Correctness — correctly implement all functionalities; ensured by capturing requirements that are not ambiguous, not conflicting and complete. Efficiency — resources (time, space, cost) managed well; choose the development framework according to the application (client-server vs mission-critical); an embedded system must work under limited memory.

Maintainability — easy to change; requirements change during design or after release (new requests, upgrades), and we don’t want to redesign the software from scratch. Understandability — everyone in the development team can follow the design; otherwise they can’t implement it, leading to bugs and higher development and maintenance costs.

Figure 6. Correctness, efficiency, maintainability and understandability.
Figure 6. Correctness, efficiency, maintainability and understandability.
Open image ↗
Illustration: Section 1 · Introduction to Software Design

Quick revision and self-check

Question: What is the difference between design and implementation?

Answer: Design is the plan/structure; implementation is the code built from it.

Question: Name the four design outputs.

Answer: Components, interfaces, data structures, algorithms.

Question: List four qualities of good software design.

Answer: Correctness, efficiency, maintainability, understandability.

YOUR STUDY PROGRESS

Finished this section? Save your progress.

Back to top ↑