Analysis of Software Artifacts

Credits: 12 units

Semester: Spring

Length: full semester


Software quality is the key aspect of any IT solution whether a few hundred lines of code for a smart phone app or a few millions lines of code for an Enterprise Resource Planning software. The Analysis of Software Artifacts course provides techniques to develop confidence on the quality of the software being produced or acquired regardless of its size and domain.

The course adopts the view that software quality is not only the absence of defects but it encompasses all the characteristics that bear on its ability to satisfy stated and implied needs. Software quality is then defined from different perspectives: product quality, quality in use and process quality through the use of specific quality models. The course systematically explores different quality attributes and the techniques most appropriate to verify them. Specific topics include software testing, static analysis and model checking, inspections, technical debt, cost of software quality, planning for quality, quantitative models and defect classifications.

The course balances traditional lectures with small projects in which students apply the ideas they are learning to real artifacts. The final project consists on the preparation of a quality plan for the Studio project.

Course topics

  • Software product, process and service quality.
  • Cost of software quality.
  • Different quality models and standards.
  • Statistics and measurements
  • Quality review techniques (inspections, reviews, walkthrough, pair programming, etc.)
  • Software testing
    • Measuring test adequacy
    • Black box techniques
    • Combinatorial testing
    • Classification Tree Method
    • White Box
    • Random & Exploratory
  • Performance analysis & verification
  • Security analysis & verification: Software vulnerabilities and exploitation
  • Project Quality Management
  • Process quality

More course details can be found in the Analysis of Software Artifacts syllabus.

After completing this course, students will:

  • be able to prepare, review and follow the software development quality plan,
  • define and follow the software test plan,
  • evaluate the quality of software testing,
  • apply different approaches of software verification to the artifacts,
  • distinguish between product, process and service quality and plan each part accordingly,
  • identify all important properties that need to be tested, select the best approach, perform test and report on results (functional testing, performance and security will be explicitly covered),
  • communicate test results to the managements to enable efficient decision making.


Discrete math and statistics knowledge at the undergraduate is strongly recommended. Programming experience and familiarity with the Java language are mandatory for the completion of the assignments.

Сайт находится в технической разработке