与事物的生存周期相类似,包括服装行业软件在内,其它软件也有其从产生到消亡的生存周期。软件生存周期被分为多个阶段。软件生存周期中各阶段相互联系和推进的关系模式被称为软件生存周期模型。软件生存周期模型有瀑布模型、喷泉模型、螺旋模型和演化模型等。比如在服装行业软件生存周期中包括多个服装软件过程,有获取过程、供应过程、管理过程、开发过程、运作过程、维护过程、支持过程和裁剪过程等。
教学要求
①掌握软件生存周期的概念和常见的软件生存周期模型。
②了解软件过程的概念以及8种具体的软件过程。
③掌握统一软件开发过程。
重点和难点①软件生存周期模型。②统一软件开发过程。
1.1软件生存周期
1.1.1软件生存周期
与自然界事物的成、住、坏、空和生命现象的生、老、病、死的生存周期相类似,软件也有其从产生到消亡的生存周期。一个人的生命过程是从出生开始,经过幼年、少年、青年、中年、老年直到死亡,这是人的生存周期。软件生存周期指从提出软件开发开始,历经分析、设计、实现、演化,一直到被其他软件系统所替换的全过程。
软件在其生存周期中所要历经的阶段到目前并没有统一的划分标准,瀑布模型把软件生存周期划分为软件策划、需求分析、软件设计、实现、测试和软件维护等阶段。
1.软件策划
软件策划的任务是提出软件开发的设想和总目标,确定软件所要解决的问题,确定软件开发的策略和方式,对软件开发所需要的资源和成本以及软件可能取得的效益进行初步估计,对软件项目进行可行性分析,并制定软件开发的初步计划。
2.需求分析
在需求分析阶段,通过开发人员和用户广泛地接触,确定软件功能需求、性能需求、软件的约束条件,以及软件开发所面临的各种风险。通过需求分析,开发人员应该制定出符合实际需要的软件需求规格说明。软件需求规格说明是需求分析阶段的成果,同时也是软件开发后续各阶段的工作依据。
3.软件设计
软件设计是在需求分析的基础上,通过考虑软件的实现环境,制定出软件的设计方案。软件设计工作包括系统平台设计、软件体系结构设计、详细设计、界面设计等。软件设计的结果应该反映在软件设计文档中。
4.实现
实现阶段的任务是,根据软件设计文档,构建软件的实现环境,编制软件程序代码,收集并搭建用于测试软件代码的数据环境,单元测试和软件系统集成。
5.测试
测试的任务是通过确定的方法,发现软件模型和代码中潜在的错误,以得到能够可靠运行的软件系统。软件测试包括模型测试、单元测试、集成测试、系统测试和验收测试等工作。每种测试工作又需要确定测试对象、编制测试计划、组织测试人员、选择测试方法、设计测试用例、实施测试和测试结果评价等。
6.软件维护
软件维护指在软件交付使用后,为改正系统中存在的错误以及满足用户新需求,而对软件系统所进行的修改和完善性工作。软件在运行过程中,一方面潜在的错误会不断暴露出来,另外,随着业务和环境的变化,用户总会对软件提出新的需求。为了解决软件中潜在的问题,满足用户的新需要,就需要对软件进行维护。
软件维护是软件生存周期中一项长期而重要的工作,一般软件维护费用要占软件总费用的60%以上,需要高度重视此项工作。
1.1.2软件生存周期模型
软件生存周期模型用来反映软件在其生存周期中各阶段之间衔接和推进关系。软件生存期模型既反映了软件生存和演化的过渡方式,同时也反映了软件开发的组织方式,对软件开发有着重要意义。
存在多种软件生存周期模型,有瀑布模型、螺旋模型、喷泉模型、演化模型等。软件生存周期模型的多重性是事物多重性的反映。
1.瀑布模型
瀑布模型(waterfallmodel)反映了软件生存期各阶段任务明确、自上而下、顺序固定、逐级过渡的阶段推进模式,各阶段的联系就像瀑布流水一样自上而下、不可逆反。
瀑布模型规定软件开发必须严格划分工作阶段,每一个阶段有明确的工作目标,并有确定的工作结果,前一阶段工作未完成之前,不能过渡到下一阶段。结构化方法遵循瀑布模型(见图2—1)。图2—1瀑布模型
瀑布模型反映了软件各阶段的顺序过渡过程,因此,也可以称为顺序模型。瀑布模型各阶段的不可重复性,对软件开发要求过于苛刻,也不符合人们认识问题的一般规律。人们认识问题总是由粗到细、由表及里、逐步深化,软件开发的认知活动也同样需要逐步深化,因此各工作阶段之间的反复在一定程度上是必要的。瀑布模型的不可重复性是瀑布模型的重大缺陷。
2.喷泉模型
喷泉模型(fountainmodel)表示软件生存期需要划分成为多个相对独立的阶段,但各个阶段之间的界限并不十分明确,相邻阶段之间存在一定的重叠和交叉。各阶段之间允许重复,并允许从一个阶段回溯到本阶段之前的某一阶段。喷泉模型比较形象地表示了软件开发各阶段重叠和交叉的连接模式(见图2—2、。
瀑布模型要求软件各生存阶段必须有明确的边界,各阶段的目标和任务必须清楚明确,不能含糊重叠。但是在实际软件开发过程中,有些任务很难明确划归到某一个确定的阶段中,而是处在两个阶段的边沿和交界处。另外,有些工作理应在某一阶段完成,但也可能完成此任务的条件一时还不具备,如果仅仅因为这个任务没有完成而暂停整个开发工作,就要延误整个开发时间,这样可以把整个开发工作推进到下一阶段,把这个工作留到下一阶段完成。因此,喷泉模型更符合软件开发工作的实际。
3.螺旋模型
螺旋模型(spiralmodel)规定软件开发采取分步推进、逐步深化的螺旋模式。在螺旋模型下,每一个螺旋式的循环都是对上一次循环的进一步深化和细化。快速原型法和面向对象方法都采用螺旋模型。螺旋模型见图2—3。
从认识论角度看,螺旋模型更符合人们认识事物的由粗到细、由表及里、逐步深化的规律,系统开发的各个阶段可以回溯和重复,随着螺旋周期的发展,系统逐步接近于问题的本质,每一个螺旋周期都是对上一个周期的深化和细化。
演化模型(evolutionarymodel)适用于事先不能明确确定需求的软件系统开发。如图2—4所示,该模型规定一个软件系统的开发工作可以通过多次更迭过程来完成。在软件开发初期,可以由用户首先给出软件的基本需求。开发人员根据基本需求,在辅助环境的支持下,快速构建一个反映用户基本需求的核心系统。然后把核心系统提供给用户,用户对核心系统进行评价,并提出改进意见。开发人员根据用户的改进意见进行第二次迭代开发,这样通过多次重复,最后得出用户满意的软件系统。
1.2软件过程
1.2.1概述
从一般意义上讲,过程指事物状态的变化在时间上的持续和空间上的延伸,是对事物状态变化进程的描述。例如,我们讲事物发展的过程,就是指事物状态变化的演化进程。过程既可以反映事物状态变化的全程和全景,也可以描述事物状态变化中某一阶段或方面。例如,“社会发展过程”是指社会发展的全程,“封建社会形成过程”则指社会发展过程中封建社会形成的这个阶段,而“道德形成过程”则是指社会发展过程中的道德方面的发展。
在软件工程中,软件生存期过程指软件生存周期中一系列相关活动按照确定的次序演进变化的进程,简称为软件过程(softwareprocess)。活动是软件过程的单元,由软件工程中的一组相关活动构成一个软件过程,像开发过程就包括实施准备、需求分析、系统设计、编码测试、系统集成等活动。活动是具有确定目的的相对独立的过程单元。活动的规模有大有小,软件生存周期的一个阶段可以是一个活动,一个小步骤也可以是一个活动。IEEE把软件过程分为获取过程、供应过程、开发过程、运作过程、维护过程、管理过程、支持过程和裁剪过程等。
参与软件过程的人员角色有:获取者、供应者、管理者、开发者、操作人员、维护人员和其他相关人员。获取者也称为需方,指需要供应者为其提供软件系统或服务的组织或个人。供应者也称供方,指为需方提供软件系统或服务的组织或个人。
软件过程反映了在软件生存周期中,不同方面的人员对软件的观察角度和实施的活动进程。获取者和供应者从合同的角度来参与的软件过程,就是获取过程和供应过程;管理者从管理角度来参与和观测的软件过程是管理过程;开发者、操作者和维护者从工程的角度所参与的软件过程则是开发过程、操作过程和维护过程;从对软件的支持角度所得出的软件过程则是支持过程。
软件生存周期反映软件实体从生到灭所历经的生存阶段。软件过程则描述的是在软件生存期中,各种不同角色的主体从不同角度所观测到的活动进程(就像人的生命周期是从出生开始,经过幼年、少年、青年、中年、老年直到死亡)。但是,赋予人和人本身所进行的活动进程,根据赋予的角色不同,会存在复杂的多面过程,像人的学习过程、有疾病人的治疗过程、人的世界观形成过程等;所以,软件生命周期具有顺序单面性,而软件过程则具有多面性。
1.2.2软件过程
国标GB8566--1995(信息技术软件生存期过程)规定软件过程共包括获取过程、供应过程、管理过程、开发过程、运作过程、维护过程、支持过程和裁剪过程,见图2-5。1.获取过程获取过程(acquis/tionprocess)是需方获得一个系统或软件产品的一系列相关的活动。获取过程一般包括开始和范围定义、招标准备、合同的准备、谈判及修改、对供方的监督和验收完成等项活动。
2.供应过程
供应过程(supplyprocess)是供方根据合同向需方提供系统、软件产品或服务的活动。供应过程包括开始、准备投标、签订协议、编制计划、实施和控制、评审和评价、交付和完成等项活动。
3.管理过程
管理过程(managementprocess)是各过程中的管理人员对自己过程中的任务和活动所实施的管理活动。管理过程是一个基本过程,适用于必须对自己过程实施管理的任何一方,如需方、供方、开发者、操作者、维护者等。管理过程适用于多个过程,如获取过程、供应过程、开发过程、操作过程、维护过程、支持过程等。管理过程一般包括开始和范围定义、计划、实施和控制、评审和评价、完成等项活动。
4.开发过程
开发过程(developmentprocess)是开发者根据合同要求,进行软件开发或服务的一系列活动。该过程包括软件策划、需求分析、软件设计、软件编码、软件测试、软件集成、验收、安装和支持等项活动。
5.运作过程
运作过程(operationprocess)是用户和操作人员在用户的业务环境中为使软件产品投入运行所进行的一系列活动。在软件开发过程完成后,通过运作过程能够将系统从开发环境迁移到用户的业务运作环境,在运行过程中对用户的要求提供帮助和咨询,并需要对运作的效果作出评价。运作过程包括准备、运作测试、系统迁移、系统运作、对用户运作的支持、系统运作评价等活动。
6。维护过程
维护过程(maintenanceprocess)是软件产品投入运行之后,为了保证软件产品的性能,适应需求、环境和技术等因素的变化,由维护人员对系统或软件产品所进行修改和改进的相关活动。维护过程包括问题和改进分析、修改和实施、对维护的评审和验收、移植、软件退役等项活动。
7.支持过程
支持过程(supportingprocess)是在软件生存周期中,除了其他六个过程之外,起着辅助、支持作用的软件过程。支持过程包括一组过程,主要有文档过程、配置管理过程、质量保证过程、验证过程、评审和审计过程、培训过程、环境建立过程等。
(1)文档过程
文档是软件的组成部分,软件开发和维护过程中需要生成大量的文档。文档过程就是记录软件生存期各过程或活动所产生各种信息的过程,文档过程中需要有计划、设计、编写、编辑、交流、发行、维护、保管文档等活动。
(2)配置管理过程
软件系统运行在确定的软硬件环境中,需要对软件系统的环境进行有效的配置。配置工作包括:确定系统的软件配置,以及各个配置的基本要求;控制各个配置的修改与交付;记录和报告配置的完成情况和修改请求;保证配置的完整性、相容性和正确性;控制配置的存储、处理和提交。配置管理过程包括:过程的准备与实施,配置的评定,配置的控制,配置情况报告,配置的评价、提交等活动。
(3)质量保证过程
本过程是为了保证软件产品和服务符合预期的要求和计划所实施的相关活动。本过程包括过程准备与实施,软件产品的质量保证,软件过程的质量保证,质量改进等活动。
(4)验证过程
通过验证来确认系统需求是否达到了预定要求。验证过程包括过程的准备与实施、需求验证、设计验证、代码验证、集成验证、文档验证等活动。
(5)评审和审计过程
评审是按照合同和系统的有关资料,从经济、技术、管理等方面对系统的方案及软件进行评价所涉及的一些相关活动。包括过程的准备与实施、技术评审、管理评审、经济评审等活动。
(6)培训过程
在软件系统中,需要对管理人员、开发人员、维护人员、操作人员进行各种培训。培训过程包括过程的建立,培训资料的编写,制定培训计划,培训的实施等活动。
(7)环境建立过程
为系统的开发和运行建立所需要的环境。包括过程建立、环境建立、环境维护等活动。
8.裁剪过程
上面列出了软件系统包括的七个软件过程。对一个具体的软件系统或服务项目而言,不一定需要所有过程以及过程中所包含的所有活动。应该根据具体项目要求,配置本项目开发所需要的相关过程,对具体项目的过程和活动配置工作所涉及的相关活动被称为裁剪过程(tailoringprocess)。裁剪过程包括:确定项目环境,收集相关信息,选取过程,确定活动和任务,生成裁减结果等活动。
1.3统一软件开发过程RUP
软件生命周期包括多个过程,软件开发过程是其中较为重要的过程,每一种开发方法都规定着一种软件开发过程,很不统一。美国Rational公司在研究统一建模语言UML的过程中,通过对各种软件开发过程的比较,于1998年6月公布了统一软件开发过程(rationalunifiedprocess,RUP)。从此,结束了软件开发过程的混乱局面,使软件开发过程得到了统一。
1.概述
统一软件开发过程是由时间和工作构成的二维结构。从时间维,把软件开发分为初始、细化、构建和移交4个工作阶段。从工作维,在软件开发过程中,又存在策划、分析、设计、实现和测试5项核心工作。
2.统一软件开发过程的特点
统一软件开发过程具有由用例驱动、以构架为中心、采用迭代和增量开发的三个特点。
(1)用例驱动
用例(usecase)是描述系统为完成一个功能与用户的一次交互过程。一个用例反映系统的_项功能,系统的所有用例集合反映系统的全部功能,用例集合又被称为用例模型。用例模型既作为需求说明,完整地反映用户需求,又可以驱动软件开发过程。开发人员可以在用例模型的基础上,建立系统的逻辑模型、设计模型和实现模型。并可以用例模型为基准,建立系统的测试模型。
(2)以构架为中心
软件构架是软件系统的结构。如果把软件构架比做人的骨架,软件的其他内容就相当于血和肉。构架是软件的核心,统一软件开发过程把软件构架放到软件开发的中心位置。首先建立结构稳定、具有适应性的软件构架,然后在构架的基础上再填充细节,形成最终的软件系统。
(3)迭代开发
迭代方式是减小风险、提高效率的有效方法。它把~个大的软件项目通过迭代变为多个“袖珍项目”,每一个袖珍项目的开发就是一次迭代。在迭代开发中,可以把具有重大风险的需求实现放到前面,这样随着迭代过程的进展,风险将逐步减小。每一次迭代都会产生一个实现的中间结果,这个结果可以反馈给用户,以征求用户的意见。这样,在开发过程中,就可以随时更正需求产生的偏差,避免按照瀑布模型直到系统实现阶段,用户才看到实际结果,此时再进行更正将要花费很大的代价。
3.统一软件开发过程的核心工作
统一软件开发过程中包括多项工作,其中核心工作有策划、分析、设计、实现和测试。
(1)策划
提出软件开发设想,确定软件规模、范围和初步需求,并对提出的软件进行可行性分析,组织开发队伍,编制开发计划。
(2)分析
进行领域分析和需求分析。领域分析是对软件所服务的业务领域进行的分析。需求是由用户提出,经开发人员分析所确定的软件系统合理的功能和性能。UML用用例图来描述软件需求。需求工作是了解和确定需求的一系列活动。需求工作的任务是了解业务过程,捕获并分析用户需求,建立完整、合理的需求模型。
(3)设计
在需求分析基础上,把需求转化为软件系统的设计方案。设计是对分析工作的细化。设计要考虑系统的实现环境和非功能性需求,并需要深入到系统的细节,得出能够指导实施的系统设计方案。
(4)实现
实现所设计的软件系统,主要工作有构建系统环境、软件编码、单元测试、系统集成等。
(5)测试
主要包括集成测试、系统测试和验收测试,最后得出可以交付运行的软件系统。需要完成编制测试计划、构造测试用例、实施测试等工作。
4.统一过程的工作阶段
(1)初始阶段初始阶段是软件项目开发的第一个阶段,目的是策划并启动软件项目。在这个阶段将根据项目开发的提议,确定项目的初步设想,捕获软件的主要功能,分析项目所面临的重。
大风险,并对项目的可行性进行论证,终止不可行的项目,避免重大风险。一般初始阶段所花费的工作量大约占软件开发总工作量的5%~8%。
(2)细化阶段
在这个阶段需要进一步捕获用户需求,一般需要捕获80%左右的软件需求;再从中连择对系统的功能、结构有重大影响的基本需求,并对这部分需求进行分析、设计、实现和测试。在历经这一工作的过程中,产生反映基本需求的系统模型,其中包括需求模型、设计模型、实现模型和测试模型。
(3)构建阶段
在细化阶段的基础上,构建出可以初步运行的软件系统。在构建阶段要对所构建的过程进行详细计划,通过多次迭代,完成构建工作。每一次迭代所得到的结果,将增加到所构建的软件半成品中,最后一次迭代结果就是要交付使用的软件系统。
(4)移交阶段
移交阶段把构造出的软件系统交付给用户使用。在这一阶段,要对软件进行验收测试,由用户评价,并根据用户提出的修改意见进行改进。另外,对用户培训,办理移交手续,设置用户使用环境,使软件在用户的环境中正常稳定运行。
本章小结
包括服装行业软件在内,其它软件生存周期指从提出软件开发开始,历经分析、设计、实现,一直到被其他软件系统所替换的全过程。软件生存周期模型用来反映软件在其生存周期中各阶段之间衔接和推进关系。软件生存周期模型有瀑布模型、喷泉模型、螺旋模型和演化模型。
软件过程指软件生存周期中一系列相关活动按照确定的次序演进变化的进程。软件过程包括获取过程、供应过程、管理过程、开发过程、运作过程、维护过程、支持过程和裁剪过程。从时间维把软件开发分为初始、细化、构建和移交四个阶段,又包括策划、分析、设计、实现和测试五项核心工作。
文章来源:秘奥软件网,中小企业信息化领跑者!全国咨询热线:400-9908-527_www.misall.com
Copyright @ 2007 MISALL Corporation. All Rights Reserved. All Powered By 粤ICP备07050206号
地址:广州天河区大观南路26号长盛商务大厦B713、715 电话:020-28269517