西门子CPU224XPCN中央控制单元
的质量特性中一一列出对应的或相关的标准。
早在1976年,Boehm等人就提出软件质量模型的分层方案。1979年McCall等人改进了Boehm质量模型,又提出了一种软件质量模型,质量模型中的质量概念基于11个特性之上,这11个特性分别面向软件产品的运行、修正、转移,它们与特性的关系一样,程序员也会出错。有些错误可能是随机的,程序员通常是因为一时的疏忽而造成程序设计错误。
(4)需求变化。需求变化的影响是多方面的,客户可能不了解需求变化带来的影响,也可能知道但又不得不。
(5)金山词霸出现的错误
金山词霸2003和金山快译2003正式在全国各地上市以后,很多用户强烈批评这2款软件在某些词语翻译上的错误,并且当金山词霸2003的安装路径不按默认路径,或者用户使用其模型中较为典型的,除此之外还有喷泉模型、统一软件开发过程模型等。介绍软件过程模型的目的是为了突出软件工程中软件过程模型的重要地位,从某种意义上说,不了解软件过程模型,就不了解软件工程。
同时还应该认识到,形成一套完整而成熟的软件开发过程不是一蹴而就的,它需要一个从无序到有序、从特殊到一般、从定性到定量、*后再从静态到动态的历程,或者说软件开发组织在形成成熟的软件过程之前必须经历一系列的探索阶段。因此,有必要建立一个软件过程成熟度模型来对过程作出一个客观、公正的评价,以促进软件开发组织改进软件开发过程,这就是所谓的软件能力成熟度模型(CMM)要做的工作。
1.2 软件缺陷与软件故障1. 什么是软件缺陷和软件故障
软件是由人来完成的,所有由人做的工作都不会是完
缺的。软件开发是很复杂的工作,开发人员很容易出现错误,虽然软件从业人员、专家和学者付出了很多努力,但软件错设计阶段应把已确定的各项需求,转换成相应的体系结构,在结构中每一组成部分都是功能明确的模块,每个模块都能体现相应的需求,这一步骤称为总体设计。然后进行详细设计,对某个模块要完成的工作进行具体的描述,以便为程序编写打下基础。
• 编码阶段的工作是编写各种层次的螺旋过程模型的一个额外的优点就是能够在每次迭代中都收集到过程中产生的各种度量数据。例如,在第一次迭代时记录下小组进行设计和实现所耗费的时间,依此即可以改进后续设计和实现所耗费时间的估计方法,这对于没有任何历史数据的开发组织尤其具有价值。
螺旋过程模型符合典型软件项目的发展特点,但是跟简单的瀑布过程模型相比,它需要投入更多的精力来更细致地管理其过程。这主要由于每次在快速原型过程模型中,首先是快速进行系统分析,在设计人员和用户的紧密配合下,快速确定软件系统的基本要求,尽快实现一个可运行的、功能简单的原型系统,然后对原型系统逐步求精、不断扩充完善得到*终的软件系统。所谓“原型系统”就是应用系统的模型,用户在开发者的指导下试用原型,在试快速原型过程模型中,首先是快速进行系统分析,在设计人员和用户的紧密配合下,快速确定软件系统的基本要求,尽快实现一个可运行的、功能简单的原型系统,然后对原型系统逐步求精、不断扩充完善得到*终的软件系统。所谓“原型系统”就是应用系统的模型,用户在开发者的指导下试用原型,在试用的过程中考核评价原型的特性,分析其运行结果是否满足规格说明的
,以及规格说明的描述是否满足用户的期望。开发人员根据用户用的过程中考核评价原型的特性,分析其运行结果是否满足规格说明的要求,以及规格说明的描述是否满足用户的期望。开发人员根据用户迭代完成之后都必须保证文档的一致性,特别是代码应该实现文档中描述的设计并且满足文档中记录的需求。此外,为了提高开发小组的生产效率,往往会在前一个迭代结束之前就开始一次新的迭代,这为协调文档的一致性增加了一定难度。
螺旋开发过程需要多少次迭代?这取决于具体的情况。例如,由3人组成的开发小组、耗时4个月的项目大概需要2次或者3次迭代,而项目若采用5次迭代,则所需要的管理费用通常会超过新增迭代所创造的价值。3. 增量过程模型
当迭代的速度加快,每次迭代只是在前一次的基础上增加少量功能的时候,这种迭代过程就是增量开发过程。
增量过程模型是用一种几乎连续的过程小幅度地推进项目,增量过程模型在项目的后期尤其适用,比如当项目处于维护阶段,或者立项的产品与原先开发出来的产品结构极为相似。代码,包括**可视化开发系统生成的代码和用第四代程序设计语言编写的代码等。
• 软件测试主要是为了发现程序中的错误。
• 运行维护主要是对软件进行修复和改动,使它能够持续发挥作用。
在实际软件开发过程中,并不是严格按照图1.1中所示各阶段顺序执行的,因此过程中的各部分之间都有某种程度的重叠。造成这种重叠的原因是上述任何一个阶段都不可能在下一阶段开始之前完全结束。软件开发人员很少像图1.1所示的那样使用单纯的瀑布过程模型,除非是很小的项目或者是开发的产品与软件开发人员以前做过的项目类似,这主要是因为绝大多数软件都是复杂的、非线性的。2. 螺旋过程模型
螺旋过程模型需要经历多次需求分析、设计、实现、测试这组顺序活动。这样做有多种原因,其中主要的原因是规避风险;另一个原因是在早期构造软件的局部版本时即交给客户以获得反馈;还有一个原因是为了避免像瀑布过程模型一样一次集成大量的代码。
螺旋过程模型的基本思路是依据前一个版本的结果构造新的版本,这个不断重复迭代的过程形成了一个螺旋上升的路径务用。软件的维护是指对软件系统进行修改或对软件需求变化作出反映的过程。当发现软件中的潜伏错误,或用户对软件需求进行修改,或软件运行环境发生变化时,都需要对软件进行维护。软件维护的成功与否直接影响软件的应用效果和软件的生存周期。软件的可维护性与软件的设计密切相关,因此在软件开发过程中应该重视对软件可维护性的支持。
软件生存周期的*后一个阶段是终止对软件系统的支持,软件停止使用。