ESOF 326

Software Maintenance

3 Cr. (Hrs.:3 Lec.)

Continues to study the process of developing software applications and systems. Software requirements, design and testing are addressed. Students gain experience in these areas by working on software maintenance projects that involve significant changes to a previously developed product. Prerequisite: (CSCI 340 or BMIS 375) and ESOF 322 (2nd)


E1. Students entering this course should have a firm knowledge of multiple programming languages (from CSCI 136 and CSCI 232), algorithm design and analysis (from CSCI 232), databases (from CSCI 340) and software engineering (ESOF 322).

E2. Understand quality issues such as usability, reliability, availability, maintainability, portability, and performance, and how these must be considered throughout the life cycle (ESOF 322).

E3. Understand the importance of software inspections throughout the life cycle, and will have performed several such reviews and inspections according to the documented procedures for such reviews and inspections (ESOF 322).

Course Outcomes:

R1. Demonstrated the ability to work effectively in a team setting on a multi-programmer, multi-month, software project. (CS: 5; SE: 5)

R2. Taken an existing project and either bring it to the next stage of completion or made major enhancements. (CS: 2; SE: 2)

R3. Appreciate the importance of early and continuous involvement of all system stakeholders during the development cycle. (CS: 3; SE: 3)

R4. Be able to create and follow a software test plan, report failures, correct faults, and resubmit test case results. (CS: 1, 3, 5; SE: 1, 5)

R5. Understand the importance of software metrics and know the standard measurements such as person hours and lines of code.

R6. Can describe his or her experience with the personal, technical, managerial and people aspects of a class maintenance project. (CS: 3; SE: 3)

5-a-1 - Substantial coverage of algorithms and complexity, computer science theory, concepts of programming languages, and software development
5-a-4 - The study of computing-based systems at varying levels of abstraction
5-a-5 - A major project that requires integration and application of knowledge and skills acquired in earlier course work

III-1-2-1 - Computing fundamentals, software design and construction, requirements analysis, security, verification, and validation
III-1-2-2 - Software engineering processes and tools appropriate for the development of complex software systems