Change-Oriented Software Engineering Peter Ebraert, Jorge Vallejos, Pascal Costanza, Ellen Van Paesschen and Theo D’Hondt
Change-oriented SW Eng. • Software Development • ≠ Writing a text • Constructing a system by means of building blocks Change-Oriented Software Engineering ESUG, august 27th 2007 2
Change-oriented SW Eng. • Software Development • ≠ Writing a text • Constructing a system by means of building blocks • Construction • Changing a construction yard towards a required structure Change-Oriented Software Engineering ESUG, august 27th 2007 2
Change-oriented SW Eng. • Software Development • ≠ Writing a text • Constructing a system by means of building blocks • Construction • Changing a construction yard towards a required structure • Software Development Change-Oriented Software Engineering ESUG, august 27th 2007 2
Change-oriented SW Eng. • Software Development • ≠ Writing a text • Constructing a system by means of building blocks • Construction • Changing a construction yard towards a required structure • Software Development ∈ Software evolution Change-Oriented Software Engineering ESUG, august 27th 2007 2
Change-Oriented Support Change-Oriented Software Engineering ESUG, august 27th 2007 3
Change-Oriented Support Change-Oriented Software Engineering ESUG, august 27th 2007 3
Change-Oriented Support? Change-Oriented Software Engineering ESUG, august 27th 2007 4
Change-Oriented Support? Change-Oriented Software Engineering ESUG, august 27th 2007 4
What do we want? • Support for changes in forward engineering • Undo mechanism • Readable change list • Change objects which can be reused • Changes should be applicable on different software systems / different platforms Change-Oriented Software Engineering ESUG, august 27th 2007 5
What do we want? • Support for changes in forward engineering • Undo mechanism Evolvability & Maintainability ‣ • Readable change list • Change objects which can be reused • Changes should be applicable on different software systems / different platforms Change-Oriented Software Engineering ESUG, august 27th 2007 5
What do we want? • Support for changes in forward engineering • Undo mechanism Evolvability & Maintainability ‣ • Readable change list ‣ Understandability • Change objects which can be reused • Changes should be applicable on different software systems / different platforms Change-Oriented Software Engineering ESUG, august 27th 2007 5
What do we want? • Support for changes in forward engineering • Undo mechanism Evolvability & Maintainability ‣ • Readable change list ‣ Understandability • Change objects which can be reused • Changes should be applicable on different software systems / different platforms ‣ Reusability Change-Oriented Software Engineering ESUG, august 27th 2007 5
Is there a solution around? • Centralise Change in the development process • First-class change objects • A Model for first-class changes • What models exist already? • Spyware change model • ChangeList change model Change-Oriented Software Engineering ESUG, august 27th 2007 6
Example case Change-Oriented Software Engineering ESUG, august 27th 2007 7
Example case cr get : m from : self User Chatroom username users send:(m: String) get:from:(m: String, s: User) Transcript show : receive:from:(m: String, s: User) register(u: User) (s name + ': ' + m) cr name() unregister(u: User) ( " % users: ^ username u receive : m from : s Change-Oriented Software Engineering ESUG, august 27th 2007 7
Evolution scenario Chatroom cr get : m from : self User users get:from:(m: String, u: User) send:(m: String) Transcript show : cr register(u: User) receive:from:(m: String, s: User) (s name + ': ' + m) unregister(u: User) # ! " users: u receive : m from : s RegisteredUser Guest Introducing different kinds of users username ^ username ^ 'guest' name() name() cr get : ( self encrypt : m) Ensuring user privacy from : self User username Chatroom send:(m: String) users Transcript show : receive:from:(m: String, s: User) get:from:(m: String, s: User) (s name + ': ' + name() register(u: User) s decrypt : m) cr encrypt:(m: String) unregister(u: User) decrypt:(m: String) ∀ u ∈ users: ^ username u receive : m from : s f � 1 (m) f (m) Change-Oriented Software Engineering ESUG, august 27th 2007 8
ChangeList’s Change Log 1 Created package ChatApp 2 define User 3 doIt User organisation addCategory:#messaging 4 User receive:from: (change) 5 define User 6 define User 7 User send: (change) 8 doIt User organisation addCategory:#accessing 9 User name (change) 10 define Chatroom 11 define Chatroom 12 doIt Chatroom organisation addCategory:#messaging 13 Chatroom get:from: (change) 14 doit Chatroom organisation addCataegory:#registering 15 Chatroom register: (change) 16 Chatroom unregister: (change) 17 18 define Guest 19 doIt Guest organisation addCategory:#messaging 20 Guest name (change) 21 define RegisteredUser 22 RegisteredUser name (change) 23 User name (remove) 24 define User 25 define RegisteredUser 26 27 doIt User organisation addCategory:#encryption 28 User encrypt: (change) 29 User decrypt: (change) 30 User send: (change) 31 User receive:from: (change) Change-Oriented Software Engineering ESUG, august 27th 2007 9
ChangeList’s Change Log 1 Created package ChatApp 2 define User 3 doIt User organisation addCategory:#messaging 4 User receive:from: (change) Restricted Level Of Granularity 5 define User 6 define User 7 User send: (change) 8 doIt User organisation addCategory:#accessing 9 User name (change) 10 define Chatroom 11 define Chatroom 12 doIt Chatroom organisation addCategory:#messaging 13 Chatroom get:from: (change) 14 doit Chatroom organisation addCataegory:#registering 15 Chatroom register: (change) 16 Chatroom unregister: (change) 17 18 define Guest 19 doIt Guest organisation addCategory:#messaging 20 Guest name (change) 21 define RegisteredUser 22 RegisteredUser name (change) 23 User name (remove) 24 define User 25 define RegisteredUser 26 27 doIt User organisation addCategory:#encryption 28 User encrypt: (change) 29 User decrypt: (change) 30 User send: (change) 31 User receive:from: (change) Change-Oriented Software Engineering ESUG, august 27th 2007 9
ChangeList’s Change Log 1 Created package ChatApp 2 define User 3 doIt User organisation addCategory:#messaging 4 User receive:from: (change) Restricted Level Of Granularity 5 define User 6 define User 7 User send: (change) 7 User send: (change) 8 doIt User organisation addCategory:#accessing 9 User name (change) 10 define Chatroom 11 define Chatroom 12 doIt Chatroom organisation addCategory:#messaging 13 Chatroom get:from: (change) 14 doit Chatroom organisation addCataegory:#registering 15 Chatroom register: (change) 16 Chatroom unregister: (change) 17 18 define Guest 19 doIt Guest organisation addCategory:#messaging 20 Guest name (change) 21 define RegisteredUser 22 RegisteredUser name (change) 23 User name (remove) 24 define User 25 define RegisteredUser 26 27 doIt User organisation addCategory:#encryption 28 User encrypt: (change) 29 User decrypt: (change) 30 User send: (change) 30 User send: (change) 31 User receive:from: (change) Change-Oriented Software Engineering ESUG, august 27th 2007 9
ChangeList’s Change Log 1 Created package ChatApp 2 define User 3 doIt User organisation addCategory:#messaging 4 User receive:from: (change) Restricted Level Of Granularity 5 define User 6 define User 7 User send: (change) 8 doIt User organisation addCategory:#accessing 9 User name (change) 10 define Chatroom Term Overloading 11 define Chatroom 12 doIt Chatroom organisation addCategory:#messaging 13 Chatroom get:from: (change) 14 doit Chatroom organisation addCataegory:#registering 15 Chatroom register: (change) 16 Chatroom unregister: (change) 17 18 define Guest 19 doIt Guest organisation addCategory:#messaging 20 Guest name (change) 21 define RegisteredUser 22 RegisteredUser name (change) 23 User name (remove) 24 define User 25 define RegisteredUser 26 27 doIt User organisation addCategory:#encryption 28 User encrypt: (change) 29 User decrypt: (change) 30 User send: (change) 31 User receive:from: (change) Change-Oriented Software Engineering ESUG, august 27th 2007 9
Recommend
More recommend