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:
- Foundations of Measurement
- Goal-Based Measurement Approach
- Goals and Process Evaluation
- Empirical Studies
- Data Analysis
- Metrics for Decision Support
- Causal Models
- Internal/External Quality
- Software Testing
- Build/Inspection/Test Processes
- Input Space Partitioning
- Test Requirements and Graphs
- Logic Coverage
- Fault Models
- Testing OO Software
- Test Harness Design
- Mutation Testing
This course can be applied toward:
CS 414 (Object Oriented Design).
Textbooks and Materials
Textbooks and materials can be purchased at the CSU Bookstore unless otherwise indicated.
- Introduction to Software Testing, 2nd Ed. (2016)
Paul Ammann & Jeff Offutt
- Software Metrics: A Rigorous and Practical Approach, 3rd Ed. (2014)
N. Fenton & J. Bieman
Dr. Sudipto Ghosh received the Bachelor of Technology degree in Computer Science and Engineering from the Indian Institute of Technology, Kanpur, India in 1993. He received the MS degree in Computer Science from Iowa State University in 1995 and the Ph.D. degree from Purdue University in 2000. He is currently a Professor of Computer Science at Colorado State University.
Dr. Ghosh's teaching and research interests include modeling, designing and testing of object-oriented software, middleware technologies, and aspect-oriented and component-based software development. He is a member of ACM and IEEE Computer Society. He is on the editorial boards of four journals: IEEE Transactions on Reliability; Information and Software Technology; Software Quality Journal; and the Journal of Software Testing, Verification, and Reliability.
Dr. Ghosh was a general co-chair of the ACM/IEEE 12th International Conference on Model Driven Engineering Languages and Systems held in Denver in 2009, and the 14th International Conference on Modularity held in Fort Collins in 2015. He was a program co-chair of the Third International Conference on Software Testing, Verification and Validation held in Paris in 2010.