规模度量软件开发项目规模度量是什么?
一、什么是质量? 作为软件产品的销售人员,市场人员或维护人员经常会受到客户这样那样的指责或抱怨,客户说:你们产品的质量太差,不稳定等等。
那么什么是质量呢?我们该如何来衡量质量呢? 质量具有三个维度: ?? 符合目标。
目标是客户所定义的,符合目标即判断我们是不是在做需要做的事情。
?? 符合需求。
即产品是不是在做让它做的事情。
?? 符合实际需求。
实际的需求包括用户明确说明的和隐含的需求。
ISO 关于质量的定义表示如下: “ 一个实体(产品或服务)的所有特性,基于这些特性可以满足明显的或隐含的需要。
” 注意,在这个定义中包含明显的需求和隐含的需求。
而往往我们会忽略隐含的需求。
因此在控制一个产品的质量的过程中必须关注这些隐含的需求,并给予应有的验证。
另一方面因为我们的产品是为客户提供服务的,因此凡是不满足客户需求的,我们都认为是一个失效( failure )。
所以我们的产品必须始终围绕着客户的需求进行开发和验证。
这里我们谈到客户,其实在一个软件的需求收集过程中需要关注客户和用户。
而我们经常会忽略客户与用户之间的区别。
那么谁是客户?谁是用户呢?简单的来说,客户是真正能够决定是否购买你软件的人,而用户是实际使用软件的人。
了解了这个区别,对于你在分析需求的重要性的时候就可以进行参考。
同时在产品质量验证的时候也可以做出不同的权衡。
另一方面我们在考虑我们用户需求的时候,往往只考虑了实际使用软件的人员,而忽略了其它一些人员对软件的要求或对软件造成的潜在竞争,这包括维护人员的要求、系统管理人员的要求、软件上下游人员的要求、先前版本的情况、市场上竞争对手的软件情况等。
每个人提到质量的时候,经常会遇到下列矛盾,在这些矛盾中隐含着对质量的承诺【 5 】: ?? 质量需要一个承诺,尤其是高层管理者的承诺。
但为了得到质量,高层管理者必须和其雇用的员工进行紧密合作; ?? 许多人相信没有缺陷的产品和服务是不可能的。
但是控制在一定级别的缺陷数是正常并可接受的; ?? 质量经常是和成本紧密联系在一起,一个高质量的产品同时也意味着高投入。
这是设计的质量和一致性质量的一个矛盾; ?? 一个高的质量要求需求规格说明书足够详细,以便产品可以根据这些规格说明书进行定量的分析。
然而许多组织没有能力或者不愿意产生如此详细程度的规格说明书; ?? 技术人员经常相信规范和标准会束缚他们的创造力,因此就不遵照标准做事。
然而如果要得到高质量的产品,就必须遵循良好定义的标准和过程。
二、流程对质量的贡献 好了,既然已经了解了什么是质量,那么怎么才能改进软件产品的质量呢?从一个企业的长远发展来看,首先应当从流程抓起,规范软件产品的开发过程。
这是一个软件企业从小作坊的生产方式向集成化、规范化的大公司迈进的必经之路,也是从根本上解决质量问题,提高工作效率的一个关键手段。
软件产品的开发同其它产品(如汽车)的生产有着共同特性,即需要按一定的过程来进行生产。
在工业界,流水线生产方式被证明是一种高效且能够比较稳定地保证产品质量的一种方式。
通过这种方式,不同的人员被安排在流程的不同位置,最终为着一个目标共同努力,这样可以防止人员工作间的内耗,极大的提高工作效率。
并且由于其过程来源于成功的实例,因此其最终的产品质量能够满足过程所设定的范围要求。
软件工程在软件的发展过程中吸取了这个经验并把它应用到了软件开发中,这就形成了软件工程过程,简单的说就是开发流程。
无论做什么事情,都有一个循序渐进的过程,从计划到策略再到实现。
软件流程就是按照这种思维来定义开发过程,它根据不同的产品特点和以往的成功经验,定义了从需求到最终产品交付的一整套流程。
流程告诉我们该怎么一步一步去实现产品,可能会有那些风险,如何去避免风险等等。
由于流程来源于成功的经验,因此,按照流程进行开发可以使得我们少走弯路,并有效的提高产品质量,提高用户的满意度。
目前流行的流程方法有很多种,不同的过程模型适合于不同类型的项目。
瀑布模型是应用的最为广泛的一种模型,也是最容易理解和掌握的模型,然而它的缺陷也是显而易见的。
遗漏的需求或者不断变更的需求会使得该模型无所适从。
然而,对于那些容易理解但很复杂的项目,采用瀑布模型会是比较适合的,因为你可以按部就班的去处理复杂的问题。
在质量要求高于成本和进度要求的时候,该模型表现的尤其突出。
螺旋模型是也是一个经典模型,它关注于发现和降低项目的风险【 8 】。
螺旋型项目从小的规模开始,然后探测风险,制定风险控制计划,接着确定下一步项目是否还要继续,然后进行下一个螺旋的反复。
该模型的最大优点就是随着成本的增加,风险程度随之降低。
然而螺旋模型的缺点是比较复杂,且需要管理人员有责任心,专注以及有管理方面经验。
RUP ( Rational Unified Process )是 Rational 公司提出的一套开发过程模型,它是一个面向对象软件工程的通用业务流程【 9 】。
它描述了一系列相关的软件工程流程,它们具有相同的结构,...
尐叄