160 likes | 331 Views
COLLABORATIVE SOFTWARE EVOLUTION WITH CROSS-CUTTING CONCERNS. Rick Salay, Mehrnaz Najafi and Marsha Chechik NECSIS/ORF Workshop 2014. also Jennifer Horkoff, Fabiano Dalpiaz, Jessica Davies, Daniel Varro, Istvan Rath, Leonid Ryzhyk, Nina Narodytska. The Context. NECSIS 2013 Workshop
E N D
COLLABORATIVE SOFTWARE EVOLUTION WITH CROSS-CUTTING CONCERNS Rick Salay, Mehrnaz Najafi and Marsha Chechik NECSIS/ORF Workshop 2014 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
The Problem System Lifespan Initial Dev’t Software Evolution System Software Bug Fix • Evolutionary changes • Crosscut designed structure • Heterogeneous • Crosscut levels of abstraction • Overlapping New Requirement System Structure “designed in” 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.
CBSE Overview Concurrent Dev’t Dimension Team 1 Team 2 …. Team n Extraction Modification Verification Reintegration Chunk Life-cycle Dimension CBSE
CBSE Overview Concurrent Dev’t Dimension Team 1 Team 2 …. Team n Extraction Modification Verification Reintegration Chunk Life-cycle Dimension CBSE
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
Example Device id : string id_encr() • Team 1: Add auto mode to wiper • Prop_1 : Must have auto wiper operation Wiper_Timer max : time max_encr() start() stop() auto() • Team 2: Add data security to vehicle • Prop_2 : All data members have encryption method
Example Device id : string id_encr() • Team 1: Add auto mode to wiper • Prop_1 : Must have auto wiper operation Add Wiper_Timer max : time auto_speed: int max_encr() start() stop() auto() • Team 2: Add data security to vehicle • Prop_2 : All data members have encryption method
Example Device id : string id_encr() • Team 1: Add auto mode to wiper • Prop_1 : Must have auto wiper operation Add Wiper_Timer max : time auto_speed: int max_encr() start() stop() auto() • Team 2: Add data security to vehicle • Prop_2 : All data members have encryption method Violation: to fix must remove “auto_speed” or add encryption method
Example Device id : string id_encr() • Team 1: Add auto mode to wiper • Prop_1 : Must have auto wiper operation Wiper_Timer max : time auto_speed: int max_encr() start() stop() auto() auto_speed_encr() Add • Team 2: Add data security to vehicle • Prop_2 : All data members have encryption method
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
CBSE Overview Concurrent Dev’t Dimension Team 1 Team 2 …. Team n Extraction Modification Verification Reintegration Chunk Life-cycle Dimension CBSE