CoDesign/CoWareAn Extensible and Scalable Collaborative Software Modeling Infrastructure
SoftArch, USCOctober 20th
Jae young Bang, USC ([email protected])George Edwards, USC ([email protected])Daniel Popescu, USC ([email protected])Joshua Garcia, USC ([email protected])Jerry Lin, USC ([email protected])
Prof. Nenad Medvidovic, USC ([email protected])
Naveen Kulkarni, Infosys ([email protected])Girish Maskeri Rama, Infosys ([email protected])
Dr. Srinivas Padmanabhuni, Infosys ([email protected])
Outline
• Motivation
• Overview: CoDesign/CoWare
• System Architecture: CoDesign/CoWare
• Features• Synchronization• Conflict Definition• Conflict Detection• Conflict Resolution
• Future Work
Motivation
• Software development is a complex, collaborative activity• This is particularly the case with software
design• This becomes a problem for
distributed development teams• Particularly prevalent in large,
multinational development organizations such as Infosys
• Support for collaborative software development is still nascent• IBM Jazz, MS CollabVS
• Difficult to make existing stand-alone tools collaborative
• Lack of ability to scale across entire enterprise
Overview: CoDesign/CoWare
• Research Objectives1. Designs, patterns and frameworks for a highly
distributed, scalable collaborative modeling platform
2. Novel methods and algorithms to detect and resolve syntactic and semantic conflicts of modeling language
• Project Summary• Collaborative, extensible software modeling
framework• Real-time synchronization & conflict detection• Efficiency and scalability among geographically
distributed software system designers
• CoDesign: A tool that captures design decisions• CoWare: Lightweight integration
infrastructure
CoDesign/CoWare Architecture
CoWareServer
CoDesign
CoW
are
Clie
nt
CoDesign
CoWare Client
CoDesign
CoWare Client
CoDesign
CoW
are
Clie
nt
CoDesign
CoW
are
Clie
nt
CoDesign
CoW
are
Clie
nt
CoDesign
CoW
are
Clie
nt
CoDesign
CoWare Client
CoDesign
CoWare Client
CoDesign
CoWare Client
CoDesign
CoWare Client
CoDesign
CoWare Client
CoDesign
CoWare Client
CoDesign
CoWare ClientCoWare Client
CoDesign/CoWare Architecture
Architect-side Server-side
GME
CoDesign (GME Plug-in)
New Events
CoWare Client CoWare Server
UserDatabase
DB Connector
ConflictNotifications &
Broadcasted Events
User Information &New Events
UserInformation
Prism ConnectorConflict Detector
ConflictNotifications
Events that don’t have conflicts
EventHandler
UpdateHandler
CoDesign/CoWare Connector
Login GUI
UserManagement
Architect
NewEvents
UserInformation
Clean Events
GME API (BON)
Prism Connector
User Information
New Events Clean Events
Event Queue
Drools
ModelDatabase
Facts Rules
Conflicts Events
Import Export
Generic Modeling Environment
From Vanderbilt University
Software Modeling ToolDrools
From JBoss Community
Business Logic Integration Platform
Prism-MW
From SoftArch, USC
Lightweight Middleware
Conflict Definition: Categorization
1. Synchronization Conflicts• Occur due to latency between distributed
architects• Cannot be applied to the model without violating
model syntax or semantics
2. Parallel Modification• Multiple architects modify the same or related
object(s)• Not necessarily a syntactic or semantic error, but
indicates the possibility of conflicts due to uncoordinated work
Model Object
Architect A
Destroy
Architect B
Move
Model Object
Architect A
Change Location
Architect B
Modify Name
Conflict Definition: Representation
• Formal description of event sequences that create conflicts: A Conflict Sequence
>> Event(1) [Verb(1) Object(1)], Event(2) [Verb(2) Object(2)]
where the arrival time T of Event(2) is later than the T of Event(1)
e.g. Event1 [ DESTROY ClassC ], Event2 [ CHANGE LOCATION ClassC ]
• Drools Rules Representation (Simplified)when
$event1 : Event(eventType == "DESTROYED")$event2 : Event(arrival > $event1.arrival)
thenhandleConflict($event1, $event2);
end
Conflict Resolution
• Automatically Resolvable• Resolved internally and transparently by
CoDesign/CoWare• E.g. DESTROY and DESTROY
• The 2 architects have the same intention• E.g. CREATE and CREATE
• The 2 new objects have the same object ID
• Not Automatically Resolvable• Notify relevant architects and facilitate
communication• E.g. DESTROY and CHANGE LOCATION
Features: Live Demo
• Settings• CoWare Server
• Computer Science Building at USC• CoWare Client
• One instance at Infosys, Bangalore, India• Another instance here
• CoDesign• Along with the modeling tool: GME 7
• Features• Synchronization between CoDesign instances• Conflict Detection & Resolution
Summary
• In the Demo• Synchronization between CoDesign Instances• Conflict Detection and Resolution
• Summary• Collaborative Software Modeling Infrastructure
Architecture• Formal Definition of Conflicts• Categories of Conflicts:
• Synchronization Conflicts, Parallel Modification• Resolution Types:
• Automatically Resolvable, Human Intervention
Future Work
• Exploration of the type and nature of conflicts
• Causes of conflicts and relationships between conflict types and modeling activities
• Automatic inference of conflicts from formal language definitions (meta-models)
• Conflicts caused by complex event sequences (e.g., 3 or more parallel events)
• Evolution of the CoDesign architecture• Focus on scalability, efficiency, extensibility• Simulation and analysis for architecture evaluation
and validation
• Continue implementation of the architecture• Testing under globally distributed settings
THANK YOUSoftArch, USC
Appendix: CoDesign GME List of Verbs
• Destroy• Create• Change Properties• Change Location• Move (to another object)• Create Connection• Destroy Connection• Create Reference• Remove Reference• Change Reference• Add to Set• Remove from Set
Appendix: CoDesign GME List of Objects
• Object• Project• Folder• Model• Atom• Reference• Set
Appendix: CoDesign GMEFound Conflict Sequences (1)
• DESTROY – DESTROY• DESTROY – CHANGE PROPERTIES• DESTROY – CHANGE LOCATION• DESTROY – CREATE CONNECTION• DESTROY – CREATE PORT• DESTROY – DESTROY PORT• DESTROY – CREATE REFERENCE• DESTROY – REMOVE REFERENCE• DESTROY – CHANGE REFERENCE• DESTROY – ADD TO SET• DESTROY – REMOVE FROM SET• CREATE – CREATE (Duplication Object IDs)
Appendix: CoDesign GMEFound Conflict Sequences (2)
• MOVE – DESTROY• MOVE – CHANGE PROPERTIES• MOVE – CHANGE LOCATION• MOVE – CREATE CONNECTION• MOVE – DESTROY CONNECTION• MOVE – CREATE PORT• MOVE – DESTROY PORT• MOVE – CREATE REFERENCE• MOVE – REMOVE REFERENCE• MOVE – CHANGE REFERENCE• MOVE – ADD TO SET• MOVE – REMOVE FROM SET