# A-level Computing 2009/AQA/The Computing Practical Project/System Maintenance

Imagine that once you have delivered your project to your user they want to pay someone else to make improvements on it. This is very common in industry where IT projects can be decades old (The IBM CICS product was first released in 1969, it's still going strong). So that other people can take over your project you need to provide them with decent documentation so they can understand what everything does. For this you need to make your System Maintenance.

## System Overview

The first thing a person inheriting an old system would like to see is a brief overview of all the components, that is what we are providing here.
* Structural Overview of how different forms link together
* You are going to list all the forms / modules / classes and describe what each does.
* If applicable include an inheritance diagram
* If applicable include an E-R Diagram
* You are then going to list the different sub routines on each of the forms / modules / classes and describe what each one of them does mentioning any return values or parameters

### Detailed Algorithm Design

You need to include some examples of your most complicated algorithms and how you built them. It's recommended that you include as much evidence of your coding skill as possible but in some cases this will be very difficult as you will have produced so much code that it's impossible to fully describe all of it. Ten complex pieces of code should suffice.
For each piece of code include 3 sections
* Plain English description of what the code does
* Pseudo Code outline of the code
* Real code well laid out with comments where necessary
For example:
Plain English
This piece of code works out the average price of a selection of chocolate bars. To do this I should first of all use SQL to find all the chocolate bars from the Products table. I will then add all the prices together and divide the total by the number of chocolate bars to get an average price.
Pseudo Code
Real Code
(Paste here)

## Procedure and Variable Lists

For each Module and Form that you create you should have code sitting behind it. This section will give the marker an overview of the different coding components of your project, keep in mind variable datatypes and their 'bit' capacity i.e using a character instead of a string.
For example:
Module Sweet Form
This Module calculates a variety of statistics and presents reports for all the sweets and chocolate stored in the database
| Procedures / Functions |
| Access | Name | Description | Parameters | Outputs / returned values |
| Public | AverageChoc | Calculates the average price of a chocolate bar and outputs the value | None | The average price is printed to the screen |
| Variables |
| Access | Name | Type | Description |
| Private | NumChocBars | Integer | This stores the number of chocolate bars currently in stock |

## Annotated listings of program code / macro code and tailoring

This is where you provide the marker with all of your code. As we mentioned earlier it should be quite easy to understand already as you used sensible names, indentation and comments. This section is going to allow the marker to see all that hard work, with a little annotation where anything isn't 100% clear. If you have included this in your technical solution, then please provide a link.

## Database tables in design view

If you have used a program to make your database tables then show them in design view, making sure that people can see the data types.
If you have used DDL copy it here.