dharmen mehta (project manager) nimai buch (language guru) yash parikh (system architect) amol joshi...
TRANSCRIPT
Dharmen Mehta (Project Manager)
Nimai Buch (Language Guru)
Yash Parikh (System Architect)
Amol Joshi (System Integrator)
Chaitanya Korgaonkar (Verifier and Validator)
Need to simulate workflows of complex processes
This stuff can get complex !!
No kidding !
Need to simulate workflows of complex processes
Need to KISS !! (Keep It Simple Silly)
A means to analyze and produce statistical results
A language designed to handle workflows in industries
Java-like syntax
Aimed at easier design, simulation and analysis of workflows
• Resource• Final• Times
(x)
• Nodes• Input• output
• Connections
• Computations
• End Block
Resources Block
Nodes Block
Connections Block
End BlockCompute Block
The New Guys
WoWNode
WoWNodes
x
convert, combine
WoW Library
The Old Timers
int
String
double
boolean
if, foreach, while…
Source Program
*.WoW
Library Functions Package
Lexer
WoW.jflex
Parser
WoW.y
AST Traversal
WoW.y
NodeThread.java
Target Program
MainClass.java
Symbol
Table
Hash Tables
ConnectionChecks.java
top_include_target.txt
end_include_target.txt
Use JVM on user’s environmentMakefile!
translatewowcompilewowrun
Runtime script executes the Parser on the WoW program./wow WoWPrograms/Audi.WoW
Testing of the WoW compiler is done by comparing the translated Java code of a WoW program with the expected Java code.
Ideally translation should fail if there are compilation errors in WoW program.
If mismatch between translated java and expected java then test case fails.
test_script.shTests all the test programs in a loop. Outputs the number of test cases run and the result of the testing.
compare_java.shHelper script called by test_script.sh which does actual part of comparing the two java programs using the diff command.
#!/bin/bashjava_count=0total_java=0for D in `find Test -type d`doif [ "${D}" != "Test" ] thenname=$(basename ${D})java_test=$(./compare_java.sh $name)if [[ "$java_test" == *passed* ]]thenjava_count=`expr $java_count + 1`fiecho $java_test total_java=`expr $total_java + 1` fidoneecho "$java_count of $total_java Java tests passed”
#!/bin/shif diff -w -E -b -B "Test/$1/Translated.java"
"Test/$1/ExpectedJava.java" >/dev/null ; thenecho $1 Java test passed!elseecho $1 Java test failed!fi
HelloWorld.wow
OneNodeOnlyCombine.wow
TwoNodes.wow
TwoNodesMultipleOutput.wow
ThreeNodesLinear.wow
ThreeNodesEndBlock.wow
FourNodesComplex.wow
The test results shown in the previous slides where obtained at 100% pass rate after multiple testing iterations.
There were few bugs in parsing and translating which where caught during testing.
White Paper
LRM
Take-off
Target Code Design Ready
AST & Translator Ready
Library Functions Added
Assignment Overload
https://github.com/amoljoshi/PLTWOW
“ IBM project management better, but not applicable”- Amol Joshi (System Integrator)
“The time spent upfront to make regression tests is worth the effort” – Chaitanya Korgaonkar (Verifier and Validator)
“Collaborative programming is not difficult if every member of the team is informed about the architecture” – Dharmen Mehta(Program Manager)
“Done is better than perfect! Do not waste excess time on finer details” – Nimai Buch(Language Guru)
“Take your time to build a good architecture, but make sure it is close to perfect when you’re done.” – Yash Parikh (System Architect)