10152200
Foundations of Software Quality
Course Information
Description
Learn to understand, verify, and validate the quality of software systems through the analysis and application of modern quantified techniques. Students will understand the terms and concepts which describe the fundamentals of quality assurance. Verification of software quality is addressed by exploring secure software development practices and test strategies including static, exploratory, and dynamic techniques. Validation of software quality is addressed by analyzing risk, coverage, and vulnerabilities. Validation is further refined through the critical analysis of intended vs. actual results and through understanding the contexts and perspectives of end-users.
Total Credits
3
Course Competencies
-
Assess software qualityAssessment StrategiesQuiz, ExamCriteriaDefine key terms and concepts related to testingAssociate testing terms to related conceptsRelate concepts to personal experience
-
Examine risk management in support of software qualityAssessment StrategiesQuiz, ExamCriteriaExplore key statistical equations for risk analysisDefine key terms and concepts related to riskAssociate risk terms to related conceptsRelate concepts to personal experience
-
Perform risk analysis using static assessment techniquesAssessment StrategiesWritten ProductCriteriaUse statistical equations for risk analysisDerive risk qualification tablesUse equations and qualification tables to evaluate risk
-
Use artificial intelligence (AI) to generate and test softwareAssessment StrategiesWritten Product, Skill DemonstrationCriteriaSetup an execution environment to run codeEvaluate different AI models for code generationUse AI to generate codeUse AI to perform design-time and runtime analysis
-
Perform dynamic testing techniques to assess qualityAssessment StrategiesWritten Product, Skill DemonstrationCriteriaPerform static analysis on AI-generated codeDevelop and invoke tests manually for AI-generated codeUse AI to develop and invoke tests automatically for the codeAnalyze the differences between run-time performance of manual vs automatic tests