CprE 416: Software Evolution and Maintenance
Fall 2005

MWF 12.10-1.00, Coover 1213


 
Instructor

Professor Suraj C. Kothari
kothari at iastate dot edu, 
(515) 294-7212
Office: 3132 Coover Hall

 

Teaching Assistants
 
   
   

 


Contents

Syllabus Class Activities Research Papers Projects Office Hours
Homework Grading Links WebCT  


Syllabus

Aim:
The objective of the course is to learn about the real-world challenges of maintaining and evolving large software.
Upon completion of this course, students will have the ability to:


Lectures:
Meeting Times: M W F 12.10-1.00
Location: Coover 1213

Regular attendance and participation  in the lectures is required. Instructor should be informed if you are going to miss a lecture.

Topics:

Learning Activities:

References:
 The material will be selected from research papers and reference books. The website has a list of papers. The reference books are listed below.

  1. Software Evolution: A Software Maintenance Challenge, by Lowell Jay Arthur, John Wiley & Sons, 1988, ASIN: 0471628719.
  2. Modernizing Legacy Systems: Software Technologies, Engineering Processes, and Business Practices by Robert C. Seacord, Daniel Plakosh, and Grace A. Lewis, Addison-Wesley Pub Co; 1st edition, 2003, ISBN: 0321118847.
  3. Practical Software Maintenance: Best Practices for Managing Your Software Investment by Thomas M. Pigoski, John Wiley & Sons, 1st edition, 1996, ISBN: 0471170011.
  4. Designing Maintainable Software, by Dennis D. Smith, Springer-Verlag, 1999, ISBN 0387987835.
  5. Software Metrics: Establishing a Company-wide Program, by Robert B. Grady Prentice Hall; 1st edition, 1987, ISBN 0138218447.

Expected Work and Grading:

  1. Projects (45%)

  2. Weekly homework assignments (45%)

  3. Attendance, participation, and exemplary work (10%)

Academic Integrity
All your work (including the labs) should be done individually unless otherwise specified. You are not allowed to use work done by others, or obtain the answers directly in any form (such as from the web). If you have any questions about what is allowed/not allowed, please contact the instructor or the TAs.

Any cases of cheating will be dealt with the strictest possible measures allowed by the university, please refer to the university policies on academic dishonesty.

Disability
Students with disability should inform the instructor so that appropriate arrangements can be made to help them.

Office hours

  Hours Location
Professor Kothari Mon 2:30-3:30, F 1:10-2:10 3132 Coover Hall


Students can make appointments to see the instructor outside the office hours.  Make appointments by talking to the instructor before or after the class. Appointments are not necessary during scheduled office hours.


Class Schedule

Week

Day

Lecture Topics

Reading

HW/Project

Week 1 M Aug 22 General Introduction(PPT)  PDF    

 

W Aug 24 Overview of Software Evolution (PPT) (PDF)  
F Aug 26 Overview of Software Maintenance (PPT)  (PDF) Paper cited in HW-1
Week 2 M Aug 29 Program Comprehension (PPT) (PDF)   HW-1  9/2
W Aug 31 Structural Analysis Java (PPT)  (PDF)  
F Sept 2 Summary Lecture (PPT) (PDF)  (code example) Papers for HW-2.
Week 3 M Sept 5 Holliday   Proj-1  9/7

HW-2  9/9

 

W Sept 7 FEAT Project and Tool (PPT) (PDF) Papers for Project 1.
F Sept 9 FEAT Project and Tool  
Week 4 M Sept 12 FEAT Project and Tool   HW-3  9/16 Interim Report
W Sept 14 Concern-based Program Comprehension  (PPT) (PDF)  
F Sept 16 Concern-based Program Comprehension
 
Week 5 M Sept 19 Efficient Debugging (PPT) (PDF)   Proj-1 draft 9/21

HW-3  9/23 Final Report

W Sept 21 Guest Lecture by Mike Lockwood from  Lockheed Martin  
F Sept 23 Feedback on Project 1 Interim Reports                  Efficient Debugging Demonstration  
Week 6 M Sept 26     Proj-1 9/28

HW-4 9/30

W Sept 28    
F Sept 30    
Week 7 M Oct 3     HW-5 10/7
W Oct 5    
F Oct 7    
Week 8 M Oct 10      
W Oct 12    
F Oct 14    
Week 9 M Oct 17      
W Oct 19    
F Oct 21    
Week 10 M Oct 24      
W Oct 26    
F Oct 28    
Week 11 M Oct 31   HW-7 11/2
W Nov 2 Hands on Experience with the C-Vision Tool
F Nov 4    
Week 12 M Nov 7    
W Nov 9  
F Nov 11    
Week 13 M Nov 14      
W Nov 16    
F Nov 18    
Week 14 M Nov 21 Thanksgiving  Break  
W Nov 23
F Nov 25
Week 15 M Nov 28      
W Nov 30    
F Dec 2    
Week 16 M Dec 5      
W Dec 7    
F Dec 9    
Week 17 M Dec 12  Exam week    
     

 


Papers

  1. Code Reading and Program Comprehension – annotated bibliography - http://www2.umassd.edu/swpi/processbibliography/bib-codereading2.html#Deimel90

Projects


Project 1

The objective of this project is to study some source code comprehension tools  and communicate your knowledge through presentations and demos of the tools. Tools and the underlying abstractions are active areas of research. We will discuss the abstractions and the highlights of  the research in the class. Several source code comprehension tools are listed at URL: http://grok2.tripod.com/code_comprehension.html

You will do the following:

  1. You will choose three source-level program comprehension tools. The three tools could be any of the following: FEAT, SA4J, Rigi, or any other tool of your choice.
  2. You are expected to download the tools and perform interesting experiments with them to understand how they work, their applicability, their strengths and weaknesses.
  3. Prepare a demo of one tool using Wink, which is a Tutorial and Presentation creation software, primarily aimed at creating tutorials on how to use a software tool. Using Wink you can capture screenshots, add explanations boxes, buttons, titles etc and generate a highly effective demo to show how the tool works and its interesting capabilities (or shortcomings). Wink URL: http://www.debugmode.com/wink/
  4. Prepare a slide presentation that describes the work you did and the results you got. You should discuss how the tools work, their applicability, their strengths and weaknesses, tool comparisons if applicable, and any interesting results you have found. You will choose software of your choice to experiment with the tools. Make notes while you are experimenting with the tools and use those notes while preparing your presentations. Your presentation can include material from the user manual, papers, or other material available on the web. However, you must show some originality and creativity in your presentation and it should not be simply a cut-and-paste of material available on the web.
  5. You will  give a oral presentation. The time and place will be announced later.
  6. You are expected to attend other presentations, evaluate them, and provide constructive feedback.
  7. In addition to presentation You will keep and submit a log of the time you spend on various activities (e.g. installation, experiments, demos, and presentations). Include the date and the actual time you worked on the project. Each student will keep a separate log and submit it individually.
8/26-9/7 Select your team members. Download Wink and learn how to use it. Read the report on the comparative study of five tools; the URL is given below. Gather information on tools from the Internet. Submit the first interim report on your work on 9/7 including a log of your work. Note that each person keeps a separate log and submits it individually. Identify the names of team mates on your log.
9/7-9/21 Experiment with the tools and prepare the first draft of your presentation. Email: 1. Draft  of your presentation on 9/21 (one per team), 2. A Word document  that includes a log of your work and comments describing your learning experience thru this project.
9/28 Submit the final presentation and the demo by email 9/28.
10/3-10/7 Presentations will be scheduled:

Resources:

  1. FEAT Tool http://www.cs.ubc.ca/labs/spl/projects/feat/
  2. FEAT User Interface Discussion from Robillard's Ph.D. Thesis (FEAT-UI.pdf)
  3. SA4J http://www.alphaworks.ibm.com/tech/sa4j
  4. SA4J User Guide (available from the above site)
  5. Rigi http://www.rigi.csc.uvic.ca/
  6. Rigi User Manual http://www.rigi.csc.uvic.ca/rigi/manual/user.html
  7. Report on comparative study of five architecture extraction tools http://se.uwaterloo.ca/~mnarmstr/746project/report.html (PDF File)
  8. Source code comprehension tools: http://grok2.tripod.com/code_comprehension.html

     

 


Project 2

Word Document or PDF


Project 3


Homeworks

 


Homework 1

CPRE 416: Software Evolution and Maintenance            Homework 1 (10 points)

Assigned: August 26, 2005

Due: September 2, 2005 at the beginning of the class

Name: Fill in on your answer sheet

Read the assigned paper on the software maintenance study conducted by NASA and answer the given questions. URL for the paper: http://www.cs.umd.edu/projects/SoftEng/ESEG/papers/ICSE96.html

QUESTIONS:

  1. What was the range for size (in SLOC) for the 25 releases considered for the quantitative analysis?
  2. Refer to Figure 1 in the paper where the first pie chart gives the results for all the 25 releases. What are the remaining five pie charts for?
  3. Among various changes (adaptation, correction etc.), how much of the effort was spent on corrections?
  4. Given the data in the paper, give your best estimate of the amount of effort spent on the isolation activities. Explain concisely how you arrived at your estimate.

The homework is worth 10 points, out of which 2 points will be for the quality of writing, presentation, and following instructions.  Copy the top 4 lines and fill in your name on the answer sheet. The homework must be type written.


Homework 2

CPRE 416: Software Evolution and Maintenance            Homework 2 (20 points)

Assigned: September 2, 2005

Due: September 9, 2005 at the beginning of the class

Name: Fill in on your answer sheet

Search relevant paper(s) and look for material on program slicing to answer the given questions.

Start with the paper we discussed in the class on econometric modeling for estimating program comprehension efforts (URL for the paper: http://portal.acm.org/citation.cfm?id=837837)

Note that the papers can be downloaded  from ISU Electronic library. We have discussed in class how to use the Electronic Library.

 QUESTIONS:

  1. The above mentioned paper talks about “transform slicing” and “direct slicing”.  Find a relevant paper that describes the two types of program slices. Describe the two types and their purpose. Which one can be automated? Give the full reference to paper(s) where you found the relevant information.
  2. We mentioned two other types of slices in the class: backward and forward.  Write a small program and show the backward and forward slices. Which slice is useful for debugging?

 The homework is worth 20 points, out of which 4points will be for the quality of writing, presentation, and following instructions. Copy the top 4 lines and fill in your name on the answer sheet. The homework must be type written.


Homework 3  (Click to download Xinu Code   Word Copy of HW-3 )

CPRE 416: Software Evolution and Maintenance            Homework 3 (40 points)

Assigned: September 9, 2005

Due: 1. September 16, Interim Report, 2. September23, Final Report

Name: Fill in on your answer sheet

 Imagine that you have an interview in two weeks with the company Xinuworks. The position is with the file systems group and the job involves enhancing and maintaining the file systems code for the Xinu operating system. You need to prepare for the interview by reading the Xinu code with particular emphasis on the file system code. You try to understand the Xinu file system code with the help of in-line documentation and also whatever information you can find on the web about Xinu. 

 For this homework you are going to write a document about your experience of reading this real-world Xinu code. Specifically, do the following:

  1. Part I: Document your understanding of the Xinu file systems. Include all aspects: high-level understanding, specifics of the code, and how the two are related. ( about 4 to 5 pages)
  2. Part II: Write about the difficulties and challenges you faced. Be specific. For example, mention you would like to extract from the code (and why) but you could not. (About 2 pages) (Note: The Part I and II will constitute the Final Report due on September 23.)
  3. You should submit on September 16 a one-page interim report of the work you have done during the first week. ( worth 5 points)

Log your effort (dates and time you have spent on this homework. This should be a separate page attached at the end of the final report. All the documents must be typed using a word processor with proper formatting etc. Use the 10 or 11 point font.

 I will look for creativity, substantial amount work, and a well written document.

You can have discussions with your classmates but never see or share each other’s documents in any form.

 There are different implementations of Xinu for different platforms. You should use the specific implementation that I have provided for this homework.

Bonus points will be given if you use a program comprehension tool and discuss how the tool was useful.

 There will be 10% penalty if the documents are not submitted in class on the due dates.

NOTE: Download and extract the Xinu code by decompressing the zip file. If you have any difficulties or if you have any other questions ask those in class on Monday, September 12.

 


Homework 4    (In MSWord Format)

CPRE 416: Software Evolution and Maintenance            Homework 4 (15 points)

Assigned: September 23, 2005

Due: September 30, 2005

 Name: Fill in on your answer sheet

 The objective of this homework is for you to review and apply the material from the discussions in class on slicing and its use for efficient debugging.

 Reference for the material discussed in class: Efficient debugging with slicing and backtracking, http://www2.umassd.edu/SWPI/slicing/purdue/TR80P.pdf

 

                                        1:       int x, i;

                                        2:      x = 0;

                                        3:      read(i);             /* Get an integer value for x */              

                                        4:      switch(i)           {

                                        5:      case 0: x += 1;

                                        6:                  break;

                                        7:      case 1:

                                        8:      case 2:

                                        9:      case 3: x += 2;

                                        10:    default: x += 3;

                                        11:    } /* end switch */

                                        12:    printf("i = %d\tx = %d\n", i, x);

Instructions: As usual copy the top for lines at the top of your answer  sheet. The answers must be typed and well formatted using a word processor. Include the above code in your answer sheet, include each question followed by its answer. This homework should be done completely independently; do not discuss it with your classmates. I will take some points off if these instructions are not followed

This homework requires you to apply the control flow logic of the switch statement. In case you do not know how it works, refer to a C book or some reference on C.

 Answer the following questions with respect to the above code.

  1. Given the variable occurrence x at line #12, give the static backward data slice.
  2. Given the variable occurrence x at line #12 and 0 as input for i, give the dynamic backward data slice.
  3. Given the variable occurrence x at line #12 and 3 as input for i, give the dynamic backward data slice.
  4. Given the variable occurrence x at line #12 and 5 as input for i, give the dynamic backward data slice.
  5. Givent the line # 12, give the static control slice.
  6. Given the variable occurrence x at line #12 and 0 as input for i, give the dynamic backward control slice.
  7. Given the variable occurrence x at line #12 and 1 as input for i, give the dynamic backward control slice.

 We have discussed in class precise definitions for program slicing. I will look for precise answers based on those definitions..

 There will be 10% penalty if the homework is not submitted in class on the due date.

 

 


Homework 5 (MS WORD   PDF)


Homework 6 (MS Word, PDF, Needed Code Files (zipped folder) )


Homework 7 ( MS WORD PDF )


Exams


Links

  1. Code Reading and Program Comprehension – annotated bibliography - http://www2.umassd.edu/swpi/processbibliography/bib-codereading2.html#Deimel90

  2. Software Evolution http://www.program-transformation.org/Transform/TeachingSoftwareEvolution

  3. FEAT project. http://www.cs.ubc.ca/labs/spl/projects/feat/

  4. Robillard Home Page: http://www.cs.mcgill.ca/~martin/

  5. Concern Graph URL: http://www.cs.ubc.ca/labs/spl/projects/concerngraph.html

  6. ISU-Rockwell DARPA SEC project. http://dirac.ee.iastate.edu/sec/

  7. Aristotle research group. http://www.cc.gatech.edu/aristotle/

  8. AspectJ. http://eclipse.org/aspectj/

  9. Java structural analysis tool, user guide. http://www.alphaworks.ibm.com/tech/sa4j.

  10. The aspect-oriented software architecture design (TAOSAD) portal. http://trese.cs.utwente.nl/taosad/

  11. Rigi Tool: http://www.rigi.csc.uvic.ca/

  12. FEAT Project URL: http://www.cs.ubc.ca/labs/spl/projects/feat/

  13.  JEX Project URL: http://www.cs.mcgill.ca/~martin/jex/

  14. CodeSurfer. http://www.grammatech.com/products/codesurfer/codesurfer.html

  15. CMU Software Architecture Website: http://www.sei.cmu.edu/ata/ata_init.html

  16. Star Tool Website: http://www.cse.ucsd.edu/~wgg/Software/StarTool/

  17. Bandera project. http://bandera.projects.cis.ksu.edu/

  18. SQL Injection Demo