The objective of this course is to provide students with a working knowledge of the state of research and practice on software product and process evaluation and improvement. Students completing this course should be able to evaluate both software artifacts and software processes. Software product evaluation includes the evaluation of external characteristics such as usability and functionality, as well as internal characteristics such as design structure, testability and maintainability. Software process evaluation addresses the problem of understanding the software development process, assessing the quality of the process, and developing plans for process improvement. The use of quantitative methods in software engineering will be stressed. The course will also cover experimental methods as they are applied to evaluating software engineering methods.
Software testing is a major component of software product evaluation; testing consumes a large portion of most software development budgets. We will focus on testing object-oriented systems. Issues of interest include testing theory, the implications of design choices on testing, and practical issues such as selecting and creating test data, testing tools, and the design of test support software.
The topics covered in this course are listed below: