Office
Hours: Wednesday 12:30PM to 2PM
Email Response Hours: Monday & Wednesday
9AM - 10AM.
Monday
and Wednesday: 11 AM to 12:30 PM, ENS 116
Quick
Links
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.
Readings
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
Grading
- Project: 50%
- midpoint reviews: 20% (pre-proposal 3%, proposal 3%, midpoint
report 10%, and presentation 4%)
- final presentation
and report (30%)
- Reading assignments: 24% (8
reviews * 3% each)
- Peer code review task participation and report: 13%
- Class presentation and participation:
13% (tentatively, demo 5%, other participations 7%)