To introduce students to systematic testing of software systems, software verification, symbolic execution, software debugging, quality assurance, measurement and prediction of software reliability, project management, software maintenance, software reuse, reverse engineering.
CS 447 is a course for CS major students, and is normally taken in a student's 4B term. This course is one of three that form the basis for the software engineering option. Students from other plans in Computer Science may elect to enrol in this course.
Prerequisites: CS 350; Computer Science students only.
Antirequisites: SE 465.
Related courses: CS 445, CS 447.
Cross-listed as: ECE 453.
Used in Course: Rational Rose, SDL, X-Runner, ITEX.
Assumed Background: Strong familiarity with UNIX, C/C++ and Tcl/Tk.
Software Testing, by Paul C. Jorgensen, CRC Press, 1995. Course notes.
3 lecture hours, 1 tutorial hour, and 1 discussion hour (for project group meetings). Normally available in Winter.
Overview of the maintenance and testing activities within the software life cycle. Brief introduction to project related CASE tools and necessary background.
Major maintenance activities. Estimating maintenance costs and productivity. Predicting maintainability with software quality metrics. Economics and expectations of software reengineering. Principles of software reuse and reverse engineering techniques.
Cost estimation. Project scheduling. Specification of work units.
Introduction, examination of various quality/complexity metrics. Software availability. Measurement and prediction of software reliability.
Software verification, correctness proofs, symbolic execution, walkthroughs, inspections.
Testing strategies, including unit level, path and dataflow testing, domain testing, decision tables, and state-based testing. Coverage metrics. Impact of object-oriented testing. Effort, efficiency, and effectiveness concerns.
Integration (decomposition based, bottom-up, top-down, call graph based, path based, MM paths and atomic system functions). Validation and system testing (data, action, port, event and thread testing, structural and functional approaches, operational profiles). TTCN test suites.

David R. Cheriton School of Computer Science
University of Waterloo
Waterloo, Ontario, Canada N2L 3G1
Tel: 519-888-4567 x33293
Fax: 519-885-1208
Contact | Feedback: cs-uops@cs.uwaterloo.ca | David R. Cheriton School of Computer Science | Faculty of Mathematics