Research Publications
Teaching Students CV Software Funding Activities

EE382V Software Evolution (Spring, 2012)

Instructor: Dr. Miryung Kim (ACES 5.118)
    Office Hours: Tuesday 2PM to 3:30 PM
Tuesday and Thursday: 12:30 PM to 2:00 PM, ENS 116

General Description
Software evolution plays an ever-increasing role in software development. Programmers rarely build software from scratch but often spend more time in modifying existing software to provide new features to customers and fix defects in existing software. Evolving software systems is often a time-consuming and error-prone process. This course focuses on state-of-the art methods, tools, and techniques for evolving software.
I will begin by addressing software design principles for ease of change and reviewing empirical studies on software evolution. Subsequently, I will cover program differencing techniques and source transformation languages and tools. Next, I will cover analysis, testing, debugging and visualization methods for evolving software. This course also presents the-state-of-the-art research in analyzing software evolution by mining software repositories such as CVS, Subversion, and Bugzilla.

Audience and Prerequisites
This class is intended to students to introduce current research topics in software engineering with focus on software evolution.
Undergraduate level knowledge of data structures and object-oriented program languages is required. Knowledge of compilers, program analysis and program representations is encouraged. If you are unsure of your qualifications, please contact the instructor, who will be happy to help you decide if this course is right for you. You are welcome to just sit in for a few days and see how this class feels.
Relevant papers will be drawn from the leading software engineering journals and conference proceedings such as: TOSEM, TSE, ICSE, FSE, ASE, OOPSLA, and ICSM
Optional Textbooks
    * Software Fundamentals, edited by Daniel M. Hoffman and David M. Weiss, Addison Wesley, 2001
    * Design Patterns: Elements of Reusable Object-Oriented Software, Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, Addison-Wesley Professional,1994
    * Refactoring: Improving the Design of Existing Code, Addison-Wesley Professional, 1999
At the end of the course, students will present their projects to the class and submit 10 pages final reports. All final reports must follow ACM format. Oral discussion of homework problems is encouraged. However, be sure to submit your own independent solution. Copying of any part of a solution without explicit reference to its source is plagiarism and considered cheating. Copying text from the papers that you are reviewing is also considered as plagiarism.
Class Schedule, Reading List, and Project Milestones 

Introduction (1/17, 1/19)  (Project) Now: Topic Selection

Start thinking about what kinds of projects interest you and try to form a group.  You may select a project from one of the following topics.
  • CHIME: Logical Code Change Search Analysis Framework (2-3 people)
  • Chg.ALERT: Monitoring and Notification of Relevant Software Modifications (2-3 people)
  • REPERTOIRE: Visualization and Analysis of Ported Edits from Forked Projects (2-3 people)
Program Differencing (1/24, 1/26)
  • The Longest Common Subsequence Algorithm (diff)
  • Abstract syntactic tree based program differencing (CDiff)
  • Control Flow Graph based Program Differencing (JDiff)
    • Taweesup Apiwattanapong, Alessandro Orso, and Mary Jean Harrold. "A differencing algorithm for object-oriented programs". In ASE ’04: Proceedings of the 19th IEEE International Conference on Automated Software  Engineering, pages 2–13, Washington, DC, USA, 2004. IEEE Computer Society.
  • Class Activity on Line-based and AST-based Program Diffferencing
  • Logical Structural Diff
  • Lecture 3 Slides
  • Reading Assignment #1 Due (1/23) 

Mining Software Repositories (1/31, 2/2)
(Project) Proposal Due (2/2, 11:59 PM) 

Each person will submit a 3 page proposal describing the research project that you plan to work on. I expect to see sections on:
  • Problem definition and motivation. What are the goals of your project and why are these goals important?
  • Your approach for addressing the problem that you defined above.
  • How you plan to evaluate your approach.
  • A more in-depth discussion of related work. If appropriate, also explain how your approach is different from existing approaches.
  • A list of milestones and dates.

Please use the blackboard system (link on the course front page) to upload your project proposal. Each proposal should begin with a title. Each proposal should be in ACM SIG proceedings format. Submissions not in this format will not be reviewed. (This is to model program committees for conferences and workshops, which have the option to automatically reject papers if they do not comply with the submission guidelines).

Delta Debugging (2/7) and FindBug (2/9) 
  • Andreas Zeller. "Yesterday, my program worked. today, it does not. why?", In ESEC/FSE-7: Proceedings of the 7th European Software Engineering Conference held jointly with the 7th ACM SIGSOFT International Symposium on Foundations of Software Engineering, pages 253–267, London, UK, 1999. Springer-Verlag.
  • Applications of the Delta Debugging Algorithm
  • David Hovemeyer and William Pugh, "Finding Bugs is Easy", In OOPSLA onward! 2004, ACM SIGPLAN Notices, pages 92-106, 2004
  • Lecture 6 Slides
  • Lecture 7 Slides
  • Reading Assignment #3 Due (2/6) 
Regression Testing and Change Impact Analysis (2/14, 2/16=> 2/16, 3/1) 
  • Regression Testing Selection
    • Alessandro Orso, Nanjuan Shi, and Mary Jean Harrold, "Scaling regression testing to large software systems", In SIGSOFT ’04/FSE-12: Proceedings of the 12th ACM SIGSOFT twelfth International Symposium on Foundations of Software Engineering, pages 241–251, New York, NY, USA, 2004. ACM.
  • Class Activity on Code Coverage
  • Change Impact Analysis
    • Xiaoxia Ren, Fenil Shah, Frank Tip, Barbara G. Ryder, and Ophelia Chesley, "Chianti: a tool for change impact analysis of java programs", In OOPSLA ’04: Proceedings of the 19th annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, pages 432–448, New York, NY, USA, 2004. ACM.
  • Class Activity on Change Impact Analysis
  • Lecture 8 slides 
  • Lecture 9 slides
  • Reading Assignment #4 Due (2/13)
Mini PC Meetings (2/21, 2/23): We will have a mock program committee meeting. Students will review the assigned papers, submit reviews, and participate in paper discussions. 

No class on 2/28: Dr. Kim is speaking at the CRA Career Mentoring Workshop.

Software Design for Ease of Change and Refactoring (3/6 and 3/8) No Class on 3/13 and 3/15: Spring Break

Crosscutting Concerns (3/20, 3/22)
  • Separation of Concerns
  • Concern Management 
  • Language-based Approaches toward Crosscutting Concerns
    • Optional: Gregor Kiczales, John Lamping, Anurag Menhdhekar, Chris Maeda, Cristina Lopes, Jean-Marc Loingtier, and John Irwin, "Aspect-oriented programming", In European Conference on Object-oriented Programming, volume 1241, pages 220–242. Lecture Notes in Computer Science 1241, 1997
    • Optional: Michael VanHilst and David Notkin, "Decoupling change from design", In SIGSOFT ’96: Proceedings of the 4th ACM SIGSOFT Symposium on Foundations of Software Engineering, pages 58–69, New York, NY, USA, 1996. ACM.
  • Activity on Crosscutting Concerns & Visitor Pattern
  • Lecture 12 slides
  • Reading Assignment #6 Due (3/19)
Empirical Studies of Software Evolution 
(3/27, 3/29)
(Project) Midpoint Review Report and Presentation Due (4/2, 11:59 PM)

Each person should submit a midpoint progress report (max 6 pages) to the blackboard system. This progress report should detail what you have accomplished so far since your last checkpoint. List all technical challenges if you are stuck in making progress.   It should be in ACM SIG proceeding's format.

In your progress reports, you should reflect on what you have accomplished and draw preliminary conclusions from your results. If appropriate, you should also explicitly state any additional experiments or evaluations you may need to perform in order to strengthen your preliminary conclusions or answer open questions left by your preliminary conclusions. I expect to see sections on:
  • Problem definition and motivation. What are the goals of your project and why are these goals important?
  • Your approach for addressing the problem that you defined above.
  • Your evaluation plan
  • Preliminiary results
  • Additional experiments and evaluations that you plan to perform
  • Related work that explain how your approach is different from existing approaches.
  • Preliminary conclusions
Here is a grading guideline for a midpoint review report (pdf).

Midpoint Project Presentations (4/3, 4/5)

Reverse Engineering and Knowledge Discovery
(4/10, 4/12) Clones (4/17, 4/19)
Mini PC Meetings or Tool Demos (4/24, 4/26, 5/1, 5/3)

(Project) Final Report, Demonstration, Implementation Zip File with Manual Due (5/10, 11:59 PM)

Each person will submit a written report (max 10 pages), as well as a slide deck, to the blackboard system. Please submit the report and the slide deck as separate PDF files. You may include an appendix beyond 10 pages, but your paper must be intelligible without it. Submissions not in the ACM format will not be reviewed (this is to model program committees for conferences and workshops, which have the option to automatically reject papers if they do not comply with the submission guidelines).

Your report should be structured like a conference paper, meaning that your report should contain:
  • Abstract
  • A well-motivated introduction
  • Related work with proper citations 
  • Description of your methodology
  • Evaluation results 
  • Discussion of your approach, threats to validity, and additional experiments
  • Conclusions and future work 
  • Appendix: Describe how to run and test your implementation (See below).
You must demonstrate your project output to the instructor. If you are doing a project that involves implementation, you must submit your souce code in zip file. This zip file must include test cases and a manual in addition to source code. Your manual must describe how to run and test your code and must describe how you achieve empirical results described in your final report.

Here is a grading guideline for a final project report (pdf).

Email Policy
When you send me an email about this class, please put a header [EE 382V] in the subject line. This will tag your email as a course-related email. I will respond to you as soon as I can or during my email office hours.  Please be brief and explicit about where you were stuck and what you need from me. I will try to answer them the best I can either by email, during the class, or using the blackboard discussion board. If you need immediate or interactive response, please try to talk to me after class or make an appointment to see me.

Quick Links

Changes from the previous Software Evolution class 
(1) Midpoint project presentation: In addition to submitting a midpoint review report, we will have an in-class project presentations about your midpoint project progress.
(2) Reading assignments: I understand that you may not be able to hand-in paper reviews in time for whatever reasons. You will have one immunity allowance for paper reviews. Out of 9 paper reviews, your best 8 scores will count toward your grade.
(3) No late policy: For reading assignments and project-related assignments, there is no late policy. I will not be accepting any late assignment. If you'd like to submit your assignments in advance, yet the blackboard submission site is not open for submission, you may email me your assignments.

Student with Disabilities
The University of Texas at Austin provides upon request appropriate academic accommodations for qualified students with disabilities. For more information, contact the Office of the Dean of Students at 471-6259, 471-4641 TTY or the College of Engineering Director of Students with Disabilities at 471-4382.