Navigation Area The latest news about Team Synergy Information about Projects undertaken by Team Synergy Team Synergy Member Profiles Team Synergy Member Management Team Synergy Project-related Documentation Team Synergy Meetings Archive Downloads relating to Team Synergy Projects Funny Stuff Team Synergy Logo
Icon Navigation Home Help / Frequently Asked Questions Products Site Site Map Email the Webmaster

Documentation
Documentation Home
BKernel Javadoc Documentation (No Frames)
Cohesion - Client User Guide
Cohesion - Administration Manual
Configuration Management
CVS Documentation
Debug Package Documentation
Demerit Point Scheme
Management Procedures
Package Description
Project Plans and Procedures
Samba
Software Design Spec.
Software Requirements Spec.
Syndicate User Manual
Technical Style Standards
Web Document Style Standards
Work Log & Weekly Plan Proc.
WWW Document Template
 
Table of Contents
1. Scope
1.1 System Objectives
1.2 Major Software Functions
1.3 Major Design Constraints and Limitations
2. Reference Documents
2.1 Project Documentation
2.1.1 Project Plan
2.1.2 SRS - Software Requirement Specification
3. Industry Standards
3.1 Encryption
3.2 GUI Industry Conventions
3.3 Error/Exception Handling
3.4 Security


4. Architecture Design

4.1 Kernel/Plugin Architecture
4.2 Client/Server Architecture
5. Package Design

6. File Structure and Global Data

6.1 External File Structure
6.1.1 Logical Structure
6.1.2 Logical Record Description
6.1.3 Access Method
7. Requirements Cross Reference

8. Test Provisions

8.1 Unit Test Provisions
8.1.1 Control Structure Test Provisions
8.1.2 Software Function Test Provisions
8.2 Integration Test Provisions
8.3 Special Considerations
9. Interface Design
9.1 Input Devices
9.2 Output Devices
9.3 Dialogue Specification
Appendix A

References

 
Software Design Specification

Version 1.0

Edition 1


Document ID:  SDS
Author(s):  Danny Goulas,
Ronny Lay,
Jared Clinton,
Daniel Woodhouse
Reviewed by:  Danny Goulas,
Simon Hutchison,
George Panagiotopoulos,
Jaycee Phua
Date:  15 October 1999 



Revision History
Date Modifications Reason Version
1999.08.12 Template developed to meet TSS (DW) Intitial setup of document. 0.1d
1999.08.18 Spelling and Grammar revision (JP) Draft document content-verification 0.11d
1999.10.15 Document Collation (DG) Put all seperate sections into one document 0.75d
1999.10.18 Document Review (DG) Final Document Collation and Review 1.0


Table Of Contents
1. Scope
1.1 System Objectives
1.2 Major Software Functions
1.3 Major Design Constraints and Limitations
2. Reference Documents
2.1 Project Documentation
2.1.1 Project Plan
2.1.2 SRS - Software Requirement Specification
3. Industry Standards
3.1 Encryption
3.2 GUI Industry Conventions
3.3 Error/Exception Handling
3.4 Security


4. Architecture Design

4.1 Kernel/Plugin Architecture
4.2 Client/Server Architecture
5. Package Design

6. File Structure and Global Data

6.1 External File Structure
6.1.1 Logical Structure
6.1.2 Logical Record Description
6.1.3 Access Method
7. Requirements Cross Reference

8. Test Provisions

8.1 Unit Test Provisions
8.1.1 Control Structure Test Provisions
8.1.2 Software Function Test Provisions
8.2 Integration Test Provisions
8.3 Special Considerations
9. Interface Design
9.1 Input Devices
9.2 Output Devices
9.3 Dialogue Specification
Appendix A

References


1. Scope

1.1 System Objectives

The objectives of this document are to provide a basis for the implementation of the following:

  • System Design
    • Design Overview
    • Module Design
  • Interface Design
    • Input Devices
    • Output Devices
    • Dialogue Specification
  • Testing Provisions
    • Unit Testing
    • Integration Testing
  • Interface Usability Evaluation
1.2 Major Software Functions

The major software functions provided by the system are:

  • User management: Create and maintain a list of users who can use the system.
  • Messaging: e-mail messages can be sent and direct messages can be sent and received.
  • Address book: Both a global and a local address book can be maintained.
  • Project management: A project can be stored locally or remotely. A project can contain a number of models.
  • Edit Models: The models are the main functionality of the system.  Each model represents a semantic net which is drawn using a certain meta-model.
  • Meta-model: The meta-model architecture allows diagrams to be customised to incorporate enhancements, or new meta-models can be created to allow new diagrams to be created. Such diagrams might be entity-relation diagrams or state transition diagrams.
  • File Management: Both projects and models can be stored locally for individual use or stored remotely so that a number of people can access them. If a more than one person uses a remote file, then a Concurrent Versioning System is used to maintain one master copy, and changes made are integrated into this copy. This way, users do not need to use any locking and if a conflict occurs, only one person needs to decide which parts of the conflicts to use.
1.3 Major Design Constraints and Limitations


General design/implementation constraints include:

  • The software system will run under Windows NT 4.0.
  • All code shall be written in Java 2.
  • Text files shall be used for all data storage and reporting.
  • Time.
Although the system should run on any Java 2 compatible platform, it will only be supported on Win32 platforms.
 

2. Reference Documents

2.1 Project Documentation

2.1.1 Project Plan

The Project Plan was used extensively throughout the creation of this document. The product was developed according to these plans and procedures. The Project Plan details the crucial aspects of the development process. More specifically it outlines the initial system development plan, configuration management plan and procedures, development support environment, verification and validation, testing plan, quality assurance process plan, documentation plan, delivery plan, distribution plan and marketing plan.

2.1.2 SRS - Software Requirement Specification

The Software Requirements Specification details the functional and performance requirements for the computer software to be developed by Team Synergy.  It is intended to supply sufficient software requirement information to the Client to establish a solid foundation for subsequent software assessment and approval. The SRS provides an excellent starting block for the Software Design Specification. All elements outlined in this document are extensions to those functional requirements outlined in the SRS.
 

3. Industry Standards

3.1 Encryption

All network data transfers (client to server, server to client) are encrypted by the sender and decrypted by the reciever on the fly (real-time). To enhance system customisation, any type of encryption can be plugged into Cohesion, for that matter, any kind of filtering device on the Network Layer can be plugged into Cohesion. This allows administrators of the system to upgrade / downgrade network security as desired. However, all machines on the network must be running the same network security plugins. Passwords are protected using standard UNIX one-way password encryption.

3.2 GUI Industry Conventions

There have been a number of industry conventions implemented in the development of the product's GUI. Most were based on the conventions set by Microsoft Windows. The menu set has such conventional features as cut, copy, paste, undo, redo, help / about, and the commonly associated shortcut key combinations (ctrl-z, ctrl-x, ctrl-c, ctrl-v, F1, etc).
 

3.3 Error/Exception Handling

All errors outside of the oprerating system throw custom exceptions. These exceptions are all handled gracefully by the software product and will not forceably or undesireably terminate execution of the application. Exceptions, critical or otherwise, are reported to the user via a combination of pop-up dialogs, status messages, and messages displayed by the command prompt.
 

3.4 Security

Team Synergy have attempted to identify all possible security issues to a reasonable extent. All identified security issues have been addressed. Wherever possible sensitive data has been encrypted, and user access privileges are strictly adhered to. All network connections are secure, with data encrypted / decrypted on the fly (See section 3.1). There are two security levels, user and administrator. While accounts with administrator privilages can access all features of the system, user accounts have limited access to such features as User Manager, remote commands, and versioning directory structure modification.
 
 

4. Architecture Design

Cohesion is based on a client/server architecture. The core of the architecture is the kernel which is responsible for loading plugins and dispatching command events.

4.1 Kernel/Plugin Architecture

The kernel reads a configuration file specified on the command line. If no file is specified then the default modules.conf file is used. The configuration file specifies a list of plugins to load. Each plugin then registers itself with the kernel, so it can receive messages. Once all the plugins have been loaded the kernel sends out a boot event to all the registered plugins.

Plugins can communicate with each other by passing a command event to the kernel to be dispatched. The kernel then forwards this event to all registered plugins. A plugin can either process or ignore a dispatched event. The plugin can return information to the originating plugin by calling the completion object for the specified event.
 

4.2 Client/Server Architecture

The architecture was designed specifically to support transparent client/server interaction. On the client side, the client plugin allows connection to a remote server using TCP/IP. Events can then be sent over the network to the remote kernel. Completion objects are also supported, so when the event has been processed, the completion object is executed on the client side.

The server plugin allows many clients to connect to it. Events are received from the network and sent to the kernel. It is also possible to send events from the server to an individual client, or broadcast to all clients.

The first event the client sends to the server is an authentication event. If the authentication fails the connection is immediately closed.

There is no limit on the number of events which can be outstanding at any time.

It is possible for each plugin to register a filter which can modify the network stream to allow for services such as encryption.
 

5. Package Design

Address Book [au.edu.swin.synergy.plugin.addressbook]

The Address Book plugin provides a GUI and management of the Address Book.

The Address Book GUI provides the user interface to add/remove address book entries which contain the user name and email address. This user interface can be displayed through the Messaging menu option or from the To: button in the send message dialog.

The Address Book Manager provides the interface between the GUI and the Address Book and processes the Create/Retrieve/Update/Delete operations. The client and server each have an Address Book Manager however the Server Address Books entries are global and can be seen by all the clients.
 

Other plugins used are:

  • au.edu.swin.synergy.debug
  • au.edu.swin.synergy.kernel
  • au.edu.swin.synergy.lib
  • au.edu.swin.synergy.plugin.addressbook.event
  • au.edu.swin.synergy.plugin.client.event
  • au.edu.swin.synergy.plugin.command.event
  • au.edu.swin.synergy.plugin.dialect
  • au.edu.swin.synergy.plugin.mod13.event
  • au.edu.swin.synergy.plugin.server.event
  • au.edu.swin.synergy.plugin.userdb
  • au.edu.swin.synergy.plugin.userman.event


Broadcast Client [au.edu.swin.synergy.plugin.broadcastcli]

The Broadcast Client plugin starts its own thread to communicate with the broadcast server. It collates a list of available servers on the local area network. A command line option is also available with this plugin.

The input event handled by the Broadcast Client plugin is GetServers. There are no outputs or events dispatched by the Broadcast Client plugin.

A list of unique servers is maintained.  When a duplicate is detected, it is discarded.

On the Broadcast Client startup/boot, a notification request is broadcast to the network. Any time that a server notification is received, the server is added to the list. This change is automatically reflected in any list on the GUI.

Other plugins used are:

  • au.edu.swin.synergy.kernel
  • au.edu.swin.synergy.kernel.event
  • au.edu.swin.synergy.plugin.broadcastsvr
  • au.edu.swin.synergy.lib
  • au.edu.swin.synergy.plugin.broadcastcli.event
  • au.edu.swin.synergy.debug
  • au.edu.swin.synergy.plugin.command
  • au.edu.swin.synergy.plugin.command.event

Broadcast Server [au.edu.swin.synergy.plugin.broadcastsvr]

The Broadcast Server plugin starts its own thread to listen for broadcast requests from each of the clients. It responds after receiving the request. On startup it sends a broadcast message to all nodes on the local area network that it has been started.

There are no inputs events handled and no outputs events dispatched by the broadcastsvr.

On startup/boot, a notification is broadcasted to the network.  Whenever a server request broadcast is detected, a responce is sent back to the originating machine.

Other plugins used are:

  • au.edu.swin.synergy.kernel
  • au.edu.swin.synergy.debug
  • au.edu.swin.synergy.lib








Client [au.edu.swin.synergy.plugin.client]

The Client Side Network plugin is a client side event redirector. It waits for the client to make a request to the server, and then sends that request to the server. This module also handles logging in and logging out to the server, and also listens for events coming from the server and distributes the event to the other modules on the client side.

The inputs or events handled by the client plugin are Login events, Logout events, and events which need to be sent to the server. The outputs or events dispatched by the client plugin are Login Complete and Logout Complete. The client also calls completion objects for events returning from the server.

The client maintains a hashtable of outstanding events.  Each event which is redirected to the server is assigned a unique ID and added to the hashtable.  The ID is used to locate the original object in the hashtable when the event is being completed.  Once the event has been completed, it is removed from the hashtable of outstanding events.

Other plugins used are:

  • au.edu.swin.synergy.debug
  • au.edu.swin.synergy.kernel
  • au.edu.swin.synergy.lib
  • au.edu.swin.synergy.plugin.client.event
  • au.edu.swin.synergy.plugin.command
  • au.edu.swin.synergy.plugin.command.event
  • au.edu.swin.synergy.plugin.server
  • au.edu.swin.synergy.plugin.server.event
  • au.edu.swin.synergy.plugin.userdb
  • au.edu.swin.synergy.plugin.userdb.event

Client GUI [au.edu.swin.synergy.plugin.clientgui]

The Client GUI is used to display the menu items for logging in and logging out, with a login status bar. The Client GUI uses the Client Side Network plugin to do all the processing.

The input events handled by the Client GUI are Login Complete and Logout Complete. The output events dispatched by the Client GUI are Login, Logout and FindServers.

On creation, menus are registered and are enabled and disabled based on the current login state. When login is selected, a dialog is displayed with a list of available servers, prompting for username and password.  This information is then dispatched in a Login event.

Other plugins used are:

  • au.edu.swin.synergy.kernel
  • au.edu.swin.synergy.plugin.client.event
  • au.edu.swin.synergy.plugin.mod13.event
  • au.edu.swin.synergy.plugin.server
  • au.edu.swin.synergy.plugin.userdb.event
  • au.edu.swin.synergy.plugin.broadcastcli.event
  • au.edu.swin.synergy.plugin.broadcastcli
  • au.edu.swin.synergy.debug
  • au.edu.swin.synergy.plugin.userdb
  • au.edu.swin.synergy.plugin.command.event
  • au.edu.swin.synergy.plugin.command
  • au.edu.swin.synergy.lib
  • au.edu.swin.synergy.plugin.mod13.bwt
  • au.edu.swin.synergy.plugin.dialect







  • Command Line [au.edu.swin.synergy.plugin.command]

    The Command line plugin allows text based commands to be entered and outputs text to the command line. Commands can be dynamically added and removed at run-time and can store environmental variables.

    The input events handled by the Command line plugin are EnableRemoteCommands, ExecuteCommand, GetEnvironment, HandleStandardOutEvents, RegisterCommand, UnregisterCommand, SetInputOutputStreams and StandardOutput. The output events dispatched by the Command line plugin are ExecuteCommand and RegisterCommand.

    All registered commands are kept in a hashtable. Commands are read from the input stream which is by default System.in but can be re-assigned. Once a command has been read, it is parsed into a sentence.  The first word is used to find the appropriate command in the hashtable. The command is then invoked and the rest of the sentence is passed in as parameters to the command.

    The core set of default commands with their descriptions are in the table below.
    Command
    Description
    quit exits application
    load loads a plugin passed in as an argument
    unload unloads a plugin passed in as an argument
    list returns a list of currently loaded plugins
    help returns help on available commands
    exec runs a script passed in as an argument
    debug toggles debug on/off
    set set an environment variable passed in as an argument
    echo return the current value for an environment variable passed in as an argument
    history returns the command history
    r executes a command on the server passed in as an argument
    ! execute a native application

    Other plugins used are:

    • au.edu.swin.synergy.kernel
    • au.edu.swin.synergy.kernel.event
    • au.edu.swin.synergy.plugin.test2.event
    • au.edu.swin.synergy.lib
    • au.edu.swin.synergy.debug
    • au.edu.swin.synergy.plugin.command.event
    • au.edu.swin.synergy.plugin.server.event
    • au.edu.swin.synergy.plugin.userdb

    Command GUI [au.edu.swin.synergy.plugin.cmdgui]

    The Command GUI plugin is the interface to the command line.

    The are no input events handled by the Command GUI plugin. The output event dispatched by the Command GUI plugin is SetInputOutputStreams.

    When the Enter key is pressed, the line of input is passed to the input stream.

    The Command GUI plugin registers with the Window Manager to display the command line window.

    Other plugins used are:

    • au.edu.swin.synergy.kernel
    • au.edu.swin.synergy.kernel.event
    • au.edu.swin.synergy.plugin.test2.event
    • au.edu.swin.synergy.plugin.mod13.event
    • au.edu.swin.synergy.plugin.dialect
    • au.edu.swin.synergy.debug
    • au.edu.swin.synergy.plugin.command.event
    • au.edu.swin.synergy.lib








    Diagram [au.edu.swin.synergy.plugin.diagram]

    This plugin takes care of all everything which is related to diagram. One example of this would be the display of Drawables on the viewport. Apart from that, it also stores drawables, allow other plugins to connect to the viewport, and interacts with the drawable palette.

    This plugin requires the module 'au.edu.swin.synergy.kernel.BPlugin' as one or more of its classes extends it.

    There is a command event - BRegisterViewportCE - which is handled by this plugin. This command event is sent by other plugin to register a viewport. On the other hand, this plugin dispatches two comand events - BAddWindowCE and BAddMenuItemCE. Event BAddWindowCE adds a window to the window manager, whereas BAddMenuItemCE adds room menun item to the menu manager.

    In summary,
    Input (event handled) = BRegisterViewportCE
    Output (events dispatched) = BAddWindowCE, BAddMenuItemCE

    Package diagram is made up of the following classes:

    • BDiagramPlugin - used to store all common diagrams setting and attributes. It contains the main tool palette, and it's a managing plugin. It extends BPlugin as it is a plugin. Any class that is a plugin must extend class BPlugin.
    • BDrawable - the abstract super class for anything that can be drawn in a viewport. It provides functions for transforming and rendering on the graphics. Other functionality of class BDrawable includes Mouse Hit Testing, Loading, Saving, Selection, Sizing, and moving. It implements 'icon' so that drawing to the button is possible, 'saveable' so that the node, shape, and arc can be saved.
    • BDrawableButton - is just a Drawable Button that stores drawable in it. Drawable is anything that can be drawn in a viewport. When user clicks on a Drawable Button, then click on the drawing area, whatever Drawable (node, arc) the button stores will be drawn.
    • BDrawablePalette - is basically just a palette for all the Drawables. More precisely, it is a palette for the Drawable buttons. It has a list of Drawable buttons, and it gets a list of Drawable buttons from the diagrams. Class BDrawablePalette implements interface MouseInputListener because the list Drawable buttons that the palette contains can be selected using a mouse.
    • BViewport - is a rendering window that displays Drawable. It has grid, and user may add Drawable to it. Viewport interacts with Drawable Palette as Drawables displayed on viewport may be selected from the Drawable Palette. A viewport may display all Diagram Drawables. It is also used to add Drawables to Diagram. It is important to understand that viewport does not perform any storing, however Diagram does. It implements MouseInputListener as activities that may be performed on the viewport such as dropping of Drawables, moving, and re-sizing may be carried out using a mouse.

    • Whereas it implements interface BView for the purpose of Height, Width, and Depth.
    The following class diagram shows how the various classes interacts:








    The following is a description of the above diagram in point form:

    • Diagram plugin loads itself in and waits for viewport to register itself.
    • Other Plugins creates viewport.
    • The viewport is registered to the diagram plugin via the BRegisterViewportCE.
    • Each viewport looks onto a diagram. Viewport displays diagram.
    • When the viewport gets focused, it tells the drawable palette what to draw (everyting that can be displayed).
    • Diagram stores drawables.
    • Drawable palette tells the drawable button to draw the drawable on the button.
    • Each button drawable in it.
    Dialect [au.edu.swin.synergy.plugin.dialect]

    This plugin has 2 sides, the plugin, which dispatches events, and the static methods contained within the classes.

    The plugin begins by registering a panel with the preferences plugin via an Add Preferences command. The preferences panel provides a means for the user to change the current locale and consequently the language the User Interface is displayed in. When the dialect plugin receives a preferences updated command, it dispatches a dialect change event to all plugins that they need to update their interface.

    The static methods provide ways to read the relevant properties file and return the appropriate values for the current locale. It also provides a means for formatting compound messages (a string containing variables which are provided at runtime).
     

    Other plugins used are:

  • au.edu.swin.synergy.kernel
  • au.edu.swin.synergy.kernel.event
  • au.edu.swin.synergy.lib
  • au.edu.swin.synergy.lib.io
  • au.edu.swin.synergy.plugin.dialect.event
  • au.edu.swin.synergy.plugin.mod13.bwt
  • au.edu.swin.synergy.plugin.prefs.event

  • Direct Messaging Server [au.edu.swin.synergy.plugin.directsvr]

    The Direct Messaging Server plugin is loaded on the server and allows messages to be sent between logged on clients. The Direct Messaging Server communicates by listening for Mail events. All Mail events have a "container" object which contains all the fields relevant to a message ie. sender, receiver, subject, message, time spent, etc. The Direct Messaging Server detects the absence of the '@' symbol which indicates it is not an SMTP message. If it is not an SMTP message, it detects whether the user is logged in to obtain their connection ID. It then dispatches a Direct Mail event to the client utilising the connection ID.
     

    Other plugins used are:

    • au.edu.swin.synergy.debug
    • au.edu.swin.synergy.kernel
    • au.edu.swin.synergy.lib
    • au.edu.swin.synergy.plugin.directsvr.event
    • au.edu.swin.synergy.plugin.mailclient
    • au.edu.swin.synergy.plugin.server
    • au.edu.swin.synergy.plugin.server.event
    • au.edu.swin.synergy.plugin.smtpsvr.event
    • au.edu.swin.synergy.plugin.userdb

    Encryption [au.edu.swin.synergy.plugin.crypt]

    The Encryption plugin uses cryptography to make the communication between clients and servers secure. The final cryptographic method is yet to be determined.

    There are no input events handled by the Encryption plugin. The output event dispatched by the Encryption plugin is RegisterEvent.

    Data is read from the appropriate stream then either encrypted or decrypted. Initial key exchange can be done and is transperant to any higher layer, such as the networking plugins.

    Other plugins used are:

    • au.edu.swin.synergy.kernel
    • au.edu.swin.synergy.kernel.event
    • au.edu.swin.synergy.plugin.command
    • au.edu.swin.synergy.plugin.command.event
    • au.edu.swin.synergy.lib
    • au.edu.swin.synergy.lib.io
    • au.edu.swin.synergy.debug
    • au.edu.swin.synergy.plugin.server
    • au.edu.swin.synergy.plugin.server.event
    • au.edu.swin.synergy.plugin.diagram
    • au.edu.swin.synergy.math








    Help [au.edu.swin.synergy.plugin.help]

    This plugin provides help structure for plugins to register help files. For example, if a new plugin is implemented and the developer wishes to register its help system, then the .html help files can be sent to Help, evething will be taken care of by Help and updated automatically, for example: table of contents, search, and so on.

    Module used:

    • au..edu.swin.synergy.kernel.BPlugin
    An event handled by this plugin is the BRegisterHelpCE. This command event is dispatched by other plugin when they need to register their help system. Whereas event dispatch by plugin Help are BAddMenuCE which adds a menu to the menu bar on the top, and BAddWindowCE which adds a window so that a help window can be displayed.

    In summary,
    Input (event handled) = BRegisterHelpCE
    Output (event dispatched) = BAddMenuCE and BAddWindowCE

    Plugin Help has the following classes:

    • BCohesionAboutPanel - constructs the standard About box; About Cohesion. It displays information such as copy Right, Software Version, and so on.
    • BContentTab - builds the 'Table of Contents' tab in the help menu, where everything is displayed in tree structure.
    • BFindTab - allows search in HTML files through keyword(s).
    • BHelp - sets up the Help plugin so that it may be registered with the Cohesion system. Bhelp also captures events and provide correct functionality.
    • BHelpItem - used to encapsulate Uniform Resource Locator (URL) descriptions which is displayed in tree or list.

    • It implements Comparable so that Help Items can sorted within a list.
    • BHelpManager - This class manages all components to do with help.
    • BHelpTabbedPane - This class is to contain Find, Index, Content.
    • BHelpTreeModel - provides standard function to make easy to create new helptree structure so that one can register new help system.
    • BHelpUtil - is a basic class which contains many static functions which are used through all help class. It reduces code duplication.
    • BHelpViewpane - is a panel which displays HTML documents. It takes care of history and hpypertext functionality.
    • BIndexTab - displays a list of all items been registered. It also provide simple search functionality.
    The following class diagram show how the varrious classes in the Help plugin interacts:









    Mail Client [au.edu.swin.synergy.plugin.mailclient]

    The Mail Client plugin is client related and provides an interface for sending SMTP/Direct Mail and viewing/receiving Direct Mail. The Mail Client GUI can be displayed through the Send Message menu item in the Messaging menu, which dispatches a Direct Mail event to be received by the Mail GUI to display the window. To send a message the receivers are selected from the Address Book. When a message is sent, a Mail event is dispatched. When a Direct Message is received, the Mail GUI receives a Direct Mail event containing the message details which are then displayed. Each Direct Message received during the life of the current session is saved. The previous messages received can be viewed through the dialog.
     

    Other plugins used are:

    • au.edu.swin.synergy.debug
    • au.edu.swin.synergy.kernel
    • au.edu.swin.synergy.lib
    • au.edu.swin.synergy.plugin.addressbook.event
    • au.edu.swin.synergy.plugin.command
    • au.edu.swin.synergy.plugin.command.event
    • au.edu.swin.synergy.plugin.dialect
    • au.edu.swin.synergy.plugin.directsvr.event
    • au.edu.swin.synergy.plugin.mod13.event
    • au.edu.swin.synergy.plugin.prefs.event
    • au.edu.swin.synergy.plugin.smtpsvr.event

    Meta-Modeller [au.edu.swin.synergy.plugin.metamodeller]

    This plugin is a definition of what a model can be made up of.
    It defines what can belong to a model, for example; the type of node, arc, and rules that belong to a model. How they interact with each other. How inheritance, association, and class should be done.

    Modules Used

    • au.edu.swin.synergy.plugin.metamodeller.BCreateElement
    • au.edu.swin.synergy.plugin.metamodeller.BMetaElement
    • au.edu.swin.synergy.lib.io.BSaveable
    • au.edu.swin.synergy.kernel.BPlugin
    This plugin does not handle any event. All input is user input. However it dispatches an event - BAddWindowCE.

    In summary,
    Input (event handled) = none. All other input is user input. Output (event dispathed) = BAddWindowCE
     

    Meta-modeller is made up of the following classes:

    • BCircRule - rule that determines whether an arc is allowed or not to have circular reference. It defines a lookup table and checks whether it allows circular referencing. Basically it takes care of circular referencing in arcs, for example; circular inheritance is not allowed.
    • BConnectNodeRule - rule that define how nodes should be joined. An example of this would be node A can only join to node B only via arc C. It specifies node connection rule. It allows the specification of start node, arc, and end node.
    • BCreateElement - a panel to allow users to create new Meta elements. It also provides means to add properties to these Meta elements.
    • BEditElement - provides the Graphical User Interface for editing an element.
    • BMaxRule - used to determine the maximum number of arcs which can come into a node or out of a node.
    • BMetaArc - This is an empty class. It is only used for type checking.
    • BMetaElement - describes a meta-element (such as a node or an arc)from a conceptual point-of-view. That is, an identifying name such as class, package, inheritance etc), and a list of properties that belong to the element.
    • BMetaGui - a class which supplies the gui for creating and editing.
    • BMetaModel - the metamodel that describes what a model can be made out of. It is a container for meta element. Class BMetaModel implements Serializable so that sending data in a stream is possible.
    • BMetaNode - is an empty class and it is only used for type casting.
    • BMetaRule - an empty class and is only used for type casting purpose.
    • BPropListModel - provides the Graphical User Interface for the property list model. It extends AbstractListModel because it provides the Graphical User Interface for the property list.
    • BRuleGui - a panel for the rule builder. It allows the automatic change of the corresponding Graphical User Interface depending on which item was selected.
    The following is the class diagram for the meta-modeller plugin:











    The description for the above diagram is as follow:

    • BMetaModel is made up of collection of elements.
    • BMetaElement can be node, arc, and rule.
    • User may specify the rules - BCircRule, BConnectRule, and BMaxRule - and when a meta-element is created, it gets evaluated against the rules specified. Therefore BCircRule, BConnectRule, and BMaxRule are the evaluators.

     

    Modeller [au.edu.swin.synergy.plugin.modeller]

    This package is used for drawing all the models. It is different from just square, shapes, etc. Modeller is not a simple model. It is a way of drawing models given a package and a meta model.

    This plugin uses two other modules, they are:

    • au.edu.swin.synergy.plugin.modeller.BModelElement
    • au.edu.swin.synergy.lib.io.BSaveable
    Plugin modeller does handle or dispatch any event. Therefore,
    Input (event handled) = none
    Output (event dispatched) = none

    Plugin modeller is made up of the following classes:

    • BModel - is the main data structure for the models that appear on screen. It has a reference to the data model so that it knows what can and cannot be drawn. BModel stores Drawables as they are added. These added Drawables are then drawn by the viewport. BModel implements interface BTreeNode so that it can be drawn in a tree view. Whereas it implements the BDiagram interface for Drawable storage.
    • BModelArc - A class for arc on the model. It has a difference to a package arc. It extends 'BModelElement' because it's a model element. It implements the BSaveable interface for saving purposes.
    • BModelElement - an abstract super-class for anything that can be drawn on the model. E.G. arc, node.
    • BModelNode - A class for node on the model.
    • BModelEditor - a viewport by which models are showed.







    Packager [au.edu.swin.synergy.plugin.packager]

    This plugin is used for building notation. It specifies notation for the meta model. New notation can be created using packager. However a meta model must be selected to be based on. There are two section to this packager. The first section allows user to specify what they wish to have in their notation, such as class, interface, node, arc, and so on. The second section is the notation builder, which enables user to specify the shapes for those elements defined earlier on.

    Modules Used:

    • au.edu.swin.synergy.plugin.mod13.event.BAddMenuItemCE
    • au.edu.swin.synergy.lib.BTreeNode
    • au.edu.swin.synergy.lib.io.BSaveable
    • au.edu.swin.synergy.plugin.Diagram.BDrawable
    • au.edu.swin.synergy.plugin.diagram.BDiagram
    • au.edu.swin.synergy.kernel.BPlugin
    Packager does not handle any event at all, however it dispatches a Register Viewport event registers the viewport with the diagram.

    In summary,
    Input (event handled) = none
    Output (event dispatched)= Register viewport

    Plugin Packager has the following classes:

    • BNewPackageDialog - this will allow the user to specify the details of the package they are about to create. They can give it a name, specify the meta model it is based on and various other options.
    • BPackageArcEditor - provides the Graphical User Interface for editing package arc.
    • BPackageMenu - provides a menu for the packager plugin. It provides the menu elements for the 'Meta Model' menu.
    • BPackageModel - data structure for the package model. keeps track of the p-nodes, p-arcs, and p-terminators that make up the package. Also has a meta-model. Implements the TreeModel interface, so that the data can be viewed from inside a JTree.
    • BPackageModelBranch - the container for package element. It implements the BTreeNode as it needs to construct a tree structure. Basically it allows the package element - node, arc, terminators - to be expanded in a tree.
    • BPackageNode - provides the graphical representation of the node. It extends BDrawable because package node is a drawable.
    • BPackageNodeDiagram - this class is basically the diagram for the package node. It is the diagram for creating package node. For example, As user draw the shape of the drawable, it is added to the package node diagram.
    • BPackagePanel - the tab pane for containing all the tabs: node, arc, and terminators tab.
    • BPackagePlugin - in controller for the packager plugin. Is plugin allows the user to create and it packages for use with the modeller plugin.
    • BPackagerPrefs - supplies the panel to be dispalyed in the prefernces section. Allows user to specify the colors to be used.
    • BPackageTree - this panel will contain the tree outlining the contents of the meta model which needs to be implemented as well as indicating those items which have been implemented.
    The class diagram for the Packager plugin is the same as the one for the Diagram plugin, as it has BPackageNodeDiagram that implements the BDiagram interface. It adds primitive BDrawables and all shown in a BViewport.

    Preferences [au.edu.swin.synergy.plugin.prefs]

    This package provides a central place for plugins to display their preference panel.
    Basically, if there is a plugin that wishes to register its preference panel, it can send out a command event to the 'prefs' plugin requesting the preference panel to be added to the preference area. This plugin will then display the preference panel in the central preference area. Similarly, this plugin can also remove a preference panel from the preference area, if requested by other plugins.

    This plugin uses only one other module, and this module is 'au.edu.swin.synergy.kernel.BPlugin'.

    Package 'au.edu.swin.synergy.kernel.BPlugin' handles two command events - BAddPrefsCE and BRemovePrefsCE. BAddPrefsCE is the command event that other plugins dispatches to add a preference panel to the preference area, whereas BRemovePrefsCE is the command event that other plugins dispatches to remove a preference panel from the preference area. Having handled the command event (BAddPrefsCE or BRemovePrefsCE), this plugin dispatches a command event - BUpdatePrefsCE - which instructs the other plugins to update their preference panel on the preference area.

    In summary,
    Input (events handled) = BAddPrefsCE, BRemovePrefsCE
    Output (event dispatched) = BUpdatePrefsCE 

    There is no class diagram for this package as it only contain one single class - class BPrefs. Class BPrefs extends BPlugin because it is a plugin. Any class that is to be a plugin must extend BPlugin.
     
     

    Remote Transfer Protocol [au.edu.swin.synergy.plugin.rtp]

    The Remote Transfer Protocol plugin is the client side for the repository and has a command line interface to the repository. There is also a GUI version which allows the user to graphically check in, check out, add and delete files. It also has an ACL editor for setting the appropriate security settings.

    Information is retreived from the repository server by sending command events. Files are transferred to and from the server using events. Permissions are changed using the set security event.

    The BFile class within the au.edu.swin.synergy.lib plugin is used for the method in which compressed files are transferred across the network.

    Other plugins used are:

    • au.edu.swin.synergy.kernel
    • au.edu.swin.synergy.kernel.event
    • au.edu.swin.synergy.debug
    • au.edu.swin.synergy.lib
    • au.edu.swin.synergy.plugin.repository.event
    • au.edu.swin.synergy.plugin.repository
    • au.edu.swin.synergy.plugin.command
    • au.edu.swin.synergy.plugin.command.event
    • au.edu.swin.synergy.lib.io







    Repository [au.edu.swin.synergy.plugin.repository]

    The Repository plugin is used for the server side storage of files, with version management.

    The input events handled by the repository plugin are GetFile, PutFile, StatFile and ChangeSecurity. There are no output events dispatched by the Repository plugin.

    All persistant storage is stored in a file called meta-data. The actual file contents is saved in a file with version information.

    Security access to the file is checked, then the results of this check are passed back as an event.

    The BACL class, which maintains an Access Control List, within this plugin contains a list of security descriptors (BDescriptor) and an owner. It performs the security checks of files and has a one-to-many relationship with BDescriptor.  The BDescriptor class within this plugin maps a user or a group to an access level. The access levels available are read, read/write and no access. BDescriptor contains a relm (user/group), an id and an access level. By default no access is given unless specified. The BMetaData class within this plugin contains meta-data for each file in the repository. These meta-data are date, name, size, type, version and BACL. The BRepository class within this plugin listens for events from the client and performs the request.

    Other plugins used are:

    • au.edu.swin.synergy.debug
    • au.edu.swin.synergy.plugin.userdb
    • au.edu.swin.synergy.lib
    • au.edu.swin.synergy.lib.io
    • au.edu.swin.synergy.kernel
    • au.edu.swin.synergy.kernel.event
    • au.edu.swin.synergy.plugin.repository.event
    • au.edu.swin.synergy.plugin.server.event






    Server [au.edu.swin.synergy.plugin.server]

    The Server plugin is the server side event redirector. It checks for event authentication and allows multiple connections. It takes an event on the server, sends it to the client, listens for events coming from the clients and distributes them to the plugins on the server side.

    Events dispatched: None
    The input events handled by the server plugin are GetNetworkStatus, GetSessions, GetUser and RegisterFilter. There are no output events dispatched by the server plugin.

    The server maintains a list of connections.  Each session has an ID which is placed inside every event handled by the server.  Other plugins can then request the BUser who is authenticated on that session ID.  The server also handles requests for encryption plugins and can return a complete list of current sessions.

    The BNetCredentials class within this plugin contains the username and password used to perform authentification. The BServer class within this plugin listens for incoming connections and creates a BServerSession to handle them. The BServerSession class within this plugin is a thread that listens for incoming events from the network. The BSocketObjectPipe class within this plugin takes an object and sends it over the network and pipes the data through any registered filters.

    Other plugins used are:

    • au.edu.swin.synergy.kernel
    • au.edu.swin.synergy.kernel.event
    • au.edu.swin.synergy.debug
    • au.edu.swin.synergy.plugin.command.event
    • au.edu.swin.synergy.plugin.command
    • au.edu.swin.synergy.lib
    • au.edu.swin.synergy.plugin.userdb
    • au.edu.swin.synergy.plugin.server.event
    • au.edu.swin.synergy.plugin.userdb.event
    • au.edu.swin.synergy.plugin.server






    SMTP Server [au.edu.swin.synergy.plugin.smtpsvr]

    This plugin operates in much the same way as the Direct Messaging server except it processes the address objects, which contain an '@'. It uses a SMTP object to send the message using the SMTP standards format.
     

    Other plugins used are:

    • au.edu.swin.synergy.debug
    • au.edu.swin.synergy.kernel
    • au.edu.swin.synergy.lib
    • au.edu.swin.synergy.plugin.mailclient
    • au.edu.swin.synergy.plugin.server.event
    • au.edu.swin.synergy.plugin.smtpsvr.event

    • au.edu.swin.synergy.plugin.userdb

    User Database [au.edu.swin.synergy.plugin.userdb]

    This is a server side plugin and provides services via command events for creating, retrieving, updating and deleting. It provides a means for editing users/groups and permanently storing them in human readable text files on the server. It also provides a way for assigning priviledges to user/group levels, which is used for access control to the repository and anything else that requires priviledge based access. It is also used as the basis for logging into servers. It maintains referntial integrity across users/groups. ie. Users/groups are stored in individual files and it makes sure that if a user is a member of a group that the group includes the user.

    When a user/group is updated the plugin broadcasts an Update event to all clients. The changes/updates take effect on all logged on clients/servers immediately. The User Database enforces security while running on the server, such as only administrators can add users, etc.
     

    Other plugins used are:

  • au.edu.swin.synergy.debug
  • au.edu.swin.synergy.kernel
  • au.edu.swin.synergy.kernel.event
  • au.edu.swin.synergy.lib
  • au.edu.swin.synergy.lib.io
  • au.edu.swin.synergy.plugin.command
  • au.edu.swin.synergy.plugin.command.event
  • au.edu.swin.synergy.plugin.server
  • au.edu.swin.synergy.plugin.server.event
  • au.edu.swin.synergy.plugin.userdb.event





  • User Manager [au.edu.swin.synergy.plugin.userman]

    This plugin provides a user interface to the User Database which facilitates remote administration. It can either be used through the GUI or the command line. Both interfaces allow the full range of User Manager commands except that the command line also allows input/output redirection, ie. scripting commands, log files. The User Manager enforces security with the latest available priviledge information and when changes are made it updates immediately. For example, if an administrator revokes the administrative priviledges of another administrator while the second administrator is conducting an administrative transaction (eg. add user/change priviledges) the updated priviledges from the User Database running on the server will override the current priviledges on the client.
     

    Other plugins used are:

    • au.edu.swin.synergy.debug
    • au.edu.swin.synergy.kernel
    • au.edu.swin.synergy.kernel.event
    • au.edu.swin.synergy.lib
    • au.edu.swin.synergy.plugin.client.event
    • au.edu.swin.synergy.plugin.command
    • au.edu.swin.synergy.plugin.command.event
    • au.edu.swin.synergy.plugin.dialect
    • au.edu.swin.synergy.plugin.help
    • au.edu.swin.synergy.plugin.help.event
    • au.edu.swin.synergy.plugin.mod13.bwt
    • au.edu.swin.synergy.plugin.mod13.event
    • au.edu.swin.synergy.plugin.server.event
    • au.edu.swin.synergy.plugin.userdb
    • au.edu.swin.synergy.plugin.userdb.event

    Window Manager [au.edu.swin.synergy.plugin.mod13]

    The Window Manager plugin controls the layout for all graphical components and provides an application framework which includes menus, menu items, dialogs, windows and panels. It maintains three default menus: File, which contains Exit; Edit, which contains Cut, Copy and Paste; and Windows, which contains the windows added to the Window Manager. All listeners & controls of added items are handled by the source plugin.

    Menus - If the menu names are the same the Window Manager merges the menus. Groups of menu items within a menu are divided by a horizontal seperator. Plugins can nominate a preferred mnemonic for the menu, the Window Manager will ensure it is unique. If it is not, it takes the next unique letter in the menu name as the mnemonic.

    Windows - If a window has the same name as another window, a sequential number is added to the window name, both in the window title and the window menu. If a window is added with the same name, the original window will become window1 and the second becomes window2, etc. If there are 5 windows and window3 is closed then windows 1,2,4 & 5 will remain.

    Any components added to the Top, Bottom, Left or Right of the Window Manager are added seperately to a tab on a split pane. A way of selecting the tab is provided via events.

    Tab panes and menus are only created when components are added. When all items have been removed so will the menu, tab pane and status bar.

    Status Bar - The status bar provides a means for adding/removing items onto the status bar.

    Selecting menus, tabs on tab pane, minimising, maximising, hiding, closing, bringing to front, sending to back, etc. can be done with the mouse or through the command line.

    The Window Manager also redirects events to relevant Listeners of the window and notifies focus window of cut, copy and paste events.
     

    Other plugins used are:

    • au.edu.swin.synergy.debug
    • au.edu.swin.synergy.kernel
    • au.edu.swin.synergy.kernel.event
    • au.edu.swin.synergy.lib
    • au.edu.swin.synergy.plugin.command
    • au.edu.swin.synergy.plugin.command.event
    • au.edu.swin.synergy.plugin.dialect
    • au.edu.swin.synergy.plugin.dialect.event
    • au.edu.swin.synergy.plugin.mod13.bwt
    • au.edu.swin.synergy.plugin.mod13.event
    • au.edu.swin.synergy.plugin.test2.event

    Workspace [au.edu.swin.synergy.plugin.workspace]

    The Workspace is a client plugin and provides a user interface representing what the user is working on.

    New Project makes a new Workspace with the same name as the project. Only one Workspace at a time can be displayed in the panel. It is possible to remove the project and add a new project. It is also possible to have multiple projects in the one Workspace. Each project is displayed with its contents, such as models. Selecting a model displays it in the working area. Clicking on a model in the workspace switches between the models.

    If there is no workspace open when a new project is created a new workspace is created with the same name. If there is a workspace open then you can choose to add the new project to the current workspace or create a new workspace.

    Other plugins used are:

    • au.edu.swin.synergy.debug
    • au.edu.swin.synergy.kernel
    • au.edu.swin.synergy.lib
    • au.edu.swin.synergy.lib.io
    • au.edu.swin.synergy.plugin.client.event
    • au.edu.swin.synergy.plugin.diagram
    • au.edu.swin.synergy.plugin.diagram.event
    • au.edu.swin.synergy.plugin.dialect
    • au.edu.swin.synergy.plugin.mod13.event
    • au.edu.swin.synergy.plugin.modeller
    • au.edu.swin.synergy.plugin.packager
    • au.edu.swin.synergy.plugin.prefs.event
    • au.edu.swin.synergy.plugin.workspace.event






    6. File Structure and Global Data

    6.1 External File Structure

    The file structure of the released product that is maintained on secondary storage media is:

    .\cohesion\cohesion.jar
    .\cohesion\client.bat
    .\cohesion\server.bat
    .\cohesion\any other support files

    This directory contains the executable jar file which can be run from a computer which supports java. The cohesion directory is the only one needed by the cohesion program. Other directories which may require maintenance are ones which hold data files. This is at the discretion of the user of the product.

    6.1.1 Logical Structure

    The jar file encapsulates the file data structure. For a complete listing please refer to the jar file directly (Unjar using the jar command).

    6.1.2 Logical Record Description

    The file format used for cohesion models is a XML like file format. Any object which implements the BSaveable interface can be loaded and saved in the cohesion file format. Each section represents an object with a start tag, an end tag and a number of text strings and sub-sections. Data is saved in a human readble format with a series of key = value strings. If any key is omitted then defaults are used. Section names are mapped to java classes using a set of registered aliases.

    The file format is designed to allow changes in code while maintaining compatibility with the existing files.

    6.1.3 Access Method

    The files are text based and are maintainable via any text editor. eg. Notepad.
     

    7. Requirements Cross Reference
     
     

    SRS Requirement
    (Refer to Section 5)
    Module(s) / Plugin which met requirement
    Sub Module
    CREATEPROJECT
    WORKSPACE
     
    EDITPROP
    WORKSPACE
     
    ADDMODEL
    WORKSPACE
     
    OPENPRJ
    WORKSPACE
     
    NEWWORKSPACE
    WORKSPACE
     
    CREATEPROJ
    WORKSPACE
     
    CREATEMODEL
    WORKSPACE
     
    SELECTTOOL
    MODELLER
     
    ADDNODE
    MODELLER
     
    CONNECTNODES
    MODELLER
     
    SELECT
    MODELLER
     
    DESELECT
    MODELLER
     
    MOVESELECT
    MODELLER
     
    GRPSELECT
    MODELLER
     
    UNGRPSELECT
    MODELLER
     
    BRINGSELECT
    MODELLER
     
    SENDSELECT
    MODELLER
     
    DELSELECT
    MODELLER
     
    EVALRULE
    MODELLER
     
    VIEWCOMMONSELECT
    MODELLER
     
    CHNGCOMMONSELECT
    MODELLER
     
    ASSIGNMM
    MODELLER
     
    ASSIGNPKGE
    MODELLER
     
    UNDO
    MODELLER
     
    CONVERTMM
    MODELLER
     
    CHANGEVIEW
    MODELLER
     
    DISPVISNODES
    MODELLER
     
    DISPVISARCS
    MODELLER
     
    TRANSCOORDS
    MATH
     
    ZOOM
    MODELLER
     
    PAN
    MODELLER
     
    CREATEMM
    METAMODELLER
     
    SPECNODETYPE
    METAMODELLER
     
    SPECNODEPROP
    METAMODELLER
     
    SPECARCTYPE
    METAMODELLER
     
    SPECARCPROP
    METAMODELLER
     
    SPECMRULE
    METAMODELLER
     
    SPECMCOMPONENT
    METAMODELLER
     
    SPECMCONDITION
    METAMODELLER
     
    SELECTMM
    PACKAGER
     
    CRUDPN
    PACKAGER
     
    SPECPNSHAPE
    PACKAGER
     
    SPECMNPROPDISP
    PACKAGER
     
    CRUDPA
    PACKAGER
     
    SPECLINETYPE
    PACKAGER
     
    SPECARCGRAPH
    PACKAGER
     
    SPECARCSTYLE
    PACKAGER
     
    SPECMAPROPDISP
    PACKAGER
     
    SPECARCGRPH
    PACKAGER
     
    SAVELOCAL</