CPT109 C Programming and Software Engineering 1 – ASSESSMENT 3
Assessment Number Contribution to Overall Marks Issue Date
This assessment aims to evaluate students’ ability to develop a significant software solution to a real- world problem by working as a member of a team. Your team will be given a vague specification and is expected to deliver a software product in the C programming language, which meets the specifications before the due date. This size and type of the project is suitable for development in a modular format, and so teams are encouraged to devise program structures that allow various parts of the code to be developed independently by each team member. Being a team player means you are expected not only to apply the knowledge gained during the lectures, laboratory classes and assignments to specify, design, implement, test and document your own code, but also to cooperate with your teammates so that the whole project will be delivered on time with good quality.
There are 362 students enrolled in this module, and you will be divided into groups consisting of 5 students (i.e. 73 groups). Groups will be formed in two stages: Firstly, students will be given the option to choose their own group members. Students failing to form a group will then be randomly assigned to a group. Randomly formed groups will contain students with a range of abilities based on their performance in previous assignments. Each group will then be randomly assigned one of 3 projects. Students wishing to form their own group should submit a group formation form provided with all details filled in and having been signed by all group members.
Each group should submit the following (only 1 submission per group):
1. A report (PDF file), based on the Software Development Process applied throughout this semester:
a) Problem Statement (Specification: formulate the problem generally) (10%).
b) Analysis: interpret the vague software requirements provided by your design brief and determine a very clear specification for your software design. (10%)
c) Design: explain how your program is structured in terms of functional blocks and describe what each block does. A flow diagram may be useful here, showing how functions interconnect and what data is passed between them. (10%)
d) Testing: explain how the program has been tested and verified. Ensure any usernames or passwords required to test the program are listed in a table. (10%)
All C source code (.c files) and the final executable demonstration file (.exe). The source code must be appropriately commented. Include any data files needed for execution. (50%)
- Group formation form (The form is part of the Assessment 3 download package). The group
form should be signed by all members.
- Contribution form (The form is part of the Assessment 3 download package). The group should agree on the percentage of contribution of each member to each section and submit one copy of the form signed by all members.
NOTE: This may lead to different marks for different members of the same group. If necessary, the module leader may call group members for a short oral test.
All the above-mentioned files/deliverables (report, source code, executable, manual, contribution form), must be compressed into a single file (.rar, .zip or .7z). The group leader (identified on the group formation form) must submit this single compressed file on Learning Mall using his/her account.
NOTE: Each group should only submit ONE copy on Learning Mall. Make sure your report has a title page and ensure ALL group members’ names and ID numbers are on it.
The project descriptions are deliberately given in the form of simple customer specifications, which (as in the real world) are incomplete and often ambiguous, rather than a set of exact functional specifications. The group members should work methodically together (as the developers in a real world software project would) to:
- Analyse and formalise the customer specifications (at this stage, the various design choices and the software features can be subject to the group’s creativity).
- Design and decompose the functional and programmatic aspects of the problem and allocate constituent tasks to each group member. You are expected to use a top-down design which can then be modularised so that the tasks for each member can be clearly determined.
- Implement the product with frequent meetings to report progress and decisions to each other and re-evaluate the agreed courses of action.
- Implement test procedures, debug and correct the program. Each program module should be independently testable. Testing of each module and the program as a whole should be performed.
- Finalise the deliverables.
The specifications are only basic, and most of the design choices should be made in your group meetings. The systems described within the different projects have a variety of different features, and the disambiguation of the customer specifications can be based on the student’s logic and real-life experience.
Assessment will be based on whether the product/program offers reasonable functionality and features (for the group size, allocated time and project difficulty), its design quality, flexibility, robustness, software bugs and other stated deliverables.
If the group cannot implement all of the system features mentioned, it is better to have a few features fully working without run-time crashes than none of the required features working properly due to bugs or disrupting ripple effects between modules in the project. However, the corresponding marks deduction will be applied depending on the missing features.
If any group issues arise during the project, it is important to raise these with the module leader as soon as they do so that resolutions can be found quickly. It is important to work with your group and to share the work accordingly. All group members should be responsible for some of the coding. Individuals may not produce their own work for submission independent of the group.
Project A: Vehicle Rental Service Information System
A vehicle rental company needs a new electronic rental system, and your team is employed to build it.
The implemented system should be able to handle the basic operations of the vehicle rental service, including the following features:
· Provide rental service for the walk-in customer.
· Catalogue the vehicle; they should be stored in an indexed order, e.g. by vehicle brand, vehicle type or price range.
· The information about each vehicle should include: brand, type, number of seats, number of doors, luggage capacity, fuel type, transmission type, etc.
· Provide search functionality so that any user can find a vehicle
The system should be able to provide functionality for different users listed below:
· An administrator who should be able to:
o Add and edit vehicle information.
o Provide statistics related to business (e.g. sales by vehicle type, etc). · A sales representative who should be able to:
o Register a new customer, including name, driving license information, phone number, etc. o Edit customer information.
o Record the rental of a vehicle.
o Record the return of a vehicle from a customer and calculate charges.
Project B: Pizza Ordering System
Your team is employed by a new pizza shop to develop the software for an in-store terminal where customers can order their pizza.
The implemented ordering system should be able to provide facilities to:
· Allow the various types of pizza on the menu (e.g. Thin and Crispy Crust, and Hand Tossed) to be ordered where each pizza can be customised by different size (e.g. 10”, 12”, 14”, and 16”) and topping (e.g. Supreme, Hawaiian, Margherita, and BBQ Chicken).
· Determine the cost of the pizza ordered based on the type, size, and topping.
· Register and edit customer accounts, identifiable by a unique account number, which can be precharged with money. Customer information should include name, telephone, order history, and available balance.
The system should be able to provide the functionality for different users listed below:
· Shop manager who will be able to:
o Edit the pizza menus.
o Set/alter charges for the pizza.
o Add/remove/editcustomerinformation. o Provide statistics related to pizza sales.
· Customer Self Service will be able to:
o Login to your account and place an order. o Revieworderhistory.
o Deposit money into the account.
Project C: Cinema Management Information System
Your team is employed by the cinema to implement a software system responsible for the overall management of seat booking and customer records.
The implemented cinema systems should be able to provide facilities to:
· Manage movies to be released in the cinema. Each movie plays multiple sessions in the cinema.
The movie includes information such as title, language, length, etc.
· Manage bookings for 180 seats per movie session. Each seat for each movie session has a uniquely identifiable number. Each seat for each movie session has a price.
· Manage customer accounts. Customer accounts are identifiable by a unique account number.
Customers can accumulate points when they go for the movies.
· Offer cinema business statistics, e.g. numbers of cinema guests.
The system should be able to provide functionality for different users listed below:
· The manager who will be able to:
o Add/edit new movie and movie sessions
o Manage a customer database (add/edit/remove customers)
o View movie business statistics, e.g. the number of seats booked, total income, etc.
· A receptionist who will be able to:
o Register a booking, customer points, and calculate the total price. o Check available seats.
o Check the customer’s total point.