Transcript ROAT (DSL
ROAT by Sultan Eid
(Requirements-Oriented Advanced Tracing)
ROAT (DSL project)
• Content:
– Goals , Scope
– Definition, Grammar
– Editor
– Code Generation, Testing
– Language Evolution
– Conclusion
Why? And Who?
ROAT (DSL project)
• Goals
– Define traces for requirements
•
•
•
•
Maintain changes (refactoring ?)
Capture requirement’s reflection on code
Enhance requirement engineering process
Requirements becomes firmly linked with
project elements
• Simulate certain changes then measure effort
Concept
Requirements
Process Flowchart
Grammar
• Define Requirement 'req1'
{ type='Availability' value='System should be available 24
hours every Monday' };
• Define Element ‘F103' {type='Method' value='103'};
• Depend d1 req2,req3;
• req2 isASuperOf req3;
• req3 isASubOf req2;
• Trace 't1' req4;
MetaModel
Implementation
•
•
•
•
•
Xtext
Xpand
Umple/JET Template (Experimental)
JUnit
EMF
Implimintation
•
•
•
•
Created the DSL concrete grammar
Generated the language Parser
Generated Check file, for constraints
Processed the model with EMF:
– Generated the Ecore model for the language
• Generated Code:
– 1. Xpand -> Java Code (Tested)
– 2. Regenerated Java through Umple
Code Generation iterations
Xpand
Template
JET Template
Testing and Validation
• First Tested Manually.
• Then used Junit to test some parts of the
generated Java Code.
– Tested the GC by Xpand2Java
– Tested the GC by Xpand2umple2Java
• Constrains:
The constraints were written in a Check
file.
Environment
• The language will be compiled as a plugin
for eclipse.
Defficulties
• There is no mechanism/automation to
check the validity/quality of requirements.
• Depenedency, Ancestor, Links should be
defined manually (so far …)
Language Evolution
• The Language
could become
more abstract in
terms of Tracing
but specific to
requirements
• Enhance
visualization
Language Evolution
• Integratability. to be plugged in with other MRS to
enhance traces.
• Create different perspective for actors:
– Developer gets code marking mechanism
– Testser gets tables of Requirement and Testing Functions
Linked through traces
• The language may become graphical as well, to be
reflected graphically on UML, Petri Nets and others
Possible ?
• Is it possible to develop an algorithm that
that automate the following processes:
• Defining dependency
• Linking Requirements with corresponding
elements(source code, DB ..etc)?
• Determine the ancestor relationship?
– Is it possible to make Requirement Tracing built in the
architecture of the software?
– Do we need more than this?
Conclusion
• ROAT is a tool trace requirements
• Supports MRS’s
• Could be much more efficient if supported by
Visualization mechanism
• Requirements can be firmly linked with
development components
• Changes are inevitable but can be controlled
• Xtext is awsome.
•
•
•
•
•
•
•
•
Object-Oriented Software Engineering: Bruegge Detroit
Object-Oriented Software Engineering: Timothy Lethbridge and Robert.L
Domain-Specific Languages: Martin Fowler
Domain Driven Design
Jon Den Haan’s Blog: http://www.theenterprisearchitect.eu
http://www.xtext.org/
http://www.openarchitectureware.org/
Xpand: A Closer Look at the model2text Transformation Language by
Benjamin Klatt , 2007
Questions?