Assignment Instructions, PAA006


1     General Instructions for the Assignments

The assignments are based on the scenario presented in Section 2 and 3 in this document.
If something is unclear about the system you shall make assumptions. All assumptions have to be motivated and documented.

When turning in each assignment, the previous solutions on the assignments shall be turned in as well. All the assignments shall have an introduction containing a short, but clear summary of the sys­tem that the assignment is based on.
All assignments shall be sent in by email to

The assignments shall be written in Swedish or in English, and the implementation shall be done in C++.
The assignments are to be done in groups of two.


2     Background

Kalle Pettersson from Petterssons Video and Games in Ronneby is a rapidly growing player in the video rental market. In order to save money during the start-up process of the com­pany, Kalle chose not to buy a computerised video rental system. Instead he has relied on post-its and folders with customer information in order to keep track of rented mov­ies. Obviously, this low-tech system won’t survive more than five customers a day. There­fore, Kalle needs a computerised video rental system. But, since money is scarce, Kalle has decided to use students for the development of his new system.


3     The Video Rental System

When a customer wants to rent a movie, it must be possible for Kalle to either find the customer in the system or to add a new customer (name, social security number, address, phone number, statistics about rental habits) to the system. There are several movies (VHS & DVD) and games (PS3, PS2, X-BOX, and GameCube) in the store and if a customer wants to know if one of them is available, it should be possible to perform a search for it. There can also be several copies of the same movie or game in the store so Kalle must be able to keep track of which one each customer has rented.


If new movies or games are bought, Kalle must be able to add them to the system. He must also be able to edit information (name, unique id, trivia, and price group) about them as they win awards or change price.

All items in the store are divided into price groups. There are three price groups, red (59 SEK), blue (49 SEK) and green (39 SEK) and those prices must be possible to update. In order to lure more customers to the shop, Kalle has the special offer “Rent Nine Movies, Get the Tenth for FREE!”. This offer should be handled automatically by the system.


When several items are rented, the total price should be listed, so that Kalle does not have to make this calculation on his own. It is also important that customer data can be updated if necessary.


It is also necessary that Kalle can keep track of which movies someone already rents and if a movie has not been returned. Therefore, he wants to list all movies that are rented and get them sorted by returning date so he knows which customers he has to start chasing.


Kalle also wants to be able to provide an extra service for the customers by giving them a monthly newsletter. He wants to specialize the newsletters so he will send out letters to different customers based on what type of movie they rent for the most. For example, if a customer mainly rents romantic movies she/he will get a newsletter with news about the latest romantic movies available in the store. Therefore, Kalle needs to be able to extract address lists to customers based on what types of movies they seem the most interested in. Available genres in Kalle’s store are Western, Action, Romance, Drama, and Horror.


Because of rules from the Data Inspection, Kalle has to remove customers if they request it. He also wants to be able to remove media items (games and movies) from the system, as they get old. Kalle does not care about the user interface of the system, it can be either graphical or text.

4     Assignment Instructions
4.1    Requirements and Planning

You shall write a requirement specification for the system that is to be developed. It shall contain both the functional and the non-functional requirements. The requirements shall be extracted from the system description that you have received.


In order to help you identify requirements you are to create and document high-level use cases, these shall be turned in along with the requirements specification.
Each requirement shall at least contain the following information:

·        Unique Id

·        Description

·        Purpose.

All requirements shall be testable, consistent, and unambiguous. Each requirement should only be found once in the specification.

For more information about the requirement specification, see Part 2 in the book “Software Engineering” by Ian Sommerville.
For more information on high-level use cases, see chapter 6 in “Applying UML and Pat­terns” by Craig Larman.


You need to create a project plan supporting the management of the project. It is recommended that you start looking at the planning in parallel with the require­ments, so you have some idea of what you are planning for.

The project plan shall contain:

·        An activity list with estimations (size, complexity, and time)

·        A person responsible for each task

·        A Gantt-chart showing the plan for the project

·        A risk analysis.


For more information about the project plan, see Part 1 and 6 in the book “Software En­gineering” by Ian Sommerville.

4.2    Analysis

Based on the system description in section 3 and the requirements speci­fication you created in the previous assignment, you are to perform an analysis of the vid­eo rental system.

The following tasks should be documented:

·        Fully dressed use cases

·        Domain model

·        Glossary.


All produced documentation should be turned in, including the documentation from the previous assignment.


For information on the different tasks, see the following chapters in “Ap­plying UML and Patterns” by C. Larman:

·        Use cases and system sequence diagrams, chapter 6 and 10

·        Domain models, chapter 9

·        Glossary, chapter 7, subsection 7.8.

4.3    Design

Based on the earlier planning and analysis of the video rental system, create a design for the system. You shall perform and document the following tasks:

·        Write operation contracts

·        Create interaction diagrams (either sequence or collaboration diagrams)

·        Create class diagrams.


For more information on creating the diagrams, see the following chapters in “Applying UML and Patterns” by C. Larman:

·        Operation contracts, chapter 11

·        Sequence diagrams, chapter 15

·        Class diagrams, chapters 16, 17 and 18.


4.4    Implementation

Implement the system based on the analysis and design that you created in the two pre­vious steps.

In this assignment you are to turn in the source code for the video rental system.

A text file that describes how the pro­gram is compiled and executed has to be included as well as instructions on how it is to be used. All functionality listed in the requirements specification shall be implemented.


For more information, see the following chapters in “Applying UML and Patterns” by C. Larman:

·        Implementation and realization of design, chapters 17, 18 and 20.


4.5    Testing

In the last assignment you shall write a test specification for the system. It is important that there are test cases for each of the requirements of the system, since when you use the test specification you verify that the requirements are fulfilled.

The test cases shall at least contain the following information:

·        Unique Id

·        Requirement/s being tested

·        Preconditions

·        Test sequence

·        Expected outcome.


You shall use the test specification on the system you have implemented and also turn in a test report of the results from the test.

For more information about testing, see Part 5 in the book “Software Engineering” by Ian Sommerville.