xvcl: a tool for reusing software
DESCRIPTION
XVCL: A Tool for reusing software. Soe Myat Swe Software Engineer (CAP Dept.). Presentation overview. Background What is XVCL? Our experiences Current status Conclusion. Background. SES (Domain Knowledge). Waterloo University (Reliability). Work on XVCL. need more than Frame offer. - PowerPoint PPT PresentationTRANSCRIPT
1
XVCL: A Tool for reusing software
• Soe Myat Swe • Software Engineer (CAP Dept.)
2
Presentation overviewPresentation overview
• BackgroundBackground
• What is XVCL?What is XVCL?
• Our experiencesOur experiences
• Current statusCurrent status
• ConclusionConclusion
3
BackgroundBackground
(1998)
NUS(Reusability)
Netron Inc.(Experties in
Frame)
Waterloo University(Reliability)
SES(Domain Knowledge)
NUS + Paul Bassett (Netron Inc.)
XVCL1.0
need more than Frame offer
Work on XVCL
XVCL 2.0
Experiment with CAD
More improvements
CAD = Computer Aided Dispatch System
XVCL = XML-based Variant Configuration Language
More experiments
SES(Domain Knowledge)
4
What is XVCL?What is XVCL?
XML-based Variant Configuration XML-based Variant Configuration LanguageLanguage
• building generic reusable and building generic reusable and customizable components (meta-customizable components (meta-components)components)
• deriving concrete components from deriving concrete components from generic components by customizing generic components by customizing through configurationthrough configuration
5
What is XVCL?What is XVCL?
<x-frame>
class <value-of expr = “?@classname?”/> { public static void main(String[] args) { <while using-items-in=“messages”> System.out.println( <value-of expr = “?@messages?”/>); </while> }}</x-frame>
XVCL processor
HelloHello1
Hello2
Hello3
Customization Process
customization
script
class Hello1 { public static void main(String[] args) { System.out.println(“Hello world!”); System.out.println(“This is XVCL.”); }}
<set var=“classname” value=“Hello1”/><set-multi var=“message” value=“Hello world, This is XVCL.”/>
6
Pilot project: summaryPilot project: summary
• Command and control (C2) application Command and control (C2) application
• Developed in C# on .NET platformDeveloped in C# on .NET platform
• The scope of the pilot application:The scope of the pilot application:– 13 domain entities (User, Task, Resource, etc.)13 domain entities (User, Task, Resource, etc.)
– GUI, service / entity / DB classesGUI, service / entity / DB classes
• Results: we eliminated 68% of codeResults: we eliminated 68% of code
7
High-level redundancies: High-level redundancies: an examplean example
• each entity (User, Task) needs similar each entity (User, Task) needs similar operations:operations:
• operations (operations (create, update, etc.) create, update, etc.) follow the follow the same pattern independently of the entity same pattern independently of the entity
entities:
operations:
User Task Resource
create update find list save
8
FormUserCreation<<form class>>
UserService<<service class>>
DBUser<<DB class>>
User<<entity class>>
executes
access
manipulates
visualizes
persists
FormTaskCreation<<form class>>
TaskService<<service class>>
DBTask<<DB class>>
Task<<entity class>>
persists
executes
manipulates
access
visualizes
GUI
Service
Entity
DB
Operation Operation createcreate for User, Task for User, Task
9
Summary of the classesSummary of the classes• 112 classes in GUI, service, entity, DB access 112 classes in GUI, service, entity, DB access
LayerLayer ExamplesExamples # classes# classes
GUIGUI forms, controls, buttonsforms, controls, buttons 5959
ServiceService Create, Delete, Update Create, Delete, Update 1919
EntityEntity Task, User, ResourceTask, User, Resource 26 26
DBDB database access classesdatabase access classes 1313
10
Our experienceOur experience
• experimented on a prison prototype systemexperimented on a prison prototype system– 112 classes in GUI, service, entity, db access 112 classes in GUI, service, entity, db access
LayerLayer DescriptionDescription No. of classesNo. of classesGUI GUI Forms, controls, buttonsForms, controls, buttons 5959ServiceService Containing retrieve, update, Containing retrieve, update,
insert etc.insert etc.1919
Entity Entity operator, incident, task etcoperator, incident, task etc 2626 (counting both entity and (counting both entity and
entity list classes)entity list classes)
DBDB Database access classes for Database access classes for persisting entitiespersisting entities
1313
11
Our Experience: XVCL vs. original C# Our Experience: XVCL vs. original C# solution)solution)
0
5000
10000
15000
20000
Lines of code (LOC)
Components
Lines of code comparison between XVCL and C#
XVCL LOC
C# LOC XVCL LOC 3379 75 263 450 95 1743 5910
C# LOC 12220 682 2493 3351 77 0 18823
GUI Service Entities DB Utility Others Total
12
Our Experience: ResultsOur Experience: Results
• XVCL was easier to apply than expectedXVCL was easier to apply than expected
• we got encouraging results (we got encouraging results (presented in presented in
ICSE 2003 conferenceICSE 2003 conference):):– to add a new domain entity to the application:to add a new domain entity to the application:
with XVCL (avg)with XVCL (avg) without XVCL (avg)without XVCL (avg)
133 LOC133 LOC 1440 LOC1440 LOC
2 man/hours2 man/hours 16 man/hours16 man/hours
13
Our next experienceOur next experience
• Web Portal system:Web Portal system:– e-learning systeme-learning system– 20 domain entities20 domain entities– relationships between entities relationships between entities
(aggregations, association, abstract (aggregations, association, abstract inheritance, etc)inheritance, etc)
• Time duration: Time duration: two weeks!two weeks!
• Made of: JavaScripts and ASP Made of: JavaScripts and ASP pages pages
14
Our next Experience: ResultsOur next Experience: Results
• XVCL was XVCL was eveneven easier to apply than easier to apply than
expectedexpected
• we got we got moremore encouraging results: encouraging results:– able to deliver the sample system on timeable to deliver the sample system on time
– able to create other similar portals on demandable to create other similar portals on demand
– to add a new domain entity to the web portal:to add a new domain entity to the web portal:
with XVCL (avg)with XVCL (avg) without XVCL (avg)without XVCL (avg)
50-60 LOC50-60 LOC 1000-1500 LOC1000-1500 LOC
2-5 minutes2-5 minutes 2-6 man/hours (excluding time 2-6 man/hours (excluding time for defining domain model)for defining domain model)
15
Current statusCurrent status
• Many published papers based on XVCLMany published papers based on XVCL– FSE, SSR, ICSE tool demonstration…,etc.,FSE, SSR, ICSE tool demonstration…,etc.,
• has not reached its maturity for industrial has not reached its maturity for industrial wise application:wise application:– short in Guidelines and Methodologyshort in Guidelines and Methodology– short in supporting tools (e.g., editors, reverse engineering, short in supporting tools (e.g., editors, reverse engineering,
debugger, etc)debugger, etc)
• collaborations with NUS continuescollaborations with NUS continues– Guidelines and MethodologyGuidelines and Methodology– publish paperspublish papers– more experimentsmore experiments
16
ConclusionConclusion
• reduces the development time and reduces the development time and efforteffort
• reduces code redundancies by 68% reduces code redundancies by 68% • free and open source! free and open source!
((http://fxvcl.sourceforge.net/)http://fxvcl.sourceforge.net/)
• language is simple and easy to learnlanguage is simple and easy to learn
• experimental studies gives experimental studies gives encouraging resultsencouraging results
• new and need to wait for its maturitynew and need to wait for its maturity
17
Thank you!Thank you!
Questions?Questions?