Post on 13-Jan-2016
transcript
Boosting your CareerSoftware Technology
CERN-IDE Project
Content• PDEng Program• Program Structure• The trainees• Team formation• Editor team• Debugger team
PDEng
3TU
– SAI (Stan Ackermans Institute)• PDEng (Professional Doctorate in Engineering)
» TU/e - Software Technology
• TU Eindhoven• TU Delft• University of Twente
PDEng TeamTraineesStructure E-Team D-Team
I II III IV V
1 Year 1 YearIn-House On-Site
PDEng ST (2-years)
CERN-IDE Project
PDEng TeamTraineesStructure E-Team D-Team
The Trainees
Seventeen TraineesTwelve nationalities
LearnSoftware architecture & design
&Project management
PDEng TeamTraineesStructure E-Team D-Team
Team Formation CERN Project
• 1 x Project Manager• 1 x Architect • 1 x Communication
Manager/Coordinator
• 2 x Workgroups– Editor & Debugger
Konstantinos
Tarun Miroslav
PDEng TeamTraineesStructure E-Team D-Team
Editor Team
Christos
Surafel
Jonathan (Tester) Abelneh Parisa
Vadim (Tester) Panagiotis (Designer)
PDEng TeamTraineesStructure E-Team D-Team
Debugger Team
Vladimir
Mohsen
Fangyi (Tester) Mari Bayasgalan
Djohan (Tester) Suleyman (Designer)
PDEng TeamTraineesStructure E-Team D-Team
Content• Context• Scope• Requirements• Time Line• Architecture• Editor• Debugger• Results
Context
Context TimeReq…Scope Archi… Editor Debugger Results
• WinCC-OA: robust SCADA system• Control scripts• Usability
– Isolated windows– Primitive editor– Separate debugger
Scope
Context TimeReq…Scope Archi… Editor Debugger Results
• Feature rich prototype• Modern IDE features• Expose WinCC-OA debugger• Limited WinCC-OA knowledge
Requirements
Context TimeReq…Scope Archi… Editor Debugger Results
• Integrated windows• Editor
– Smart refactoring– Referencing– Coding standards
• Debugger– Usable debugger (integrated)
Time Line
Context TimeReq…Scope Archi… Editor Debugger Results
IDE Evaluation18/10/2013
First Prototype (internal)
25/10/2013Feature Package 1
1/11/2013 Feature Package 215/11/2013
Feature Package 329/11/2013
WinCC-OA CourseIDE Evaluation
First Prototype (internal)Feature Package 1Feature Package 2Feature Package 3
Wrap-up
W92013 2013W1 W2 W3 W4 W5 W6 W7 W8Oct Nov Dec
Architecture Process
Context TimeReq…Scope Archi… Editor Debugger Results
• CAFCR• Modeling
Customerobjectives
Application Functional Conceptual Realization
CustomerWhat
CustomerHow
ProductWhat
ProductHow
What does Customer needIn a Product and Why?
derives, justifies, needs
enables, supports
Editor
Context TimeReq…Scope Archi… Editor Debugger Results
• Eclipse based• Xtext• Plugin based• 28+ features of a modern IDE• Integrated windows• Uses eclipse marketplace• Extensible
Debugger• Plugin based• Thrift• Connected IDE• Multilevel debugging• Conforms to distributed nature• API based
Context TimeReq…Scope Archi… Editor Debugger Results
Results• IDE
– Feature rich code editor– integrated debugger
• POC for IDE for DSL
Context TimeReq…Scope Archi… Editor Debugger Results
Content• Functional view• Use case model• Requirement model• Quality attributes• Conceptual view• Structural decomposition• Realization view• Design decisions• Derived architecture
Architecture Process
Customerobjectives
Application Functional Conceptual Realization
CustomerWhat
CustomerHow
ProductWhat
ProductHow
What does Customer needIn a Product and Why?
derives, justifies, needs
enables, supports
Functional View (What?)• Use Case Model• Requirement Model
Func. QAReq. ModelUC Model C View Struc. Dec. R View DD StyleFunc. Dec.
Use Case Model• Top Level:
– Create a Ctrl Script– Edit a Ctrl Script– Execute a Ctrl Script– Debug a Ctrl Script
• Secondary Level– Monitor the Project Log– Open a Ctrl Project– Load from CVS
Func. QAReq. ModelUC Model C View Struc. Dec. R View DD StyleFunc. Dec.
Use Case Model
Func. QAReq. ModelUC Model C View Struc. Dec. R View DD StyleFunc. Dec.
Requirement Model• Source Code Editor Requirements
– Content Assistance– Smart Refactoring– Syntax Coloring– Validation
Func. QAReq. ModelUC Model C View Struc. Dec. R View DD StyleFunc. Dec.
Requirement Modelreq Source Code Editor Requirements
ValidationSyntax Coloring
Smart Refactoring
Content Assist
Source Code Editor Specifications
(from CERN Model)
FR020 - Integrated online documentation support (17)
FR005 - Advanced Search (92)
FR012 - Display call hierarchy (29)
FR013 - Documentation Skeleton (57,87)
FR014 - GoTo Function Definition (46)
FR022 - Package Import (50)
FR028 - Uneditable Code Functionality (54)
FR029 - Avoid Multiple Libraries (23)
FR009 - Code Bookmarks (55)
Func. QAReq. ModelUC Model C View Struc. Dec. R View DD StyleFunc. Dec.
Conceptual View (How?)• Structural Decomposition• Functional Decomposition
Func. QAReq. ModelUC Model C View Struc. Dec. R View DD StyleFunc. Dec.
Structural Decomposition
SCADA Middleware
WinCC-OA
RPC Communication
Eclipse based IDE
SCADA
Sensors & Actuators
Event Manager
API Manager
Thrift Interface
Eclipse IDE
Debugger Plug-in
GITPlug-in
SVNPlug-in
DoxygenPlug-in
Xtext Plug-in
Data Manager
Control Manager
Ctrl UICtrl
Func. QAReq. ModelUC Model C View Struc. Dec. R View DD StyleFunc. Dec.
Syntax UI
Syntax
Syntax Refactor
Content Assistant
Parser
Source code editor
Syntax Coloring
Validation
Lexical Analysis
Debug UI
Debug
Debug
Breakpoint
Datapoint Lifecycle
Step
Continue
Execute UI
Execute
Run
Source code editor UI
Edit a Ctrl Script Debug a Ctrl Script Execute a Ctrl Script
Log viewer UI
Log Viewer
Ctrl Manager
Stop
WinCC-OA Communication
Func. QAReq. ModelUC Model C View Struc. Dec. R View DD StyleFunc. Dec.
Realization View (How?)• Early Design Decisions• Quality Attributes• Architecture Style
Func. QAReq. ModelUC Model C View Struc. Dec. R View DD StyleFunc. Dec.
Design Decisions• Current Debugger over New Debugger
– Consistency– Limitations
• Eclipse over NetBeans– Architecturally Similar– Lower Learning Curve– Third-party Plugin Support– DSL Support (Xtext, IMP)
Func. QAReq. ModelUC Model C View Struc. Dec. R View DD StyleFunc. Dec.
Quality Attributes• Usability
– Learning System Features (Learning Curve)– Efficient System Usage– System Customization (Perspectives and Views)
• Portability– OS Compatibility
• Extensibility– Minimal Development Effort
• Interoperability– Semantic Understanding
Func. QAReq. ModelUC Model C View Struc. Dec. R View DD StyleFunc. Dec.
Architecture Style
Func. QAReq. ModelUC Model C View Struc. Dec. R View DD StyleFunc. Dec.
Architecture(Plugin based)
Eclipse IDE
UI Workbench
SVN Plug-In
GIT Plug-In
DoxygenPlug-In
DebuggerPlug-In
XtextPlug-In WinCC-OA System
Func. QAReq. ModelUC Model C View Struc. Dec. R View DD StyleFunc. Dec.
Content• Requirements• Xtext over IMP• Importing Grammar• Feature Classification• Features• Challenges• Future work
Eclipse IDE
UI Workbench
SVN Plug-In
GIT Plug-In
DoxygenPlug-In
XtextPlug-In
Requirements• Editor that recognizes the Ctrl language• Supports the user with 28+ features• Provides a friendly programming environment
Requirements FeaturesGrammarXtext Challenges Future Work
Why Xtext• Better documentation• Features derived from Eclipse• Officially supported tool
Requirements FeaturesGrammarXtext Challenges Future Work
Importing grammar• Using lex and yacc files BNF
• Transforming BNF ( avoiding left recursion )
• Restructuring grammar elements for easier feature development
• Using cross reference to reduce the development time
Requirements FeaturesGrammarXtext Challenges Future Work
Feature Classification
Class ExampleContent Assist Auto-complete function names
Smart Refactoring Rules based code reformatting
Syntax Coloring Multiple variable definition
Others Package import, Display call hierarchy
Requirements FeaturesGrammarXtext Challenges Future Work
Auto-complete Function Names
Requirements FeaturesGrammarXtext Challenges Future Work
Rules Based Code Reformatting
Requirements FeaturesGrammarXtext Challenges Future Work
Multiple Variable Definition
Requirements FeaturesGrammarXtext Challenges Future Work
Package Import
Requirements FeaturesGrammarXtext Challenges Future Work
Display Call Hierarchy
Requirements FeaturesGrammarXtext Challenges Future Work
Challenges• Many features are grammar related
– Grammar and feature interdependence• Grammar semantics are imported indirectly
• Grammar elements needed restructuring
• No support for some non-derived features– Few features developed from scratch
• Only few plugins available.Requirements FeaturesGrammarXtext Challenges Future Work
Future work• Grammar, Grammar, Grammar!
– Elegant way of implementing semantics– Restructuring (optimization)
• Optimizing the implementation of some features to achieve better total performance.
Requirements FeaturesGrammarXtext Challenges Future Work
Content• Requirements• Expectation• Design decisions• Reality• Modern Debugger• Features• Ctrl Debugger• Challenges• Future work
Eclipse IDE
UI Workbench
DebuggerPlug-In
WinCC-OA System
Requirements• Make a functional debugger
• Requirements derived from use cases– Execute script– Debug script
• Debug perspective• Stack trace• Variable watch• Log viewer
Req… RealityDDExpec… Modern Features Ctrl. D. Challenges F. Work
Debugger - expectation
Req… RealityDDExpec… Modern Features Ctrl. D. Challenges F. Work
DebuggerPlug-In WinCC-OA System
SVN Plug-In
GIT Plug-In
DoxygenPlug-In
XtextPlug-In
Eclipse IDE
UI Workbench
Communication framework
Design Decisions• Imp vs. Xtext vs. Independent Plugin• Eclipse debug toolbar API vs. Greenfield
implementation• API based at WinCC-OA side• Variable watcher: Tree view vs. Table view• Control manager: code vs. command line
Req… RealityDDExpec… Modern Features Ctrl. D. Challenges F. Work
Debugger - reality
Req… RealityDDExpec… Modern Features Ctrl. D. Challenges F. Work
DebuggerPlug-In WinCC-OA System
Communication framework
Variable watcher
Stack trace
Console log
Parser
API Manager
Ctrl Manager
Modern Debugger
Req… RealityDDExpec… Modern Features Ctrl. D. Challenges F. Work
WinCC
debugger
OOTI Craftsm
anship
Features (desired)• Set/Remove Break Point• Active Row Focus/Highlight• Debug Button• Step Button (step / step into)• Continue Button• Stop Button• Keyboard shortcuts
Req… RealityDDExpec… Modern Features Ctrl. D. Challenges F. Work
Features (necessary)• Log Console• Variable watch• Ctrl & Debug perspectives• Adapt WinCC-OA project to CtrlEclipse• Parser• Multi-level debugging
Req… RealityDDExpec… Modern Features Ctrl. D. Challenges F. Work
The Ctrl Debugger
Req… RealityDDExpec… Modern Features Ctrl. D. Challenges F. Work
Challenges• Blocking tasks• Every piece in the mosaic is important• Set a breakpoint• WinCC-OA limitations
– Parser– Delay handling
• Thrift interfaces
Req… RealityDDExpec… Modern Features Ctrl. D. Challenges F. Work
Future work• WinCC-OA core functionality
– Remove current workarounds• Parser to be replaced with API to the data
• Communication between CtrlEclipse IDE and WinCC-OA– Non-blocking communication
• Optimization– Coloring– Settings
• Conditional breakpointsReq… RealityDDExpec… Modern Features Ctrl. D. Challenges F. Work
Content• Recap• Challenges• Future work and improvements• Conclusion
Recap-Architecture Process• CAFCR
Customerobjectives
Application Functional Conceptual Realization
CustomerWhat
CustomerHow
ProductWhat
ProductHow
What does Customer needIn a Product and Why?
derives, justifies, needs
enables, supports
Recap-Architecture
Eclipse IDE
UI Workbench
SVN Plug-In
GIT Plug-In
DoxygenPlug-In
DebuggerPlug-In
XtextPlug-In WinCC-OA System
Recap-Editor• Xtext• Grammar • Feature classification
– Content Assist– Smart Refactoring– Syntax Coloring – Validation rules– Others
• 28+ features
Eclipse IDE
UI Workbench
SVN Plug-In
GIT Plug-In
DoxygenPlug-In
XtextPlug-In
Recap Debugger• Custom API manager• Thrift• Eclipse plugin
(independent)
• API based• Ctrl + Debug perspective
– Stack trace– Variable watch– Multilevel debugging
Eclipse IDE
UI Workbench
DebuggerPlug-In
WinCC-OA System
Challenges• Editor
– Requirement elicitation– Grammar-feature dependence– Grammar restructuring
• Debugger– Component communication– Result parsing– Functional interdependence
Future Work• Editor
– Grammar semantics– Static code analysis (OCL rules)– Integrated test framework
• Debugger– Non blocking communication– Natural APIs from WinCC-OA– Conditional breakpoints
Thank You