Software Reliability Engineering

Reliability is the ability to operate failure-free. More specifically, it is defined as the probability of a product to operate free of failures for a specified period of time under specified operating conditions. This definition applies to products, services, systems, hardware, and also software. Reliability is a quality attribute that is highly valued by customers and users of products and services. We need a consistent definition of reliability between software, hardware, and systems. This is so they may be combined to determine the reliability of a product or service as a whole delivered to a user. However, there are differences between hardware and software that affect how we analyze their respective reliabilities. These differences are described. Software reliability engineering (SRE) assesses how well software-based products and services meet users' operational needs. SRE uses quantitative methods based on reliability measures to do this assessment. The primary goal of SRE is to maximize customer satisfaction. SRE uses such quantitative methods as statistical estimation and prediction, measurement, and modeling. As the reliability of a product or service is highly dependent on operating conditions and the reliability of software is related to how the software is used, the quantitative characterization of the use of software is an integral part in SRE. This characterization of use of software is captured in an Operational Profile and is discussed. Software engineering is a broader discipline of which SRE is a subdiscipline. Software engineering is concerned with all aspects of designing, implementing, and managing the development of software. Other aspects of software engineering include the economics of developing software and the interfaces between software, systems, and humans and with the practices and processes for ensuring the quality of delivered software. Software quality assurance (SQA) monitors the processes and practices for ensuring software quality to ensure they are being followed and that they conform to established industry norms. SRE has been used on a wide variety of products and services. SRE is not limited by what software development methodology is used. There are no known theoretical or practical limits on its application except possibly on very small projects. Software under 1,000 source lines and possibly up to as high as 5,000 source lines may experience few operational failures. Analysis using few failure events results in large error bounds when estimating reliability. However, reliability estimation is only a part of SRE. The other parts of SRE such as determining the operational profile and using it to guide development and test are still useful for very small projects. Keywords: recommended practice; benefits; definition phase; design implementation phase; validation phase; operation-maintenance phase