1 of 1

ReqEx - Extracting Requirements from Code

Zachary Bruggen, Nicholas Epler, Ivan Hernandez, Thomas Morrison

Faculty Advisor: Dr. Khaled Slhoub, Dept. of Computer Engineering and Sciences, Florida Institute of Technology

Design

Goal

Motivation

Tools Used

Features

  • Software requirements are an integral part of the software development cycle. When they are missing, it becomes difficult to understand the full functionality of the system
  • To make open-source programs easier to understand for both developers and students.

  • Create a system that can take in source code as input and return general requirement(s)
  • Save outputted requirements to a file on the system
  • Successfully generate requirements for introductory level programs.
  • C++ for Backend Programming
  • Azure Data Studio for Database Functionalities
  • Freeling for Text Analysis
  • U++ for GUI Development
  • Github for Project Hosting
  • Command Line Interface or GUI
  • Users can drag and drop/upload files
  • Option to generate a normal or advanced report
  • Export/save report to file on the user’s local machine

Approach

  • We approached the problem by first tackling the parsing and storing the data needed to for requirement generation. For the parser we utilized the FreeLing external Library to aid in Part-of-Speech analysis to divide the source code based on Part-of-Speech particles. We utilized a Linked list logic tree to keep track of which functions/methods were being called in the program to avoid analysing scrapped code. Utilizing objects, we stored all of the data in a way that the API call could send it to our Database for requirement generation.
  • Database hosted through Azure integrates an API call to the server sending information from the parsed code to the host.
  • Utilizes Dijkstra's Algorithm to inherit the shortest path between the information that is required to be sent.

Database Integration

- Connects information from the host to the analyzer

- Utilizes structuring to assign words to separate values.

Upload file

Output requirements, Save file

Upload File

Save File

File System

Interacts with

GUI

Create Menu Bar

Label box for input and output

Set width, height, and bounds

Input field to copy source code

Output field to save requirements

Front End

Back End

Interacts with

Read_File (Parse.cpp)

Parse based on keywords and category, such as contents in a method, method names, comments, and preprocessor directives

Code Base

Interacts with

Azure Database

Dijkstra’s algorithm to find shortest path from source

Information parsed to identify what is or isn’t near the source

Ranked utilizing formula

Ranked data sent back to code base and resent to database for operation

Parse_File_Methods (Parse.cpp)

Get all of the keywords from methods in a file

Output Parsed Contents

Contents are categorized, stored, and output to the terminal as well as database for further evaluation

Output Logic Flow Tree

Show the program flow of control and the parent functions that call children functions