什么是软件质量呢?
在信息化建设当中,软件功能薄弱、漏洞众多等问题频频出现,软件质量理所当然地成为了关注焦点。
业界专家认为,不成熟的软件产品是国内信息化项目失败的一个重要原因,同时,产品质量问题也将成为软件企业能否继续发展壮大的关键所在。
纵观国内和国外的软件产业,技术上的差距当然是存在的,但更为明显的也是致命的差距就在于产品质量和过程当中的质量控制。
“什么叫成熟产品?只要有一个成功案例的产品就是成熟产品!”某国内大型软件公司CEO的这个经典观点广为流传,但其中的逻辑错误将风险带给了客户也带给了软件企业本身。
国内一些软件企业居然一夜间成了万能公司,ERP?CRM?OA?WorkFlow?我们都行!然而这些企业对软件测试的重要性大多认识不足,重开发轻测试的现象过于严重,很多公司没有专门的测试部门,测试工程师太少,开发人员兼作测试工作的现象十分普遍,在这种状况下推出的缺少严格测试等环节的软件产品只能给客户带来悲剧。
近年来,我国的软件企业已越来越意识到软件测试的重要性,逐渐加大软件测试在整个软件开发的系统工程中的比重。
据调查统计,在成本上一般来说是“需求分析”和“规划确定”各占3%,“设计”占5%,“编程”占7%,“测试”占15%,“投产和维护”占67%。
近些年来,测试成本的比例更有上升趋势。
不成熟软件带来的风险 不成熟的软件产品是把测试成本交给了用户:企业往往是出于项目周期安排不当,或者根本没有安排专门测试,匆匆完成编码设计就将产品交付使用了。
这样的后果自然是用户觉得产品漏洞百出,项目执行过程也遥遥无期,最后,项目双方都筋疲力尽,用户觉得受骗,而软件商则毁了声誉,追加了大量项目实施费用,可谓是“赔了夫人又折兵”。
企业逻辑的软件实现高于计算机技术:很多软件企业在没有做透前期调研的前提下就匆匆开始建设自己想象中的“大厦”,结果可想而知。
当用户建立起真正的企业应用。
才发现软件违背了企业逻辑,不得不进行修改。
这样闭门造车无疑会给“大厦”带来致命伤害。
注重软件产品的质量和成熟度才会良性循环:有人把不成熟的软件产品比作是焦油坑中垂死挣扎的猛兽,布鲁克斯《人月神话》展示的可怕一幕在软件研发过程中屡见不鲜。
很多软件企业常常将软件质量视为一种奢侈,如果有必要的话,为了更多功能、更快速开发或者更低成本,测试就可以被牺牲掉。
然而,在实践中,如果软件开发组织对质量有一个坚定承诺,实际上可以加快开发,减少成本,并更容易地增加新的特性。
在“已完成”的产品缺陷修复上花费的代价要比从一开始就修复高出很多倍。
相反,一个从开始就加强产品质量的组织,是有远见和创新精神的,市场中的高质量软件将更具竞争力。
找出测试管理中的误区 笔者曾经从事专业的软件项目管理与实施,项目管理感受很深刻。
有一些切身体会与读者分享。
吸取“前辈”经验。
IBM在软件自动化测试技术核心的三个最佳成功经验是:尽早测试、连续测试、自动化测试,并在此基础上提供了完整的软件测试流程和一整套的软件自动化测试工具,组建一个测试团队,基于一套完整的软件测试流程,使用一套完整的自动化软件测试工具,完成全方位的软件质量验证。
别去“挖东墙补西墙”。
由于项目研发期的“缺斤短两”,使项目实施和投入运行的初期漏洞百出,时间一长用户会发疯,项目实施者也会发疯,国内前几年的众多的ERP项目失败的原因多出于此。
项目实施的遥遥无期,将严重挫伤用户的耐性和信心。
代码与文档哪个值钱?多数项目管理者忽视了文档的重要性。
对于大型软件的研发项目,还需要专业的测试过程管理软件来支撑大规模的信息交流和自动测试、代码的更新和版本的提交。
这些文档和信息的价值从某种意义上甚至超出了程序代码本身。
全程还是后期?软件的设计阶段往往没有软件测试人员的参与,事实上设计上的缺陷往往是耗用成本最高,也是最难在开发后期修复的缺陷。
而一个软件的质量与它有多大的设计缺陷有着密不可分的联系。
而有经验的测试人员的质量意识,安全意识,对用户需求的了解及分析能力,对于打造高品质的软件设计都有着不可忽视的作用。
专职还是兼职?在传统的开发方式中,由于缺乏必要的配置管理和变更控制,测试工作根本无法提出具体的测试要求,加之开发人员的遮丑,测试工作往往是走走过场,测试结果既无法考核又无法量化,当然就无法对以后的开发工作起指导作用。
事实上,每个软件项目都需要专业的测试人员进行相对独立的测试工作,从而保证软件项目的质量。
居安思危,控制风险。
需求变更给测试带来的问题可能是灾难性的,客户需求不是变动的唯一来源。
有时团队自身也能引起范围变动。
团队的成员可能听说或“假设”解决方案因客户的实际要求而发生了变动。
加强沟通和协作,随时了解变更的状态。
谁为产品质量买单?质量和质量控制应该是软件项目的的一项重要内容。
但是,无论在消费类软件还是大型软件的测试领域,国内软件产品的质量掌控体系和标准都很模糊。
质量控制越来越依托于公司在产品交付用户之前的测试工作的成...
【软件质量是什么】什么是软件质量保证呢?
一、什么是质量? 作为软件产品的销售人员,市场人员或维护人员经常会受到客户这样那样的指责或抱怨,客户说:你们产品的质量太差,不稳定等等。
那么什么是质量呢?我们该如何来衡量质量呢? 质量具有三个维度: ?? 符合目标。
目标是客户所定义的,符合目标即判断我们是不是在做需要做的事情。
?? 符合需求。
即产品是不是在做让它做的事情。
?? 符合实际需求。
实际的需求包括用户明确说明的和隐含的需求。
ISO 关于质量的定义表示如下: “ 一个实体(产品或服务)的所有特性,基于这些特性可以满足明显的或隐含的需要。
” 注意,在这个定义中包含明显的需求和隐含的需求。
而往往我们会忽略隐含的需求。
因此在控制一个产品的质量的过程中必须关注这些隐含的需求,并给予应有的验证。
另一方面因为我们的产品是为客户提供服务的,因此凡是不满足客户需求的,我们都认为是一个失效( failure )。
所以我们的产品必须始终围绕着客户的需求进行开发和验证。
这里我们谈到客户,其实在一个软件的需求收集过程中需要关注客户和用户。
而我们经常会忽略客户与用户之间的区别。
那么谁是客户?谁是用户呢?简单的来说,客户是真正能够决定是否购买你软件的人,而用户是实际使用软件的人。
了解了这个区别,对于你在分析需求的重要性的时候就可以进行参考。
同时在产品质量验证的时候也可以做出不同的权衡。
另一方面我们在考虑我们用户需求的时候,往往只考虑了实际使用软件的人员,而忽略了其它一些人员对软件的要求或对软件造成的潜在竞争,这包括维护人员的要求、系统管理人员的要求、软件上下游人员的要求、先前版本的情况、市场上竞争对手的软件情况等。
每个人提到质量的时候,经常会遇到下列矛盾,在这些矛盾中隐含着对质量的承诺【 5 】: ?? 质量需要一个承诺,尤其是高层管理者的承诺。
但为了得到质量,高层管理者必须和其雇用的员工进行紧密合作; ?? 许多人相信没有缺陷的产品和服务是不可能的。
但是控制在一定级别的缺陷数是正常并可接受的; ?? 质量经常是和成本紧密联系在一起,一个高质量的产品同时也意味着高投入。
这是设计的质量和一致性质量的一个矛盾; ?? 一个高的质量要求需求规格说明书足够详细,以便产品可以根据这些规格说明书进行定量的分析。
然而许多组织没有能力或者不愿意产生如此详细程度的规格说明书; ?? 技术人员经常相信规范和标准会束缚他们的创造力,因此就不遵照标准做事。
然而如果要得到高质量的产品,就必须遵循良好定义的标准和过程。
二、流程对质量的贡献 好了,既然已经了解了什么是质量,那么怎么才能改进软件产品的质量呢?从一个企业的长远发展来看,首先应当从流程抓起,规范软件产品的开发过程。
这是一个软件企业从小作坊的生产方式向集成化、规范化的大公司迈进的必经之路,也是从根本上解决质量问题,提高工作效率的一个关键手段。
软件产品的开发同其它产品(如汽车)的生产有着共同特性,即需要按一定的过程来进行生产。
在工业界,流水线生产方式被证明是一种高效且能够比较稳定地保证产品质量的一种方式。
通过这种方式,不同的人员被安排在流程的不同位置,最终为着一个目标共同努力,这样可以防止人员工作间的内耗,极大的提高工作效率。
并且由于其过程来源于成功的实例,因此其最终的产品质量能够满足过程所设定的范围要求。
软件工程在软件的发展过程中吸取了这个经验并把它应用到了软件开发中,这就形成了软件工程过程,简单的说就是开发流程。
无论做什么事情,都有一个循序渐进的过程,从计划到策略再到实现。
软件流程就是按照这种思维来定义开发过程,它根据不同的产品特点和以往的成功经验,定义了从需求到最终产品交付的一整套流程。
流程告诉我们该怎么一步一步去实现产品,可能会有那些风险,如何去避免风险等等。
由于流程来源于成功的经验,因此,按照流程进行开发可以使得我们少走弯路,并有效的提高产品质量,提高用户的满意度。
目前流行的流程方法有很多种,不同的过程模型适合于不同类型的项目。
瀑布模型是应用的最为广泛的一种模型,也是最容易理解和掌握的模型,然而它的缺陷也是显而易见的。
遗漏的需求或者不断变更的需求会使得该模型无所适从。
然而,对于那些容易理解但很复杂的项目,采用瀑布模型会是比较适合的,因为你可以按部就班的去处理复杂的问题。
在质量要求高于成本和进度要求的时候,该模型表现的尤其突出。
螺旋模型是也是一个经典模型,它关注于发现和降低项目的风险【 8 】。
螺旋型项目从小的规模开始,然后探测风险,制定风险控制计划,接着确定下一步项目是否还要继续,然后进行下一个螺旋的反复。
该模型的最大优点就是随着成本的增加,风险程度随之降低。
然而螺旋模型的缺点是比较复杂,且需要管理人员有责任心,专注以及有管理方面经验。
RUP ( Rational Unified Process )是 Rational 公司提出的一套开发过程模型,它是一个面向对象软件工程的通用业务流程【 9 】。
它描述了一系列相关的软件工程流程,它们具有相同的结构,...
软件质量保证是什么?
您好! 我是专业销售耳机、音箱这块的,以下绝对是个人打出来的,要是复制也是复制自己的,绝对原版! 不得不做的事---谈谈煲耳机!煲音箱、音响都是一样的道理的哦 随身听爱好者们常常会拥有一副好的耳塞,但在开始使用时发现并没有像其他人谈论的这么好,难道是自己买到了假货?非也!其实那是因为没有进行购买后的第一道工序——“煲”。
新买回来的耳机,听感不错。
可是与朋友的用了有一段时间的同型号耳塞对比起来,总是差强人意。
低音紧而生硬,中音不够柔和丰满,高音部分毛刺尽显。
为什么会这样呢?因为这只新买的耳机还没有褒过! 那么,何谓褒耳机?大家都知道,新的汽车,机器等,在正常使用前都是要经过一个叫做"磨合"的阶段,使内部的机械装置充分协调配合,提前进入到最佳状态。
同样,耳机的推动单元(耳机里边的扬声器)也是一个机械装置,准确来说应该是半机械、半电子的结合物,主要由音圈、震膜、定位环(固定震膜的金属环)等组成。
机械部分属于顺性系统,包括震膜和固定在震膜上的音圈。
顺性元件可以等效于电子元件中的电容,电容储存的是电能,震膜和音圈储存的是动能。
耳机单元顺性的大小就等同于震膜和音圈这两个电容的并联值,也就是是决定音质好坏的关键 震膜和音圈所使用的材料是高顺性材料,其内部分子结构在定型初期不稳定,所以顺性大小也不稳定,刚转用在扬声器单元上时其顺性通常比较小(通常直观的理解就是还比较生硬),因为分子结构相对处于稳定期。
长时间地运动之后,分子之间距离拉远,分布均匀顺性加大许多,扬声器整体的顺性也加大许多,扬声器一个最重要的数值就是最低谐振频率,这个值基本决定了扬声器所能达到的最低频率,如扬声器的机械品质因数,顺性大了就等于机械损耗增加,因此机械品质因数会变低,就等同于声音听起来比较松软。
所以新的耳机相对听起来都有低频下潜不深、量感也较小、生硬,中频表现不够柔和,高频还有毛刺、太过尖锐等症状(当然,这也是由耳机本身的素质决定的)。
褒一段时间后,扬声器单元的顺性(或说弹性)增加,前后移动会轻松自如,这样声音就会丰满轻松,音质也就好一些了。
喇叭振膜一般都是用PET吸塑的(SONY的生物振膜除外),其材料的纯度和吸塑时的工艺参数(厚度是否均匀,应力是否消失,材料延伸方向)对其物理性能有很大影响。
喇叭发声其实就是连在振膜下的音圈(纸盆外绕的金属线,要满足一定的匝数,又要让音圈质量很轻)在磁钢(材料通常为N38)中上下运动带动振膜振动发声。
不同喇叭的振膜对频率的最佳反应都是有范围的,不可能做到面面兼备,对于振膜个体来说,高频和低频本身就是矛盾的。
但为什么有的耳机听起来好像高中低频都表现出色,其实那不是只靠振膜就能解决的,还与调音纸和耳壳有很大关系。
可能大家都拆过监听性质的耳机,都看到喇叭背面贴有调音纸,调音纸的作用对喇叭的频响曲线影响很大,其材质(W3)及厚度(0.6mm居多)都很有讲究,这就是为什么有的喇叭后面贴一层调音纸而有些喇叭贴两层调音纸。
通常喇叭从流水线下来时参数都有所不同,而要让喇叭通过BK测试后参数(主要是频响曲线)要符合规定的偏差,好的喇叭是好耳机的必须组成部分,但只是一部分(不信你就换喇叭试试),还与耳壳的设计以及滤音材料和吸音材料有关系。
耳壳上通常会开排气孔(封闭式耳机的排气孔更难设计)排气孔的位置,大小,数目都很重要,好的耳机排气孔上帖的是调音纸而不是普通的防尘纸。
同样,耳壳的空间设计也很讲究,必须要让振膜在振动过程中能使空气按预定方式进出,而不是杂乱无章的乱进气乱排气,耳机的解析度与耳壳的进气/排气关系非常密切。
当然也离不开滤纸和吸音棉的功劳(并不是所有耳机都需要吸音棉)。
对于煲耳机而言,正确的煲法会改善振膜的特性,主要是要让振膜在高中低频的变化中消除原有的应力,增强弹性。
具体怎样煲主要看使用者偏爱什么样的音乐,使用者耳朵最敏感的频率范围。
(现在城市噪音较大,很多年轻人听力下降只能听到14000以下,如果你只对低频产生好感,建议你去测一下自己的耳朵,适当减少低频音乐)同一只耳机对不同的人来说效果是不一样的(普通的听众大多对低频产生好感,而设计耳机时实现低频效果却是最简单的,这就是为什么真正好的耳机并不以低频出色)。
除了上述影响耳机的几个因素外,耳机线和插头也很重要。
好耳机一般采用OFC音频专用线,内绕黄旦丝,插头都是镀金的而不是普通镀镍的。
对耳机成品在出厂前会抽样进行仿真人耳测试(批量生产前是全检),所以会有个体差异,但整体上相差不大。
每款耳机的设计出发点都是有针对性的,如果哪位要说某款耳机会让所有人都喜欢,那他就是在撒谎。
好耳机有很多,但最适合自己的才是最好的。
那么,要如何褒耳机呢?以前流行一种很简单的方法,就是直接接上收音机,调到一个无电台的频率上,利用收音机发出的"嘶嘶"声(粉红色噪音)长时间让耳机工作,以达到褒机的效果。
但用这个方法不太明显,还不如直接戴上耳机听音乐...
什么是软件质量保证
软件质量保证是一个复杂的系统,它采用一定的技术、方法和工具,来处理和调整软件产品满足需求时的相互关系,以确保软件产品满足或超过在该产品的开发过程中所规定的标准。
其工作原则如下:(1) 尽可能做到质量特征的具体化及量化。
(2) 要找出每个阶段的具体质量特征。
(3) 针对具体产品和相应项目制定质量计划。
(4) 检查质量测试结果。
(5) 进行各种质量评审。
(6) 优化的建设性的质量保证。
(7) 尽早发现并改正错误和缺陷。
(8) 集中进行质量保证。
(9) 独立的质量测试。
(10) 对所应用的软件质量保证措施的评价。
软件质量之路是什么?
在中小规模的软件中,对象和对象之间的协作关系就能够满足需要。
但是当软件规模扩大,复杂度上升的时候,面向对象技术强调的协作却表现出另一个极端的特点-耦合度太高导致的复杂度。
这时候就需要有一种新的方法来弥补面向对象技术的弱点。
大规模软件的特点 大规模软件主要特点是复杂度。
比较典型的例子是集成性的项目。
软件系统需要将各种各样的硬件、遗留系统、外部接口整合起来。
其间可能遇到不同的硬件接口,不同的操作系统,不同的语言,不同的平台,不同的数据库,不同的消息中间件,不同的网络介质。
这些都使得系统变得非常的复杂。
面向对象技术的特点是通过对象之间的职责分工和高度协作来完成任务。
这样的好处是代码量较少,系统布局合理,重用程度高。
但是当对象的个数大量增加的时候,对象之间的高度耦合的关系将会使得系统变得复杂,难以理解。
以前对于这个问题的方法是采用包(请参考拙作面向对象软件开发中对包的相关讨论)作为容器来组织对象,对象之间的依赖性将转化为包之间的依赖性。
这种方法听起来有道理,但是在实际中仍会出现难以解决的问题。
包仅仅只是容器。
这意味着对对象的组织可以是任意的,而包之间依赖关系的设计则还是取决于对象的依赖。
此外,包的设计和对象一样,缺乏一个统一的风格。
而统一的风格正是大规模软件设计所必须的,因为这样可以有效改进系统的可理解性,这一点非常重要。
面向组件编程 面向组件编程的缩写是COP.COP是对OOP的补充,帮助实现更加优秀的软件结构。
组件的粒度可大可小,需要取决于具体的应用。
在COP中有几个重要的概念:服务,服务(Sevice)是一组接口,供客户端程序使用。
例如,验证和授权服务,任务调度服务。
服务是系统中各个部件相互调用的接口;组件,组件(Component)实现了一组服务,此外,组件必须符合容器订立的规范,例如,初始化,配置、销毁。
COP 是对一种组织代码的思路,尤其是服务和组件两个概念。
在下文会提到Sping框架中,就采用了COP的思路,将系统看作一个个的组件,通过定义组件之间的协作关系(通过服务)来完成系统的构建。
这样做的好处是能够隔离变化,合理的划分系统。
而框架的意义就在于定义一个组织组件的方式。
理解组件 组件不是一个新的概念,Java中的javaBean规范和EJB规范都是典型的组件。
组件的特点在于他定义了一种通用的处理方式。
例如,JavaBean 拥有内视的特性,这样就可以通过工具来实现JavaBean的可视化。
而EJB规范定义了企业服务中的一些特性,使得EJB容器能够为符合EJB规范的代码增添企业计算所需要的能力,例如事务、持久化、池等。
所以,组件比起对象来的进步就在于通用的规范的引入。
通用规范往往能够为组件添加新的能力(就像上面所讨论的),但也给组件添加了限制,例如你需要实现EJB的一些接口。
以下我们将讨论组件的一些相关问题: 组件的粒度 组件的粒度是和系统的架构息息相关的。
组件的粒度确定了,系统的架构也就确定了。
在小规模的软件中,可能组件的粒度很小,仅相当于普通的对象,但是对于大规模的系统来说,一个组件可能包括几十,甚至上百个对象。
因此,对使用COP技术的系统来说,需要正确的定义组件的粒度。
较好的定义粒度的方法是对核心流程进行分析。
针对接口 接口和实现分离是COP的基础,没有接口和实现的分离,就没有COP.接口的高度抽象特性使得各个组件能够被独立的抽取出来,而不影响到系统的其它部分。
接口和实现分离有以下几个好处: 1.在模块组件对象之间解耦。
2.轻松的抽换实现,而不用修改客户端。
3.用户只需要了解接口,而不需要了解实现细节。
4.增加了重用的可能性。