ELEC 875 - Design Recovery and Automated Evolution

Winter 2019

Instructor: Tom Dean
Location: WLH 620
Times: Monday 10:30-12:00
Wed 10:30-12:00
Text: None. The course will be based on readings from the literature

News.

Exam is Monday Feb 11


Design recovery is the extraction of a design model from the artifacts of an existing software system. This design model is used to continue the evolution of the system. The model can be used in the planning and impact analysis stage, while making the changes and to test the result. The extracted design model can also be used to automate each of these tasks to varying degrees. Topics include design models, design recovery techniques, software evolution tasks, the semantics of programming languages and execution environments, and source code transformation.

Course Structure

There will be about 5 weeks of lectures followed by a midterm. The remaining 6 weeks will be seminar format where students will survey literature and prepare reports. Students will take turns leading class discussions on the literature. Students will also do a project singley or in pairs, including a class presentation of the project. The marking scheme is:

Midterm 25%
Reports 30%
Class Participation15%
Project 30%

Course Outline

This is a very general outline of topics for the first 5 weeks. The content of the remainder of the course depends on the papers chosen by the students.

  1. Introduction to Design Recovery
    Motivation, General Description, Legacy (Vintage) System Issues, Software Evolution Tasks (Planning & Impact Analysis, Modification, Testing)
  2. General Design Recovery
    Motivation, General Models (examples: Datrix, Hungarian and Dagstuhl Middle Models)
  3. Programming Language and Execution Environment
  4. Storage Semantics, Control Semantics, Preprocessor, Formatting, Comments, Environment Interaction Program Transformation
  5. Techniques, Grammar Based Transformation, Graph Transformations, TXL, Progres
  6. Empirical Studies
  7. Tools
    Rigi, Revolve, CPPX, PBS, LS/2000, and others. Exchange Formats (GXL , etc.)

Project Suggestions

This section has some suggested projects. The student is encouraged to come up with thier own ideas as well.

Course Schedule and Readings

Week 1

T.J. Biggerstaff, "Design Recovery For Maintenance and Reuse", IEEE Computer, 22(7), July 1989, pp. 36-99.
(available in the Douglas Library and on IEEE Xplore [direct link]).

This week will focus on Design Recovery as a topic, Design Models Organization and General Terminology

Slides: Mon, Wed

Week 2

Singer, J., Lethbridge, T., Vinson, N. and Anquetil, N., "An Examination of Software Engineering Work Practices", CASCON '97, Toronto, October, pp. 209-223.

Lethbridge, T. and Singer, J. (1997), "Understanding Software Maintenance Tools: Some Empirical Research", Workshop on Empirical Studies of Software Maintenance (WESS 97), Bari Italy, October, pp. 157-162.

R. Ferenc, S. Sim, R. Holt , R. Koschke, T. Gyimothy, "Towards a Standard Schema for C/C++", 8th Working Conference On Reverse Engineering (WCRE'01) , Stuttgart, Germany, October, pp. 49-58.

Slides: Mon Wed

Week 3

T. Lethbridge, E. Plödereder, S. Techelaar, C. Riva, P. Linos, S. Marchenko, “The Dagstuhl Middle Model” [here]

H. Fahmy, R.C. Holt and J.R. Cordy, "Wins and Losses of Algebraic Transformations of Software Architectures", Proc. ASE'2001, IEEE 16th International Conference on Automated Software Engineering, San Diego, November 2001, pp. 51-62. [here]

C program Java Program

Tues: C1 C2 C2 CPano Java1 Java2 Java3 Java4 JavaDiagFinished

Wed

Week 4

Michael L. Van De Vanter, "The Documentary Structure of Source Code" Journal of Information and Software Technology, Elsevier, Volume 44, No 13, pp. 767-782

Queen's has a subscription to the Elsevier Journals. You must be on a Queen's Computer or using the secure proxy server in order to download the paper. Go to the Elsevier website. In the Journal or Book title search box, type "Information and Software Technology", then select Volume 44, Issue 13. You can then download the Van de Vanter Paper.

Vaclav Rajlich, N. Wilde, "The role of Concepts in Program Comprehension" Proc. 2002 International Workshop on Program Comprehension (IWPC'02), June 2002, Paris, 271-278.

I.T. Bowman, R. Holt, N.V. Brewster, "Linux as a Case Study: It's Extracted Software Architecture", Proc. 21st International Conference on Software Engineering (ICSE'99), May 1999, Los Angeles, pp. 555-563

Available from IEEE Xplore.

Slides: Tues, Wed

Week 5

Bull, R.I.; Trevors, A.; Malton, A.J.; Godfrey, M.W. Semantic grep: regular expressions + relational abstraction 9th Working Conference on Reverse Engineering(WCRE 2002), October, 2002, Richmond, Virginia, pp. 267- 276.

Philipp Schugerl, "Scalable Clone Detection Using Description Logic" Proceeding IWSC '11 Proceedings of the 5th International Workshop on Software Clones, 201, pp 47-53 (Available at ACM digital library). Library access from Queen's IP address.

Tues Wed

Exam Mon Feb 11

Presentations


Monday

Monday

Wednesday

Wednesday

Week 7

DTHK

HSYT

YYXL

LHRK

Week 8

IH

JK

DTHK

HSYT

Week 9

YYXL

LHRK

IH

JK

Week 10

DTHK

HSYT

YYXL

LHRK

Week 11

IH

JK

DTHK

HSYT

Week 12

YYXL

LHRK

IH

JK

Week 7

Mon

C. Roy, M. Zibran, R. Koschke, The Vision of Software Clone Management: Past, Present, and Future, 2014 Software Evolution Week - IEEE Conference on Software Maintenance, Reengineering, and Reverse Engineering (CSMR-WCRE)

Gehan M.K. Selim, King Chun Foo, Ying Zou, Enhancing Source-Based Clone Detection Using Intermediate Representation., 17th Working Conference on Reverse Engineering

Wed (note order of papers changed from Week 7 to week 9)

S. Paul, A. Prakash, "A Framework for Source Code Search Using Program Patterns",>IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, VOL. 20, NO. 6, JUNE 1994

A. Hassan, R. Holt, Architecture Recovery of Web Applications, ICSE 2002

Week 8

Mon

Norman Wilde et al. , "Reverse engineering of software threads: A design recovery technique for large multi-process systems", The Journal of Systems and Software 43 (1998) 11—17

Mayrand, Leblanc and Merlo, "Experiment on the automatic detection of function clones in a software system using metrics," 1996 Proceedings of International Conference on Software Maintenance, Monterey, CA, USA, 1996, pp. 244-253

Wed

Y.-G. Gueheneuc, K. Mens, R. Wuyts A Comparative Framework for Design Recovery Tool, Conference on Software Maintenance and Reengineering (CSMR'06)

Andrew Habib, Michael Pradel , "Is This Class Thread-Safe?
Inferring Documentation using Graph-Based Learning", ASE 2018

Week 9

Monday

A. Holkner, J. Harland, "Evaluating the dynamic behaviour of Python applications", ACSC '09 Proceedings of the Thirty-Second Australasian Conference on Computer Science - Volume 91, 19-28 January 2009

J. Crussell, C. Gibler, and H. Chen AnDarwin: Scalable Detection of Android Application Clones Based on Semantics, IEEE TRANSACTIONS ON MOBILE COMPUTING, VOL. 14, NO. 10, OCTOBER 2015

Wed

Elmar Juergens, et al., Code Similarities Beyond Copy & Paste, 14th European Conference on Software Maintenance and Reengineering (2010)

Miryung Kim, Vibha Sazawal, David Notkin, Gail C. Murphy, "An Empirical Study of Code Clone Genealogies" Proceedings of the 10th European software engineering conference, September 2005, pp. 187-196

Week 10

Mon

Fanlong Zhang, Siau-Cheng Khoo, Xiaohong Su Predicting Consistent Clone Change, 2016 IEEE 27th International Symposium on Software Reliability Engineering (ISSRE)

Jongwook Kim, Don Batory, Danny Dig, Maider Azanza, "Improving Refactoring Speed by 10X", ICSE 2016

L. Batyuk et al. Using static analysis for automatic assessment and mitigation of unwanted and malicious activities within Android applications, 2011 6th International Conference on Malicious and Unwanted Software, Oct 2011, pp 66-72

I. D. Baxter, Clone Detection Using Abstract Syntax Trees, ICSM 1998

Week 11

 

Mon

S. Ducasse, M. Rieger and S. Demeyer, "A language independent approach for detecting duplicated code," Proceedings IEEE International Conference on Software Maintenance - 1999 (ICSM'99). 'Software Maintenance for Business Change' (Cat. No.99CB36360), Oxford, England, UK, 1999, pp. 109-118. 

John B. Tran and Richard C. Holt, Forward and Reverse Repair of Software Architecture CASCON '99, Toronto, November, 1999

Wed

Jeffrey Svajlenko, Chanchal K. Roy, Evaluating Clone Detection Tools with BigCloneBench, 2015 IEEE International Conference on Software Maintenance and Evolution (ICSME)

Oscar Callau,Romain Robbes,David Röthlisberger,How Developers Use the Dynamic Features of Programming Languages: The Case of Smalltalk,MSR ’11

 

Week 12

Mon

P.E. Moreau1, C. Ringeissen1, and M. Vittek, A Pattern Matching Compiler for Multiple Target Languages

A. Hassan, R. Holt, A Reference Architecture for Web Servers

Wed

C. Kapser and M. W. Godfrey, ""Cloning Considered Harmful" Considered Harmful," 2006 13th Working Conference on Reverse Engineering, Benevento, 2006, pp. 19-28,

L. Barbour, F. Khomh and Y. Zou, "Late propagation in software clones," 2011 27th IEEE International Conference on Software Maintenance (ICSM), Williamsburg, VI, 2011, pp. 273-282