(Under construction)
Review
Wep application architecture
- Client (browser)
- Web server (plus server-side programming language)
- Database server (plus database query language)
Browser standards
- HTML 4.01 and HTML5 (content)
- CSS 2.1 (CSS 3) (presentation)
- JavaScript
(ECMA-262, ECMAScript 3) (behaviour)
Server-side platforms and frameworks
Client-side user interface libraries
Standard software quality attributes (ISO/IEC 9126)
- Functionality
- Reliability
- Usability
- Efficiency
- Maintainability
- Portability
See SoftwareArchitectures.com
for a more extensive list of generic quality attributes.
(Additional) Web application quality issues
- Database design issues:
- Use BCNF: Every table/model defines a single, simple,
well-defined entity or relationship between entities.
- Database transaction management:
- Ensure transactions run atomically..
- Security issues:
- Cross-site
scripting (XSS) attacks (injection of HTML and JavaScript into
a Web page).
Handled in Django by default escaping of all user input.
- Cross-site
request forgery (CSRF/XSRF) attacks (redirect authenticated
user to a malicious site).
Handled in Django by middleware class and use of
csrf_token in forms.
- SQL injection
attacks (execution of unintended SQL queries).
Handled in Django by avoiding SQL completely. Handled in other
frameworks by compiling SQL "patterns" and passing arguments into
these patterns.
- Many others
- Performance and scalability issues:
- Caching (etags)
- Database avoidance
- Distributed Web servers
- Distributed database servers
- Horizontal vs vertical scaling
- Cloud storage and computing
- Design and implementation issues:
- Interaction design
- RESTful (ROA) design
- Modular design
- Incremental implementation
- Internationalisation and localisation
- Isolate all system text strings (in development)
- Provide translations for all system text strings
- Specify local formats
Django-specific quality issues
- App design (cohesion and coupling: each app should have a clear focus)
- URL pattern design (cf. RESTful Web Services design)
- Model design (cf. database design)
- View design (cohesion)
- Every view should perform a single, well-defined operation.
- Every view that processes a POST request should finish by
redirecting to an appropriate URL. (Actually, this is a
general Web application principle.)
- Template design (inheritance, standards, presentation)
- (Form design: minimise content, consider layout)
- Selective use of generic views
- Observing Python style guidelines:
- Pattern design:
- List-detail pattern
- Combined-view pattern: use same URL pattern and view to display
form and process form data.
- Pagination pattern
- Many others
- Unit test design:
- Use test-driven development (TDD) for all software
development.
- Use of existing software (DRY):
- Standard contributed apps, e.g.,
django.contrib.auth,
django.contrib.comments,
django.contrib.syndication.
- Django
application list
- Example: django-registration
- A user signs up for a new account, which will be inactive by default.
- An email is sent to the address they used to register,
containing an activation link.
- Once they click the activation link, the account becomes active and they can log in as normal.
- The Django
resources page is an unofficial collection of tutorials, reusable
applications, stand-alone projects, and so on.
Standardised Web application construction
Often you don't have to build an application yourself from scratch. In
some cases you can download and configure an application and run it on your
own server. In other cases, you can configure the application and run it
on the provider's server. Examples:
- Discussion forums:
- Wikis:
- Blogs:
- Shopping sites:
- Many others
Examination information
The examination will require you to be able to write intelligently, give
examples, and solve problems relating to all the above topics (relative to
the attention they received in the course). More specifically:
-
It will cover all aspects of HTML5 and CSS and HTTP.
-
It will cover all aspects of Web application architecture and design.
-
It will cover all aspects of Web application development in Django (and
Python), particularly projects, apps, settings, databases, URL patterns,
models, views and templates.
-
I will cover the overall design of a large Web application, including app,
URL pattern, model, view, template and transition diagram design.
-
It will cover XML and JSON, RSS/Atom andAatomPub, traditional Web
Services, RESTful Web Services, cloud storage and computing services such
as Amazon S3.
-
It will cover the general principles of JavaScript and Ajax and jQuery.
-
It will cover Web application development in
ASP.NET and PHP, and the relationships between them and Django.
-
The above list may not be complete: see the course lecture
notes for a more comprehensive list of what may be covered.
-
As 7401ICT is a Masters course, you can expect some high-level comparison
and analysis type questions.
-
The examination is a mixture of short answer, problem-solving and design
questions. Many questions will require answers in clear, precise,
grammatical English, using complete sentences and paragraphs, balancing
completeness and brevity.
Here is another topic list and some sample questions to give you an idea of
what to expect:
Here is last year's examination:
Oh, it's a 3-hour, closed-book examination, which should take much less
than 3 hours to complete.
Examination technique
Study actively, in small groups, over an extended period.
Learn the material thoroughly, not vaguely. Seek feedback.
Sleep the night before.
Don't panic!
Allocate time roughly proportionally to marks available.
Write in ink not pencil. Express yourself clearly (and legibly).
Balance completeness and brevity.
Review your work.