ELEC 875 - Design Recovery and Automated Evolution

Winter 2017

Instructor: Tom Dean
Location: WLH 722
Times: Monday 9:30-11:00
Thurs 9:00-10:30
Text: None. The course will be based on readings from the literature


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 2

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: Monday Thursday

Week 3

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. Gyimóthy, "Towards a Standard Schema for C/C++", 8th Working Conference On Reverse Engineering (WCRE'01) , Stuttgart, Germany, October, pp. 49-58.

Slides: Monday Thurs

Week 4

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

Source Files: C, Java

Blackboard Pictures: B1, B2, B3, B4

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]

Slides: Thurs

Week 5

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: Monday Thurdsay

Week 6

For Monday:

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.

Slides: Monday

Monday of Week 7 is the Midterm Exam (2010 Exam)

Week 7

Monday: Midterm Exam

Thursday: YJ,NA, AF, MG

Lawrie, Dawn, et al. "What's in a name? a study of identifiers." Program Comprehension, 2006. ICPC 2006. 14th IEEE International Conference on. IEEE, 2006.

Hassan, Ahmed E., and Richard C. Holt. "A reference architecture for web servers." Reverse Engineering, 2000. Proceedings. Seventh Working Conference on. IEEE, 2000.

A. Marcus, A. Sergeyev, V. Rajlich and J. I. Maletic, "An information retrieval approach to concept location in source code," 11th Working Conference on Reverse Engineering, 2004, pp. 214-223.
URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=1374321&isnumber=30025

Heuzeroth, Dirk, et al. "Automatic design pattern detection." Program Comprehension, 2003. 11th IEEE International Workshop on. IEEE, 2003.

Week 8

Monday: OH, JW, RB, AF

Design pattern recovery based on annotations
by Rasool, Ghulam; Philippow, Ilka; Mäder, Patrick
Advances in Engineering Software, 2010, Volume 41, Issue 4

Adams, Bram, Herman Tromp, Kris De Schutter, and Wolfgang De Meuter. "Design recovery and maintenance of build systems." N.p., 22 Oct. 2007. Web. <http://ieeexplore.ieee.org/document/4362624/>

Neeraj Sangal ,Ev Jordan,Vineet Sinha.Daniel Jackson,"Using Dependency Models to Manage Complex Software Architecture" In ACM Sigplan Notices (Vol. 40, No. 10, pp. 167-176). ACM.

Y. Tao, D. Han and S. Kim, "Writing Acceptable Patches: An Empirical Study of Open Source Project Patches," 2014 IEEE International Conference on Software Maintenance and Evolution, Victoria, BC, 2014, pp. 271-280.
URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=6976093&isnumber=6976043

Thursday: RS, KB, NA, MG

Software Maintenance and Evolution: a Roadmap by K.H. Bennett and V.T Rajlich

Tu, Qiang, and Michael W. Godfrey. "The build-time software architecture view." Software Maintenance, 2001. Proceedings. IEEE International Conference on. IEEE, 2001.

Yan Yan, Massimiliano Menarini, "Mining Software Contracts for Software Evolution" ICSME 2014

Lung, Chung-Horng. "Agile software architecture recovery through existing solutions and design patterns." proceedings of the 6th IASTED international conference on software engineering and applications. 2002.

Week 9

Monday: AR, MG, RS, HK

(I appologize for the delay, for some reason the web server did not sync correctly).

“Cloning Considered Harmful” Considered Harmful by Cory Kapser and Michael W. Godfrey

Eshkevari, L., Dos Santos, F., Cordy, J. R., & Antoniol, G. (2015, March). Are PHP applications ready for Hack?. In Software Analysis, Evolution and Reengineering (SANER), 2015 IEEE 22nd International Conference on (pp. 63-72). IEEE.

Sneed, Harry M., and Chris Verhoef. "Reverse engineering a visual age application." Software Maintenance and Evolution (ICSME), 2015 IEEE International Conference on. IEEE, 2015.‏

Timothy C. Lethbridge & Nicolas Anquetil, "Architecture of a Source Code Exploration Tool: A Software Engineering Case Study"

Thursday: NA, RB, JW, AF

Thomas D. LaToza, Gina Venolia, Robert DeLine “Maintaining mental models: a study of developer work habits” ICSE '06 Proceedings of the 28th international conference on Software engineering, Pages 492-501

V. Wahler, D. Seipel, J. Wolff and G. Fischer, "Clone detection in source code by frequent itemset techniques," Source Code Analysis and Manipulation, Fourth IEEE International Workshop on, Chicago, IL, 2004, pp. 128-135.

Lutellier, T., Chollak, D., Garcia, J., Tan, L., Rayside, D., Medvidovic, N. and Kroeger, R., 2015, May. Comparing software architecture recovery techniques using accurate dependencies. In Software Engineering (ICSE), 2015 IEEE/ACM 37th IEEE International Conference on (Vol. 2, pp. 69-78). IEEE.

Garcia, Joshua, et al. "Identifying architectural bad smells." Software Maintenance and Reengineering, 2009. CSMR'09. 13th European Conference on. IEEE, 2009.

Week 10

Monday: AR, OH, RS, RB

Martin, D. H., Cordy, J. R., Adams, B., & Antoniol, G. (2015, May). Make it simple: An empirical analysis of GNU Make feature use in open source projects. In Proceedings of the 2015 IEEE 23rd International Conference on Program Comprehension (pp. 207-217). IEEE Press.

Gueheneuc, Y.-G., K. Mens, and R. Wuyts. "A comparative framework for design recovery tools." Conference on Software Maintenance and Reengineering (CSMR'06) (2006): n. pag. Web.

Computing Ripple Effect for Object Oriented Software by Haider Bilal and Sue Black

Bhuricha Deen Sethanandha, Bart Massey, William jones “Managing open source contributions for software project sustainability” Technology Management for Global Economic Growth (PICMET), 2010 Proceedings of PICMET '10:

Thursday: KB, YJ, HK, JW

Garcia, Joshua, et al. "Obtaining ground-truth software architectures." Proceedings of the 2013 International Conference on Software Engineering. IEEE Press, 2013.

Jiang, Yujuan, Bram Adams, and Daniel M. German. "Will my patch make it? and how fast? case study on the linux kernel." Mining Software Repositories (MSR), 2013 10th IEEE Working Conference on. IEEE, 2013.

A Fine-Grained Analysis on the Evolutionary Coupling of Cloned Code - Manishankar Mandal, C K Roy, Kevin A. Schneider - 23rd March

Gerald C. Gannod, Betty H.C Cheng, " A framework for classifying and comparing software reverse engineering and design recovery techniques"

Week 11

Monday: AF, OH, RS, KB

Model Clone Detector Evaluation Using Mutation Analysis - Mathew Stephen

J. H. Jahnke, J. P. Wadsack and A. Zundorf, "A history concept for design recovery tools," Proceedings of the Sixth European Conference on Software Maintenance and Reengineering, Budapest, 2002, pp. 37-46.

A Best Practice of Java-Based Applications Migration with Variety of Software Solutions by Yung-Shih Wang and Chih-Chin Yang

M. Codoban, S. S. Ragavan, D. Dig and B. Bailey, "Software history under the lens: A study on why and how developers examine it," 2015 IEEE International Conference on Software Maintenance and Evolution (ICSME), Bremen, 2015, pp. 1-10.

Thursday: HK, YJ, AR, JW

Haiduc, S., Aponte, J. and Marcus, A., 2010, May. Supporting program comprehension with source code summarization. In Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering-Volume 2 (pp. 223-226). ACM.

Tian, Yuan, et al. "What are the characteristics of high-rated apps? a case study on free android applications." Software Maintenance and Evolution (ICSME), 2015 IEEE International Conference on. IEEE, 2015.

Haiduc, S., & Marcus, A. (2008, June). On the use of domain terms in source code. In Program Comprehension, 2008. ICPC 2008. The 16th IEEE International Conference on (pp. 113-122). IEEE.

Jonathan Sillito, Gail C. Murphy and Kris De Volder, “Questions Programmers Ask During Software Evolution Tasks”

Week 12

Monday: HK, OH, RB, KB

J. SadiqT. Waheed “Reverse engineering & design recovery: An evaluation of design recovery techniques”,  Computer Networks and Information Technology (ICCNIT), 2011

T. Dean and Yuling Chen, "Design recovery of a two level system," 11th IEEE International Workshop on Program Comprehension, 2003., 2003, pp. 23-32.

Junji Shimagaki, Yasutaka Kamei, Shane McIntosh, David Pursehouse, Naoyasu Ubayashi, “ Why are commits being reverted? “ , 2016 IEEE Conference on Software Maintenance and Evolution

CoMoGen: An approach to locate relevant task context by combining search and navigation - Katja Kevic, Thomas Fritz , David C. Shepherd - ICSME 2014

Thursday: YJ, NA, AR, MG

Sayyad-Shirabad, J., Lethbridge, T. C., & Lyon, S. (1997, March). A little knowledge can go a long way towards program understanding. In Program Comprehension, 1997. IWPC'97. Proceedings., Fifth Iternational Workshop on (pp. 111-117). IEEE.

Asif, Nadim. "Reverse Engineering Methodology to Recover the Design Artifacts: A Case Study." Software Engineering Research and Practice. 2003.

Christakis, Maria, and Christian Bird. "What developers want and need from program analysis: An empirical study." Proceedings of the 31st IEEE/ACM International Conference on Automated Software Engineering. ACM, 2016.

Gall, Harald, Mehdi Jazayeri, and Claudio Riva. "Visualizing software release histories: The use of color and third dimension." Software Maintenance, 1999.(ICSM'99) Proceedings. IEEE International Conference on. IEEE, 1999.