CS 846
Topics in Software Engineering: Software Quality

Course Meeting Time

Mondays, 1 to 3:50 pm, DC 3313

Instructor

Anne Banks Pidduck
DC 3331, Ext. 34662
apidduck@uwaterloo.ca

Office Hours: Thursdays 11 am to 12 noon

Course Objectives

This course has three major objectives. The first is to introduce the student to the breadth of approaches, views and techniques used to create software quality. The second is to provide an opportunity for the student to explore at least one aspect of software quality in depth. The third is to advance the student's research, writing and presentation skills.

After completing this course, students will:
  • be able to describe what software quality is and what it is not;
  • be familiar with the terminology used to describe software quality approaches;
  • understand the major software quality approaches and technologies in broad terms;
  • use, analyze and review at least one software quality tool;
  • research and document at least one software quality approach or technology in depth;
  • be able to propose future work and improvements in software quality research;
  • extend the software quality discipline through a journal-quality academic paper.
  • Course Outline

    Software quality is one of the ultimate goals of developers, managers and users. The definitions, understanding, demonstrations and measurement of software quality may differ, however, among these three groups. Developers focus on standards, methodologies, processes and techniques for improving and measuring software. Managers and users have a customer view with concerns about product rather than process. These stakeholders are also concerned about time and budget and may be willing to give up some software quality to meet other demands.

    We will explore software quality from a number of viewpoints and contexts through the following issues:
  • What is software quality?
  • Perceptions of software quality: different views, such as developer, manager, user
  • Quality at various stages of the SDLC: requirements, design, testing and so on
  • Process quality
  • Product quality
  • Software quality standards
  • Cost of quality: cost/benefit analysis and 'good enough' software
  • Software quality measurement and metrics
  • Demonstrations of quality
  • Methodologies
  • Techniques for improving software quality
  • Technologies

    Workload and Evaluation

    Students will read and discuss a number of current research papers throughout the term. Each student will prepare two short research papers, a software assignment, at least one research seminar and a large-scale research paper about topics approved by the instructor, reflecting material covered. The first paper will be general and address the broad topic of software quality approaches, terminology, and applications in mainstream areas. The second paper will address a specific area of software quality in depth. The software assignment will use or develop an accessible software quality tool and result in a concise technical report. The seminars will reflect learning from one or more of the other activities in the course. The final research paper will be about 6000 words (20 pages) and suitable for submission to a software engineering conference or journal.

  • In-class critiques, discussion, questions, visitors {10 marks}
  • Week 2: Short research paper {5 marks}
  • Week 4: Short research paper {15 marks}
  • Week 6: Software assignment {10 marks}
  • In-class Seminars {10 marks}
  • Week 12: Large-scale research paper {50 marks}
  • Assignments

    Assignment 1
    A1 Article
    Efficient Reading
    Critique Tips

    Academic Integrity

    Policy 71, Student Academic Discipline