Reading
List
Lecture
1 - (1/21)
Introduction
Lecture
2 - (1/26)
Software
Design for Ease of Change, Part 1
Mythical
Man-Month
® Fredrick P. Brooks, Jr. "
No
Silver Bullet: Essence and Accidents of Software Engineering",
Computer, April 1987
Information
Hiding Principle
® David Lorge Parnas. "
On
the criteria to be used in decomposing systems into modules",
Communications of the ACM, 15(12):1053–1058, 1972.
Software
Design for Ease of Change, Part 2
Tool
Support for Designing Software for Ease of Change
® Vibha Sazawal, Miryung Kim, and David Notkin. "
A
study of evolution in the presence of source-derived partial design
representations".
In IWPSE ’04: Proceedings of the Principles of Software
Evolution, 7th International Workshop, pages 21–30,
Washington, DC, USA, 2004. IEEE Computer Society.
Design
Patterns
Class Activity on Design Patterns
®
Erich Gamma, Richard Helm, Ralph E. Johnson, John M. Vlissides, "
Design
Patterns: Abstraction and Reuse of Object-Oriented Design",
ECOOP 1993: 406-431
Lecture 5 - (2/4)
Software
Architecture
®
David Garlan and Mary Shaw. "
An
Introduction to Software Architecture",
CMU Tech Report, January 1994.
Empirical
Studies of Software Evolution
Laszlo
A. Belady and M.M. Lehman. "
A
Model of Large Program Development",
IBM Systems Journal, 15(3):225–252, 1976.
®
Stephen G. Eick, Todd L. Graves, Alan F. Karr, J. S. Marron, and Audris
Mockus. "
Does
code decay? Assessing the evidence from change management data",
IEEE Transactions on Software Engineering, 27(1):1–12, 2001.
Corrective,
Adaptive, and Perfective Changes
Class Activity on Threats to Validity
®
Chris F. Kemerer and Sandra Slaughter. "
An
empirical approach to studying software evolution".
IEEE Transactions on Software Engineering, 25(4):493–509,
1999.
Swanson,
E.B., “The Dimensions of Software Maintenance”,
Proceedings of the 2nd IEEE International Conference on Software
Engineering, 1976, pp. 492-497.
Program
Differencing Techniques, Part 1
®
James W. Hunt and Thomas G. Szymanski.
A
fast algorithm for computing longest common subsequences.
Communications of the ACM, 20(5):350–353, 1977.
Wuu
Yang.
Identifying
syntactic differences between two programs.
Software – Practice & Experience,
21(7):739–755, 1991.
Program
Differencing Techniques, Part 2
Class Activity on Line-based and AST-based Program Diffferencing
®
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.
®
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.
Sunghun
Kim, Thomas Zimmermann, E. James Whitehead Jr., Andreas Zeller. "
Predicting
Faults from Cached History",
ICSE 2007: 489-498
Mining
Software Repositories, Part 2
Quiz on Association Rule Mining & eRose
®
Davor Cubranic and Gail C. Murphy. "
Hipikat:
recommending pertinent software development artifacts".
In ICSE ’03: Proceedings of the 25th International Conference
on Software Engineering, pages 408–418, Washington, DC, USA,
2003. IEEE Computer Society.
Christian
Bird, David Pattison, Raissa D’Souza, Vladimir Filkov,
Premkumar Devanbu.
“Latent
Social Structure in Open Source Projects”,
FSE 2008: 24-35
Lecture 13 & 14- (3/4 and 3/9)
Program
Restructuring
Refactoring Class Activity
Martin
Fowler. "
Refactoring:
Improving the Design of Existing Code".
Addison-Wesley Professional, 2000.
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.
Refactoring
Reconstruction
®
Zhenchang Xing and Eleni Stroulia. "
Umldiff:
an algorithm for object-oriented design differencing",
In ASE ’05: Proceedings of the 20th IEEE/ACM International
Conference on Automated Software Engineering, pages 54–65,
New York, NY, USA, 2005. ACM.
Beat
Fluri, Michael W¨ursch, Martin Pinzger, and Harald C. Gall. "
Change
distilling tree differencing for fine-grained source code change
extraction".
IEEE Transactions on Software Engineering, 33(11):18, November 2007.
Spring
Break - (3/16 ~ 3/21)
Lecture 16 - (3/23)
Crosscutting
Concerns, Part 1
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
®
Peri
Tarr, Harold Ossher, William Harrison, and Jr. Stanley M. Sutton. "
N
degrees of separation: multi-dimensional separation of concerns",
In ICSE ’99: Proceedings of the 21st International Conference
on Software Engineering, pages 107–119, Los Alamitos, CA,
USA, 1999. IEEE Computer Society Press.
Crosscutting
Concerns, Part 2
Quiz - Crosscutting Concerns & Visitor Pattern
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.
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.
Lecture
18 - (3/30)
Delta
Debugging Part 1
®
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.
Lecture 19 - (4/1)
Delta
Debugging Quiz & Statistical
Bug Isolation
®
Ben Liblit, Alexander Aiken, Alice X. Zheng, Michael I. Jordan, "
Bug
isolation via remote program sampling",
PLDI 2003: 141-154
Delta
Debugging Wrap-Up
Regression
Testing Selection, Prioritization, Augmentation
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.
Gregg
Rothermel and Mary Jean Harrold. "
A
safe, efficient regression test selection technique",
ACM Transactions on Software Engineering and Methodology,
6(2):173– 210, 1997.
Regression
Testing Selection, Prioritization, Augmentation
Path
Profiling
Class Activity - Code Coverage
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.
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.
Lecture
23- (4/15)
Reverse
Engineering and Knowledge Discovery
Quiz - Chianti
®
Gail C. Murphy, David Notkin, and Kevin Sullivan, "
Software
reflexion models: bridging the gap between source and high-level models",
In SIGSOFT ’95: Proceedings of the 3rd ACM SIGSOFT Symposium
on Foundations of Software Engineering, pages 18–28, New
York, NY, USA, 1995. ACM.
Susan
Elliott Sim, Margaret-Anne D. Storey, "
A
Structured Demonstration of Program Comprehension Tools",
WCRE 2000: 184-193
Lecture
24 -(4/20)
Metrics
and Visualization
Class Activity - Discussion on Practical Uses of Software Evolution
Research, Part 1.
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.
Lecture 25 -(4/22)
Recap - Polymetric Views
Code
Clones, Part 1
Peer review assignments to be handed out in the class
®
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.
Lecture 26 -(4/27)
Class Activity - Discussion on Practical Uses of Software Evolution
Research, Part 2.
Code
Clones, Part 2
®
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.
Lecture 27 -(4/29)
No Lecture - Use it for your project preparation.
Lecture 28 - (5/4)
Final
Presentations
Lecture 29 - (5/6)
Final
Presentations