Webber: A Website Construction Application
Introduction
Objectives
The purpose of this project is to investigate the development and construction of an
application using object-oriented programming techniques and to explore the potential
for using such techniques to create applications for the Internet. This will be done
by using the Java programming language to implement an example of one of the most
popular types of program currently in use on the Internet - a web-browser. To provide
a comparison with applications that are not object-oriented or based on the Internet,
the application will also include an implementation of a very commonly-used program
component - a text-editor. Finally, to adhere to the philosophy of object-orientation,
the application will be implemented as a collection of re-usable components and the
public features of each component will be fully described. The project deliverables
will therefore consist of a software application and a package of re-usable components.
Object-Orientation
In recent years there has been a great deal of interest in the object-oriented paradigm,
a methodology which encourages programmers to think in terms of self-contained, re-usable
program components. Applications written in an object-oriented language are structured as
a collection of objects that interact with each other through a clearly defined interface.
Each object represents a distinct sub-section of the program which can be modified or
replaced without affecting any other part of the program, so long as the interface is
correctly implemented, which greatly simplifies program-maintenance. Some general-purpose
objects used in an application might also be used in another application with little or no
modification, saving a lot of time in the application development process. Microsoft's
Standard Template Library (STL) is an example of a toolkit of such objects designed for
the C++ programming language.
The Internet
The Internet is currently the focus of a great deal of attention, due in particular to
the phenomenal success of the World Wide Web. This has made the Internet much more
'user-friendy', encouraging the development of a market for Internet Service Providers
(ISP's) and provoking a lot of interest from the wider business community. Internet-based
application development looks set to become a growth industry as the Market moves its
showrooms and outlets into 'cyberspace'.
Java
The Java programming language is one of the most recent developments in object-oriented
technology. It has extensive built-in support for developing internet-based applications
and is designed to hide virtually all platform-dependencies, allowing applications to be
compiled once and then executed, without modification, on any machine that supports Java.
The wealth of literature that has accompanied the most recent release of Sun Microsystems'
Java Development Kit (JDK1.1) and the fact that Java is now being taught to university
students testifies to the popularity of the Java language.
Structure of this Document
This introduction is followed by an informal description of the software system
that is to be implemented. The next section, 'Formal Specifications', uses a
formal notation called Z to develop the informal description into a more precise
formal specification that defines the main components and operations of the system.
Formal specification languages can seem a little obscure to those without a
mathematical background, but they can be useful in software development because
they provide a clear, unambiguous system-specification using a notation that is
based on strong mathematical principles and is independent of any particular
programming language. As Jonathan Jacky encouragingly states at the beginning
of his book, 'The Way Of Z',
'I learned Z (pronounced zed) when I got tired of programming by trial and error.'
Though much of this project, particularly during the early stages, actually was
developed by trial and error and the Z developed in parallel (and sometimes later),
the application of formal methods to the development process has demonstrated their
relevance and has helped to clarify their position in the array of development tools.
The next section, 'Using Java', discusses the effects of using the Java language to
develop the application as compared with a language that is not object-oriented but
is currently very popular, namely C. This section is intended to be of use to the
many C programmers who may, in the near future, find themselves learning Java.
Following the 'Program Structure' section, which gives a brief overview of the
structure of the implementation, a detailed description of the application is given
in the form of two 'package' references. Java provides a system that allows related
groups of classes to be gathered into named packages, allowing another layer of
structure to be imposed upon an application. This particular application has been
divided into two packages; the library package contains classes which perform
useful operations that might be included in any type of application and the
library.html package contains classes which would be useful to applications that
manipulate HTML files. Though this entire application basically consists of these
two packages, they are designed to be as re-usable as possible and the reference
sections provide complete documetation of their public functionality.
The final section of the main part of this documentation, 'Conclusions', gives
an analysis of the implementation in relation to the objectives of the project.
This is followed by three appendices; 'Resources', which lists the materials and
individuals that assisted the development of the project; 'User Guide', which
describes the user-interface for the application; and 'Source Code', a complete
listing of the Java source files.
Go To: IM250: Industrial Project