Download presentation
Presentation is loading. Please wait.
Published byCornelius Moody Modified over 9 years ago
1
Supported by: Joint MSc curriculum in software engineering European Union TEMPUS Project CD_JEP-18035-2003 Developing New Material for the Software Evolution Module Miloš Radovanović and Zoran Budimac
2
SE-O-01 – Software Evolution 2 Software evolution Attractive course (sexy name for software maintenance) Theoretical foundation (temporal logic, transformation systems) Supported by tools Easily understandable goals (i.e., convert an assembler program to a higher-level equivalent)
3
SE-O-01 – Software Evolution 3 Old Structure of the Course Topic 1: Rationales and taxonomies for Software Evolution Topic 2: Evolution within development life cycles Topic 3: Lehman's laws of evolution software aging D.L. Parnas Lehman's laws of software evolution Topic 4: Program comprehension Topic 5: Managerial aspects of software evolution Topic 6: Refactoring object-oriented software Topic 7: Aspect Oriented Software Evolution Topic 8: Formal Transformations
4
SE-O-01 – Software Evolution 4 New Course Structure: Main Idea Make the course more focused on Techniques for program comprehension and reverse engineering The approach using formal transformations, FermaT and FME tools Practically, expand Topic 8: Formal Transformations
5
SE-O-01 – Software Evolution 5 New Course Structure Topic 1: Software Evolution Topic 2: Program Comprehension Topic 3: Transformation Theory Topic 4: Abstraction Topic 5: Slicing Topic 6: Wrapping Topic 7: Assembler Migration
6
SE-O-01 – Software Evolution 6 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
7
SE-O-01 – Software Evolution 7 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
8
SE-O-01 – Software Evolution 8 Spring 2008, Novi Sad Course was held in “supervised” mode Primary supervisor: Miloš Radovanović Secondary supervisor: Zoran Budimac Chronology of activities: Reading assignments of introductory material (selected slides, book chapters) Homework programming and transformation tasks (Fermat & FME basics) Test Projects in one of the 7 topics. Two students could jointly do one project. Activities: Creating slides FermaT & FME examples Programming case studies Final grade based on the test and quality of project
9
SE-O-01 – Software Evolution 9 Spring 2008, Novi Sad Generally, students had three types of attitudes towards the course: Try to do just enough to pass Do the job correctly, but not much more Do more than asked This was reflected in the final grade distribution (6=worst, 10=best): 10 – five students (three projects) 9 – two students (one project) 7 – two students (one project) Two students dropped out
10
SE-O-01 – Software Evolution 10 Results Topic 1: Software Evolution Slides (not usable) Topic 2: Program Comprehension Slides with examples (usable) Topic 3: Transformation Theory Slides (usable) Topic 4: Abstraction - Topic 5: Slicing Slides with examples (usable) Topic 6: Wrapping - Topic 7: Assembler Migration Application project with seminar paper
11
SE-O-01 – Software Evolution 11 Assembler Migration Project Translator from a subset of x86 assembler into WSL (action system) Transformations applied on WSL programs to make them more structured Example assembler programs: Greatest commond divisor (GCD) Array sum Factoriel
12
SE-O-01 – Software Evolution 12 GCD: Assembler Version.model small.code movax,12 movbx,8 compare: cmpax,bx jetheend jagreater subbx,ax jmpcompare greater: subax,bx jmpcompare theend: nop end
13
SE-O-01 – Software Evolution 13 GCD: Translated to WSL ACTIONS A_S_start: A_S_start == ax := 12; bx := 8; CALL compare END compare == IF ax = bx THEN flag_z := 1 ELSE flag_z := 0 FI; IF ax < bx THEN flag_c := 1 ELSE flag_c := 0 FI; IF flag_z = 1 THEN CALL theend FI; IF flag_z = 0 AND flag_c = 0 THEN CALL greater FI; IF bx = ax THEN flag_z := 1 ELSE flag_z := 0 FI; IF bx < ax THEN flag_c := 1 ELSE flag_c := 0 FI; bx := bx - ax; CALL compare; CALL greater END greater == IF ax = bx THEN flag_z := 1 ELSE flag_z := 0 FI; IF ax < bx THEN flag_c := 1 ELSE flag_c := 0 FI; ax := ax - bx; CALL compare; CALL theend END kraj == SKIP; END ENDACTIONS
14
SE-O-01 – Software Evolution 14 GCD: After FermaT Transformations ax := 12; bx := 8; fl_flag1 := 0; WHILE fl_flag1 = 0 DO IF ax > bx THEN ELSIF ax >= bx THEN {ax = bx}; fl_flag1 := 1 ELSE FI OD
15
SE-O-01 – Software Evolution 15 Examples Before and After Transformations GCDArray sumFactoriel MetricBeforeAfterDiff (%)BeforeAfterDiff (%)BeforeAfterDiff (%) McCabe1011+1067+161215+25 Statements5241-225542-249977-23 CFDF8248-428044-4512882-36 Nodes302218-18300213-29504395-22 Structure450291-36483337-31787548-31
16
SE-O-01 – Software Evolution 16 To Do Make slides Topic 4: Abstraction Topic 6: Wrapping Fix slides Topic 1: Software Evolution Enhance assembler migration project (make it usable for teaching) More coursework Exchange material with De Montfort University: Martin Ward, Hongji Yang, Hussein Zedan
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.