collaborative software evolution with cross- cutting concerns rick salay, mehrnaz najafi and marsha...
TRANSCRIPT
COLLABORATIVE SOFTWARE EVOLUTION WITH CROSS-CUTTING CONCERNSRick Salay, Mehrnaz Najafi and Marsha Chechik
NECSIS/ORF Workshop 2014
1
also Jennifer Horkoff, Fabiano Dalpiaz, Jessica Davies, Daniel Varro, Istvan Rath, Leonid Ryzhyk, Nina Narodytska
The Context
NECSIS 2013 Workshop• Len Wozniak presents the need for “lump” development
methods to deal with macro change management
2
The Problem
3
SystemSoftware
Initial Dev’t
SoftwareEvolution
System Lifespan
SystemStructure“designed in”
Evolutionary changes-Crosscut designed structure-Heterogeneous-Crosscut levels of abstraction-Overlapping
New Requirement
Bug Fix
Model evolution must manage concurrent “chunks” of change!
Chunk-Based Software Evolution (CBSE)• Focus on
• Models – heterogeneous, multiple levels of abstraction• Rather than just code
• Distributed concurrent development• Safety, correctness and formal analysis
• Principled approach to preserving properties and establishing new ones
• Augments current change management practices:• E.g., traceability, slicing, impact analysis, etc.
4
CBSE Overview
5
Concurrent Dev’t Dimension
Chunk Life-cycle Dimension
Team 1 Team 2 …. Team n
CBSE
Extraction
Modification
Verification
Reintegration
CBSE Overview
6
Concurrent Dev’t Dimension
Chunk Life-cycle Dimension
Team 1 Team 2 …. Team n
CBSE
Extraction
Modification
Verification
Reintegration
Managing concurrent modification
• Chunks can interfere – need to manage conflicts
• Approaches• Conflict resolution: coordinate on merge
• Slow, may need escalation and rework
• Locking: prevent conflicts• Safer but limits concurrent development
• Idea: don’t lock model region, lock model properties
7
Example
8
Deviceid : string
id_encr()
Wiper_Timermax : time
max_encr()start()stop()auto()
Team 2: Add data security to vehicle
•Prop_2 : All data members have encryption method
Team 1: Add auto mode to wiper
•Prop_1 : Must have auto wiper operation
Example
9
Deviceid : string
id_encr()
Wiper_Timermax : timeauto_speed: int
max_encr()start()stop()auto()
Team 2: Add data security to vehicle
•Prop_2 : All data members have encryption method
Team 1: Add auto mode to wiper
•Prop_1 : Must have auto wiper operation
Add
Example
10
Deviceid : string
id_encr()
Wiper_Timermax : timeauto_speed: int
max_encr()start()stop()auto()
Team 2: Add data security to vehicle
•Prop_2 : All data members have encryption method
Team 1: Add auto mode to wiper
•Prop_1 : Must have auto wiper operation
Add
Violation: to fix must remove “auto_speed” or add encryption method
Example
11
Deviceid : string
id_encr()
Wiper_Timermax : timeauto_speed: int
max_encr()start()stop()auto()auto_speed_encr()
Team 2: Add data security to vehicle
•Prop_2 : All data members have encryption method
Team 1: Add auto mode to wiper
•Prop_1 : Must have auto wiper operation
Add
Property-based locking
12
Required tool support
• To specify a property• To check locked properties
• Query engines investigated: QueST (Mac), IncQuery (Varro)
• To configure locking• E.g., control granularity of checking
• To debug/resolve a property violation
13
CBSE Overview
14
Concurrent Dev’t Dimension
Chunk Life-cycle Dimension
Team 1 Team 2 …. Team n
CBSE
Extraction
Modification
Verification
Reintegration