(Draft - Released Monday 26 September)
Due date
Midnight on Sunday 23 October 2011
Weight
30%
Task
Your task in this assignment is to refine and extend your
solution to Assignment 2 (or my partial solution to Assignment 2)
into a simple but potentially practical Web application or service.
For convenient reference, much of the following specification repeats what
was required for Assignment 2. New requirements are emphasised.
Submitting a solution to Assignment 2 is not sufficient to
pass the assignment.
Functional requirements
- It must manage (at least) a set of categories, a set of items and a
set of users. Each item is associated the user who created or added
the item. Each user must have an associated profile.
- Categories may be created either by the administrator
or by the set of users (in this case called tags), depending on the
service. An item may be associated with exactly one category or with a
set of categories, depending on the service.
- Each item must have a name, a description, a
creator, one or more images, and other fields appropriate to the
service.
- Users must be able to register, login, logout, view
and change their profile, and change their password.
Logged-in users should see a visual reminder that they are logged-in
while they are logged-in.
- Logged-in users must be able to create new items and update or
delete items they have created as appropriate for the service.
(Update and delete commands should be on the item details page.)
- Administrators must be able to conveniently add, update and
delete categories, items and users from the administrative interface,
ensuring the database remains consistent when doing so.
- All users must be able to view recently added items,
browse items in a particular category and search for items by name or
description.
- Browsing and searching must return lists of item summaries. Each
summary must give the item's name and other information appropriate to
the service (but not full details of the item). Each such
summary must contain a link to a complete description of the item.
- All (potentially long) lists resulting from browsing and searching
must be paginated (but not the short list of recently created
items).
- Logged-in users must be able to comment on current items.
All users must be able to view comments made on current items.
- The service must use dates or datetimes in a nontrivial,
interesting and practical way. (E.g., in an auction service, items are
no longer for sale and bids may no longer be made after a closing
datetime. Items may expire or become inactive at some point in time.)
- More generally, the service must provide some nontrivial
application logic. (E.g., in an auction service, valid bids must be
higher than the previous highest bid and must be made before the
auction closing date.
- Users must be able to request an Atom feed of items
currently in a particular category.
- The service must provide a clear, consistent,
usable, two-column user interface, consistent with common
practice, implemented using CSS positioning.
- The service must not deal with any relevant payment issues.
- The service must provide all natural and
necessary features to be usable for its particular purpose.
- I reserve the right to add additional functional
requirements within the next two weeks.
Implementation requirements
- Your submission must use a single Django project, one Django app
for items and one Django app for user profiles.
- It must use URL patterns, models, views and templates. You can use
either user-defined views or generic views.
- All (generated) HTML documents
must be valid HTML5 documents.
- It must use cascading style sheets to provide a clear,
consistent, distinctive appearance. (But don't just copy my style
sheet - write your own.)
- It must use JavaScript and Ajax to provide a richer user
interface than is possible without them.
- It must use session variables to maintain state associated with
a particular session.
- It must use transactions where appropriate to ensure data
integrity.
- It must validate and sanitise all input data.
- It must be implemented to avoid XSS, SQI injection and CSRF attacks.
- It must use unit tests to demonstrate that
either your item detail URL pattern and associated views are
implemented correctly or, better, that your item update URL
pattern and associated views are implemented correctly.
- It must use good program structuring techniques. As a
minimum, all files should be well commented and, ideally, there should
be no unnecessarily repeated or unnecessarily long code.
- For our convenience, (at least) the home page of your application
must contain the name and student number of the developer.
Documentation requirements
Documentation must be in the form of one or more valid HTML5
documents that identifies the project, describes precisely what the project
does (and doesn't do), summarises how to use the project, briefly
describes the implementation of the project, and provides any
other useful information about the project.
The project page(s) must contain link(s) to the documentation page(s).
Note that this is different from Assignments 1 and 2.
Suggestions
Clarifications and more detailed suggestions may be given in lectures and
laboratories. Ask me if they aren't.
Assessment criteria
We expect the structure of your application to be clear, simple,
standards-conformant, validated, and well-documented. We expect the
organisation and English in your implementation and documentation to be of
high quality.
Assessment of your assignment will be based on functionality,
implementation, documentation and overall quality. We will award
approximately 2 marks for identification and specification of an
interesting, practical service, 18 marks for functionality, 4 marks for
interface and interaction design, 4 marks for implementation quality and 2
marks for documentation. At least 12 of the functionality marks will be
for work that extends what was required for Assignment 2.
Marking will be done more strictly than for Assignments 1 and 2.
Submission Instructions
Ensure your database contains several items in
at least two categories, and contains at least one registered user in
addition to an admin user.
Every student must send me an email from your University
account stating that
you wish to submit your assignment. The email must be prepared exactly
as follows:
To: r.topor@griffith.edu.au
From: student email address
Subject: 7401ICT Assignment 3 Submission
The body of the email must contain the following:
- Your official student name and number.
- The exact path to your
Assignment 3 project directory, e.g.,
/export/student/s1234567/7401ICT/assignment3.
- The URL of your project home page, e.g.,
/home/.
- The URL of your project documentation, e.g.,
/static/html/doc.html.
- An admin username and password (preferably admin
/ admin) for your project.
- At least one other username and password for a registered
user who has added items to the database.
- A zipped archive of your project directory,
e.g., s1234567_assignment3.zip, as an
attachment.
I will then unzip your zipped archive in my own file
system for testing and evaluation.
Other information
- Plagiarism will be dealt with according to standard University
policy.
- All use of work done by others must be properly cited.
- Extensions will not be granted except for medical or other similar
reasons.
Last updated: $Date: 2011/10/03 03:38:26 $, by Rodney Topor