accessibility agile software development algorithmic efficiency american society for quality anomaly in software automata theory availability capability maturity model central processing unit cleanroom software engineering common sense completeness complexity computer computer programming computer science correctness cyclomatic complexity data processing debugger debugging dependability documentation embedded system error message extensibility extreme programming functional specification gerald weinberg graphical user interface ibm rational unified process iterative and incremental development linux maintainability microsoft windows operating system performance analysis program programming language programming paradigm programming style quality quality control rapid application development readability requirement requirements analysis run time sqo-oss scalability security security engineering self-documenting software quality model software architecture software configuration management software deployment software design software development process software documentation software engineering software maintenance software metric software project management software testing software testing outsourcing spiral model test-driven development total quality management usability user experience design user interface waterfall model