Software Quality: Attributes and Modalities
Total Page:16
File Type:pdf, Size:1020Kb
Transactions on Information and Communications Technologies vol 11, © 1995 WIT Press, www.witpress.com, ISSN 1743-3517 Software quality: attributes and modalities M.L. Hines, A.A. Goerner Computer Science Telecommunications Program, University of Missouri - Kansas City, 5100 Rockhill Road, Kansas City, Missouri 64110, USA Abstract Taxonomies of software qualities have attempted to differentiate the roles of the various software qualities (Boehm[lj). As such they have not achieved a delineation useful for software quality assessment, either quantifiably or relatively. Typically software quality roles have been either as-built utility or evolvability. As-built utility centers around issues of reliability, measurability, and human/social factors. Evolvability centers around issues of understandability, testability, and modifiability. None of the issues associated with either as-built utility or evolvability are easy to differentiate in a manner that allows discussion of software quality in even a relative manner. We propose a software quality taxonomy which delineates software quality roles as attributes or modalities. Attributes are descriptive of code and relate to how code is written. They predicate on functionality and do NOT correspond to a support subsystem but are integrally part of the system. Modalities are descriptive of software architecture and relate to what code is written. They are a relation over functionality and often correspond to a support subsystem. The interaction and interdependencies between the quality issues associated with both the attribute and modality roles are explored with respect to the necessary tradeoffs which influence software quality and its management within a system. A brief example relating in particular to some of the modalities is included. 1 Introduction A fundamental goal of software engineering is the development of high quality software at low cost (Jalote[2]). Attention to software quality is important in software development not only because of its influence on long-term corporate profitability, but primarily because of the increasing pervasiveness of software Transactions on Information and Communications Technologies vol 11, © 1995 WIT Press, www.witpress.com, ISSN 1743-3517 138 Software Quality Management in everyday life. Software quality has remained, however, a somewhat elusive goal, primarily because of the lack of measurability of "quality". Increasing complexity and evolvability of software requires continuous attention to, and assessment of the quality of the software under development. In particular, evolution of software poses a special threat for software quality that requires an examination of the interrelationships among different facets of software quality. To be able to examine these interrelationships, the roles of software quality need to be differentiated such that either a quantifiable or a relative assessment of software quality can be achieved. Taxonomies of software quality have attempted to differentiate the roles of the various software qualities but have not achieved a delineation useful for software quality assessment, either quantifiably or relatively (Boehm[l], McCall[3]. Cavano[4] Kaposi[5]). Quantifiable measurement of software quality is difficult to achieve as most of the facets of software quality cannot be measured directly; rather they must be measured indirectly, and generally, subjectively (van Vliet[6]). Another problem with quantifiable measurement of software quality, albeit an overlooked problem, is that measurements do not tell you how to do a better job of achieving software quality. A relative assessment of software quality allows tradeoff considerations to be made (Kitchenham[7]). To achieve a relative assessment of software quality, the roles of the different software qualities need to be clearly delineated. This allows each quality to remain in context of other qualities and in the context of the application domain. The software quality taxonomies to date have attempted to categorize software qualities in a manner that will allow objective, quantifiable measurement (Boehm[l], McCall[3], Cavano[4] Keller[8]). In some cases, researchers have attempted to decompose software qualities into consumer- oriented qualities and technically oriented qualities (Keller[8J). The research presented in this paper proposes a software quality taxonomy which delineates the roles of software qualities such that relative assessment is possible especially with respect to assessment of tradeoffs between software qualities. More importantly, the role delineation highlights the separation between which software can be built and reused, and which software must be included in the system itself. Software qualities are differentiated as either attributes or modalities. Attributes are descriptive of code and relate to how code is written. They do NOT correspond to a support subsystem but are integrally part of the system. Modalities are descriptive of software architecture and relate to what code is written. They generally correspond to a support subsystem, or code which potentially can be reused. The interactions and interdependencies between the attributes and modalities allow a relative assessment of software quality especially with respect to the tradeoffs necessary during system development and evolution. Section 2 reviews the historical foundations of software quality, in particular highlighting the taxonomy work of Boehm and McCall. Section 3 introduces the general notions and concepts behind the attribute/modality approach to software quality and sets it within the historical framework of Boehm and McCall. Section 4 provides the details of the attribute/modality approach and highlights the interactions between attributes and modalities with respect to system development and analysis. Section 5 presents a brief example relating to some of the modalities. Section 6 concludes the paper. Transactions on Information and Communications Technologies vol 11, © 1995 WIT Press, www.witpress.com, ISSN 1743-3517 Software Quality Management 139 2 Background information Software quality assessment has two basic approaches: definition and taxonomy. Agreement as to the definitions of the different facets of software quality has not been reached, leaving the definition of software quality itself open to multiple perspectives. ISO 9001 states general requirements for a quality system but has to be augmented by more specific procedures and definitions (ISO[9]). IEEE provides definitions for some of the different facets of software quality but is not complete (IEEE[10J). The initial starting point for this work was to re-examine those definitions and provide a set of software qualities with definitions that would serve as the foundation for the software taxonomy. There are several different software quality taxonomies which have been proposed; included are Boehm's and McCall's taxonomies. Each taxonomy attempts to group software qualities in some fashion that will allow quantitative assessment of quality (Boehm[l], McCall[3]). Boehm initially categorizes software qualities (called quality attributes) as maintainability (or evolvability), portability, and as-is utility (Boehm[l]). Each of these is then decomposed into second-level quality attributes and finally into source-code characteristics. Boehm's software quality characteristic tree, with updates and extensions to correspond to the set of software quality definitions provided in this work, is shown in figure 1. Boehm's quality characteristics are placed strictly within the source code of the system. Reliability Human Factors Measur- ability Software Qualities Understand- ability Testability Modifi- ability Figure 1. Software qualities Transactions on Information and Communications Technologies vol 11, © 1995 WIT Press, www.witpress.com, ISSN 1743-3517 140 Software Quality Management McCall distinguishes between two levels of quality attributes. The higher-level quality attributes are termed quality factors, and cannot be measured directly. The second level of quality attributes are termed quality criteria, and are measured generally subjectively. By combining ratings for the individual quality criteria affecting a given quality factor, a measure for the extent to which that quality factor is being satisfied can be indirectly obtained (McCall[3]). Fenton uses McCall's taxonomy to distinguish between internal and external quality attributes, with internal attributes corresponding to quality criteria and external attributes corresponding to quality factors (Fenton[10J). Fenton's work begins a foundation for differentiating the roles of software qualities but does not carry it out to provide a reuse and relative assessment foundation. The current software quality taxonomies do not provide a delineation of software roles such that a foundation is provided for discussion of reuse or of relative assessment. 3 Introduction to attributes and modalities To provide a foundation for the delineation of software quality roles, it was initially necessary to define a set of software qualities (Table 1). Table 1. Software qualities accuracy - freedom from error cohesiveness - degree to which tasks performed by a single program module are functionally related completeness - degree to which full implementation of required function has been achieved complexity - degree to which a program can be understood w/out difficulty conciseness - compactness of program code consistency - absence of conflicts or contradictions correctness -