GateBuilder

CS121 Project, Fall 2000

 

1.    Introduction

 

This document is to serve as a Software Requirements Specification for the GateBuilder application.  The application is to be completed by the end of the fall semester of the 2000 – 2001 school year.

 

1.1         Purpose

 

The Software Requirements Specification (SRS) is a formalization of the specifications of the GateBuilder application.  It contains both functional and non-functional specifications as well as use cases and a general overview of the product.  It is intended to represent the overall requirements of the software and present some insight into the intended uses and general functionality of the software.

 

1.2         Overview

 

The GateBuilder application is a basic application for the building of simple circuits.  It will have a graphical user interface with a very shallow learning curve.  Its file format will also be easy to read and understand.

 

1.3         Definitions, Acronyms, and Abbreviations

 

Back-end – The internal goings on of the application that are hidden from the user.

 

Front-end – The graphical user interface with which the user is initially presented

 

Gate – Logic Gate.  A logic gate is one of the core components of a computer circuit.  A single gate performs a single function- such as or-ing its two inputs.

 

GUI – Graphical User Interface.  A GUI is any system by which the user can control certain functions by manipulating visual representations of files, folders, etc.

 

JVM – Java Virtual Machine.

 

Macro – A collection of gates that can be treated as a single object or gate.

 

XML - Extensible Markup Language.  A markup language is a mechanism to identify structure within a document.  The XML specification describes as standard way of adding markup to documents.

 

2       General Description

 

2.1         Product Perspective

 

            This product will be entirely stand-alone on user workstations with a JVM.  It may also run on a server with java-enabled clients at a later date.

 

2.2         Product Functions

 

*      Basic Circuit Building

*      Easily readable output file

 

2.3         User Characteristics

 

This system is being designed to be useable by users with as little technical knowledge as possible.  GateBuilder is designed to be installed on a user workstation.  It is intended to be as easily learned by students taking CS60 at Mudd.  As such, it should require little or no knowledge other than basic circuitry.

 

3       Specific Requirements

 

3.1         Functional Requirements

 

The program should contain a palate-based GUI for use by the end users.  This GUI should be fairly straight forward having basic graphic representations of the different gates as well as lines to connect the input of some gates with the output of another.  Additionally there should be a method for user-defined input to a specific gate to allow users to test with many different inputs.

 

The output files must be readily readable so that graders may verify the output.  That is, it should be easy enough that the graders may write programs that parse the output file and check it against known values for correct output.

 

Additionally users should be able to specify a group of gates as a macro.  These macros should be able to be saved across sessions, although this is not a critical requirement.  These macros should be able to be controlled as a single entity or gate.  These macros should also be able to be copied and placed in various locations within the circuit.

 

3.2         Performance Requirements

 

Since GateBuilder is designed to run on user machines it should be as lightweight as possible.  Also the JVM adds additional requirements on the user machine, which underlines the need to be as lightweight as possible.

 

4       Use Cases

 

Minimum Requirements

 

Label: LOAD

Name: Load program, render GUI

Goal: Start up program

Actors: User

Initiator: User

Description: Initialize all systems so user can start using system

Pre-conditions: System not set up

Post-conditions: System set up

Extensions: None

 

Label: ADD

Name: Add object to circuit

Goal: Add a new object to the circuit user is currently working on

Actors: User

Initiator: User

Description: User selects the create object tool from palette by clicking on the particular object type to add, and then clicks on the work space to place the new object.  The user can add more than one object by clicking on empty spots in the work space repeatedly.

Pre-conditions: None

Post-conditions: None

Extensions: None

 

Label: MOVE

Name: Move object

Goal: Move object in work space

Actors: User

Initiator: User

Description: Move object (gate or input) in work space.  To do this the user will click on a move tool, and then click and drag the object to the new desired location.  All connections will then follow the gate to the new location.

Pre-conditions: Object exists

Post-conditions: None

Extensions: None

 

Label: REMOVE

Name: Remove an object or connection from the workspace

Goal: To remove an unnecessary object or connection from the workspace

Actors: User

Initiator: User

Description: User clicks on the remove tool in the palette, and then clicks on the object or connection to be removed.  More than one object connection can be removed this way, by clicking separately on each object or connection to be removed, after the remove tool has been selected.  If an object being removed has connections to or from it, then those connections are also removed.

Pre-conditions: Object exists

Post-conditions: Object doesn’t exist

Extensions: None

 

Label: CONNECT

Name: Make a Connection Between Two Objects

Goal: To connect the output of one object to the input of another, logically.

Actors: User

Initiator: User

Description: User selects the connection tool by clicking on it in the palette, and then clicks on one object and then another.  A connection is formed from the output of the first object to the input of the second object.  Connections can be made such that one output connects to two or more inputs, but an input can only be connected to one output.  If this condition is not met, nothing happens.

Pre-conditions: None

Post-conditions: Two objects are now connected.

Extensions: None

 

Label: INPUT

Name: Specify Input

Goal: Specify input to input object

Actors: User

Initiator: User

Description: A user can specify the input they wish to give to a particular input object by selecting the input tool, and clicking on an existing input object.  The user will also be given the chance to select an input when they first place the input object.

Pre-conditions: None

Post-conditions: None

Extensions: None

 

Label: CALCULATE

Name: Calculate output

Goal: To calculate the correct output.

Actors: User

Initiator: User

Description: Clicking a calculate button will run the specified input through the logic gates and put it into an output object.  This output object will be created at the output of any gate that is not connected to any further gates.  If there is a gate with too few inputs an error message will be displayed when calculate is clicked.

Pre-conditions: None

Post-conditions: None

Extensions: None

 

Label: STEP

Name: Step input

Goal: To calculate the next step in the logic gates

Actors: User

Initiator: User

Description: User clicks the step button, which runs the specified input through one level of logic gates.  Each subsequent click on step moves the input through the next level of gates, until none are left.  The evaluation restarts at the input every time something is changed.

Pre-Conditions: None

Post-Conditions: Execution is suspended in mid circuit

Extensions: None

 

Label: COPY COMPLEX

Name: Copy and place a complex object

Goal: To easily create a duplicate of a complex object from the workspace

Actors: User

Initiator: User

Description: User selects the complex object tool by clicking on it, and then selects a group of objects in the workspace by clicking and dragging a rectangle around them.  Then, the user clicks on open space in the workspace to place a new copy of the selected objects (with connections) at that spot.

Pre-conditions: None

Post-conditions: None

Extensions: None

 

Label: SAVE

Name: Save workspace to a file

Goal: To create a file that specifies the state of the workspace for future use

Actors: User

Initiator: User

Description: User clicks on the save button, and then specifies a file path in a pop-up dialog box, where the file should be saved.  If the file already exists, the user is asked to overwrite or specify a different file path.

Pre-conditions: None

Post-conditions: Object file created

Extensions: None

 

Label: OPEN

Name: Open a file

Goal: To open a file of a saved work space state, and restore that state to the work space

Actors: User

Initiator: User

Description: User clicks on the load button, and then specifies a file path in a pop-up dialog box, where the file should be loaded from.  This state is then restored to the work space.

Pre-conditions: None

Post-conditions: Work space now reflects saved state.

Extensions: None

 

   Extra Features

 

Label: SAVE COMPLEX

Name: Save a complex object to a file

Goal: To create an external file that contains a complex object definition

Actors: User

Initiator: User

Description: User clicks on the workspace and drags to select a number of logic gates and their connections, and then selects Save Object from the menu.  The path where the file should be saved is specified in the resulting dialog box.

Pre-conditions: None

Post-conditions: Object file created

Extensions: None

 

Label: PLACE COMPLEX

Name: Read in a complex object file for placement

Goal: To read in an external object file and place it in the workspace

Actors: User

Initiator: User

Description: User selects Place Object from the menu, and specifies the path to a complex object file. The object is then read from the file and when the User clicks on the workspace, a copy of that complex object is placed there.  The user may click multiple times to place multiple copies of the complex object.

Pre-conditions: Object file exists

Post-conditions: None

Extensions:  None

 

Label: PRINT

Name: Print the workspace

Goal: To get a paper copy of the logic circuit diagram

Actors: User

Initiator: User

Description: User selects Print from the print menu, and then specifies a standard set of printing options.

Pre-conditions: None

Post-conditions: None

Extensions: None

 

Label: SCROLL

Name: Scroll the workspace

Goal: To view a different section of the workspace

Actors: User

Initiator: User

Description: User clicks on a scroll bar, causing the window pane to move the view of the workspace in a particular direction, displaying another section of the workspace.

Pre-conditions: None

Post-conditions: None

Extensions: None