Chapter 5

Design Decisions and Project Development




Introduction

This chapter discusses the decisions that were made during the course of the project about how the system would operate. These decisions were sometimes constrained by time, complexity, or other external factors, and sometimes they were made to try and ensure that the system was easy to use or met its requirements. Each decision listed includes the alternative solutions that were considered, with the reasoning behind the final decision.
The chapter will also show how the system could have been developed differently if the constraints had not existed. The chapter is divided into three sections:

5.1 Design Decisions
5.2 Constraints Upon Design Decisions
5.3 Development Method Employed


5.1. Design Decisions

During development a number of decisions had to be made about how to implement certain aspects of the design.
The main decisions that were made were:

  1. What programming language to use for the project
  2. How to create the user interface
  3. How to retrieve the web pages
  4. What to do with graphics
  5. How to handle tables of data
  6. How to present the formatted information to the user
  7. How to store the database of pages
  8. What to do with shockwave flash presentations and other active content
  9. How to most efficiently get the pages from their respective locations
  10. What links (if any) to follow on the pages, and how deep to follow links
  11. How to handle tables etc. on sub pages
  12. How to store users subject preferences
  13. How much customisation to allow for individual page downloads
  14. Whether or not to store profiles for multiple users

The alternative solutions to the above problems, with their pros and cons, which solution was chosen and why are listed below:

  1. What programming language to use for the project
C/C++ was chosen because it would be more challenging than VB, and it is what would be used by a professional organisation if they were do develop the system.

  1. How to create the user interface
A windows application programmed in C was chosen, because this allows a high level of control over the operation of the interface, and allows a very professional looking application to be produced.

  1. How to retrieve the web pages
COM OLE objects would have been a good method, but insufficient documentation was found to make this feasible – the timescale was too short to spend a lot of time researching it. Windows Sockets were chosen instead.

  1. What to do with graphics
The option of using the alt tag where used was chosen as the best option because it attempts to convey some of the meaning of the image to the user.

  1. How to handle tables of data
The “partial-automation” option was chosen as a compromise between ease of setting up and accuracy of information. For some tables, a slightly altered version of the guidelines for “Table rendering by non-visual user agents” in section 11.4 of the W3C HTML 4.0 specification [HTML] could be used.

  1. How to present the formatted information to the user
Presenting the information using HTML pages was chosen because they allow easy creation of hierarchical documents and the use of talking web browsers.

  1. How to store the database of pages
The comma delimited text file was chosen to store sites and categories, because it can hold the same information as a database without the added complications during implementation.

  1. What to do with shockwave flash presentations and other active content

  1. How to most efficiently get the pages from their respective locations
Downloading the pages concurrently was chosen as the best solution, because it minimises the amount of time spent online, and therefore the cost to the user.

  1. What links (if any) to follow on the pages, and how deep to follow links
Setting up link following policies for individual pages at the time of setting up the page database was chosen. This provides enough flexibility for most people. Link following is limited to one depth, because it greatly simplifies the code and reduces download time without a great loss of content.

  1. How to handle tables etc. on sub pages
The more complex solution was chosen, using settings applied to sub-pages grouped using filters of some sort. Choosing a simpler system would limit the pages that could be used with the system too much to be practical.

  1. How to store users subject preferences
The INI file method was chosen, with an INI file stored in the application directory to store the preferences. It is a simple solution that meets the needs of the system.

  1. How much customisation to allow for individual page downloads
It was decided not to allow the user any control over individual downloaded pages, because the extra complexity is not justified in terms of the benefits it would bring.

  1. Whether or not to store profiles for multiple users
It was decided not to allow multiple profiles because in most cases this feature would not be necessary, and it would add a great deal of complexity to the system.


5.2. Constraints Upon Design Decisions

Some of the design decisions listed above were constrained by external factors, such as time, and the author’s level of expertise in the area.
This section describes which decisions would have been taken differently in a perfect world where development was not limited by these constraints.

Ideally the system could have used an Internet Explorer COM object to implement the connection to the Internet and the downloading of pages. This would have provided a more flexible base from which to build the rest of the application. It would have cut down the amount of code that relied on specific versions of various windows components, thus making the code more future-proof. It would have made the application easier to adapt to changes in new versions of the HTML language by using the built-in functions of the Internet Explorer object to interpret the new features appropriately. It could also have made use of the built in functions of the Internet Explorer model to convert the web pages to plain text, although it does not really do as good a job as the parser outlined in this report.

It may also have been a good idea to use MFC to create the windows interface, as this simplifies the construction of windows applications, and makes links with COM objects easier to implement. It is also supported by a number of standard template libraries that aid in the development of systems like mine.

Unfortunately insufficient information about how to use COM objects in C++ was found, and it was therefore impossible to do so. There was not enough time to learn how to programme MFC applications, so this was also impractical.

The project would have benefited from a much more reliable way of making a dial-up connection than that used. Unfortunately, there was not sufficient time to allow coding of a more complex system. Getting access to a machine running Windows NT that had a MODEM also proved problematic. This precluded implementing any sort of automated dial-up networking for this operating system.


5.3. Development Method Employed

The method used when developing this project followed a spiral development model. It used a system of incremental prototypes, releasing new versions for testing every time a major new function was added. This enabled testing that each new function worked fully before adding any more functions. This simplified the debugging process, as any new bugs were usually limited to the new functions or problems with the integration of the new functions with the old ones.

Each time a new version was released for testing it was accompanied by a document containing “release notes” that listed new features that had been added, and known problems with the system. A copy of the most recent set of release notes is included in Appendix D. These release notes allowed anyone who tested the project to concentrate on the new features to ensure that they worked properly.