Repository navigation
SRS Document
Team Members:
- Aaron Van De Brook
- Corrina Del Greco
- Luis Mora
- Samantha Shultz
| Version/Author | Date |
|---|---|
| 1.0 | 10.1.20 |
| 2.0 | 10.29.20 |
| 3.0 | 11.30.20 |
Contents of this Document
- Introduction
- Definitions, Acronyms, and Abbreviations
- Product Overview
- Specific Requirements
- Supporting Material
The system has the capability to create visual representations of the dependencies between modules, to assist in reducing the amount of work necessary to refactor modules. The system shall generate dependency graphs based on Graphviz dot file(s). Doxygen can generate call graphs of a project, but these call graphs can be quite large depending on the project. Our system will take the text representations of these call graphs and construct simplified dependency graphs. The simplified graphs will include the module for which the functions belong to, and they will separate functions between public and private.
- Doxygen - A tool for generating software reference documentation, used to generate Dot file(s) from a project for the system to use
- Dot - A software language to describe directed graphs
- Javadoc - A documentation generator for generating API documentation in HTML format from Java source code
- JDK - Java Development Kit
- The user has used Doxygen to generate Dot file(s) for the project that they wish to see graphs for
- The functions in the project should have a naming convention as follows: MOD_* for public functions and mod_* for private functions where mod is the prefix for the module the function belongs to, and * is a placeholder for the function name.
- The user will run on on Windows
Jianhua Liu: Customer plans to use the system to assist in cleaning up personal research code before making it open source.

Notably, our program does not have a variety of actors, only the general user provides a value through the command line to the program. This command line argument provides either a single Dot file or a directory containing Dot files. Internally, these are manipulated into something that Dot may create a desirable output image of. At a high level, program sequence can be viewed sequentially (predictably from one class to the next). All of the classes mentioned below (Reader, Parser, Lexer, Writer) are explained in detail in the System Design Document.
- Use Case 1: The user gives a file path to the program through the command line and it is processed.
- Use Case 2: The Reader reads the Dot file(s) found at the path and provides the file contents to Parser.
- Use Case 3: The Parser creates graph objects from the file contents, and removes and adds connections as needed.
- Use Case 4: The Lexer assists the Parser by tokenizing lines of the file.
- Use Case 5: The Writer uses the final graph objects to write new Dot file(s).
- Use Case 6: Dot outputs a visual image as output using the new Dot file(s).
- Use Case 7: The user sets the verbosity level of the program's logging output.
- Use Case 8: The user sets the name/destination for the output image file.
| No. | FR1 |
|---|---|
| Statement | The user shall provide a single Dot file for the system to create a graph image for |
| Source | The Customer |
| Dependency | None |
| Conflicts | None |
| Supporting Material | Use Case Diagram |
| Evaluation Method | Command line, -s flag |
| Revision History | Created version 3.0 |
| Where to Implement | Configurator |
| No. | FR2 |
|---|---|
| Statement | The user shall provide a directory containing Dot file(s) for the system to create a single graph image for |
| Source | The Customer |
| Dependency | None |
| Conflicts | None |
| Supporting Material | Use Case Diagram |
| Evaluation Method | Command line, -d flag |
| Revision History | Created version 3.0 |
| Where to Implement | Configurator |
| No. | FR3 |
|---|---|
| Statement | The user shall be able to set the logging verbosity level |
| Source | The Development Team |
| Dependency | Java Util Logging package |
| Conflicts | None |
| Supporting Material | None |
| Evaluation Method | Command line, -v flag |
| Revision History | Created version 3.0 |
| Where to Implement | Configurator |
| No. | FR4 |
|---|---|
| Statement | The user shall be able to set the output log file |
| Source | The Development Team |
| Dependency | Java Util Logging package |
| Conflicts | None |
| Supporting Material | None |
| Evaluation Method | Command line, -L flag |
| Revision History | Created version 3.0 |
| Where to Implement | Configurator |
| No. | FR5 |
|---|---|
| Statement | The user shall be able to set the output graph file |
| Source | The Development Team |
| Dependency | None |
| Conflicts | None |
| Supporting Material | None |
| Evaluation Method | Command line, -o flag |
| Revision History | Created version 3.0 |
| Where to Implement | Configurator |
| No. | FR6 |
|---|---|
| Statement | The program shall group functions by public or private |
| Source | The Customer |
| Dependency | None |
| Conflicts | None |
| Supporting Material | None |
| Evaluation Method | View output graph |
| Revision History | Created version 1.0 |
| Where to Implement | Parser |
| No. | FR7 |
|---|---|
| Statement | The program shall not show dependencies between functions within a module |
| Source | The Customer |
| Dependency | None |
| Conflicts | None |
| Supporting Material | None |
| Evaluation Method | View output graph |
| Revision History | Created version 3.0 |
| Where to Implement | Parser |
| No. | FR8 |
|---|---|
| Statement | The program shall not have global variables |
| Source | The Customer |
| Dependency | None |
| Conflicts | None |
| Supporting Material | None |
| Evaluation Method | Check for use of getter/setter functions in the code |
| Revision History | Created version 1.0, revised version 3.0 |
| Where to Implement | All classes |
| No. | FR9 |
|---|---|
| Statement | The program shall output a dependency graph image |
| Source | The Customer |
| Dependency | None |
| Conflicts | None |
| Supporting Material | None |
| Evaluation Method | View output graph |
| Revision History | Created version 3.0 |
| Where to Implement | All classes |
| No. | IR1 |
|---|---|
| Statement | The user shall use the program in its entirety through the command line interface |
| Source | The Development Team |
| Dependency | None |
| Conflicts | None |
| Supporting Material | Use Case Diagram |
| Evaluation Method | Run the program |
| Revision History | Created version 1.0 |
| Where to Implement | Configurator |
| No. | IR2 |
|---|---|
| Statement | The program shall organize the functions in a module in a neat way |
| Source | The Customer |
| Dependency | None |
| Conflicts | None |
| Supporting Material | None |
| Evaluation Method | View output graph |
| Revision History | Created version 1.0 |
| Where to Implement | Writer |
| No. | PER1 |
|---|---|
| Statement | The user shall run the program on Windows |
| Source | The Development Team |
| Dependency | All |
| Conflicts | None |
| Supporting Material | None |
| Evaluation Method | Run the program |
| Revision History | Created version 1.0 |
| Where to Implement | All Classes |
| No. | PER2 |
|---|---|
| Statement | The user shall have a JDK of 14 or higher |
| Source | The Development Team |
| Dependency | All except PE1 |
| Conflicts | None |
| Supporting Material | None |
| Evaluation Method | Check the Java version |
| Revision History | Created version 1.0, revised version 3.0 |
| Where to Implement | All Classes |
| No. | UHR1 |
|---|---|
| Statement | The user shall be able to access a help menu |
| Source | The Development Team |
| Dependency | None |
| Conflicts | None |
| Supporting Material | None |
| Evaluation Method | Command line, -h argument |
| Revision History | Created version 1.0, revised version 3.0 |
| Where to Implement | Configurator |
| No. | UHR2 |
|---|---|
| Statement | The program shall inform the user of a wrongly inputted file |
| Source | The Development Team |
| Dependency | None |
| Conflicts | None |
| Supporting Material | Use Case Diagram |
| Evaluation Method | Command line, -s flag, file with extension that is not .dot or non-existent Dot file |
| Revision History | Created version 1.0, evaluation method revised in version 3.0 |
| Where to Implement | Configurator |
| No. | UHR3 |
|---|---|
| Statement | The program shall inform the user of a wrongly inputted directory |
| Source | The Development Team |
| Dependency | None |
| Conflicts | None |
| Supporting Material | Use Case Diagram |
| Evaluation Method | Command line, -d flag, non-existent directory |
| Revision History | Created version 3.0 |
| Where to Implement | Configurator |
| No. | DoR1 |
|---|---|
| Statement | The programmers shall document the code using Javadoc |
| Source | The Development Team |
| Dependency | None |
| Conflicts | None |
| Supporting Material | None |
| Evaluation Method | View generated documentation |
| Revision History | Created version 1.0 |
| Where to Implement | All Classes |
| No. | DR1 |
|---|---|
| Statement | The programmers shall store graph attributes in objects |
| Source | The Development Team |
| Dependency | None |
| Conflicts | None |
| Supporting Material | None |
| Evaluation Method | Check the code |
| Revision History | Created version 3.0 |
| Where to Implement | Parser |
| No. | DR2 |
|---|---|
| Statement | The programmers shall have a knowledge of tree data structures |
| Source | The Development Team |
| Dependency | None |
| Conflicts | None |
| Supporting Material | None |
| Evaluation Method | Check for correct syntax in Dot files |
| Revision History | Created version 2.0 |
| Where to Implement | All Classes |
| No. | RR1 |
|---|---|
| Statement | The programmers shall package the end project into a Java archive (JAR) |
| Source | The Development Team |
| Dependency | None |
| Conflicts | None |
| Supporting Material | None |
| Evaluation Method | Run the program without downloading/installing any external programs |
| Revision History | Created version 1.0 |
| Where to Implement | All Classes |
| No. | SR1 |
|---|---|
| Statement | The program shall log behavior to a file |
| Source | The Development Team |
| Dependency | None |
| Conflicts | None |
| Supporting Material | Use Case Diagram |
| Evaluation Method | Run the program, check output log file |
| Revision History | Created version 3.0 |
| Where to Implement | All Classes |
| No. | SR2 |
|---|---|
| Statement | The programmers shall close all open file buffers when they are not using them |
| Source | The Development Team |
| Dependency | None |
| Conflicts | None |
| Supporting Material | None |
| Evaluation Method | Check the code |
| Revision History | Created version 1.0 |
| Where to Implement | Reader |
| No. | QA1 |
|---|---|
| Statement | The programmers shall not hardcode file paths |
| Source | The Development Team |
| Dependency | None |
| Conflicts | None |
| Supporting Material | None |
| Evaluation Method | Run the program on several different computers |
| Revision History | Created version 1.0 |
| Where to Implement | All Classes |
-
Abstract Program Flowchart
- Lays out the basic structure of the main method
-
Dot Language Notes
- Formal language definition of dot
- Influences the design of the parser and writer, both need to conform to Dot's language specification
-
Parser Design
- Lays out the initial basic design for the parser
- The parsers design will have an influence on the design of other classes such as Reader and Manipulator as well as the Manager
- Parser is complex and easy to mess up, so having a detailed and thorough design will prevent future issues