240 likes | 383 Views
W ork O n W orkflows. Dharmen Mehta (Project Manager) Nimai Buch (Language Guru) Yash Parikh (System Architect ) Amol Joshi (System Integrator) Chaitanya Korgaonkar (Verifier and Validator). Why WoW ? (Our Motivation). Need to simulate workflows of complex processes
E N D
Work On Workflows Dharmen Mehta (Project Manager) NimaiBuch (Language Guru) Yash Parikh (System Architect) Amol Joshi (System Integrator) ChaitanyaKorgaonkar (Verifier and Validator)
Why WoW? (Our Motivation) • Need to simulate workflows of complex processes This stuff can get complex !! No kidding !
Why WoW? (Our Motivation) • Need to simulate workflows of complex processes • Need to KISS !! (Keep It Simple Silly) • A means to analyze and produce statistical results
Introduction • A language designed to handle workflows in industries • Java-like syntax • Aimed at easier design, simulation and analysis of workflows
Imperative Compiled Simple Statically Typed Intuitive Declarative DAG Easy Portable
SampleCode Resources Block • Resource • Final • Times (x) • Nodes • Input • output • Connections • Computations • End Block Nodes Block Connections Block Compute Block End Block
Syntactic Constructs • The New Guys • WoWNode • WoWNodes • x • convert, combine • WoW Library • The Old Timers • int • String • double • boolean • if, foreach, while…
Architecture Source Program *.WoW Lexer WoW.jflex Parser WoW.y Hash Tables Symbol Table AST Traversal WoW.y top_include_target.txt Target Program MainClass.java end_include_target.txt NodeThread.java Library Functions Package ConnectionChecks.java
Runtime Environment • Use JVM on user’s environment • Makefile! • translate • wowcompile • wowrun • Runtime script executes the Parser on the WoW program • ./wow WoWPrograms/Audi.WoW
Test Plan • 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 Scripts • test_script.sh Tests all the test programs in a loop. Outputs the number of test cases run and the result of the testing. • compare_java.sh Helper script called by test_script.sh which does actual part of comparing the two java programs using the diff command.
test_script.sh #!/bin/bash java_count=0 total_java=0 for D in `find Test -type d` do if[ "${D}" != "Test" ] then name=$(basename${D}) java_test=$(./compare_java.sh $name) if[[ "$java_test" == *passed* ]] then java_count=`expr $java_count + 1` fi echo $java_test total_java=`expr $total_java + 1` fi done echo "$java_count of $total_java Java tests passed”
compare_java.sh #!/bin/sh if diff -w -E -b -B "Test/$1/Translated.java" "Test/$1/ExpectedJava.java" >/dev/null ; then echo $1 Java test passed! else echo $1 Java test failed! fi
Test WoW Programs • HelloWorld.wow • OneNodeOnlyCombine.wow • TwoNodes.wow • TwoNodesMultipleOutput.wow • ThreeNodesLinear.wow • ThreeNodesEndBlock.wow • FourNodesComplex.wow
Test Failures • 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.
Git Commits White Paper Take-off AST & Translator Ready Assignment Overload Library Functions Added LRM Target Code Design Ready
Repository • https://github.com/amoljoshi/PLTWOW
Precious Learnings • “ IBM project management better, but not applicable”- Amol Joshi (System Integrator) • “The time spent upfront to make regression tests is worth the effort” – ChaitanyaKorgaonkar (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)