CSSE 575 – Software Maintenance and Evolution

Summer, 2015-16

General course information

Meeting times and places:

 

Introduction

With only about a third of software projects considered successful, the people in your industry need a lot of help!  This course presents software maintenance and evolution principles and techniques that enable software engineers to extend and maintain software products. You will learn techniques for working productively on software products and systematically changing them to meet evolving requirements.  These skills will include practices you can help to popularize and standardize in the software industry, as a software leader.

Course Description

The official course description from the MSSE website reads:  This course builds upon the key methods and techniques associated with constructing software to ensure the maintainability and evolution of software products. Key elements of software maintenance process, impact analysis, software reengineering/reverse engineering/design recovery, source code analysis are examined. Then topics on how to produce software systems with the measurable maintainability properties are covered from both theoretical and practical perspectives. Advanced topics in model-based engineering for evolvable products are also examined along with emerging technologies that are relevant to the sustainability of software.

 

Instructor

Steve Chenoweth

Email: chenowet@rose-hulman.edu

Phone(s):  812-877-8974 (office)   937-657-3885 (cell)

RHIT Office: Moench Hall, Room F220

 

Texts

Provided Texts:

Refactoring: Improving the Design of Existing Code, by Martin Fowler

Publisher: Addison-Wesley Professional; 1 edition (July 8, 1999)

ISBN-10: 0201485672

 

Plus:  A second text to be provided later.

Proposed: Working Effectively with Legacy Code, by Michael C. Feathers

Publisher: Prentice Hall, 2005

ISBN-13: 0-13-117705-2

 

Learning Outcomes

Students who successfully complete this course should be able to:

  1. By testing on a project, verify best practices of maintenance and evolution
  2. Use sophisticated refactoring techniques to resolve design problems in code.
  3. Apply heuristics selectively and pragmatically to enhance and modernize existing code.
  4. Use ancillary tasks such as user documentation to extend system lifetime.
  5. Describe and apply the theory of system evolution.
  6. Use impact analysis, statistical analysis, and software source analysis to strategize software change.
  7. Perform software modernization approaches such as reverse engineering, reengineering, salvaging, and restructuring.

 

Course Evaluation and Feedback: Please feel free to provide feedback about the course at any time.

 

Grading:

 

Examinations (2) 30%
Project Deliverables (Journal and working samples) 50%
Project Mtgs, Class Partic., Final Presntn. 20%

 

               

Additional Information

 

This course is about maintaining and changing software systems.  A major goal is to provide practice using state-of-the-art tactics with tools and a structure which leads to long-term efficiency and effectiveness of development.  The students typically work on a project relevant to their work or otherwise of interest to them.  Students may take on roles on others' systems, such as helping to detail a design, serving as a stakeholder, or participating in testing.

 

Expectations:

 

Students will be expected to attend and participate in class. Students will be required to use the course website on Angel to obtain relevant information, and interact with instructor and other students. Announcements and assignments will be conveyed via email and/or posted on the website. Students will be expected to work on some assignments with other team members.

 

Assignments:

 

Project assignments will be assigned regularly. Unless otherwise requested, please post on Angel your journals with descriptions of what you did and code examples. Projects are necessary instruments for tracking progress of students. A typical student will work approximately 9 hours outside of lectures each week on this course (depending on background). This is a demanding course covering a great deal of material -- please avoid falling behind on the assignments. While this course is demanding, it is also rewarding for those that want strong understanding of software requires as a discipline.

 

Academic Integrity:

 

CSSE Honesty Policy (see here!) governs class and performance. Joint study is allowed (even encouraged) on some items as expressed by the instructor; however, each student must produce his or her solutions individually. Students must not collaborate on tests or homework that is passed in unless directed by the instructor.

 

Attendance Policy:

 

Please contact the instructor in advance if you are going to be absent from class. While work commitments and emergencies can constitute a legitimate reason for missing a class, attendance is otherwise mandatory. If you cannot make it to class, you are still responsible for all materials covered in class as well as all announcements.

 

Technical Requirements:

 

You should have a laptop to bring to class and to use in completing assignments. Special software beyond, say, email, MS Word and PowerPoint, will NOT be required.

 

Course Evaluation and Feedback:

 

Please feel free to provide me feedback about the course at any time. I also recommend that you keep a "course evaluation log" somewhere to make notes that you can use for the course evaluation at both midterm and the end of the course.

 

Course Grade Division:

 

90-100

A

85- 89

B+

80- 84

B

75- 79

C+

70- 74

C

65- 69

D+

60- 64

D

0- 59

F


Ethics and Professional Practice:

 

You are expected to act honestly and professionally in this course at all times, in a manner consistent with the school’s honor code.

 

Late Submissions:

 

Late assignments may receive a deduction (or not be accepted at all), depending on the circumstances and the degree of lateness.

 

Exam Policy:

 

Exams will be take home, open book and notes. No exams will be “dropped”. Giving a makeup exam for an unexcused absence is at the discretion of the instructor. Any requests for regrading must be made in writing by the beginning of the next class period after the exams are returned.

 

 

Syllabus developed by Steve Chenoweth.