A-level Computing/AQA/The Computing Practical Project/Analysis

Before you start making your project you need to know what you are going to make. This is where your analysis comes in useful and it's also worth 9 marks, that's 12% of the overall project! We'd better get started.

What do you need to include?
Hopefully by now you have some idea of your user and what they want you to do, we need to codify (write it down) it all so we can start getting some marks. The exam board has been very kind and if you check out the mark scheme they even provide a list of things that you need to include in your Analysis. We're going to take these and use them as our headings.

Research Methods
This should be done first. You have an idea on the sections that you need to present so you should put together some questions for your main user to get the answers you need to start putting this together. From your research you need to know the following: A structured interview might do the trick and you need to note down all the responses to each of your questions. You should try to understand the current situation and the problem and it is recommended you perform and evidence at least two of the following methods and explain why you used each: Once you have finished presenting your research you need to summarise what it said and explain why you used each research method.
 * The current system and how it runs
 * The problems with the current system
 * The users
 * The skill levels of people using it
 * What they want the new system to do
 * Any preferences in terms of web based, phone based, application based. What platform are you developing for
 * Interview
 * Questionnaire (for multiple users)
 * Observation of current system

Make sure that all information on users, current system problems, proposed system features etc. comes directly from your research, otherwise it looks like you haven't done your research properly

Background to/identification of the Problem
You need to introduce your problem, a quick two paragraphs of what the problem is and how a computer might solve it. For example mention how the current system is paper based, slow and people are always losing things, the computerised system would be faster, secure and allow them to run reports and calculate things. But don't mention any languages or databases at this point, we will decide that at the end of the analysis.

Description of the current system
Describe the current system, what it does and how it currently stores its data. Describe the flaws in the current system, is it slow, secure, easy to query, easy to use, can it have multiple people use it at once, is it easy to access? Back up your description using as many resources as you can, including interviews, observations and pictures. This will prove to the marker that your project has a real client.

Identification of prospective user(s)?
In some instances your system will involve only one user, the person you are writing it for. In most cases it will involve more than one person. You need to recognise all the users, big and small, of your system.

For example if you were making a maths revision website you have the maths teacher as your main user, but who else is going to use the system? The students of course! You would then need to write how each of these user groups would use the system and how some users would have more access than others. The teacher would be able to change the tests and see the results of all their students, they should be able to add and delete student users. The students should be able to take tests and only see their results.

For example if you were making a stock control system then the system administrator should be able to add/delete/update and re-order items of stock, run reports and add/delete/update users and suppliers. The general shop floor staff should only be able to sell items and print out receipts. The customers will have no direct use of the system.

You should also mention for each user the skills they possess. For example if they use a Mac all the time then an interface similar to an OS X interface would be useful. If they use Microsoft Office 2010 then an interface similar to that software suite would be suitable.

Identification of user needs and acceptable limitations
Summarise your research findings, what do each of your users want you to do? For example:

The teacher needs me to create a system that
 * stores students high scores
 * shows student progress
 * allows them to add, edit and delete questions

The students need me to create a system that
 * allows them to log in
 * allows them to answer exam style questions

Limitations are slightly harder to list. You need to write down what your system won't be doing for reasons of time, complexity, or user preference. These might include the system not storing user log in details as these will be managed by LDAP or, a system not enforcing spin on a pool ball, as that specific feature isn't needed by the teacher and the developer not having enough time to implement it.

Data source(s) and destination(s)
In most cases you'll use a database, but you could also use a file-based system or xml. By now you should have mentioned a couple things that your project will need to store and process (this should have come from your interviews). Where are you going to get this data from?


 * What is it -> where is it from -> where is it going

For example the current system might say:

The new system would then look like (notice that there might be some more attributes):

Data volumes
An important thing to think about when building any system is how much data you will need to store and how much processing is required. This should come directly from your research and will influence how you complete your project and what sort of hardware you will need to use. For example if you only have one person sitting an online test at one time, you only need a simple computer. If you are looking to have hundreds of people using your system at once then you will need a very fast computer and probably a web based solution.

For example:
 * I will be storing several hundred customers and...
 * The revision system will store up to 100 different questions and 300 student details
 * Each student will have their attempt at each question recorded, making potentially 300*100 = 30000 question answer results
 * The system only needs to process one sale at a time because...

Data Dictionary
Like a dictionary describing all the words you can use in a sentence, this will record all the pieces of data that you want to store and process in your system. You will need to provide the following information for everything you will store data on:

If you are storing a database make sure that you have stored data on all the fields that will be in your database, for example the data above is storing data on a student in a school. What data will you need to store for your system to work?

If you are making a program, you will want to list all the variables that your program will store whilst it is running. For example, if you were creating a program to tally the score someone achieved in a quiz, you should list the variable that will store this score.

Warning: A very common mistake is to mis-size your fields. For example you are making a markbook system where you will store the age of students. The ages are between 11 and 16, so why not make the age 16 in length? The answer is because length sixteen allows you to store the age "9999999999999999 years", and this is impossible to have a student (let alone a human) that old. The length should be a more sensible 3. While the expected numbers are two digits long it is conceivable that the software may be extended to be used for older students one day and so the length should be set to cover this contingency. Do not repeat the "Y2K problem" where developers stored the year as only two digits causing millions of pounds to be spent fixing it when the year "ticked over" to zero again.

Data Flow Diagrams
There are many ways that you can draw data flow diagrams, so if your teacher tells you one way and the way you read here is completely different, don't worry. The important thing is that you show how data moves through the current system, where it is stored, where it will be processed and how you plan it to move through the new system. It is called a data flow diagram after all! For these examples we are using the Gane Sarson method.



There are four main components that you need to be aware of:

Using the descriptions we can see the diagram above means the following:
 * 1) A customer can enquire about store items, the system processes the enquiry and fetches the data from the item datastore, sending the results to the customer
 * 2) A customer can order an item, the system checks that the customer is real, checks the item is in stock, sends an order and finally sends the item and an invoice to the customer.

You need to produce four data flow diagrams, two showing the current situation and two showing the proposed system (this is not necessary on the current spec). For each you must show the following diagrams:
 * Level 0
 * Level 1

You can make them using a word processor but it's far easier to use specialist software. You can try to use dia or Open ModelSphere, which are both free. Alternatively you can use Microsoft Visio.

In software and systems engineering, a use case is a list of steps, typically defining interactions between a role (known in UML as an "actor") and a system, to achieve a goal. The actor can be a human or an external system. For example in a system where a user wants to invite some people to a party on a social network. Person:
 * 1) logs in
 * 2) selects to create an event
 * 3) picks a date and time from, using a date picker
 * 4) picks a date and time to, using a date picker
 * 5) selects a location, using a map
 * 6) adds a picture of the venue from their picture collection
 * 7) adds description
 * 8) selects private event
 * 9) sends invites

Entity Relationship Diagrams (for databases)
When thinking about how you are going to save data on your system you might decide to use a database, if this is the case you must include an E-R Diagram. If you aren't using a database explain that there is no need to complete this section. You need to recognise your main tables. There should be at least 3 tables and relationships between them. The tables don't have to be normalised at this stage but the relationships should be described in a little detail.


 * see chapter on Databases

Object Orientation planning (for Object Orientation)
For each class that you are using describe:
 * overview of what it does
 * inheritance
 * overriding
 * public and private variables
 * public and private methods

For example, the attributes of a monster class might contain:

you also need to note the methods that the monster class would use:


 * see chapter on object orientation

Objectives
This is the most important part of your Analysis, because this is how you are going to check if your end system meets all your user needs. You need to outline three sets of objectives that are all SMART and numbered: As far as possible all your objectives should be SMART. But what does SMART mean? As you can probably recognise, several of the incorrect objectives above fail to meet multiple SMART criteria. Test yourself, which of these objectives are SMART enough to get you started on a good project:
 * System Objectives
 * Processing Objectives
 * User Objectives

Get these numbered objectives signed off by your client and put evidence in your writeup. This might involve copying an email into the document.

Potential Solutions
There are several ways that you could solve the problem at hand you need to list at least 3 different options. For each of them you need to mention positive and negative things and then argue out your chosen solution.

For example. If I was tasked with making a stock control system I could use the following things (with a lot more detail!)

Chosen Solution
From the choices that you suggested pick the best one and explain why. This is going to be how you are going to solve this problem!

Other evidence (OPTIONAL)
In this section you need to justify that the techniques you used to write your analysis were correct and made sure that you managed to get all the objectives of the new system. Go back to the questionnaires, interview and observations. Include them here and explain how this made sure that you could produce a comprehensive Analysis.

Next steps
Now you have completed your Analysis you need to start making your project. You should have some idea of how you are going to make your system and you now need to start acquiring all the skills you will need to complete this project. Get yourself a text book about the programming language you have chosen and make sure you can perform some simple tasks using it. At this point it would be a good idea to write a quick list of skills that you will need to learn.

Whilst you are getting those skills, head over to Design