The project aims at developing a handy tool for devlopers to create a class diagram (UML). GUI is always a fancy way for ordinary users to utilize an information system. However, syntax and text input is a much handy way for developers to quickly finish their tasks.
Inspired by an online sequence diagram tool, it is proposed to create a system that resembles its input and generates a class diagram.
- Agile development
- Scrum, biweekly sprint
- CI/CD
- Slack: Communication tool
- Jasmine: automated test script / TDD
- UML
Project scope statement:
Develop a basic online text-to-class-diagram tool for quick
documentation of software project within 10 weeks.
Biweekly sprints
VM, 7 developers
-
Text parser Design
- Design syntax
[#TT-01]Design object type identifier[#TT-02]Design attribute identifier[#TT-03]Design method identifier[#TT-04]Type identifier[#TT-05]Design association identifier
[#TT-06]Create test cases[#TT-07]Implement Unit test scripts[#TT-08]Design tokenizing flow- Implement tokenizer
[#TT-09]Implement object type identifier[#TT-10]Implement attribute identifier[#TT-11]Implement method identifier[#TT-12]Implement association identifier
- Design syntax
-
Drawing diagram
[#TD-01]Design test cases[#TD-02]Design box-location assignment algorithm[#TD-03]Feasibility Study on using VueJS for SVG diagram generation[#TD-04]Implement box drawing[#TD-05]Implement box-size estimation[#TD-06]Implement box-location assignment algorithm[#TD-07]Implement assocication link drawing
-
User Interface
[#TI-01]Design HTML layout[#TI-02]Implement HTML layout[#TI-03]Implement image export
-
System integration
[#TI-04]Integrate the UI to the system[#TI-05]Integrate the text-analysis and the drawing modules
-
Deployment
[#TY-01]Setup server VM[#TY-02]Setup Apache server[#TY-03]Deploy application
-
Road-map
[#RM-01]Print function by click function[#RM-02]Email image by click function
title Graph Title class A >> Class SU-A || interface IF1 || interface IF2 + attr1 : int # attr2 : string - attr3 : double ~ attr4 : Boolean + method1():void # method2(a:int, b:byte[]):int interface B >> interface C + method1():string + method2(str:string...):double
Class A, which extends Class SU-A implements Interface IF1 and IF2, has 4 attributes, which are:
- public integer attr1
- protected string attr2
- private double attr3
- internal Boolean attr4 and 2 methods:
- public function method1 with no paramters, returns nothing
- protected function method2 with 2 paramters: 1 int, 1 byte[]; returns an integer
Interface B, which extends Interface C, has 2 methods
- method1 with no parameters, returns a string
- method2 with paramter array of strings, returns a double
The svg element draw in its own canvas. It draws the elements
according to the viewBox. The viewBox consists of 4 values,
e.g. viewBox="-10 0 20 40", which are starting x and y,
as well as width and height respectively.
Only 3 elements are required in the graph:
<text>,
<rect>,
<path>.