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