Lectures

*the below lecture schedule is tentative and subject to change.

LECTURE 1: Introduction to Software Quality

  • Course info. What Causes Software Errors? What is Quality? McCall’s Factor Model. What is Quality Assurance? Software Quality Assurance. Formal methods, testing, inspection, metrics. Achieving software quality.
  • Slides: [PDF]

LECTURE 2: Software Process I

  • Quality in context. Software process activities. The Waterfall model. The Prototyping model. Evolutionary development. The Spiral model. The Iterative Development Process (IDP).
  • Slides: [PDF]

LECTURE 3: Software Process II

  • Extreme Programming (XP). What is XP? What are the values and principles of XP? Why is it called extreme? Characteristics of XP. Addressing risks before they arise. XP in Practice: planning practices, programming practices, integration practices, and others.
  • Slides: [PDF]

LECTURE 4: Software Process III

  • The Object Oriented Development Process. The Synch-and-Stabilize Approach and Scrum at Microsoft.
  • Slides: [PDF]

LECTURE 5: Software Process IV

  • Software process improvement. The Defect Prevention Process (DPP). Software quality standards. Maturity models, CMMI, SPR. Baldrige Quality Award, ISO 9000, ISO IEC 90003: 2014.
  • Slides: [PDF]
  • Debugging Examples:
  • Practice Examples from class:

 LECTURE 6: INTRO. TO SOFTWARE TESTING I

  • Validation and Verification. Levels of Testing. Unit, integration, system, acceptance testing.
  • Slides: [PDF]

LECTURE 7: INTRO. TO SOFTWARE TESTING II

  • Testing in the Software Life Cycle. Test design, test strategy, test plans, test case design, test procedures. Black box vs. white box testing.
  • Slides: [PDF]

LECTURE 8: TESTING METHODS – BLACK BOX TESTING I

  • Black box methods – input coverage testing. Exhaustive testing. Input partitioning. Shotgun testing. Input partition/shotgun hybrid. Robustness testing. Boundary testing.
  • Slides: [PDF]

LECTURE 9: TESTING METHODS – BLACK BOX TESTING II

  • Black box methods – output coverage testing. Exhaustive output testing. Output partitioning. Handling multiple input/output streams/files. Black box methods at different levels. Gray box testing. Black box unit testing. Test harnesses and stubs. Assertions in test automation, tools. Black box class testing (interface / object oriented testing). Traces. Implementing assertions. Black box integration testing.
  • Slides: [PDF]

LECTURE 10: TESTING METHODS – WHITE BOX TESTING I

  • Role and kinds of white box testing. Code injection. Implementation – source, executable and sampling. White box static analysis. Code coverage methods. Statement analysis methods: statement coverage, basic block coverage.
  • Slides: [PDF]

LECTURE 11: TESTING METHODS – WHITE BOX TESTING II

  • Code coverage methods. Decision analysis methods: decision (branch) coverage, condition coverage, loop coverage, path coverage. Data coverage methods. Data flow coverage.
  • Slides: [PDF]

LECTURE 12: TESTING METHODS – WHITE BOX TESTING III

  • Mutation testing, definition and role. Mutants: value, decision, statement mutations. Examples and coverage.
  • Slides: [PDF]

LECTURE 13: TESTING IN PRACTICE

  • A discussion of testing culture and testing practices at two of the largest software development companies – Google and Microsoft.
  • Slides: [PDF]

LECTURE 14: CONTINUOUS TESTING I

  • Software maintenance: corrective, adaptive and perfective maintenance. Continuous testing methods: functionality, failure and operational testing.
  • Slides: [PDF]

LECTURE 15: CONTINUOUS TESTING II

  • Regression testing: purpose, method. Establishing and maintaining a regression test set. Observable artifacts: choosing, maintaining, normalizing, differencing. Version signatures. Regression test harnesses. A regression testing example: the TXL interpreter. Regression test organization, signatures and differencing for the TXL interpreter. Kinds of observations: functionality, performance, and internal diagnostic. Advantages and disadvantages of regression testing.
  • Slides: [PDF]

LECTURE 16: Security Testing

  • The relationship between security and quality is explored. We consider the ability of traditional testing methods to find security problems and we introduce two new security testing methods: pen testing and fuzz testing.
  • Slides: [PDF]

LECTURE 17: INSPECTIONS I

  • Introduction to Software Inspection & Inspection Processes.
    Reviews, walkthroughs and inspections. Inspection in the software process. Formal (Fagan) inspections: roles, reviewers. Code inspections: efficiency, cost effectiveness. Benefits of inspection. Role of inspection in quality control. Inspection process – planning, orientation, preparation, review meeting, rework, verification. Inspection on your own – the Personal Software Process (PSP). Effective inspections.
  • Slides: [PDF]

LECTURE 18: INSPECTIONS II

  • Code Inspection techniques: checklists, paraphrasing, walkthroughs. Lightweight code inspection practices, XP. Heavyweight inspection practices, Cleanroom development. Continuous code inspection in XP: pair programming, code refactoring. Refactoring process, catalogs and rules. Continuous design improvement.
  • Slides: [PDF]

LECTURE 19: SOFTWARE METRICS

  • Software quality metrics – what they are, what they are for. Measurement basics – entities, attributes, measures. Assessment and prediction. Prediction models. A framework for software measurement.
    Product quality metrics. External metrics – faults, failures, defects. Defect density metric. Internal metrics – LOC, functionality, complexity. Complexity metrics – Halstead Software Science, McCabe Cyclomatic Complexity, flow graph metrics.
    Process quality metrics. Predicting process properties such as effort time and cost. Function points.
  • Slides: [PDF]

LECTURE 20: Verification Using STATIC ANALYSIS

  • Using static analysis techniques to assess software quality and detect faults. Static analysis fault detection tools: Lint, FindBugs and CodeSurfer Path Inspector. A case study of the SCRUB tool at NASA JPL.
  • Slides: [PDF]