150 likes | 282 Views
Software Engineering – Product Metrics for Software. SOFTWARE QUALITY In a general sense, software quality is:
E N D
Software Engineering – Product Metrics for Software SOFTWARE QUALITY In a general sense, software quality is: Conformance to explicitly stated functional and performance requirements, explicitly documented development standards, and implicit characteristics that are expected of all professionally developed software. There are three key points: Software requirements are the foundation from which quality is measured. Lack of conformance to requirements is a lack of quality. Specified standards define a set of development criteria that guide the manner in which software is engineered. If the criteria are not followed, lack of quality will almost surely result. There is a set of implicit requirements that often goes unmentioned (e.g. the desire for ease of use). If software conforms to its explicit requirements but fails to meet implicit requirements, software quality is suspect.
Software Engineering – Product Metrics for Software SOFTWARE QUALITY McCall’s Quality Factors Factors that affect software quality can be categorized in two broad groups: Factors that can be directly measured (e.g. defects uncovered during testing) Factors that can be measured only indirectly (e.g. usability or maintainability)
Software Engineering – Product Metrics for Software SOFTWARE QUALITY McCall’s Quality Factors Correctness: The extent to which a program satisfies the specification and fulfills the customer’s mission objectives. Reliability: The extent to which a program can be expected to perform its intended function with required precision. Efficiency: The amount of computing recourses and code required by a program to perform its function. Integrity: The extend to which access to software or data by unauthorized persons can be controlled. Usability: The effort required to learn, operate, prepare input for and interpret output of a program. (This can be contradictory, can any guess why?)
Software Engineering – Product Metrics for Software SOFTWARE QUALITY McCall’s Quality Factors Usability: The effort required to learn, operate, prepare input for and interpret output of a program. (This can be contradictory, can any guess why?) What is efficient for a power user may not be effective for a end or novice user. Maintainability: The effort required to locate and fix an error in a program. Flexibility: The effort required to modify an operational program. Testability: The effort required to test a program to ensure that it performs the intended function.
Software Engineering – Product Metrics for Software SOFTWARE QUALITY McCall’s Quality Factors Portability: The effort required to transfer the program from one hardware and/or software system environment to another. Reusability: The extent to which a program [or parts of a program] can be reused in other applications – related to the packaging and scope of the functions that the program performs Interoperability: The effort required to couple one system to another.
Software Engineering – Product Metrics for Software SOFTWARE QUALITY McCall’s Quality Factors It is difficult, and in some cases impossible to develop direct measures of these quality factors.
Software Engineering – Product Metrics for Software SOFTWARE QUALITY ISO 9126 Quality Factors A standard developed in an attempt to identify attributes for computer software. Functionality: The degree to which the software satisfies stated needs as indicated by the following sub-attributes: suitability, accuracy, interoperability, compliance, and security. Reliability: The amount of time that the software is available for use as indicated by the following sub-attributes: maturity, fault tolerance, recoverability. Usability: The degree to which the software is easy to use as indicated by the following sub-attributes: understandability, learnability, operability.
Software Engineering – Product Metrics for Software SOFTWARE QUALITY ISO 9126 Quality Factors Efficiency: The degree to which the software makes optimal use of system resources as indicated by the following sub-attributes: time behavior, resource behavior. Maintainability: The ease with which repair may be made to the software as indicated by the following sub-attributes: analyzability, changeability, stability, and testability. Portability: The ease with which the software can be transposed from one environment to another as indicated by the following sub-attributes: adaptability, installability, conformance, and replaceability. Again these factors do not necessarily lend themselves to direct measurement.
Software Engineering – Product Metrics for Software SOFTWARE QUALITY Transition to a Quantitative View Subjectivity and specialization apply to determining software quality. To help solve the problem, a more precise definition of software quality is needed as well as a way to derive quantitative measurements of software quality for objective analysis.
Software Engineering – Product Metrics for Software SOFTWARE QUALITY Measure: provides a quantitative indication of the extent, amount, dimension, capacity, or size of some attribute of a product or process. Measurement :is the act of determining a measure. Metric: relates the individual measure in some way (e.g. the average number of errors found per review or the average number of errors found per unit test) CHALLENGES OF PRODUCT METRICS Researchers have attempted to develop a single metric that provides a comprehensive measure of software complexity. It is fair to ask, just how valid product metrics are?
Software Engineering – Product Metrics for Software SOFTWARE QUALITY A metric should have desirable mathematical properties (i.e. a meaningful range, zero to one). When a metric represents a software characteristic that increase when positive traits occur or decreases when undesirable traits are encountered, the value of the metric should increase or decrease in the same manner. Each metric should be validated empirically in a wide variety of contexts before being published or used to make decisions.
Software Engineering – Product Metrics for Software SOFTWARE QUALITY Good attributes for software metrics are: Simple and Computable Intuitively persuasive Consistent and objective Consistent in the use of units and dimensions Programming language independent An effective mechanism for high-quality feedback.
Software Engineering – Product Metrics for Software METRIC FOR SOURCE CODE n1 = the number of distinct operators that appear in a program n2 = the number of distinct operands that appear in a program N1 = the total number of operator occurrences. N2 = the total number of operand occurrence. Overall program length N can be computed: N = n1 log2 n1 + n2 log2 n2 V = N log2 (n1 + n2)
Software Engineering – Product Metrics for Software METRIC FOR TESTING n1 = the number of distinct operators that appear in a program n2 = the number of distinct operands that appear in a program N1 = the total number of operator occurrences. N2 = the total number of operand occurrence. Program Level and Effort PL = 1/[(n1 / 2) x (N2 / n2 l)] e = V/PL
Software Engineering – Product Metrics for Software SOFTWARE QUALITY METRICS FOR MAINTENANCE Mt = the number of modules in the current release Fc = the number of modules in the current release that have been changed Fa = the number of modules in the current release that have been added. Fd = the number of modules from the preceding release that were deleted in the current release The Software Maturity Index, SMI, is defined as: SMI = [Mt – (Fc + Fa + Fd)/ Mt ]