smiley

Hello!
We are excited to have you on our career tour. I am Rho, your guide through this wonderful journey.

Design

Software application design is the process of determining specifications of the software for it to accomplish certain goals within certain constraints. It is like developing a blueprint which will be used to build the software.

Background

Computer program: a set of instructions telling a computer what to do

Programming language: in order for a computer to understand the instructions, they need to be written in a language the computer understands, that is, in a programming language like C, C++, Java

Software: the programs and other operating information used by a computer. Software can be made up of more than one program.

Types of software: there are 2 major types, application software (for performing user tasks like MS Word, online shopping apps) and system software (like Windows, macOS, which enable the applications to execute). Here we will consider only application software.

icon6

What is designing all about?

shap7 smiley2
software-slide3-machin
icon6

Welcome! This is an online shopping startup which is building an application for customers to buy a variety of products online. You will be working on assignments with their software engineering team.

shap3 smiley3
software-slide4-machin
icon6

Design requirement

Your team has to build the online shopping application which should have features like allowing users to view products, signup and place orders.

shap4 smiley4

Design

Step 1: High level design

Determining architecture (structure) of the software application and its components

(high level design is done when developing a software from scratch or major redesign of existing one, and generally not for minor modifications)

icon6

We will now go through the design and development process step wise by first understanding the theory then implementing it on the requirement

shap5 smiley5

Presentation Tier

software-slide6-machin

This is the part of the application which user interacts with using devices like laptops, mobiles, tablets.

For example, in Signup feature the form in which user enters his details is in this tier.

The layout of the application interface seen by user is designed by user interface designers who are generally not software engineers hence it will not be covered in this tour.

dual-arrow

Application (logic) tier

software-slide6-app

This part processes the commands, makes logical decisions, performs calculations, transforms data and moves it between the other 2 tiers.

In Signup feature, this tier checks if details entered by user meet the registration criteria.

dual-arrow

Data tier

software-slide6-data

This part stores all the data required in the application like product list, orders placed, user details.

In Signup feature, if application tier determines all details entered by new user meet the criteria then these details will be stored in the data tier, to be used as needed.

icon6

Your team has decided that this software application will have above 3 tiers

(many types of structures are possible for an application software, this 3 tier type is just one of them)

shap5 smiley5

Design

Step 2: Database design

Determining how to organise all the information required for the application in the database

(this is done for the data tier explained in previous step)

icon6

We will now go through the design and development process step wise by first understanding the theory then implementing it on the requirement

shap5 smiley5
Assignment

To handle customer orders following information needs to be stored in the database:

Customer_ID (numbers)

unique number assigned by the software to every customer

Order_ID (numbers)

unique number assigned by the software to every order placed by customer, for example if a customer places an order for 4 books today and another order for 3 books tomorrow then these will be considered as 2 separate orders having different Order_ID even though placed by same customer

Customer_FirstName (alphabets)

first name provided by customer

Customer_LastName (alphabets)

last name provided by customer

Order_Status (alphabets)

3 possible values: Pending, In-progress, Complete
this is assigned by the software to every order and will change with progress in order fulfilment

You need to determine how the above information should be organised into tables in a relational database, so that for a given Customer_ID the customer’s name as well as order data can be obtained easily, while occupying minimum storage space.

About designing relational database
How to organise the data?
view-instruction-icon View Instructions

Start Working

You will now begin working on the database design. This assignment should ideally take 10 minutes.

How to organise the data?

Step 1

In the assignment you can put different columns like Customer_ID and Customer_FirstName in a single table or in separate tables by creating new tables. You need to determine which columns need to be together and which need to be in separate tables for efficient storage.

Step 2

Ensure there is no unnecessary duplication of data in your arrangement.

Step 3

Ensure every table has a Primary Key column to uniquely identify every row of the table.

Step 4

Ensure different tables have a common column so all data for a customer can be obtained using only Customer_ID.

Got it!