CMPT 898-08: Special Topics in Software Maintenance and Evolution
Term: Winter 2010
Time:
Thursdays,
Location: Thorv S386
Instructor: Chanchal Roy, Department of Computer Science, UofS
Objective: Studies show that up to 80% of total effort is spent on software maintenance. In practice, software engineers spend busy time in modifying software systems to meet user requirements, fixing bugs and defects or adapting the systems to changing needs. It is also a common practice to reuse existing software components for building new systems rather than building from scratch. Over the last decades, research is therefore aimed at the rapid evolution of software systems in response to business and technological change. Using automated techniques, software evolution and adaptation can be made more cost effective, more timely and less error prone, helping software industries be more competitive and better able to quickly react to changing market demands while addressing critical software quality issues.
|
This course aims to make students aware of the challenges inherent in the maintenance and evolution of software systems, and to provide a working understanding of some of the techniques and best practices currently in use for changing software safely, efficiently and in a cost effective way.
|
Course Outline: In this course, we focus on state-of-the-art methods, tools, and techniques to assist the maintenance, understanding and restructuring of very large software systems. Topics include:
|
|
Format and Activities for Evaluation: The course will be organized in the form of a research seminar. The instructor will give introductory lectures on various topics of software maintenance and evolution. Students will be required to read, present, and review papers from the reading list below. The instructor will provide the paper review format. As a major part of this course, students will need to do a term project, and submit a 15-20 page project report in the form of an IEEE two-column proceedings format. Possible project topics with background ideas will be provided. Active participation in the class discussion on papers will be also an integral part of the class. There are no midterm and final exams in this course. We will sit for 3 hours per week over the term.
|
Grading Scheme: Each of the parts of the course is important and counted towards the final grade. The general scheme is as follows:
|
|
|
[1] |
Michael W. Godfrey and Daniel
M. German. The Past, Present, and Future of Software Evolution. Invited paper in Proc. of Frontiers of Software Maintenace track at the 2008 IEEE Intl. Conf. on Software
Maintenance (ICSM-08),
October 2008,
|
[2] |
J. Maletic and H. Kgdi Expressiveness and Effectiveness of Program Comprehension: Thoughts on Future Research Directions. In Proc. of the Frontiers of Software Maintenance track at ICSM'08, pp. 31-37, 2008.
|
[3] |
Mik Kersten and Gail Murphy. Using Task Context to Improve Programmer Productivity. In Proc. of 2006 Conference on Foundations of Software Engineering (FSE-06), Nov 2006.
|
[4] |
Elizabeth Burd and Malcolm
Munro. An Initial
Approach Towards Measuring and Characterising Software Evolution.
In Proc. of 1999 Working Conf. on Reverse Engineering (WCRE-99),
|
[5] |
R. Bednarik and M. Tukiainen.
An Eye-Tracking Methodology for Characterizing Program Comprehension
Processes. In Proceedings of 2006 symposium on Eye tracking research &
applications (ETRA),
|
[6] |
S. Yusuf, H. Kagdi, and J.I.
Maletic. Assessing the Comprehension of UML Diagrams via Eye Tracking. In Proceedings
of 15th IEEE International Conference on Program Comprehension (ICPC'07),
|
[7] |
C.K. Roy and J.R. Cordy. Scenario-based
Comparison of Clone Detection Techniques. In Proceedings of the
16th IEEE International Conference on Program Comprehension (ICPC’08),
pp.153-162, IEEE Press,
|
[8] |
Cory J. Kapser and Michael W. Godfrey. `Cloning Considered Harmful' Considered Harmful: Patterns of Cloning in Software. Empirical Software Engineering (Springer), vol. 13, no. 6, December 2008
|
[9] |
C.K. Roy and J.R. Cordy. Near-miss Function Clones in Open Source Software: An Empirical Study. Journal of Software Maintenance and Evolution: Research and Practice, 25 pp., 2009.
|
[10] |
Michael W. Godfrey and Lijie Zou. Using Origin Analysis to Detect Merging and Splitting of Source Code Entities. IEEE Trans. on Software Engineering, vol. 31, no. 2 (Feb 2005). |
[11] |
Hamid Abdul Basit and Stan
Jarzabek. Detecting Higher-level Similarity Patterns in Programs.
In Proc. of the 2005 Intl. Conference on Foundations of Software
Engineering (FSE-05),
|
[12] |
B.S. Baker. Finding Clones with Dup: Analysis of an Experiment. IEEE Transactions on Software Engineering, Vol. 33(9): 608-621, 2007.
|
[13] |
Y. Higo and S. Kusumoto. Significant and Scalable Code Clone Detection with Program Dependency Graph. In Proc. of the 16th Working Conference on Reverse Engineering, 4 pp., 2009.
|
[14] |
D. Hou, F. Jacob, and P. Jablonski. Exploring the Design Space of Proactive Tool Support for Copy-and-Paste Programming. In Proc. IBM Conference of the Centre for Advanced Studies on Collaborative Research, 15 pp., 2009.
|
[15] |
E. Juergens, F. Deissenboeck, B. Hummel and S. Wagner. Do Code Clones Matter? In Proc. of the 31st International Conference on Software Engineering, pp. 485-495, 2009.
|
[16] |
I. Baxter and C. Pidgeon.
Software Change Through Design Maintenance. In Proceedings of
International Conference on Software Maintenance (ICSM97),
|
[17] |
F. P. Brooks. No Silver Bullet: Essence and Accidents of Software Engineering. IEEE Computer, vol. 9, no. 4, pp. 34-42, 1987. |
[18] |
Ahmed E. Hassan . The Road
Ahead for Mining Software Repositories. Invited paper
in Proc. of Frontiers of Software
Maintenace track at the 2008 IEEE Intl. Conf. on Software Maintenance
(ICSM-08), October 2008,
|
[19] |
Thomas D. LaToza, Gina Venolia, Robert DeLine . Maintaining Mental Models: A Study of Developer Work Habits.
In Proc. of the 2006 Intl. Conf. on Software Engineering (ICSE-06),
|
[20] |
Peter C. Rigby and Ahmed E.
Hassan. What Can OSS Mailing Lists Tell Us? A Preliminary Psychometric Text
Analysis of the Apache Developer Mailing List.
|
[21] |
Martin Robillard and Barthelemy
Dagenais. Retrieving
Task-Related Clusters from Change History. In Proc.
of the 2008 Working Conference on Reverse Engineering (WCRE-08), |
[22] |
Chris F. Kemerer and Sandra Slaughter. An empirical approach to studying software evolution. IEEE Transactions on Software Engineering, 25(4):493–509, 1999.
|
[23] |
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, pp. 253–267,
|
[24] |
Toshihiro Kamiya, Shinji Kusumoto, and Katsuro Inoue. CCFinder: A multilinguistic token-based code clone detection system for large scale source code. IEEE Transactions on Software Engineering, 28(7):654–670, 2002. |
[25] |
Antoniol, G., Canfora, G., Casazza, G., and De Lucia, A. Maintaining Traceability Links During Object-Oriented Software Evolution. Software - Practice and Experience, vol. 31, no. 4, April, pp. 331-355, 2001.
|
[26] |
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
|
[27] |
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. |
[28] |
Danny Dig and Ralph Johnson. Automated detection of refactorings in evolving components. In ECOOP ’06: Proceedings of European Conference on Object-Oriented Programming, pages 404–428. Springer, 2006.
|
[29] |
Martin P. Robillard and Gail C. Murphy. Concern graphs: finding and describing concerns using structural program dependencies. In ICSE ’02: Proceedings of the 24th International Conference on Software Engineering, pages 406–416, Washington, DC, USA, 2003. IEEE Computer Society.
|
[30] |
Chikofsky, E. J. and Cross, J. H. Reverse Engineering and Design Recovery: A Taxonomy. IEEE Software, vol. 7, no. 1, January, pp. 13-17, 1990. |
[31] |
Eisenbarth, T., Koschke, R., and Simon, D. Locating Features in Source Code. IEEE Transactions on Software Engineering, vol. 29, no. 3, March, pp. 210 – 224, 2003.
|
[32] |
Michele Lanza and St´ephane Ducasse. Polymetric views-a lightweight visual approach to reverse engineering. IEEE Transactions on Software Engineering, 29(9):782–795, 2003.
|
[33] |
Briand, L. C., Daly, J. W., and
Wüst, J. A Unified Framework for Cohesion Measurement in Object-Oriented
Systems. In Proceedings of 4th International Software Metrics Symposium
(METRICS'97), |
[34] |
Thomas Reps, Thomas Ball, Manuvir Das, and James Larus. The use of program profiling for software maintenance with applications to the year 2000 problem. In ESEC ’97/FSE-5: Proceedings of the 6th European Conference held jointly with the 5th ACM SIGSOFT International Symposium on Foundations of Software Engineering, pages 432–449, New York, NY, USA, 1997. Springer-Verlag New York, Inc.
|
[35] |
Miryung Kim, Vibha Sazawal, David Notkin, and Gail Murphy. An empirical study of code clone genealogies. In ESEC/FSE-13: Proceedings of the 10th European Soft-ware Engineering Conference held jointly with 13th ACM SIGSOFT International Symposium on Foundations of Software Engineering, pages 187–196, New York, NY, USA, 2005. ACM. |
[36] |
Wuu Yang. Identifying syntactic differences between two programs. Software – Practice & Experience, 21(7):739–755, 1991.
|
[37] |
Miryung Kim and David Notkin. Discovering and Representing Systematic Code Changes. In Proceedings of the International Conference on Software Engineering, 2009.
|
[38] |
Thomas Zimmermann, Peter Weißgerber, Stephan Diehl, and Andreas Zeller. Mining version histories to guide software changes. IEEE Transactions on Software Engineering, 31(6):429–445, 2005 |
[39] |
P. Tonella. Concept Analysis for Module Restructuring. IEEE Transactions on Software Engineering, vol. 27, no. 4, July, pp. 351-363, 2001.
|
[40] |
John Anvik, Lyndon Hiew and Gail C. Murphy. Who Should Fix This Bug? In Proc. of the 2006 Intl. Conference on Software Engineering (ICSE-06), Shanghai, May 2006.
|
[41] |
Wilde, N., Buckellew, M., Page, H., Rajlich, V., and Pounds, L. A comparison of methods for locating features in legacy software. The Journal of Systems and Software, vol. 65, pp. 105-114, 2003. |
[42] |
Antoniol, G., Fiutem, R., and Cristoforetti, L. Using Metrics to Identify Design Patterns in Object-Oriented Software. In Proceedings of 5th IEEE International Symposium on Software Metrics (METRICS'98), Bethesda, MD, November 20-21, pp. 23 – 34, 1998. |
[43] |
Mary Shaw. What Makes Good Research in Software Engineering?
Invited presentation given at ETAPS 2002,
|
[44] |
Hongyu Zhang. Exploring Regularity in Source Code: Software Science and Zipf's Law.
In Proc. of the 2008 Working Conference on Reverse Engineering (WCRE-08),
|
[45] |
David Lorge Parnas. On the criteria to be used in decomposing systems into modules. Communications of the ACM, 15(12):1053–1058, 1972.
|
[46] |
Lewis, G. A., and Smith, D. B. Service-Oriented Architecture and its Implications for Software Maintenance and Evolution. In Proc. of the Frontiers of Software Maintenance track at ICSM'08, pp. 1-10, 2008.
|
[47] |
J.R. Cordy. The TXL Source Transformation Language. Science of Computer Programming 61,3 (August 2006), pp. 190-210. |
[48] |
Daniel M. German, Ahmed E. Hassan and Gregorio Robles. Change impact graphs: Determining the impact of prior code changes. Information and Software Technology. In Press, May, 2009.
|
[49] |
Omar Alam,
Bram Adams and Ahmed E. Hassan.
A Study of the Time Dependence of Code Changes. In Proceedings of the 25th IEEE Working Conference
on Reverse Engineering (WCRE),
|
[50] |
Nicolas Bettenburg, Weyi Shang,
Walid Ibrahim, Bram Adams and
|
[51] |
Adam Kieżun, Philip J. Guo, Karthick Jayaraman, and Michael D.
Ernst.
|
[52] |
Surafel Lemma Abebe, Sonia Haiduc, Andrian Marcus, Paolo Tonella, Giuliano Antoniol. Analyzing the Evolution of the Source Code Vocabulary. In Proc. of CSMR 2009, pp. 189-198, 2009.
|
[53] |
Stefan Gueorguiev, Mark Harman, Giuliano Antoniol. Software project planning for robustness and completion time in the presence of uncertainty using multi objective search based software engineering. In GECCO 2009, pp. 1673-1680. |
[54] |
Bénédicte Kenmei, Giuliano Antoniol, Massimiliano Di Penta: Trend Analysis and Issue Prediction in Large-Scale Open Source Systems. In CSMR 2008, pp. 73-82.
|
[55] |
Marc Eaddy, Alfred V. Aho, Giuliano Antoniol, Yann-Gaël Guéhéneuc: CERBERUS: Tracing Requirements to Source Code Using Information Retrieval, Dynamic Analysis, and Program Analysis. In ICPC 2008, pp. 53-62.
|
[56] |
Chiara Di Francescomarino, Alessandro Marchetto, Paolo Tonella: Reverse Engineering of Business Processes exposed as Web Applications. In CSMR 2009, pp. 139-148.
|
[57] |
Shin Yoo, Mark Harman, Paolo Tonella, Angelo Susi: Clustering test cases to achieve effective and scalable prioritisation incorporating expert knowledge. In ISSTA 2009, pp. 201-212.
|
[58] |
Gerardo Canfora, Luigi Cerulo, Massimiliano Di Penta: Ldiff: An enhanced line differencing tool. In ICSE 2009, pp. 595-598. |