软件项目相对于其它项目既有共同的特征,同时也具有自身鲜明的特点。下面从几个方面分析并说明这些特点对软件过程改进以及软件质量管理的影响。
首先软件项目存在着规模限制,软件项目的规模特征首先是项目的组成人员较少,其资源有限。而资源是进行软件过程改善与软件质量管理的先决条件,不同规模项目进行软件过程改善与质量管理,资源的占用并不是一个简单的线形关系,如200人的软件企业和10人的软件项目实施质量管理所需的投入并不是简单的20:1的关系。“麻雀虽小,五脏俱全”,除开对软件过程改善培训和支持以外,软件企业和软件项目进行过程改善的核心活动基本上是一样的,那么软件项目就必须精打细算的利用有限的资源做最需要的软件过程改善与质量管理。
其次是项目独立性:在特定机型上,利用特定硬件配置,由特定的系统软件或支撑软件的支持,形成了特定的开发环境。再加上软件项目特定的目标,采用特定的开发方法、工具和语言,使得软件具有独一无二的特色。这种建立在内容、形式各异的基础上的研制或生产方式,自然会给管理工作造成许多实际困难。
再者软件项目的任何一个成员都可能参与软件生产的各个方面,每个人都是“全才”,既可以进行需求分析,同时也可以进行设计、开发和测试。在软件生产过程中,软件项目在职责划分上更侧重以人员为中心而不是以角色为中心,软件开发缺乏层次性。这一特征对软件过程改进的组织方式产生很大的影响,项目组织在进行过程改善时就不太可能设立独立的软件工程组,而是使每一个软件工程人员参与到软件过程改善活动之中,在软件工程项目开发的同时并行进行软件过程改善。
总之软件项目的特征可理解为创造性强、动态变化快、技术革新迅速,其成功依赖于小团体的创造能力。同时软件项目组也存在着软件过程规范不够明确、组织岗位职责模糊、人员管理松散、技术使用不合理等一系列阻碍软件项目的缺陷。这些缺陷直接导致了软件项目质最管理的混乱,因此有必要在以软件过程改善为主线的基础上建立起规范化和制度化的软件项目质量控制框架。
2、影响软件质量的结构因素
软件能力成熟度模型重点是从组织管理方面研究评估软件生产过程,从而提高软件质量。软件业通过多年实践,总结出软件质量是人员、过程和技术的函数,即:Q=f(M,P,T)
其中,Q表示软件质量;M表示人员iP表示软件生产过程;T表示技术。
从项目管理的角度讲这就是组织管理、项目的过程管理和技术工具使用的组成。
3、软件质量控制框架
正如我们所知,软件开发建设是一个系统性的工程,在软件开发过程中,影响开发质量的因素有很多,人员、过程、技术可以被看作是独立的因素,但实际上人员、过程、技术三者存在相互依存的关系。把三者合理地结合起来,使人员、过程和技术相互配合,达到整体最佳状态,才一是实施软件质量控制追求的目标。而其中人员因素又可以细分为开发人员能力、开发人员数量,反映到组织上就是软件项目的角色管理;过程因素可以细分为软件过程成熟度、软件开发周期,主要体现为项目的过程管理:技术因素可以细分为软件复杂性与开发工具两个因素,具体体现为项目的软件配置管理。依据CMMI,将软件质量与其主要因素之间的关系建立一个软件质量控制框架。
软件质量(SQ)主要受软件开发过程成熟度(PM)、软件的大小与复杂性(SC),软件开发所需的资源(DR)、使用的开发工具(DT)和开发人员的能力(PC)五个要素的影响;同时软件开发质量又影响着软件开发周期(CT)、开发所需的资源(DR)。此外,开发过程成熟度(PM)和系统的大小与复杂性(SC)又分别影响着软件开发所需的资源(DR)、开发周期(CT)。因此对于软件开发质量(SQ),可以用扩展后的函数来表达,于是得到一个软件质量控制模型:SQ=f(PM,SC,DR,DT,PC)
3.1 软件开发过程成熟度(Process Matu rity,简称PM)软件开发过程成熟度(PM)的高低取决于软件开发者对开发过程的管理及工程能力的高低:依据CMMI评估的PM能反映其对提高软件开发过程能力的投资水平。对开发过程的控制能力和自我改善能力越强,在实际系统开发中软件开发错误与重复工作就越少,软件开发质量越高。
3.2 软件的大小与复杂性{Size and Complexity,简称SC)软件的大小主要取决于项目的大小及其业务的复杂程度,反映到程序中则可以通过系统模块的数量和可以执行程序语句的多少(主要是其行数)来测量。软件的复杂性主要包括技术专业、数据和决策三方面的复杂性。技术专业的复杂性体现在系统功能实现的困难,特别是系统中运算法则和计算统计的实现;数据的复杂性是指软件中数据结构和关系的复杂性;决策的复杂性是指软件中决策路径的复杂性和结构的复杂性。软件在这三方面越复杂,那么在软件开发过程中发现和未发现的错误就越多,软件开发的质量就越加难以得到保证。
3.3 软件项目所需的资源(Development Resource,简称DR)软件项目所需的资源包括系统开发所需的人力、物力、财力,DR主要与SC,PM,SQ以及DT,PC有关系。其中SC越大,DR越大;增强PM,DR增加:DT,PC越大,DR越小。在模型中,对于系统所需资源DR而言,DR与SQ的关系是互补的,成反比关系,因为软件质量提高会减少错误。而这些错误很容易导致实质性的重复工作,由此造成的费用远比项目早期用于改善质量方面的投资大很多,从而既可以减少反复修改的时间,提高工作效率,还可以降低人力资本与资金。对于软件质量SQ而言,在遵循严格的系统步骤、使用质量工具、进行严格的系统测试以及代码审核来提高系统开发质量时,SQ与DR的关系是均衡一致的,成正比关系。
3.4 使用的开发工具(Development Tools,简称Dn使用的开发工具(DT)主要是指在软件开发的各个阶段对软件开发工具的使用。在模型中,DT不仅会影响SQ,而且也影响DR,因为在软件开发中,对软件开发工具的使用越多(DT越大),软件一致性越差,系统协调性工作也越大,从而SQ越加难以保证,DR越大。
3.5 开发人员的能力(Personal Capability,简称PC)开发人员的能力(PC)是指软件开发小组成员的技术能力和开发小组的整体开发畿力。PC一方面影响着SQ,另一方面也影响着DR。一般而言,PC越强,DR(主要是指时间)就越少,SQ就越有保证。根据CMMI,PM较差的软件开发往往主要依靠于系统开发人员个人经验的积累,在很大的程度上影响着系统开发质量。
4、基于CMMI的软件项目质量管理框架
如前所述,在项目开发质量概念模型的分析中,仅将软件开发质量取决于人员能力和技术层面是不够的,软件过程成熟度才是直接影响软件开发质量的主要因素。由于开发人员的能力主要体现于团队的力量和能力,技术则主要通过软件工具及开发方法的应用来集中体现,软件过程成熟度则主要体现十对软件开发过程的控制能力和自我改善能力。所以我们必须通过以建立有效、稳定的软件过程为核心来强化开发人员团队化管理以及软件开发工具的应用,从而达到对软件的质量控制。基于CMMI的层次结合软件项目管理的特点给出其软件过程的质量控制关键框架(如图3所示)。项目管理者联盟文章
通过建立基于CMMI的软件项目质量管理框架,给中小软件企业的软件项目开发提供了一个参考,对于提高软件质量和软件项目成功率是有一定帮助的。