EL2311 Assignment – Coursework 2017.

 

 

1.0 Design Brief

 

Overall Aim.

 

To implement a multi-threaded software system in C#, that can read data in standard XML, store and retrieve data from an SQL database in a user friendly manner.

 

2.0 Assignment

 

2.1 Assignment Aims

 

Students will be provided with the following software (on blackboard) :

 

An Access database file.

 

Five XML files with data.

 

The aim of the coursework is to give students practical experience in object oriented software development by implementing a system in an object oriented language (C#) that involves a number of real-world engineering applications (writing threaded code, reading standard data format (XML), database access and storage, user interface design).

 

2.2 The System.

 

UCLan have conducted a series of experiments measuring wind speed and temperature during a Unmanned Autonomous Vehicle (UAV) flight between UCLan Preston Campus and UCLan Burnley Campus.  The UAV flies in a roughly linear flight path that takes around 100 minutes.  During the flight once every second the UAV stores the following data in an XML file:

 

Time (this is an incremental integer count started from 1).

The UAV’s current Latitude (a double).

The UAV’s current Longitude (a double).

The UAV’s altitude (a double measured in Metres).

The current measured air temperature (a double measured in degrees Celsius.).

The current measured wind speed (a double measured in Metres per Second).

 

 

You have been given the task of writing a software system that can take the readings file, save its contents to a database and allow engineers to access the data.

 

The database file (Readings.mdb) contains a single empty table (UAVData) that has the following structure :

 

Day

Time

Latitude

Longitude

Altitude

Temperature

WindSpeed

 

Where :

 

· Day is the day the readings took place, this is an integer value representing which of the five datasets is being stored (note the UAV is only ever flown once a day).

· Time is the time the UAV has been flying, in seconds.

· Latitude is a double indicating part of the UAV GPS co-ordinates.

· Longitude is a double indicating part of the UAV GPS co-ordinates.

· Altitude is a double indicating the height the UAV is being flown at (the UAV tries to remain around 50m but this can vary).

· Temperature is a double, this is the air temperature measured by the UAV’s sensors.

· WindSpeed is a double, this is the Wind Speed measured by the UAV’s sensors.

 

The databases table has a composite primary key consisting of Day & Time.

 

2.3 Part One - Software development.

 

The student is required to write a C# program that performs the following actions :

 

· Load and Parse the 5 XML files generated by the UAV.

· Permanently stores the data in the database file.

· Allows a novice user to run some basic queries on the database. (See below)

· Allows expert users to run custom SQL queries on the database. (See below)

· Allow the GUI to remain responsive whilst loading and storing the (quite large) XML files by implementing threaded code.

 

There are two types of user that you need to account for when writing this program.

 

1) Novice Users.  These users know no SQL or database theory at all, they need to be able to retrieve simple information out of the database.  The information your program should allow them access to is as follows :

i) For a user selected day, the maximum and average readings of the temperature and wind speed sensor

ii) For a user selected day, the minimum readings of the temperature and wind speed sensors.

iii) For a user selected day, all the readings (along with time) where altitude exceeded 55M or dropped below 45M.

 

2) Expert User.  These users should be allowed to write any SQL query they wish and have it run against the database.  The program should return sensible errors any time the SQL written is not valid.  The expert users should NOT be allowed to add, modify or delete data from the database.

 

 

 

 

2.4 Part Two - Documentation

 

Students are required to produce a report that details their development of the program written for part one.  The report should include the following sections :

 

· Development description.  A detailed account of what the student did in order to produce the submitted program.  This may include diagrams showing data / process flow and control, UML etc., any necessary assumptions made, testing details, explanation of algorithms used etc.

 

· Brief discussion on ideas for improving the program, this discussion is theoretical and the student is not expected to implement changes, therefore the discussion should not be limited to changes that are either within the student’s ability range or within the time allocated for the coursework.

 

3.0 Marking Scheme

 

This assessment is worth up to 50% of the marks for the module, and covers the following module learning outcomes :

 

· 1. Develop appropriate software solutions to technological problems.

· 2. Describe and apply features of an object oriented programming language.

· 3. Effectively exploit the programming language and development environments.

· 4. Effectively apply software design and development principles.

 

The breakdown of the marks for the assignment is as follows :

 

Part One – Software Development (Total 70%)

Part Two – Report (Total 30%)

 

Software should be appropriately commented and should employ the techniques and principles of object oriented programming demonstrated in the lectures and labs where appropriate.

 

Reports should be produced to a professional standard, reports that are badly formatted and/or contain numerous examples of poor grammar/punctuation/spelling may be penalised.

 

A marking scheme is provided in Appendix A.

 

Students are heavily encouraged to get the basic program working first (2.2  range) before attempting higher value features, in particular it is highly recommended that students not implement threading features until they have a working version of the system running in a single thread.  Students should consider producing different versions of their software in case an added feature breaks currently working code.

 

4.0 Timescales

 

Both the sourcecode (in the form of a zipped Visual Studio Project) and the report should be uploaded to Turnitin on the EL2311 Blackboard space 11:59pm on Friday 3rd March.  Standard penalties for lateness apply.

 

This is an individual assignment, please refer to the student handbook for details regarding fairness and plagiarism.