ICT375 Advanced Web Programming
ICT375 Advanced Web Programming
The assignment consists of a software application development component and a report. The software component requires you to develop a client and server architecture based application. The server is to be implemented using Node.js. You should re-use (modify and expand as needed) the server you developed for assignment one. The client will be a Web browser. All communication between the client and server will be via the HTTP protocol.
The client will provide certain options for the user to choose from, and must initiate connection with the server. The server will listen on a port number and must process the client requests, based on the resources requested. It must then respond to the client with the requested resources. If the server is unable to respond with the requested resource, a relevant error message must be sent in response. The client will then display the response (the requested resource or an error message).
Initial connection to the server will be via a web page (i.e. index.html or index.js). This means that client-side and server-side code will exist on the machine where the server is located (for the assignment this must be ceto.murdoch.edu.au; you may develop the application on your own computer, but it must be thoroughly tested and run successfully on ceto.murdoch.edu.au before submission). You must use the port number given to you in lab 1 or via email;DO NOT use port 80 or any other port number.
You will need to demonstrate use of XML technologies (XML, DTD, XML Schema, XPATH, XSLT, etc.) and JSON technologies (JSON and JSON Schema) in order to meet the assignment requirements as outlined in the Functionality section below. All tasks outlined in that section are required to be attempted. Marks will be allocated as outlined in that section, and according to the quality of your solution in achieving the required functionality. We are looking for an application that demonstrates a good understanding of the XML/JSON technologies. You may need to research/investigate appropriate technologies beyond that covered in the lecture notes, to meet a high standard in your application.
A report must document the design details of your solution and testing strategy, as outlined in the Report section below, and should be submitted in PDF format. It should be comprehensive and clear, as it constitutes the documentation requirement for the assignment.
The completion of this section will require a good understanding of material covered in the lectures and tutorials for Topics 1-8, and will require further research investigation to be undertaken on your own behalf. You are required to develop a client and server application to deal with client requests and server-side functionality, where all communication between client and server will be via the HTTP protocol.
The client-side program will constitute a minority of the marks allocated for the Functionality section (20 of the 70 marks).
The client will be a Web browser, which by default uses HTTP protocol. The client- side program will use HTML to allow initial connection with the server via a web page, typically named index.html. This web page should constitute a form, from which the user may choose the options outlined below. The output requires tabular and graphical presentation, so it is required that AJAX be used for output (i.e. the client-side must be a single page application). Though the form is quite simple (with selection, output, and submit/reset buttons), it should demonstrate a reasonable effort for presentation. Effort should be made to make any web pages presentable and with some consistency. That is, CSS should be used, and page components should not be just positioned in the top left hand corner of the browser.
The following tasks are core components that your client-side software is to achieve:
- The client program will provide a web page to allow a user to access information regarding weather measurements (refer Server tasks below). It should use relevant information gathering techniques (such as check boxes, radio buttons, drop-down lists, etc.) to allow a user to access information about particular months of a nominated years (the user selects). As the designer, you can determine what types of information gathering techniques that are presented to the user. However, those chosen should be designed for the user’s convenience.
- The user must be able to select the weather measurement (wind speed, solar radiation, or both), the time frame (between months for a nominated year), and output format (table, graph, or both) for results. The selection of the time frame may be restricted to a 1 year period (per user selection), and the months should determine the time frame.
- The client will display the results (returned by the server) in a tabular format (columns for all months of the nominated year and rows for the sensor readings) and/or a line graph (x axis for the specified months only of the nominated year and y axis for the sensor readings). For the table, if particular months have no data, leave those cells empty. Effort for good presentation of this output is expected. Some aspects of tabular and graphical display using jQuery have been covered in the lecture material (Topic 8). However, you will need to research their usage further to be able to achieve the display for this assignment.
- The output display must appear in correct proportion on desktop computers, laptops, and mobile devices (such as tablets and smart phones); refer Server tasks point 7.
The front page of the report document should include the unit code and unit name, the assignment number, your name and student number. The body of the report document requires inclusion of the sections listed below. The sections must be either numbered or given a descriptive section heading (in the order listed below).
- An introduction providing an overview of the assignment, including any assumptions being made in your solution (assumptions will always be made, but cannot contradict the assignment requirements).
- A full description of each of the XML AND JSON technologies that your solution employs. Also as part of this section, provide an overview of how the chosen XML and/or JSON technologies work together to solve the parsing and processing of an XML and/or JSON document, and provide a realistic justification for each of your choices.
- A detailed description of the overall design of your solution. That is, how all of the application components work together to provide the required functionality. This description should include both the client-side and server-side parts of the solution. Also as part of this section, include and reference in your description appropriate diagrams to help clarify your design description (for example, structural organization, data flow, state transition, etc…). Also provide a realistic justification for each of your design choices.
- A description of the data structures that your solution utilizes. Remember, an array (including associative array) is a data structure, as is an object. You must provide an explanation of how the data structure/s were utilized, and a justification for why the data structure/s were utilized the way they were.
- You should test the application as a whole, by demonstrating that each client request is successfully completed (or an appropriate error response, sent by the server, is displayed in the browser). You should also test each URL individually (listed in index.js and catered to by the request handlers). This can be done by specifying a URL in the browser (or using ‘curl’; this utility is installed on ceto.murdoch.edu.au). Obviously, testing via a browser will require submission of screen shots as evidence of testing. You should also test for errors in the input URL, with the browser (or curl) displaying the appropriate error response sent by the server. A thorough testing regime / strategy AND evidence of testing the processing on the server-side is also required. To assist you to verify that your retrieval, parsing, and processing of data is correct, two spreadsheets (with the same values as theXML an JSON files) are provided. You should use these spreadsheets to calculate the actual values that can then be compared to your application output. However, this is just to indicate that your application is processing correctly, so do not just restrict your testing regime to these two files.
- A conclusion to provide a detailed summary of what you have successfully achieved. You should also indicate (as a sub-section) what you were unable to achieve in relation to the required Functionality. You can also highlight any points that you consider demonstrate good design, clever pieces of code, etc. In your report be precise with your terminology, particularly with the distinction between modules and functions, the different data structures, parameters and arguments, objects and other code components, and the XML OR JSON technologies.