CISQ

Consortium for IT Software QualityConsortium of IT Software QualityInternational Standards for automating the software structural quality
The Consortium for IT Software Quality (CISQ) is an IT industry group comprising IT executives from the Global 2000, systems integrators, outsourced service providers, and software technology vendors committed to making improvements in the quality of IT application software. Jointly organized by the Software Engineering Institute (SEI) at Carnegie Mellon University and the Object Management Group (OMG), CISQ is designed to be a neutral forum in which customers and suppliers of IT application software can develop an industry-wide agenda of actions for defining, measuring, and improving IT software quality. CISQ was launched in August 2009 by 24 founders including SEI and OMG.

Cyclomatic complexity

Synchronization complexitycode complexitycomplex
Generating cyclomatic complexity metrics with Polyspace. The role of empiricism in improving the reliability of future software. A small C/C++ source code analyzer using the cyclometric complexity metric (windows only, no source code). McCabe's Cyclomatic Complexity and Why We Don't Use It.

Software engineering

software engineersoftware engineerssoftware
It is one aspect of software quality. Software maintenance: refers to the activities required to provide cost-effective support after shipping the software product. Knowledge of computer programming is a prerequisite for becoming a software engineer. In 2004 the IEEE Computer Society produced the SWEBOK, which has been published as ISO/IEC Technical Report 1979:2004, describing the body of knowledge that they recommend to be mastered by a graduate software engineer with four years of experience. Many software engineers enter the profession by obtaining a university degree or training at a vocational school.

Coupling (computer programming)

couplingdependenciesdependency
The software quality metrics of coupling and cohesion were invented by Larry Constantine in the late 1960s as part of a structured design, based on characteristics of “good” programming practices that reduced maintenance and modification costs. Structured design, including cohesion and coupling, were published in the article and the book, and the latter subsequently became standard terms. Coupling can be "low" (also "loose" and "weak") or "high" (also "tight" and "strong").

Cohesion (computer science)

cohesioncohesiveHigh Cohesion
Definitions of Cohesion metrics. Cohesion metrics. Measuring Cohesion in Python.

Software sizing

software technical sizing
Several software quality standards mandate the use of a valid sizing method as part of the organization's standard software engineering life cycle. For instance, Capability Maturity Model Integration (CMMI) poses such a requirement. An organization cannot be appraised (certified) as CMMI level 2 or level 3 unless software sizing is adequately used. Software development effort estimation. Software Engineering. Software project management. Function point analysis. SEER-SEM. PRICE Systems. Comparison of development estimation software. SNAP Points.

Static program analysis

static code analysisstatic analysiscode analysis
Software metrics and reverse engineering can be described as forms of static analysis. Deriving software metrics and static analysis are increasingly deployed together, especially in creation of embedded systems, by defining so-called software quality objectives. A growing commercial use of static analysis is in the verification of properties of software used in safety-critical computer systems and locating potentially vulnerable code.

Software map

Its primary applications include risk analysis for and monitoring of code quality, team activity, or software development progress and, generally, improving effectiveness of software engineering with respect to all related artifacts, processes, and stakeholders throughout the software engineering process and software maintenance. Software maps are applied in the context of software engineering: Complex, long-term software development projects are commonly faced by manifold difficulties such as the friction between completing system features and, at the same time, obtaining a high degree of code quality and software quality to ensure software maintenance of the system in the future.

Software testing

beta testingtestingbeta
There are a number of frequently used software metrics, or measures, which are used to assist in determining the state of the software or the adequacy of the testing. Based on the amount of test cases required to construct a complete test suite in each context (i.e. a test suite such that, if it is applied to the implementation under test, then we collect enough information to precisely determine whether the system is correct or incorrect according to some specification), a hierarchy of testing difficulty has been proposed. It includes the following testability classes: It has been proved that each class is strictly included in the next.

Reliability engineering

reliabilityreliability theoryreliable
Software reliability engineering relies heavily on a disciplined software engineering process to anticipate and design against unintended consequences. There is more overlap between software quality engineering and software reliability engineering than between hardware quality and reliability. A good software development plan is a key aspect of the software reliability program. The software development plan describes the design and coding standards, peer reviews, unit tests, configuration management, software metrics and software models to be used during software development.

Coding conventions

coding standardCode conventionscode quality
Software metrics. ActionScript: Flex SDK coding conventions and best practices. Ada: Ada 95 Quality and Style Guide: Guidelines for Professional Programmers. Ada: Guide for the use of the Ada programming language in high integrity systems (ISO/IEC TR 15942:2000). Ada: NASA Flight Software Branch — Ada Coding Standard. Ada: European Space Agency's Ada Coding Standard (BSSC(98)3). C: CERT C Coding Standard CERT C Coding Standard (SEI). C: Embedded C Coding Standard (Barr Group). C: Firmware Development Standard (Jack Ganssle). C++: Quantum Leaps C/C++ Coding Standard. C++: C++ Programming/Programming Languages/C++/Code/Style Conventions. C++: GeoSoft's C++ Programming Style Guidelines.

Tom DeMarco

DeMarco
Software metric. Software quality. Structured Systems Analysis and Design Method. Tom DeMarco's home page. The Atlantic Systems Guild website. Cutter Consortium website.

Maintainability

maintainableMaintainability indexunmaintainable
In engineering, maintainability is the ease with which a product can be maintained in order to: * correct defects or their cause, * repair or replace faulty or worn-out components without having to replace still working parts, * prevent unexpected working condition, * maximize a product's useful life, * maximize efficiency, reliability, and safety, * meet new requirements, * make future maintenance easier, or * cope with a changed environment.

Function point

function pointsFunction point analysisAutomated Function Point
OMG Specification for Automated Function Point OMG, an open membership and not-for-profit computer industry standards consortium, has adopted the Automated Function Point (AFP) specification led by the Consortium for IT Software Quality. It provides a standard for automating the Function Point counting according to the guidelines of the International Function Point User Group (IFPUG) However, the current implementations of this standard have a limitation in being able to distinguish External Output (EO) from External Inquiries (EQ) out of the box, without some upfront configuration.

Software bug

bugsbugsoftware bugs
The amount and type of damage a software bug may cause naturally affects decision-making, processes and policy regarding software quality. In applications such as manned space travel or automotive safety, since software flaws have the potential to cause human injury or even death, such software will have far more scrutiny and quality control than, for example, an online shopping website. In applications such as banking, where software flaws have the potential to cause serious financial damage to a bank or its customers, quality control is also more important than, say, a photo editing application.

Computer performance

performanceprocessing powercomputing power
Computer software performance, particularly software application response time, is an aspect of software quality that is important in human–computer interactions. Performance engineering within systems engineering, encompasses the set of roles, skills, activities, practices, tools, and deliverables applied at every phase of the systems development life cycle which ensures that a solution will be designed, implemented, and operationally supported to meet the performance requirements defined for the solution. Performance engineering continuously deals with trade-offs between types of performance.

Parasoft C/C++test

C/C++test
Software metrics are used to help assess and improve software quality. Some metrics are used to help determine where bug-prone code might be, while others help understand maintainability and proper construction. C/C++test provides a variety of software metrics including traditional counting metrics of lines, files, comments, methods, etc. as well as industry standards like fan out, cyclomatic complexity, cohesion, and various Halstead metrics. Users can configure which metrics they want to run and where applicable can set thresholds for what's an acceptable value for a particular metric. This allows users to flag code that is outside the expected range as an error to be reviewed or fixed.

Software analytics

Runtime intelligenceanalyticsanalytics software
For example, software analytics tools allow users to map derived analysis results by means of software maps, which support interactively exploring system artifacts and correlated software metrics. There are also software analytics tools using analytical technologies on top of software quality models in agile software development companies, which supports assessing software qualities (e.g., reliability), and derive actions for their improvement. In May 2009, software analytics was first coined and proposed when Dongmei Zhang founded the Software Analytics Group (SA) at Microsoft Research Asia (MSRA).

Continuous integration

CIbuild serverintegration is done automatically
Software metrics generated from automated testing and CI (such as metrics for code coverage, code complexity, and feature completeness) focus developers on developing functional, quality code, and help develop momentum in a team. Constructing an automated test suite requires a considerable amount of work, including ongoing effort to cover new features and follow intentional code modifications. Testing is considered a best practice for software development in its own right, regardless of whether or not continuous integration is employed, and automation is an integral part of project methodologies like test-driven development.

Cppdepend

Software metrics (CppDepend currently supports 82 code metrics: Cyclomatic complexity; Afferent and Efferent Coupling; Relational Cohesion; Percentage of code covered by tests, etc.). CppDepend can tell you what has been changed between 2 builds. Support for Visual Studio 2017. Enhanced Visual Studio Integration. Smart Technical Debt Estimation. Quality Gates. Better Issues Management. Dashboard Improvements. Default Rules-Set Improvements. Enhanced Baseline Experience. Report Improvements. Code Query Improvements. Design Structure Matrix. Software visualization. The CppDepend web-site. Dr.Dobb's Review. InfoQ Review. isocpp News. heise.de Review. CppDepend Blog. PCWorld Reviews.

JArchitect

Software metrics (JArchitect currently supports 82 code metrics: Cyclomatic complexity; Afferent and Efferent Coupling; Relational Cohesion; Percentage of code covered by tests, etc.). Declarative code rule over LINQ query (CQLinq). JArchitect can tell you what has been changed between 2 builds. Design Structure Matrix. Software visualization. JArchitect Blog. PCWorld Reviews. InfoQ press release. Java Code Geek review. Heise.de Press Release.

NDepend

Hendry Luk discusses Continuous software quality with NDepend. Jim Holmes (Author of the book "Windows Developer Power Tools"), on NDepend. Mário Romano discusses Metrics and Dependency Matrix with NDepend. Nates Stuff review. Scott Mitchell (MSDN Magazine), Code Exploration using NDepend. Travis Illig on NDepend. Girish Suryanarayana, Ganesh Samarthyam, and Tushar Sharma. Refactoring for Software Design Smells: Managing Technical Debt (2014). Marcin Kawalerowicz and Craig Berntson. Continuous Integration in .NET (2010). James Avery and Jim Holmes. Windows developer power tools (2006). Patrick Cauldwell and Scott Hanselman.

Software quality management

Software quality. Software quality control. Software quality assurance. Software quality analyst.

Connascence

Connascence (computer programming)Connascence (computer science)Connascent software components
Connascence is a software quality metric invented by Meilir Page-Jones to allow reasoning about the complexity caused by dependency relationships in object oriented design much like coupling did for structured design. In software engineering, two components are connascent if a change in one would require the other to be modified in order to maintain the overall correctness of the system. In addition to allowing categorization of dependency relationships, connascence also provides a system for comparing different types of dependency. Such comparisons between potential designs can often hint at ways to improve the quality of the software.

Source lines of code

lines of codeLOCSLOC
Definitions of Practical Source Lines of Code Resource Standard Metrics (RSM) defines "effective lines of code" as a realistics code metric independent of programming style. Effective Lines of Code eLOC Metrics for popular Open Source Software Linux Kernel 2.6.17, Firefox, Apache HTTPD, MySQL, PHP using RSM. Tanenbaum, Andrew S. Modern Operating Systems (2nd ed.). Prentice Hall. ISBN: 0-13-092641-8. C. M. Lott: Metrics collection tools for C and C++ Source Code. Folklore.org: Macintosh Stories: -2000 Lines Of Code. C. M. Lott: Metrics collection tools for C and C++ Source Code. Folklore.org: Macintosh Stories: -2000 Lines Of Code.