Halstead complexity measures

Halstead ComplexityHalsteadHalstead metrics
Halstead complexity measures are software metrics introduced by Maurice Howard Halstead in 1977 as part of his treatise on establishing an empirical science of software development. Halstead made the observation that metrics of the software should reflect the implementation or expression of algorithms in different languages, but be independent of their execution on a specific platform. These metrics are therefore computed statically from the code. Halstead's goal was to identify measurable properties of software, and the relations between them.


DSQI (design structure quality index) is an architectural design metric used to evaluate a computer program's design structure and the efficiency of its modules. The metric was developed by the United States Air Force Systems Command. The result of DSQI calculations is a number between 0 and 1. The closer to 1, the higher the quality. It is best used on a comparison basis, i.e., with previous successful projects. * DSQI Calculator

Software development process

software development methodologydevelopment cyclesoftware development life cycle
Software process and software quality are closely interrelated; some unexpected facets and effects have been observed in practice Since the early 2000s scaling agile delivery processes has become the biggest challenge for teams using agile processes. Among these another software development process has been established in open source. The adoption of these best practices known and established processes within the confines of a company is called inner source. Several software development approaches have been used since the origin of information technology, in two main categories. Typically an approach or a combination of approaches is chosen by management or a development team.

Code coverage

coveragebranch coveragecode coverage analysis
Software metric. Static code analysis. White box testing. Java code coverage tools.

Instruction path length

CPU path length
Expressed in terms of instruction path length, this metric would be reduced in this instance by a massive factor of 50 – a reason why actual instruction timings might be a secondary consideration compared to a good choice of algorithm requiring a shorter path length. The instruction path length of an assembly language program is generally vastly different than the number of source lines of code for that program, because the instruction path length includes only code in the executed control flow for the given input and does not include code that is not relevant for the particular input, or unreachable code.

Software verification and validation

Verification and validation (software)validationverification
Software quality. Static code analysis.

ISO/IEC 9126

ISO 9126ISO 9126 (1991)ISO 9126-3
This may be done, for example, by specifying target values for quality metrics which evaluates the degree of presence of quality attributes. Internal metrics are those which do not rely on software execution (static measure). External metrics are applicable to running software. Quality-in-use metrics are only available when the final product is used in real conditions. Ideally, the internal quality determines the external quality and external quality determines quality in use.


Goal Question MetricGoal Question-MetricGoal-Question-Metric
GQM, the initialism for "goal, question, metric", is an approach to software metrics that has been promoted by Victor Basili of the University of Maryland, College Park and the Software Engineering Laboratory at the NASA Goddard Space Flight Center after supervising a Ph.D. thesis by Dr. David M. Weiss. Dr. Weiss' work was inspired by the work of Albert Endres at IBM Germany.

Programming complexity

complexitySoftware complexitycode complexity
Software metrics - quantitative measure of some property of a program.

Quality (business)

qualityproduct qualityquality of goods
Software quality. Theory of constraints. W. Edwards Deming. List of economics topics. List of production topics. Boone, Louis E. & Kurtz, David L., Contemporary Business 2006, Thomson South-Western, 2006. Rochfort Scott, Charles & Hamerton, Robert Jacob, Rambles in Egypt and Candia: With Details of the Military Power and Resources of Those Countries, and Observations on the Government, Policy, and Commercial System of Mohammed Ali, Volume I, H. Colburn, London, 1837.


Squale (Software Quality Enhancement) is an open-source platform that helps monitoring software quality for multi-language applications. It currently supports Java out-of-the-box, and can also analyse C/C++ and Cobol code with an adapter to McCabe tool. Squale is distributed under the terms of the LGPL v3 licence. Squale is partially funded by the French FUI (Fonds unique interministériel ), labeled by the Systematic Paris-Region competitive cluster and supported by its FLOSS group. * Squale Demo Software quality. ISO/IEC 9126. Software quality model. Squale download page. Squale Demo.

Weighted Micro Function Points

M = the source metrics value measured by the WMFP analysis stage. W = the adjusted weight assigned to metric M by the APPW model. N = the count of metric types. i = the current metric type index (iteration). D = the cost drivers factor supplied by the user input. q = the current cost driver index (iteration). K = the count of cost drivers. Software sizing. Software metric. Function points. Cyclomatic complexity. Halstead complexity measures. Software parametric models.

Software quality assurance

quality assuranceQAQA director
Software Quality Assurance. IEEE Press, 2018.

List of tools for static code analysis

List of tools for static code analysis, JavaScriptStatic code analysis toolsautomated tool
GrammaTech CodeSonar – Defect detection (buffer overruns, memory leaks, etc.), concurrency and security checks, architecture visualization and software metrics for C, C++, Objective-C, and Java source code. IBM Security AppScan (formerly known as IBM Rational AppScan) Source Edition – Analyzes source code to identify security vulnerabilities while integrating security testing with software development processes and systems. Supports C, C++, .NET, Java, JSP, JavaScript, ColdFusion, Classic ASP, PHP, Perl, Visual Basic 6, PL/SQL, Python, T-SQL, and COBOL. Facebook Infer – A tool for Java, C, C++, and Objective-C.


Computer softwareSoftware & Programmingsoftware technology
.--> Software quality is very important, especially for commercial and system software like Microsoft Office, Microsoft Windows and Linux. If software is faulty (buggy), it can delete a person's work, crash the computer and do other unexpected things. Faults and errors are called "bugs" which are often discovered during alpha and beta testing. Software is often also a victim to what is known as software aging, the progressive performance degradation resulting from a combination of unseen bugs. Many bugs are discovered and eliminated (debugged) through software testing.

Software architecture

Software architecture refers the fundamental structures of a software system and the discipline of creating such structures and systems. Each structure comprises software elements, relations among them, and properties of both elements and relations. The architecture of a software system is a metaphor, analogous to the architecture of a building. It functions as a blueprint for the system and the developing project, laying out the tasks necessary to be executed by the design teams.


user-friendlyease of useuser friendly
While conducting usability tests, designers must use usability metrics to identify what it is they are going to measure, or the usability metrics. These metrics are often variable, and change in conjunction with the scope and goals of the project. The number of subjects being tested can also affect usability metrics, as it is often easier to focus on specific demographics. Qualitative design phases, such as general usability (can the task be accomplished?), and user satisfaction are also typically done with smaller groups of subjects.

Computer science

computer scientistcomputer sciencescomputer scientists
Computer science deals with the theoretical foundations of computation and practical techniques for their application.

Usability testing

user testingusability testusability
Usability testing is a technique used in user-centered interaction design to evaluate a product by testing it on users. This can be seen as an irreplaceable usability practice, since it gives direct input on how real users use the system. It is more concerned with the design intuitiveness of the product and tested with users who have no prior exposure to it. Such testing is paramount to the success of an end product as a fully functioning app that creates confusion amongst its users will not last for long. This is in contrast with usability inspection methods where experts use different methods to evaluate a user interface without involving users.

Dynamic testing

Dynamic Application Security Testingdynamic testdynamically
Dynamic testing (or dynamic analysis) is a term used in software engineering to describe the testing of the dynamic behavior of code. That is, dynamic analysis refers to the examination of the physical response from the system to variables that are not constant and change with time. In dynamic testing the software must actually be compiled and run. It involves working with the software, giving input values and checking if the output is as expected by executing specific test cases which can be done manually or with the use of an automated process. This is in contrast to static testing. Unit tests, integration tests, system tests and acceptance tests utilize dynamic testing.

Stress testing (software)

stress teststress testingstress tests
Failures may be related to: Reasons for stress testing include: Branch coverage (a specific type of code coverage) is a metric of the number of branches executed under test, where "100% branch coverage" means that every branch in a program has been executed at least once under some test. Branch coverage is one of the most important metrics for software testing; software for which the branch coverage is low is not generally considered to be thoroughly tested. Note that code coverage metrics are a property of the tests for a piece of software, not of the software being tested.

Balanced scorecard

balanced scorecard (BSC)Scorecardscorecarding
Others identified technical flaws in the methods and design of the original balanced scorecard or concerning the lack of validation for the approach – for example Flamholtz observed that no validation was provided for the choice of the "four perspectives" of the 1st Generation design:. 2) The second kind of criticism is that the balanced scorecard does not provide a bottom line score or a unified view with clear recommendations: it is simply a list of metrics (e.g. Jensen 2001 ).

Software review

defect prevention programssoftware reviews
A software review is "A process or meeting during which a software product is examined by a project personnel, managers, users, customers, user representatives, or other interested parties for comment or approval".

Business value

Customer valuevaluevalue creation
At the highest levels, this alignment is achieved through proper integration of enterprise architecture, business architecture, process design, organization design, and performance metrics. At the level of computing and communications infrastructure, the following performance factors constrain and partially determine IT capabilities: The term value-driven design was devised to describe the approach to planning business change (especially systems) based on the incremental improvements to business value - this is seen clearly in agile software development, where the goals of each iteration of product delivery are prioritised on what delivers highest business value drives.

W. Edwards Deming

DemingEdwards DemingWilliam Edwards Deming
William Edwards Deming (October 14, 1900 – December 20, 1993) was an American engineer, statistician, professor, author, lecturer, and management consultant. Educated initially as an electrical engineer and later specializing in mathematical physics, he helped develop the sampling techniques still used by the U.S. Department of the Census and the Bureau of Labor Statistics.