Software Evolution - Course Goals and Contents

New Topics for
Software Evolution
Miloš Radovanović and Zoran Budimac
Supported by:
Joint MSc curriculum in software engineering
European Union TEMPUS Project CD_JEP-18035-2003
Current Course Structure







Topic
Topic
Topic
Topic
Topic
Topic
Topic
1:
2:
3:
4:
5:
6:
7:
Software Evolution
Program Comprehension
Transformation Theory
Abstraction
Slicing
Wrapping
Assembler Migration
SE-O-01 – Software Evolution
2
Current Course Structure: The Focus
 The course is focused on
 Techniques for
 Program comprehension
 Reengineering
 Particularly the reverse engineering step
 The approach using formal transformations,
FermaT and FME tools
SE-O-01 – Software Evolution
3
A More Detailed Look
 Topic 1: Software Evolution (Introductiory)
 Motivation
 Definitions, taxonomy
 Lehman's laws of evolution, Parnas briefly
 Lifecycles (software process)
 Topic 2: Program Comprehension (Introductiory)
 Several simple illustrative examples
 Short introduction to techniques: abstraction, slicing
 Introduction to tools: FermaT, FME
 Motivatory introduction to software metrics
 Flowcharts
 Topic 3: Transformation Theory
 Motivation: retargetting, porting, migration
 WSL language, semantics
 Weakest preconditions
 Denotational semantics
 Proving the correctness of program transformations
SE-O-01 – Software Evolution
4
A More Detailed Look
 Topic 4: Abstraction
 Type 1: Abstraction as the opposite of refinement
 Type 2: Replacing program parts with higher level
operations
 Type 3: Translation of data
 The use of software metrics
 Examples
 Topic 5: Slicing
 Motivation: program comprehension, abstraction
 FermaT slicers: simple, syntactic, semantic
 Examples
 Topic 6: Wrapping
 Java application project: wrapping compilers for SvetoVid
 Topic 7: Assembler Migration
 Application project: a translator from a subset of x86
assembler to WSL
SE-O-01 – Software Evolution
5
Current State of Material
 Topic 1: Software Evolution
 Slides (in progress)
 Topic 2: Program Comprehension
 Slides with examples (usable)
 Topic 3: Transformation Theory
 Slides (usable)
 Topic 4: Abstraction
 Slides with examples (in progress)
 Topic 5: Slicing
 Slides with examples (usable)
 Topic 6: Wrapping
 Application project (in progress)
 Topic 7: Assembler Migration
 Application project with seminar paper
SE-O-01 – Software Evolution
6
Current and Future Goals
 Complete “in progress” topics
 Because of their importance, devote a
separate topic to software metrics
 Extend material with topics not strictly
related to reverse engineering or formal
methods, but still relevant to software
evolution
 Seamlessy integrate with existing material,
possibly allowing “optional topics”
SE-O-01 – Software Evolution
7
New Material
 Topic: Software Metrics
 Slides with examples (usable)
 Topic: Open Source Software Evolution
 Slides (usable)
 Topic: Refactoring
 Slides with examples (in progress)
SE-O-01 – Software Evolution
8
Topic: Software Metrics
 Software metrics are (to be) referred to from
almost all other topics, thus we felt they
deserve a topic on their own
 Important for topics:






Program Comprehension
Abstraction
Slicing
Assembler Mirgation
Open Source Software Evolution
Refactoring
 Current slides are usable, but may be changed
as the needs of other topics dictate
SE-O-01 – Software Evolution
9
Topic: Software Metrics
 Contents:







LOC Metrics
Function Points
Cyclomatic Complexity
Information Flow
Halstead’s Metrics
OO Metrics (CK & MOOD)
Software Package Metrics
SE-O-01 – Software Evolution
10
Topic: Open Source Software Evolution
 Suitable for an end discussion, as it
challenges many established views, i.e.,
Lehman’s Laws (the ones in bold):








Law 1: Continuing change
Law 2: Increasing complexity
Law 3: Self regulation
Law 4: Conservation of organizational
stability (invariant work rate)
Law 5: Conservation of familiarity
Law 6: Continuing growth
Law 7: Declining quality
Law 8: Feedback system
SE-O-01 – Software Evolution
11
Topic: Open Source Software Evolution
 Observations:
 When Lehman’s laws were proposed
 Most of the systems were developed in-house
by a dedicated group of engineers
 Hierarchical management control
 Waterfall-like process
 Laws are difficult to test empirically, since
they are informal statements
 Growth patterns of OSS less regular than
those of proprietary systems
 OSS evolutionary trends more difficult to
predict
 Discontinuity in OSS evolution
SE-O-01 – Software Evolution
12
Illustration: Change in OSS
 Wu (2006) analyzed 3 OSS, incl. Linux
 Evolution spectrograph visualization
technique
 x-axis: time
 y-axis: files ordered by creation date
 Horizontal lines follow a property
(e.g. no. of dependencies)
 Property change – darker color
 Emergent vertical lines indicate major
changes in the system
 Change in OSS is segmented
SE-O-01 – Software Evolution
13
Outgoing dependency change
SE-O-01 – Software Evolution
14
Summary
 Software Evolution is a vibrant field, with
regularly emerging new topics
 Besides OSS Evolution and Refactoring, other
possible topics include:





Clone detection
Fault detection
Architecture evolution
Managerial aspects
…
 We will focus our efforts on topics which enable
active participation of students, and provide
usable practical knowledge
SE-O-01 – Software Evolution
15