Specification Documents
This Section is a watered down version of the full system specification and design documents. The full documentation can be found in the
downloads section.
Contents
Problem Statement
The common approach stated above (SQL database & Server-side script) has a problem in that the data is stored in a proprietary, binary format. Although it can be converted to the proprietary format used by another database relatively easily, if required, is not directly compatible (eg MS SQL Server does not store its data in the same format the MySQL does). Additionally there is the possibility that this binary storage format may become obsolete, rendering the data practically irretrievable. EG, it is currently impossible to make any changes to an MS Access 95 document from the Access 2000 DBMS. In the future the Access product line may be terminated, this could eventually lead to the general inability to access the document.
The method used to retrieve and display the data varies from implementation to implementation. If a public forum was accessed via a set of ASP scripts and the web host decided to move all hosting packages from ASP to PHP as a cost cutting measure. The forum owner would either have to transfer the entire forum to another web host (potentially at great cost) or manually re-code the entire forum for use via PHP (also costly and time-consuming) or transfer the forum to a different, PHP based, forum system (again costly and potentially impossible due to differing data models).
Functional Requirements
These are the tasks that the system shall endeavour to perform. The minimum requirements will be shown in a normal font face with the additional requirements shown in italics. The additional requirement should be implemented based on the development and documentation time available.
- Tasks
- Administrator can create �Forums�
- Users can create and �Reply� to �Threads�
- Truly Threaded discussion
- Replies can be made, and related to other replies. [see bbs.adslguide.org.uk]
- A Thread could be viewed in either threaded or flat view [adslguide (flat)]
- Ability to post hyperlinks
- Compliance with the 'standard UBB� mark-up code
- Search
- A 'recently changed' thread list
- Forums should store:
- Forum Name,
- Description,
- A collection of threads.
- Threads should store:
- Title,
- Thread Starter (Member reference),
- Collection of Posts,
- Date/Time.
- Posts should store
- Title
- Poster (Member reference),
- Body Text,
- Date/Time
- Members have the following stored about them
- User Name
- Password
- Display Name
- Administrator Status
- �Tagline�
- The tag line is a short amount of text that appears with the members display name and usually describes a person�s online persona, but could be anything. EG. If a members display name was �Captain Insanity� the tagline could be �space adventurer�.
- Post �signature�
- General Data Requirements
- All data should be stored as standard text and converted at runtime, if necessary, according to usage requirements.
- This requirements is in reference to interoperability, see requirement 16.
- All data should be stored as standard text and converted at runtime, if necessary, according to usage requirements.
- Customisable board �identity�
- Logo
- Brief Description
- Colour Scheme
- Parent Website
- Colours and fonts need to be easy on the eye
- Simple, quick and easy to understand interface
- Minimal �fancy� graphics/flash etc
- Obvious labelling of actions for ease of navigation.
- Logical ordering of posts
- The general system structure should be such that it can be easily ported to other platforms, operating systems, programming languages, etc
- This applies to both the data storage format and the methods for displaying and creating/updating the data.
- Ability to switch from server-side processed to client-side processed versions of the message board system
- Client side processing should at minimum allow for browsing of the forums.
Data
Interface
Interoperability
All of the common message board features identified during the analysis were included, along with many of the features suggested by those persons interviewed. The following, user suggested, features were deemed to be out of the scope of this project. They might perhaps be more suited to a later version of this system, once the infrastructure of this basic solution has been implemented.
- Email notification
- Private messaging
Non-Functional Requirements
These are the limitations that the system should be able to operate within. As the functional requirements state that the system structure should be portable, these requirements only apply for this first implementation of the system.
- System Architecture/Operating System
- Intel Compatible platform
- Microsoft Windows OS
- Microsoft Internet Information Services 5 web server
- Active Server Pages
- MSXML 3
Web server/Scripting Language
XML parser/XSLT Processor
XML structure
After conducting research into the suitability of using a single large file vs. many smaller files it was decided to opt for the latter. This section will describe the files perpose, list the DTD for the file and provide and example of each of the files forums.xml, forum.xml, thread.xml, members.xml and config.xml.
forums.xml
Stores the name and id of the forums held within the site
DTD forums.dtd
<!ELEMENT forums(forum+)>
<!ELEMENT forum(name)>
<!ELEMENT name (#PCDATA)>
<!ATTLIST forum forumid CDATA #REQUIRED>
Example
<forums>
<forum forumid=�1�>
<name>Sample Forum</name>
lt;/forum>
</forums>
forum.xml
Stores more specific details about an individual forum (name, description and list of thread titles and ids contained within the forum)
DTD forum.dtd
<!ELEMENT forum (name, description, threads)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT description (#PCDATA)>
<!ELEMENT threads (thread+)>
<!ELEMENT thread (title)>
<!ATTLIST forum forumid CDATA #REQUIRED>
<!ATTLIST thread threadid CDATA #REQUIRED>
Example
<forum forumid=�1�>
<name>Sample Forum</name>
<description>A Sample for forum for example</description>
<threads>
<thread threaded=�1�>
<title>A Sample Thread</title>
</thread>
</threads>
</forum>
thread.xml
Stores the details of a specific thread. Title, the thread starters id, data/time that the thread was started, id of the forum the thread belongs to and a collection of posts containing; post title, the posters id, date/time of the post and the body of the post.
DTD thread.dtd
<!ELEMENT thread (title, datetime, posts, posterid, parent-forum-id)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT datetime (#PCDATA)>
<!ELEMENT posts (post+)>
<!ELEMENT posterid (#PCDATA)>
<!ELEMENT parent-forum-id (#PCDATA)>
<!ELEMENT post (title, posterid, datetime, body)>
<!ELEMENT body (#PCDATA)>
<!ATTLIST thread threadid CDATA #REQUIRED>
<!ATTLIST post postid CDATA #REQUIRED>
Example
<thread threaded=�1�>
<title>A Sample Thread</title>
<datetime>24/04/2003 13:37:31</datetime>
<posts>
<post>
<title>Sample Post</title>
<posterid>25</posterid>
<datetime>24/04/2003 13:37:31</datetime>
<body>This is the body of a sample post</body>
</post>
<post>
<title>Sample reply</title>
<posterid>22</posterid>
<datetime>24/04/2003 13:50:31</datetime><
<body>This is a reply to the sample post</body>
</post>
</posts>
<posterid>25</posterid>
<parent-forum-id>1</parent-forum-id>
</thread>
members.xml
Stores the details relating to the registered users of the message board. The members usernames and passwords should be encrypted using the �md5� (Message Digest) hashing algorithm for security reasons.
DTD members.dtd
<!ELEMENT members (next-memberid, member+)>
<!ELEMENT next-memberid (#PCDATA)>
<!ELEMENT member (md5-user, md5-pass, display-name, tag, signature, datetime, administrator-yesno?)>
<!ELEMENT md5-user (#PCDATA)>
<!ELEMENT md5-pass (#PCDATA)>
<!ELEMENT display-name (#PCDATA)>
<!ELEMENT tag(#PCDATA)>
<!ELEMENT signature (#PCDATA)>
<!ELEMENT datetime (#PCDATA)>
<!ELEMENT administrator-yesno (#PCDATA)>
<!ATTLIST member memberid CDATA #REQUIRED>
Example
<members>
<next-memberid>
<member memberid=�x�>
<md5-user>9180b4da3f0c7e80975fad685f7f134e</md5-user>
<md5-pass>9180b4da3f0c7e80975fad685f7f134e</md5-pass>
<display-name>Sample User</display-name>
<tag>a sample user</tag>
<signature>I am a sample member</signature>
<datetime>24/04/2003 13:37:31</datetime>
<administrator-yesno>no</administrator-yesno>
</member>
</members>
config.xml
Stores configuration information specific to the particular installation of the message board. Including the Name of the site, path to the forum logo.
DTD config.dtd
<!ELEMENT config (custom-settings, server-side-proc)>
<!ELEMENT custom-settings (forums-name, forums-subtitle, forums-logo-path)>
<!ELEMENT forums-name (#PCDATA)>
<!ELEMENT forums-subtitle (#PCDATA)>
<!ELEMENT forums-logo-path (#PCDATA)>
<!ELEMENT server-side-proc (yesno, filename)>
<!ELEMENT yesno (#PCDATA)>
<!ELEMENT filename (#PCDATA)>
Example
<config>
<custom-settings>
<forums-name> Sample Forums</forums-name>
<forums-subtitle>a sample site for xslBB</forums-subtitle>
<forums-logo-path>images/sampleLogo.gif</forums-logo-path>
</custom-settings>
<server-side-proc>
<yesno>yes</yesno>
<filename>forum.asp</filename>
</server-side-proc>
</config>
As stated above, this is a watered down version of the full system specification and design documents. The full documentation can be found in the downloads section. The Full documentation cotians Screen designed and detailed descriptions of each page, along with sugestions regarding posible costomisation.