NonFunctional? Requirements

Operating Constraints
J2SE 1.4.2 (Java 2 SDK version 1.4.2) or newer must be installed.
The program requires BlueJ version 2.2.1.
The program requires a run-time of less than 30 sec per Kloc on minimum platform requirements.

Platform constraints
Minimum requirement for installing BlueJ version 2.2.1: 64Mb main memory, 450 MHz Pentium II processor or equivalent

Modifiability, Adaptability
Developers are able to add new code formatting standards and options through a .class file.
Each user is able to create a profile with their preference of formatting style.
User profiles are saved once created, but retain the ability to be
modified at future times.

Documentation
There will be a text document user manual.
The document will be at least at a 10th grade grammar level which should allow readable of the whole document in 2 hours.
There will also be text pop up dialogue boxes next to warning messages in the formatter itself to off on site explanation of any error messages.

Portability
The code is portable to any computer running Windows 98 and newer, Mac OS X and newer, Linux Red Had, and Fedora operating systems that meet the operating and platform constraints.

Reliability
If our extension closes itself in the case of an error, this should
be acceptable. It should not crash BlueJ entirely.

The program will fix all the unformatted java code in current open document or specified directories of files each time it is run. 

Security
The program will only modify files that it has access to.  Those files are the only files that the source formatter can run on.
The program will not alter any functionality of the code that is formatted. 

Usability
A user should be able to switch to ANSI, ASCII, and JavaDoc standards
by choosing one option, instead of having to set all the preferences
themselves. 

The program should be intuitive to use, which means all the options are grouped with similar options in the menu system and the extension included a help section to clarify usability. This allows the user to quickly find and use menus to allow a user to create a profile in less than 5 minutes.

Testability
The user gives code that is badly formatted and running the program
will fix the code not in the specified format.

For each functional requirement that is implemented, there will be example code that has that error in it.  The code will then be run through the formatter to show that it can fix that error in the code.  There will also be code with multiple errors in it to show that the code works on several different errors correctly at the same time rather then just one.

Deployment
This should be in the form of a Java .jar file that will be able to be directly put into the BlueJ extensions folder to have it implement itself with BlueJ.  Refer to BlueJ extension installition guide on BlueJ's website for any more clarification if needed. Instructions located at: http://www.bluej.org/extensions/extensions.html#install.

Performance
The program will at least finish the code formatting in less than 15 sec per Kloc on minimum system requirements. 

SRS Outline

User Manual Outline
Write a short explanation of your section/chapter and then use a step-by-step process to describe how to do/use whatever the section is about.
NOTE: Draw sketches; pictures are the (lazy) user's friend.

i. Table of Contents
ii. Thank you/Brief Summary of Product (saying how powerful it is and how it beats down its competitors)

1. Getting Started/Installation
go through extension installation process such as what's given on BlueJ except not  as general (mention specifically the use of the extension’s file)

2. Using Preset Formats
describe what they a preset format is
list and describe the ones we include

3. Customizing/Creating Profiles
note that customizing the options will turn off any preset format that's turned on
explain how to customize the options (rather than using a preset)
mention that they can save their customized options in their own spiffy profile

4. Formatting Code
explain what happens when “format errors” are found their code (pop up window with list of changes that could be made)
explain the options provided once the list pops up
*save original in a backup file to undo changes? (borrowed from another group)



5. 3rd Party Extensibility
say something like “for our down and dirty users, we allow the customization of our product itself through their own extension”
explain how they can write an extension for it (explain to me as well =( )

Credits
everyone’s jobs

Warning (optional I guess)
state how we are not responsible for any injuries or death that may occur while using our product etc

5.2 Data Dictionary

Check Box
   Name:                   Check Box
   Alias:                  None
   Description:            A box used for selecting/deselecting its corresponding item.
   Definition:             None

Options
   Name:                   Options
   Alias:                  None
   Description:            Possible configurations for formatter in FixStyle Options menu.
   Definition:             None

DisplayFile
   Name:                   DisplayFile
   Alias:                  Displayed File
   Description:            File displayed to screen after formatted.
   Definition:             DisplayFile = FormattedCode | Source Code

Dropdown Menu
   Name:                   Dropdown Menu
   Alias:                  None
   Description:            A menu on the UI whose menu items drop down in a list upon selecting the menu.
   Definition:             None

Feature
   Name:                   Feature
   Alias:                  None
   Description:            1. Property of the item being described.
                           2. A generic term for the style options.
   Definition:             None

Format
   Name:                   Format
   Alias:                  None
   Description:            The style specified by the user in the Options Window.
   Definition:             None

FormattedCode
   Name:                   FormattedCode
   Alias:                  Formatted Source Code
   Description:            Source code formatted with FixStyle formatter as per ConfigFile options/rules.
   Definition:             FormattedCode = FixStyleFormatter(unformattedCode, ConfigFile);

Lines
   Name:                   Lines
   Alias:                  None
   Description:            Pieces of code separated by the act of hitting the “enter” key.
   Definition:             None

Logic
   Name:                   Logic
   Alias:                  Control Statement
   Description:            Code which controls which statements in a program are run.
   Definition:             None

Options
   Name:                   Options
   Alias:                  None
   Description:            Style feature selected by the user.
   Definition:             None

Options Menu
   Name:                   Options Menu
   Alias:                  Options Window
   Description:            The window that provides the options for selecting a profile and selecting what style features to use.
   Definition:             None

Package
   Name:                   Package
   Alias:                  None
   Description:            Java library imported for use of the features provided by it.
   Definition:             None

Pentium II Processor
   Name:                   Pentium II Processor
   Alias:                  None
   Description:            Lowest standard of processors that is still able to run Fixstyle.
   Definition:             None

Platform
   Name:                   Platform
   Alias:                  None
   Description:            Computers that Fixstyle is compatible with.
   Definition:             None

Profile
   Name:                   Profile
   Alias:                  None
   Description:            The set of style features saved by Fixstyle
   Definition:             None

Program
   Name:                   Program
   Alias:                  Fixstyle
   Description:            The formatting software.
   Definition:             None

Selected Style
   Name:                   Selected Style
   Alias:                  None
   Description:            See Options.
   Definition:             None

Source Code File
   Name:                   Source Code File
   Alias:                  Source Code, Code, Source
   Description:            The Java file that contains the code to be formatted.
   Definition:             None

UnformattedCode
   Name:                   UnformattedCode
   Alias:                  Unformatted Source Code
   Description:            Unformatted original source code to be added to FixStyle formatter.
   Definition:             None

Upload File
   Name:                   UploadFile
   Alias:                  Upload File
   Description:            File uploaded such as the UnformattedCode to interact with FixStyleFormatter.
   Definition:             None

Rough User Manual Entries

UserManualOld

SRSOld

Attachments