-
Notifications
You must be signed in to change notification settings - Fork 4
Development Plan
Here we identified the tasks and activities required to be completed for iteration 1.
- Setup DevOps
- [DEV1] Setup TravisCI to build for Windows, Mac OSX and Linux
- [DEV2] Setup TravisCI to run clang-format and clang-tidy checks
- Agree to API for each component
- [API1] Identify components in SPA
- [API2] Discover the APIs required for each component
- [API3] Agree to API design of each component
- Develop header files for each component based on API
- [SPA1] Develop SPA Header
- [PLX1] Develop PQLLexer Header
- [SLX1] Develop SIMPLELexer Header
- [AST1] Develop ASTBuilder Header
- [QRY1] Develop QueryBuilder Header
- [DE1] Develop DesignExtractor Header
- [EVAL1] Develop PQLEvaluator Header
- [PKB1] Develop PKB Header
- Develop SPA to be able to parse a procedure with simple assign statements
- [SLX2] Implement SIMPLE lexing of identifiers, number, procedure, assign tokens
- [AST2] Implement AST building of procedure, assign and variable nodes
- [SPA2] Integrate the SIMPLE lexer and AST Builder in SPA
- Develop SPA to be able to parse read and print statements
- [SLX3] Implement SIMPLE lexing of read and print tokens
- [AST3] Implement AST building of read and print nodes
- Develop SPA to be able to parse if and while statements with simple conditions
- [SLX4] Implement SIMPLE lexing of if, else and relational operators
- [AST4] Implement AST building of if and while nodes
- Develop SPA to be able to parse expressions
- [SLX5] Implement SIMPLE lexing of arithmetic operators
- [AST5] Implement AST building of expressions
- Develop SPA to be able to parse complex conditonals
- [SLX6] Implement SIMPLE lexing of &&, || and ! tokens
- [AST6] Implement AST building of complex conditionals
- Develop SPA to be able to evaluate simple select queries
- [PLX2] Implement PQL lexing of identifiers, entities and select tokens
- [QRY2] Implement Query building of select entity queries
- [EVAL2] Implement PQL evaluation of select entity queries
- [DE2] Implement Design extraction of simple entities
- [PKB2] Implement PKB storage and retrieval of simple entities
- [SPA3] Integrate PQLLexer, Query Builder, PQL Evaluator and PKB in SPA
- [SPA4] Integrate PKB, Design extractor and AST Builder in SPA
- Develop SPA to be able to evaluate such that follows and parent queries
- [PLX3] Implement PQL lexing of such that, follows, parent and _
- [QRY3] Implement Query building of such that clause with follows and parent
- [EVAL3] Implement PQL evaluation of such that follows and such that parent
- [DE3] Implement Design extraction of follows and parent
- [PKB3] Implement PKB storage and retrieval of follows and parent
- Develop SPA to be able to evaluate such that follows* and parent* queries
- [PLX4] Implement PQL lexing of and follow* and parent*
- [QRY4] Implement Query building of such that clause with follows* and parent*
- [EVAL4] Implement PQL evaluation of such that follows* and such that parent*
- [DE4] Implement Design extraction of follows* and parent*
- [PKB4] Implement PKB storage and retrieval of follows* and parent*
- Develop SPA to be able to evaluate such that uses and modifies queries
- [PLX5] Implement PQL lexing of and uses and modifies
- [QRY5] Implement Query building of such that clause with uses and modifies
- [EVAL6] Implement PQL evaluation of such that uses and such that modifies
- [DE5] Implement Design extraction of uses and modifies
- [PKB5] Implement PKB storage and retrieval of uses and modifies
- Develop SPA to be able to evaluate assign pattern queries
- [PLX6] Implement PQL lexing of pattern and expressions
- [QRY6] Implement Query building of pattern clauses
- [ALG1] Implement infix to postfix conversion for an expression
- [EVAL7] Implement PQL evaluation of pattern clauses
- [DE6] Implement Design extraction of assign expressions in postfix form
- [PKB6] Implement PKB storage and retrieval of assign expressions
- Develop SPA to be able to evaluate a query consisting of both such that and pattern query
- [QRY7] Implement Query building of multiple clauses
- [EVAL8] Implement PQL evaluation of multiple clauses
- [EVAL9] Implement merging of results from multiple clauses
- Develop SPA to ensure syntactic errors and semantic errors are handled
- [QRY8] Implement checks for syntactic and semantic errors in Query Builder
- [AST7] Implement checks for syntactic errors in AST builder
- [DE7] Implement checks for semantic errors in Design Extractor
- Write system tests
- [STST1] Write SIMPLE source for testing specification conformance
- [PTST1] Write PQL queries for testing specification conformance
- [STST2] Write SIMPLE source for testing messy semantics that do not cause errors
- [PTST2] Write PQL queries for testing messy semantics that do not cause errors
- [STST3] Write SIMPLE source for stress testing the parser
- [PTST3] Write PQL queries for stress testing the PQL evaluation
Each of these tasks is then tacked to a week to completed by. Activities under each task are assigned based on the component been worked on which is assigned to each person at the start of the project as shown below.
| Team Member | Components |
|---|---|
| Wenhan | DevOps, PKB, Design Extractor |
| Elroy | SIMPLE AST, Design Extractor |
| Flora | SIMPLE Lexer |
| Pengyu | PQL Evaluator |
| Yufei | PKB, Query Builder |
| Shi Jin | PQL Lexer, Query Builder |
The activities to be completed each week for each person is shown below
| Team Member | Week 2 | Week 3 | Week 4 | Week 5 | Week 6 | Recess |
|---|---|---|---|---|---|---|
| Wenhan | DEV1, DEV2, API1, API2, API3 | SPA1, PKB1 | SPA2, DE1, DE2, PKB2 | DE3, PKB3 | DE4, PKB4, PKB5 | DE6, DE7, PKB6, STST3 |
| Elroy | API1, API2, API3 | AST1, AST2 | AST3 | AST4, AST5 | DE5 | AST6, AST7, STST1 |
| Flora | API1, API2, API3 | SLX1, SLX2 | SLX3 | SLX4 | SLX5, SLX6 | STST2 |
| Pengyu | API1, API2, API3 | EVAL1 | EVAL2, EVAL3, SPA3 | EVAL4, EVAL5 | EVAL6, EVAL7 | EVAL8, EVAL9, PTST1 |
| Yufei | API1, API2, API3 | PLX1, PLX2 | PLX3 | PLX4 | PLX5, PLX6 | PTST3 |
| Shi Jin | API1, API2, API3 | QRY1, QRY2 | QRY3 | QRY4, QRY5 | QRY6, QRY7 | QRY8, PTST2 |
We also employ continuous testing and continuous integration to complete these tasks while ensuring our software is sufficiently tested. Therefore unit tests and integration tests are implicitly written in conjunction with the implementation, either before or after implementation.
Here we identified the tasks and activities required to be completed for iteration 2.
- Revising prototype from iteration 1
- [RV1] Change implementation for SIMPLE parser and lexer
- [RV2] Change implementation for PKB
- [RV3] Change implementation for evaluator
- Agree to design decisions for populating relations in iteration 2
- [DDS1] Next relation
- [DDS2] Modifies and Uses involving procedure calls and procedures, Calls* relations
- [DDS3] Next* computed on the fly
- Agree to design decisions for changes to clauses in iteration 2
- [DDP1] If/while pattern clauses
- [DDP2] With clauses
- [DDP3] Select clauses with tuple or boolean
- Develop SPA to be able to evaluate such that modifies and uses queries for source with procedure calls and procedures
- [DE1] Implement Design extraction of modifies and uses for procedure calls and procedures
- Develop SPA to be able to evaluate such that next queries
- [PLX1] Implement PQL lexing of next
- [QRY1] Implement Query building of such that clause with next
- [EVAL1] Implement PQL evaluation of such that next
- [SPA1] Implement parser to extract next
- [PKB1] Implement PKB storage and retrieval of next
- Develop SPA to be able to evaluate such that calls queries
- [PLX2] Implement PQL lexing of calls
- [QRY2] Implement Query building of such that clause with calls
- [EVAL2] Implement PQL evaluation of such that calls
- [SPA2] Implement parser to extract calls
- [PKB2] Implement PKB storage and retrieval of calls
- Develop SPA to be able to evaluate such that calls* queries
- [PLX3] Implement PQL lexing of calls*
- [QRY3] Implement Query building of such that clause with calls*
- [EVAL3] Implement PQL evaluation of such that calls*
- [DE2] Implement Design extractor to extract calls*
- [PKB3] Implement PKB storage and retrieval of calls*
- Develop SPA to be able to evaluate such that next* queries
- [PLX4] Implement PQL lexing of next*
- [QRY4] Implement Query building of such that clause with next*
- [EVAL4] Implement PQL evaluation of such that next*
- [CFG1] Implement CFG
- [CFG2] Extract next* from CFG
- Develop SPA to be able to evaluate if/while pattern queries
- [PLX5] Implement PQL lexing of if/while pattern clauses
- [QRY5] Implement Query building of if/while pattern clauses
- [EVAL5] Implement PQL evaluation of if/while pattern clauses
- [PKB4] Implement PKB storage and retrieval of if/while control variables
- Develop SPA to be able to evaluate a select tuple or boolean query
- [PLX6] Implement PQL lexing of select tuple or boolean clauses
- [QRY6] Implement Query building of select tuple or boolean clauses
- [EVAL6] Implement PQL evaluation of select tuple or boolean clauses
- Develop SPA to ensure semantic errors are handled
- [QRY7] Implement checks for semantic errors in Query Builder
- [DE3] Implement checks for semantic errors in Design Extractor
- Write system tests
- [STST1]
- [PTST1]
- [STST2]
- [PTST2]
- [STST3]
- [PTST3]
The activities to be completed each week for each person is shown below
| Team Member | Week 7 | Week 8 | Week 9 | Week 10 |
|---|---|---|---|---|
| Wenhan | RV1, RV2, DDS1 | SPA1, SPA2 | PKB3 | STST3 |
| Elroy | DDS2 | DE1 | DE2, CFG1 | DE3, STST1 |
| Flora | DDS3 | PKB1, PKB2 | CFG2 | STST2 |
| Pengyu | RV3, DDP3 | EVAL1, EVAL2 | EVAL3, EVAL4, EVAL5 | EVAL6, PTST1 |
| Yufei | DDP1 | QRY1, QRY2 | QRY3, QRY4, QRY5 | QRY6, QRY7, PSTS3 |
| Shi Jin | DDP2 | PLX1, PLX2 | PLX3, PLX4, PLX5 | PLX6, PTST2 |
Here we identified the tasks and activities required to be completed for iteration 3.
- Revising prototype from iteration 2
- [RV1] Change implementation for PQL parser and lexer
- Develop SPA to be able to evaluate AFfects and Affects* queries
- [EVAL1] Implement PQL evaluation of Affects and Affects*
- [AFF1] Implement Affects algorithm
- [AFF2] Implement Affects* algorithm
- Optimizations in PQL evaluator
- [OPT1] Optimized the way to merge results of each clause
- Micro optimizations throughout SPA
- [MOPT1] Pre-allocating vectors
- [MOPT2] Reduce copying of objects
- Develop SPA to be able to evaluate extensions
- [EXT1] NextBip and NextBipT extensions
- [EXT2] AffectsBip and AffectsBipT extensions
- Testing
- [STST1] System test on Affects and Affects* relations
- [PTST1] Queries for STST1
- [STST2] System test on Calls and Calls* relations
- [PTST2] Queries for STST2
- [STST3] Stress system test
- [PTST3] Queries for STST3
The activities to be completed each week for each person is shown below
| Team Member | Week 11 | Week 12 |
|---|---|---|
| Wenhan | RV1 | MOPT1, MOPT2 |
| Elroy | AFF1 | AFF2 |
| Flora | EXT1 | EXT2 |
| Pengyu | OPT1 | STST3, PTST3 |
| Yufei | STST1 | STST2 |
| Shi Jin | PTST1 | PTST2 |