-
Notifications
You must be signed in to change notification settings - Fork 0
Project Structure
Joel edited this page Aug 18, 2018
·
5 revisions
The overall project layout is based on the default Gradle project layout and adapted from there.
The project has two main directories, one which contains the main code of the project and a second which contains all the relevant test suites.
In the main directory we decided on 3 main packages algorithm, data, manager, util and visualisation.
- algorithm: This package contains the main scheduling algorithms for the application, e.g the BasicScheduler (the greedy implementation).
- data: This package contains the data structures used for the application, including the implementation of a Directed Acyclic Graph to represent tasks as well as Schedule and Processor objects for the scheduling of tasks. A new addition to this package is ByteState, a data structure utilized by the A* algorithm to help minimize storage.
- manager: This package is used to maintain the state of states and to supply states to the scheduler based on various heuristics
- util: This package contains all other utilities required for the application, such as exceptions, input and output parsing as well as other extra features.
- visualisation: This package as indicated by its name contains all the classes related to the applications visualisation and GUI.
Workflow of Main.java
- First the command line arguments are parsed, this creates a config object which stores the parameters of the application
- Using the config object the input path of the .dot file is extracted, this is then parsed returning a graph representation of the tasks.
- The graph of tasks is then scheduled using a scheduler algorithm. This returns a Schedule object.
- The schedule object is finally parsed back to a .dot file.