SOFTWARE QUALITY ASSURANCE
The activity of software quality assurance is closely related to verification and validation activities carried out at each stage of the software life cycle[1].Indeed,in many organizations there is no distinction made between these activities.However,quality assurance and other verification and validation activities are actually quite separate,with quality assurance being a management function and verification and validation being part of the process of software development[2].
An appropriate definition of software quality assurance is provided by Bersoff(1984):Quality assurance consists of those procedures,techniques and tools applied by professionals to ensure that a product meets or exceeds prespecified standards during a products development cycle[3];and without specific prescribed standards,quality assurance entails ensuring that a product meets or exceed a minimal industrial and / or commercially acceptable level of excellence.
This definition is,of course[4],a fairly general one and it suggests that,firstly,software standards can be established and,secondly,the level of excellence of a software product can be estimated.
The development of software engineering project standards is an extremely difficult process. A standard is some abstract representation of a product which defines the minimal level of performance,robustness,organization,etc.,which the developed product must attain[5].At the time of writing,some software standards have been developed by the IEEE,ANSI and military organizations.
These standards describe configuration management plans,documentation,specification practices,software comparisons,etc.Other standards which are currently under development include standards for reliability,measurement,the use of Ada as PDL[6],software testing and others.Bransta d and Powell(1984)describe both existing and planned software standards as well as discussing standardization in more general terms.
The problem with national software standards is that they tend to be very general in nature. This is inevitable as,unlike hardware,we are not yet capable of quantifying most software characteristics.Effective quality assurance within an organization thus requires the development of more specific organizational standards.
Of course,the problem which arises in developing software standards for quality assurance and which makes the assessment of the level of excellence of a software product difficult to assess is the elusive nature of software quality.Boehm et al.(1978)suggest that quality criteria include but are not limited to:
Economy Correctness Resilience
Integrity Reliability Usability
Documentation Modifiability Clarity
Understandability Validity Maintainability
Flexibility Generality Portability
Interoperability Testability Efficiency
Modularity Reusability
Exactly how some of these criteria may be quantified is not clear.Furthermore,as Buckley and Poston(1984)point out,parts of this definition may have no value for a particular product.It may be possible to transfer a system from a microcomputer to a large mainframe but this is often a nonsensical thing to do.Assessment of software quality thus still relies on the judgement of skilled individuals although this does not mean that it is necessarily inferior to quantitative assessment.After all,we cannot assess a painting or a play quantitatively yet this does not preclude a judgement of its quality.
Within an organization,quality assurance should be carried out by an independent software quality assurance team who reports directly to management above the project manager level.The quality assurance team should not be associated with any particular development group but should be responsible for quality assurance across all project groups in an organization.
The activity of quality assurance involves sitting in on design reviews[7],program walkthroughs,etc. ,and reporting on the overall quality of the product as it is developed.It also involves checking that the finished product and its associated documentation conform to those standards which exist.The quality assurance team may also assess if the different representations of a product(requirements,design,code)are consistent and complete.
Notice that quality assurance is not the same as system testing.It is the development or testing team’s responsibility to validate the system,with the quality assurance team reporting on both the validation and the adequacy of the validation effort.This naturally involves quality assurance being closely associated with the final integration testing of the system.
Software quality assurance is now an emerging subdiscipline of software engineering[8].As Buckly and Poston point out,effective software quality assurance is likely to lead to an ultimate reduction in software costs.However,the major hurdle in the path of software management in this area is the lack of usable software standards.The development of accepted and generally applicable standards should be one of the principal goals of research in software engineering.
NOTES:
[1] carried out... 分詞短語修飾activities。
[2] with quality assurance... development介詞with引導(dǎo)的獨(dú)立分詞結(jié)構(gòu),起補(bǔ)充說明的作用。
[3] 主句謂語是consists of,其賓語為分詞短語修飾的procedures,techniques,and tools。
[4] of course:插入語,譯為“當(dāng)然”。
[5] 此句包括兩個(gè)定語從句:第一個(gè)定語從句which defines中which指representation;第二個(gè)定語從句which the developed修飾performance,robustness,organization。
[6] Ada語言(一種程序設(shè)計(jì)語言,以Agusta Ada Byron命名);PDL:程序設(shè)計(jì)語言。
[7] sitting in on design reviews:列席設(shè)計(jì)評審會議。
[8] emerging subdiscipline of... :……的新興分支。
KEYWORDS
software quality assurance 軟件質(zhì)量保證
software standard 軟件標(biāo)準(zhǔn)
相關(guān)推薦:
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |