System design
With any system being developed, design is a very important
aspect which can make the development process considerably
easier and ensures that all user requirements can be met.
Pages of the System & User interface
It is helpful to highlight the necessary pages within a system
before beginning development as it makes system development
easier and ensures that the system contains all the necessary
pages. If the base system is developed and then the other
required pages added one by one then problems can arise as
the code matures and design problems may arise. From the identified
user requirements I can identify the following required pages:
- Index page / User identification
- Error message
- Listing of subscribed news groups
- Listing of known news groups
- Listing of all available news groups
- User preferences
- Listing of articles within a specific news group
- Compose article
- Display article
|
Database design — KISS
KISS is a well known computing acronym which represents “Keep
It Simple Stupid”, meaning that design and implementation
of any system should be kept as simple as possible. With this
in mind the design of the database to store the user preferences
was kept as simple as possible, while still being able to
offer the storage required.
The availability of a Perl module named ‘News::Newsrc’,
used to “manage newsrc files”, meant it would
be beneficial to store a user’s newsrc as a single data
element, or in the case of the database table, a field. With
this in mind, following table was produced to store a user’s
preferences.
Field name |
Field type |
Description |
remoteuser |
varchar(25) |
Stores the user’s SoC username - used for individual
user identification |
fullname |
varchar(25) |
The user’s real name - useful when posting articles
to a news group as other readers can identify a person
by name, rather than by e-mail address. |
email |
varchar(25) |
An optional alternative e-mail address, rather than
simple using the remoteuser field to construct an e-mail
address. |
newsrc |
text |
The field responsible for storing the user’s newsrc
information file, without this the user would not be able
to subscribe to groups or identify articles that have
not yet been read. |
|