ELEC 875 - Design Recovery and Automated Evolution

Winter 2012

Instructor: Tom Dean
Location: WLH 716
Times: Mon 2:30-4:30
Wed 1:30-2:30
Text: None. The course will be based on readings from the literature

News.

Feb 1 - Thursdays class will be in WLH 716.

Jan 22 - Finally got the website up to date. I will have to be away Jan 30, we will reschedule the class.


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.

Week 1 Class 1 Slides
Week 1 Class 2 Slides

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. [here]

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. [here]

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

Slides 1 and 2

Week 3

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

Class 1 Blackboard Images 1 2 3

Class 2 Blackboard Images 1 2 3 4

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 first selection box, choose "Journals/Books by subject", then in the center "Computer Science Journals". Select 'i' at the top, and find and select "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.

Available from IEEE Xplore.

We will also be moving to a discussion based format this week.

Slides 1 and 2

Week 5

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

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.

P. Schugerl, J. Rilling, P. Charland, “Reasoning about Global Clones : Scalable Semantic Clone Detection”, 2011 35th IEEE Annual Computer Software and Applications Conference

Slides 1 and 2

Last year's Exam

Week 6

Monday:

J.R. Cordy, "The TXL Source Transformation Language", Science of Computer Programming, 61,3 (August 2006), pp. 190-210.

Peter Wendorff, "Assessment of Design Patterns during Software Reengineering: Lessons Learned from a Large Commercial Project", Fifth European conference on Sofrware Maintenance and Reengineering (CSMR 2001), Lisbon, Portugal, 77-84

C.K. Roy and J.R. Cordy, "NICAD: Accurate Detection of Near-Miss Intentional Clones Using Flexible Pretty-Printing and Code Normalization", Proc. ICPC 2008, IEEE International Conference on Program Comprehension, Amsterdam, June 2008, pp. 172-181.

Wed: Project Proposals Due

Week 7

I am away in India

Week 8

Monday: Midterm Exam

Wed: 1 paper + project status