《软件生存周期与软件过程精品文稿.ppt》由会员分享,可在线阅读,更多相关《软件生存周期与软件过程精品文稿.ppt(53页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、软件生存周期与软件过程1*第1页,本讲稿共53页2.1 软件生存周期软件生存周期一个软件从开始计划起,到废弃不用的整个时期,一个软件从开始计划起,到废弃不用的整个时期,称为软件生存周期称为软件生存周期。把软件生存周期划分为较小的阶段的目的:把软件生存周期划分为较小的阶段的目的:给每个阶段赋予确定而有限的任务,能够简化给每个阶段赋予确定而有限的任务,能够简化每一步的工作内容,使软件复杂性变得较易控制每一步的工作内容,使软件复杂性变得较易控制和管理。和管理。2*第2页,本讲稿共53页2.1.1 软件生存周期的主要活动软件生存周期的主要活动软件生存周期包含软件生存周期包含3个时期:计划、开发个时期:
2、计划、开发和运行时期。和运行时期。各时期又分为若干阶段,共各时期又分为若干阶段,共6个阶段。个阶段。3*第3页,本讲稿共53页需求分析需求分析软件设计软件设计测试测试编码编码图图2.1 典型的软件生存周期典型的软件生存周期运行运行维护可行性研究可行性研究开发开发时期时期运行时期运行时期计划计划时期时期4*第4页,本讲稿共53页 1.可行性研究可行性研究 (详见第(详见第35页,页,2.6.1)解决解决“是否能做是否能做?是否值得做是否值得做?”的问题。的问题。主要文档:主要文档:可行性论证报告可行性论证报告、项目实施计划项目实施计划(简称项目计划简称项目计划)。)。5*第5页,本讲稿共53页2
3、.需求分析需求分析解决系统解决系统 “做什么做什么?”问题。问题。弄清用户对弄清用户对系统的需求,包括系统的需求,包括功能需求、性能需功能需求、性能需求、环境约束和用户界面求、环境约束和用户界面等(等(其中功能需求是其中功能需求是最重要的最重要的),),建立分析模型。建立分析模型。主要文档:主要文档:需求规格说明书需求规格说明书 (Software Requirement Specification,SRS )。6*第6页,本讲稿共53页3.软件设计软件设计:分为总体设计和详细设计。分为总体设计和详细设计。总体设计总体设计:又称概要设计,又称概要设计,主要确定软件主要确定软件的体系结构。的体系
4、结构。详细设计详细设计:又称过程设计又称过程设计,主要设计每个模主要设计每个模块的实现细节。块的实现细节。主要文档:概要设计说明书和详细设计说明主要文档:概要设计说明书和详细设计说明书书7*第7页,本讲稿共53页 4.编码编码:编写源程序。编写源程序。5.测试测试:进行单元测试、集成测试、确认测试和进行单元测试、集成测试、确认测试和 系系统测试。统测试。主要文档:主要文档:测试计划测试计划、测试报告等、测试报告等。3.5.解决解决“怎么做怎么做?”的问题。的问题。8*第8页,本讲稿共53页 6.运行维护运行维护 :重点是做好软件的维护工作。重点是做好软件的维护工作。主要文档:主要文档:维护申请
5、单和软件修改报告维护申请单和软件修改报告等。等。9*第9页,本讲稿共53页2.1.2 生存周期和软件过程的关系生存周期和软件过程的关系1.从软件生存周期到软件过程从软件生存周期到软件过程软件过程(软件过程(Software Process):):围绕软件开发所围绕软件开发所进行的一系列活动进行的一系列活动。(通俗地,也可以把软件过。(通俗地,也可以把软件过程称为程称为“软件开发模型软件开发模型”)2.软件过程的演变软件过程的演变 传统的线性开发模型传统的线性开发模型迭代的过程模型迭代的过程模型10*第10页,本讲稿共53页2.2 传统的软件过程传统的软件过程2.2.1 瀑布模型瀑布模型瀑布模型
6、:瀑布模型:是一种基于软件生存周期的线是一种基于软件生存周期的线性开发模型性开发模型。11*第11页,本讲稿共53页瀑布模型示意图瀑布模型示意图 需求分析需求分析软件设计软件设计测试测试编码编码运行运行维护可行性研究可行性研究12*第12页,本讲稿共53页瀑布模型的特点瀑布模型的特点:1.阶段间的顺序性和依赖性阶段间的顺序性和依赖性:各个阶段按自上各个阶段按自上而下、相互衔接的固定次序,而下、相互衔接的固定次序,如同瀑布逐级如同瀑布逐级下落。下落。2.推迟实现的观点推迟实现的观点:瀑布模型在编码以前安排了:瀑布模型在编码以前安排了分析阶段和设计阶段,直到设计阶段结束,才实分析阶段和设计阶段,直
7、到设计阶段结束,才实现编码,有利于提高软件质量。现编码,有利于提高软件质量。13*第13页,本讲稿共53页3.质量保证的观点质量保证的观点(文档驱动):(文档驱动):(1)每个阶段都要完成规定的文档。每个阶段都要完成规定的文档。(2)每个阶段结束前都要对已完成的的文档进行复审每个阶段结束前都要对已完成的的文档进行复审(审查)。(审查)。4.存在的问题存在的问题:(1)不适合需求模糊的系统不适合需求模糊的系统。(2)开发的初始阶段很难彻底弄清软件需求开发的初始阶段很难彻底弄清软件需求。为了解决这个问题为了解决这个问题,提出提出“快速原型模型快速原型模型”。14*第14页,本讲稿共53页2.2.2
8、 快速原型模型快速原型模型 1.原型开发的优越性原型开发的优越性 快速原型模型的中心思想是:快速原型模型的中心思想是:首先建立一个能首先建立一个能够反映用户主要需求的原型,让用户看一看未来系够反映用户主要需求的原型,让用户看一看未来系统的概貌,以便判断哪些功能是符合需要的,哪些统的概貌,以便判断哪些功能是符合需要的,哪些方面还需要改进;然后将原型反复改进,最终建立方面还需要改进;然后将原型反复改进,最终建立符合用户要求的新系统符合用户要求的新系统。15*第15页,本讲稿共53页快速原型模型示意图快速原型模型示意图快速分析快速分析运行原型运行原型快速设计快速设计建造原型建造原型客户评价客户评价修
9、改修改开始开始16*第16页,本讲稿共53页2.原型开发的方法原型开发的方法(1)原型系统仅包括未来系统的原型系统仅包括未来系统的主要功能主要功能以及系统以及系统的的重要接口重要接口,不包括系统的细节。不包括系统的细节。(2)开发原型系统时尽量使用能缩短开发周期的开发原型系统时尽量使用能缩短开发周期的先进的语言和工具先进的语言和工具(如如4GL)。(3)把原型系统作为基础,通过补充和修改获得最把原型系统作为基础,通过补充和修改获得最终的实际系统。终的实际系统。(快速原型模型也常常被当作帮助定义软件需求快速原型模型也常常被当作帮助定义软件需求的一种手段,大多数原型都废弃不用的一种手段,大多数原型
10、都废弃不用。)。)17*第17页,本讲稿共53页3.原型模型的启示原型模型的启示“逼真逼真”的原型可以使用户迅速作出反馈。的原型可以使用户迅速作出反馈。在分析和设计阶段可能出现回溯和迭代,形在分析和设计阶段可能出现回溯和迭代,形成非线性的开发模型。成非线性的开发模型。4.应该防止的偏向应该防止的偏向舍不得抛弃,从而影响软件质量。舍不得抛弃,从而影响软件质量。5.(补充)原型模型的种类(补充)原型模型的种类渐进型:对原型补充和修改渐进型:对原型补充和修改,获得最终系统。获得最终系统。抛弃型:原型废弃不用。抛弃型:原型废弃不用。18*第18页,本讲稿共53页2.3 软件演化模型软件演化模型2.3.
11、1 增量模型增量模型 增量模型是瀑布模型的顺序特征与快速原型增量模型是瀑布模型的顺序特征与快速原型模型的迭代特征相结合的产物。它把软件看做模型的迭代特征相结合的产物。它把软件看做一系列相互联系的增量,在开发过程的各次迭一系列相互联系的增量,在开发过程的各次迭代中,每次完成其中的一个增量代中,每次完成其中的一个增量。19*第19页,本讲稿共53页时间时间分析分析 增量增量1 增量增量1交付客户交付客户设计设计 编码编码 测试测试 分析分析 增量增量2 增量增量2交付客户交付客户设计设计 编码编码 测试测试 分析分析 增量增量3 增量增量3交付客户交付客户设计设计 编码编码 测试测试 分析分析 增
12、量增量4 增量增量4交付客户交付客户设计设计 编码编码 测试测试 20*第20页,本讲稿共53页2.3.2 螺旋模型(螺旋模型(Spiral Model)螺旋模型螺旋模型是在结合瀑布模型与快速原型模型的基础上是在结合瀑布模型与快速原型模型的基础上 增加了风险分析增加了风险分析 而形成的。而形成的。1.典型的迭代模型典型的迭代模型螺旋模型是一种迭代模型,每迭代一次,螺线线就前螺旋模型是一种迭代模型,每迭代一次,螺线线就前进一周,进一周,每轮螺旋均包含以下每轮螺旋均包含以下4个活动个活动:(1)计划:确定目标,选择方案。计划:确定目标,选择方案。(2)风险分析:分析所选方案,考虑如何识别和消除风险
13、。风险分析:分析所选方案,考虑如何识别和消除风险。(3)建立原型:实施本周期的开发任务。建立原型:实施本周期的开发任务。(4)用户评审:用户评价前一步结果,提出修正建议。用户评审:用户评价前一步结果,提出修正建议。21*第21页,本讲稿共53页22*第22页,本讲稿共53页 2.风险分析:软件开发存在风险,风险分析的目的就风险分析:软件开发存在风险,风险分析的目的就是要了解、分析并设法降低和排除风险。是要了解、分析并设法降低和排除风险。对高风险的大型软件,螺旋模型是一个理想的开发过对高风险的大型软件,螺旋模型是一个理想的开发过程。程。3.螺旋模型的特点螺旋模型的特点 在项目开发的所有阶段都考虑
14、各类风险在项目开发的所有阶段都考虑各类风险。23*第23页,本讲稿共53页2.3.3 构件集成模型构件集成模型1.面向对象的基本概念面向对象的基本概念(1)对象(对象(Object):数据和操作的封装体。):数据和操作的封装体。(2)类(类(Class):类是对象的抽象,对象是类的实例。类是对象的抽象,对象是类的实例。(3)继承(继承(Inheritance):子类可以共享父类的数据):子类可以共享父类的数据和操作。和操作。(4)消息(消息(Message):对象通过消息进行通信。):对象通过消息进行通信。面向对象面向对象=对象对象+分类分类+继承继承+通过消息的通信通过消息的通信24*第24
15、页,本讲稿共53页 2.什么是构件什么是构件 构件构件(Component)是一种通用的是一种通用的(可复用的可复用的)、可、可支持不同应用系统的软件组件。支持不同应用系统的软件组件。3.构件集成模型的特征构件集成模型的特征融合螺旋模型特征。融合螺旋模型特征。支持软件开发的迭代方法支持软件开发的迭代方法。基于构件库;基于构件库;构件集成模型利用预先封装好的构件来构造应构件集成模型利用预先封装好的构件来构造应用软件系统。用软件系统。25*第25页,本讲稿共53页2.4 形式化方法模型形式化方法模型2.4.1 转换模型(转换模型(Transformational Model,又称变换模型)又称变换
16、模型)软件工程中涉及的语言有软件工程中涉及的语言有3种种:(1)自然语言自然语言(2)半形式语言半形式语言:图表、图形图表、图形;(3)形式语言形式语言:计算机可运行的语言。计算机可运行的语言。26*第26页,本讲稿共53页 转换模型是一种结合形式化软件开发方法转换模型是一种结合形式化软件开发方法和程序自动生成技术的软件开发模型。和程序自动生成技术的软件开发模型。它采用形式化的软件开发方法,对形式化它采用形式化的软件开发方法,对形式化的软件规格说明进行一系列程序变换,最终的软件规格说明进行一系列程序变换,最终映射成为计算机系统能够接受的程序系统。映射成为计算机系统能够接受的程序系统。27*第2
17、7页,本讲稿共53页 图图2.2 转换模型转换模型形式化形式化规格说明规格说明与需求比与需求比较后修正较后修正变换变换2变换变换1变换变换n测试测试形式化开发记录形式化开发记录系统需求系统需求目标系统目标系统28*第28页,本讲稿共53页软件需求软件需求形式化说形式化说明明(M0)软件设计软件设计形式化说形式化说明明(M1)(M2)(Mn)模型检查模型检查程序变换程序变换程序变换程序变换程序变换程序变换2.4.2 净室模型(净室模型(Cleanroom Model)净室模型是一种净室模型是一种形式化的形式化的增量开发模型。增量开发模型。该模型只适合于软件的形式化开发方法;需要严格的数该模型只适
18、合于软件的形式化开发方法;需要严格的数学理论和形式化技术支持;需要一整套开发环境(如程序学理论和形式化技术支持;需要一整套开发环境(如程序变换工具、定理证明工具等)的支持。变换工具、定理证明工具等)的支持。29*第29页,本讲稿共53页净室思想净室思想在分析和设计阶段消除错误在分析和设计阶段消除错误在在“洁净洁净”状态下实现软件制作状态下实现软件制作形式化形式化盒结构表示分析和设计盒结构表示分析和设计正确性验证正确性验证增量模型增量模型把软件看成一系列的增量把软件看成一系列的增量30*第30页,本讲稿共53页表表2.1 7种软件开发模型的主要特点种软件开发模型的主要特点开发模型开发模型特特 点
19、点适用场合适用场合瀑布模型瀑布模型线性模型,每一阶段必须完成线性模型,每一阶段必须完成规定的文档规定的文档需求明确的中、小型需求明确的中、小型软件开发软件开发快速原型快速原型 模型模型用户介入早,通过迭代完善用用户介入早,通过迭代完善用户需求,原型废弃不用户需求,原型废弃不用需求模糊的小型软件需求模糊的小型软件开发开发增量模型增量模型每次迭代完成一个增量,可用每次迭代完成一个增量,可用于于OO开发开发容易分块的大型软件容易分块的大型软件开发开发螺旋模型螺旋模型典型迭代模型,重视风险分析,典型迭代模型,重视风险分析,可用于可用于OO开发开发具有不确定性大型软具有不确定性大型软件开发件开发构件集成
20、构件集成 模型模型软件开发与构件开发平行进行软件开发与构件开发平行进行领域工程、行业的中领域工程、行业的中型软件开发型软件开发转换模型转换模型形式化的规格说明,自动的程形式化的规格说明,自动的程序变换系统序变换系统理想化模型,尚无成理想化模型,尚无成熟工具支持熟工具支持净室模型净室模型形式化的增量开发模型,在洁形式化的增量开发模型,在洁净状态下实现软件制作净状态下实现软件制作开发团队熟悉形式化开发团队熟悉形式化方法方法31*第31页,本讲稿共53页2.5 统一过程和敏捷过程统一过程和敏捷过程2.5.1 统一过程统一过程(Rational Unified Process,RUP)RUP 是美国是
21、美国 Rational 公司(现被公司(现被IBM 公司兼并,称公司兼并,称 IBM-Rational 公司)开发的一种支持公司)开发的一种支持UML建模过程的建模过程的软件工具。软件工具。RUP是以用例为驱动、以系统架构为中心的迭代与增是以用例为驱动、以系统架构为中心的迭代与增量过程。量过程。RUP在一个二维空间中描述软件开发活动,水平轴代表时在一个二维空间中描述软件开发活动,水平轴代表时间,显示了过程动态的一面,它将一个软件生存周期分为间,显示了过程动态的一面,它将一个软件生存周期分为4个个阶段,阶段,包括初始、细化、构造和移交阶段包括初始、细化、构造和移交阶段,每个阶段又可以每个阶段又可
22、以分为多个迭代。分为多个迭代。32*第32页,本讲稿共53页图图2.9 统一过程图示统一过程图示33*第33页,本讲稿共53页1初初始始阶阶段段:初初始始阶阶段段的的目目标标是是为为系系统统建建立立业业务务用用例例和和确定项目的边界。本阶段的具体目标如下:确定项目的边界。本阶段的具体目标如下:明明确确软软件件系系统统的的范范围围和和边边界界条条件件,包包括括从从功功能能角角度度的的前前景景分分析、产品验收标准和哪些做与哪些不做的相关决定;析、产品验收标准和哪些做与哪些不做的相关决定;明确区分系统的关键用例和主要的功能场景;明确区分系统的关键用例和主要的功能场景;展展现现或或者者演演示示至至少少
23、一一种种符符合合主主要要场场景景要要求求的的候候选选软软件件体体系系结结构;构;对整个项目做最初的项目成本和日程估计;对整个项目做最初的项目成本和日程估计;估估计计出出潜潜在在的的风风险险(主主要要指指各各种种不不确确定定因因素素造造成成的的潜潜在在风险风险);准备好项目的支持环境。准备好项目的支持环境。34*第34页,本讲稿共53页2细化阶段细化阶段 细细化化阶阶段段的的目目标标是是分分析析问问题题域域,建建立立健健全全的的体体系系结结构构基基础础,编编制制项项目目计计划划,淘淘汰汰项项目目中中最最高高风风险险的的元元素素。本本阶段的具体目标如下:阶段的具体目标如下:确确保保软软件件结结构构
24、、需需求求、计计划划足足够够稳稳定定;确确保保项项目目风风险险已已经经降低到能够预计完成整个项目的成本和日程的程度;降低到能够预计完成整个项目的成本和日程的程度;针对项目的软件结构上的主要风险已经解决或处理完成;针对项目的软件结构上的主要风险已经解决或处理完成;通过完成软件结构上的主要场景建立软件体系结构的基线;通过完成软件结构上的主要场景建立软件体系结构的基线;建立一个包含高质量构件的可演化的产品原型;建立一个包含高质量构件的可演化的产品原型;说说明明基基线线化化的的软软件件体体系系结结构构可可保保障障需需求求可可控控制制在在合合理理的的成成本本和时间范围内;和时间范围内;建立好产品的支持环
25、境。建立好产品的支持环境。35*第35页,本讲稿共53页3构造阶段构造阶段 在在构构造造阶阶段段,所所有有剩剩余余的的构构件件和和应应用用程程序序功功能能被被开开发发并并集集成成为为产品,所有的功能被详尽地测试。本阶段的主要目标如下:产品,所有的功能被详尽地测试。本阶段的主要目标如下:通通过过优优化化资资源源和和避避免免不不必必要要的的返返工工达达到到开开发发成成本本的的最最小小化;化;根据实际需要达到适当的质量目标;根据实际需要达到适当的质量目标;据实际需要形成各个版本;据实际需要形成各个版本;对所有必须的功能完成分析、设计、开发和测试工作;对所有必须的功能完成分析、设计、开发和测试工作;采
26、采用用循循环环渐渐进进的的方方式式开开发发出出一一个个可可以以提提交交给给最最终终用用户户的的完完整产品;整产品;确确定定软软件件、站站点点和和用用户户都都为为产产品品的的最最终终部部署署做做好好了了相相关关准备;准备;达成一定程度上的并行开发机制。达成一定程度上的并行开发机制。36*第36页,本讲稿共53页4迁移阶段迁移阶段 完完成成最最后后的的软软件件产产品品和和产产品品验验收收测测试试,并并编编制制用用户户文文档档,进进行行用用户户培培训训等等,将将软软件件产产品品交交付付给给用用户户群群体体。本本阶阶段段的具体目标如下。的具体目标如下。进行进行Beta测试以期达到最终用户的需要;测试以
27、期达到最终用户的需要;进行进行Beta测试和旧系统的并轨;测试和旧系统的并轨;转换功能数据库;转换功能数据库;对最终用户和产品支持人员的培训;对最终用户和产品支持人员的培训;具体部署相关的工程活动;具体部署相关的工程活动;协调协调Bug修订、改进性能和可用性等工作;修订、改进性能和可用性等工作;基于完整的版本和产品验收标准对最终部署做出评估;基于完整的版本和产品验收标准对最终部署做出评估;达到用户要求的满意度;达到用户要求的满意度;37*第37页,本讲稿共53页2.5.2 敏捷过程敏捷过程(Agile Process)敏敏捷捷开开发发(Agile Development)是是以以人人为为核核心
28、心、以以迭迭代代方方式式顺顺序序渐渐进进开开发发的的方方法法,其其开开发发过过程程称称为为“敏敏捷捷过程过程”。1.敏捷开发的价值观敏捷开发的价值观 个人和交互胜过过程和工具。个人和交互胜过过程和工具。可以工作的软件胜过面面俱到的文档。可以工作的软件胜过面面俱到的文档。客户合作胜过合同谈判。客户合作胜过合同谈判。响应变化胜过遵循计划。响应变化胜过遵循计划。38*第38页,本讲稿共53页2.敏捷过程应遵循的敏捷过程应遵循的12条原则条原则 通过尽早的、持续的交付有价值的软件来使客户满意。通过尽早的、持续的交付有价值的软件来使客户满意。即使到了开发的后期,也欢迎改变需求。敏捷过程利用即使到了开发的
29、后期,也欢迎改变需求。敏捷过程利用变化来为客户创造竞争优势。变化来为客户创造竞争优势。交付可以工作的软件,交付的间隔可以从几个星期到交付可以工作的软件,交付的间隔可以从几个星期到几个月,交付的时间间隔越短越好。几个月,交付的时间间隔越短越好。在整个项目开发期间,业务人员和开发人员必须天天都在一在整个项目开发期间,业务人员和开发人员必须天天都在一起工作。起工作。以积极向上的员工为中心,建立项目组,给他们提供以积极向上的员工为中心,建立项目组,给他们提供所需的环境和支持,并且信任他们能够完成工作。所需的环境和支持,并且信任他们能够完成工作。39*第39页,本讲稿共53页在团队内部,最具有效果并富有
30、效率的传递信息的方法,在团队内部,最具有效果并富有效率的传递信息的方法,就是面对面的交谈。就是面对面的交谈。可运行的软件是首要的进度度量标准。可运行的软件是首要的进度度量标准。敏捷过程提倡可持续的开发速度。责任人、开发者和用户敏捷过程提倡可持续的开发速度。责任人、开发者和用户应该能够保持一个长期的、恒定的开发速度。应该能够保持一个长期的、恒定的开发速度。时刻关注优秀的技能和好的设计,以增强敏捷能力。时刻关注优秀的技能和好的设计,以增强敏捷能力。简单是最根本的。简单是最根本的。最好的构架、需求和设计出于自组织团队。最好的构架、需求和设计出于自组织团队。每隔一定时间,团队要反省如何才能更有效地工作
31、方每隔一定时间,团队要反省如何才能更有效地工作方面,然后相应地调整自己的行为。面,然后相应地调整自己的行为。40*第40页,本讲稿共53页2.5.3 极限编程极限编程(Extreme Programming,XP)极限编程是敏捷方法中最著名的、轻量级一个。极限编程是敏捷方法中最著名的、轻量级一个。它由一系列简单却互相依赖的实践组成。它由一系列简单却互相依赖的实践组成。4个价值观个价值观加强交流、从简单做起、寻求反馈、勇于实事就是。加强交流、从简单做起、寻求反馈、勇于实事就是。12个核心实践个核心实践完整团队、计划对策、测试、简单设计、结对编程、完整团队、计划对策、测试、简单设计、结对编程、小软
32、件版本、设计改进、持续集成、代码共有、编小软件版本、设计改进、持续集成、代码共有、编码标准、系统比喻、可持续的速度。码标准、系统比喻、可持续的速度。41*第41页,本讲稿共53页下面是极限编程的实践内容:下面是极限编程的实践内容:1.完整团队:完整团队:XP项目的所有参与者(开发人员、客户、测试项目的所有参与者(开发人员、客户、测试人员等)一起工作在一个场所中。人员等)一起工作在一个场所中。2.计划对策:计划是持续的、循序渐进的。计划对策:计划是持续的、循序渐进的。3.测试:作为选择每个所期望的特性的一部分,客户可以根测试:作为选择每个所期望的特性的一部分,客户可以根据脚本语言来定义出自动验收
33、测试来表明该特性可以工作。据脚本语言来定义出自动验收测试来表明该特性可以工作。4.简单设计:团队保持设计恰好和当前的系统功能相匹简单设计:团队保持设计恰好和当前的系统功能相匹配,不包含任何重复,包含尽可能少的代码。配,不包含任何重复,包含尽可能少的代码。5.结对编程:所有的产品软件都是由两个程序员、并排坐在一结对编程:所有的产品软件都是由两个程序员、并排坐在一起在同一台机器上构建的。起在同一台机器上构建的。42*第42页,本讲稿共53页6.小软件版本:测试驱动开发编写单元测试是一个验证行为,小软件版本:测试驱动开发编写单元测试是一个验证行为,更是一个设计行为。编写单元测试避免了相当数量的反馈循
34、环,更是一个设计行为。编写单元测试避免了相当数量的反馈循环,程序员以非常短的循环周期工作,然后使之通过。程序员以非常短的循环周期工作,然后使之通过。7.设计改进:随时利用重构方法改进已经腐化的代码,设计改进:随时利用重构方法改进已经腐化的代码,保持代码尽可能的干净、具有表达力。保持代码尽可能的干净、具有表达力。8.持续集成:团队总是使系统完整地被集成。一个人拆入持续集成:团队总是使系统完整地被集成。一个人拆入(Check in)后,其它所有人责任代码集成。)后,其它所有人责任代码集成。9.代码集体共有:任何结对的程序员都可以在任何时候改代码集体共有:任何结对的程序员都可以在任何时候改进任何代码
35、。没有程序员对任何一个特定的模块或技术单进任何代码。没有程序员对任何一个特定的模块或技术单独负责,每个人都可以参与任何其它方面的开发。独负责,每个人都可以参与任何其它方面的开发。10.编码标准:系统中所有的代码看起来就好像是被单独一编码标准:系统中所有的代码看起来就好像是被单独一人编写的。人编写的。43*第43页,本讲稿共53页11.系统比喻:系统比喻:将整个系统联系在一起的全局视图;它是系统将整个系统联系在一起的全局视图;它是系统的未来影像,是它使得所有单独模块的位置和外观变得明显的未来影像,是它使得所有单独模块的位置和外观变得明显直观。如果模块的外观与整个隐喻不符,那么你就知道该模直观。如
36、果模块的外观与整个隐喻不符,那么你就知道该模块是错误的。块是错误的。12.可持续的速度:团队只有持久才有获胜的希望。他们以能够可持续的速度:团队只有持久才有获胜的希望。他们以能够长期维持的速度努力工作,他们保存精力,他们把项目看作是长期维持的速度努力工作,他们保存精力,他们把项目看作是马拉松长跑,而不是全速短跑。马拉松长跑,而不是全速短跑。极限编程是一组简单、具体的实践,这些实践结合在形成极限编程是一组简单、具体的实践,这些实践结合在形成了一个敏捷开发过程。极限编程是一种优良的、通用的软件了一个敏捷开发过程。极限编程是一种优良的、通用的软件开发方法,项目团队可以拿来直接采用,也可以增加一些实开
37、发方法,项目团队可以拿来直接采用,也可以增加一些实践,或者对其中的一些实践进行修改后再采用。践,或者对其中的一些实践进行修改后再采用。44*第44页,本讲稿共53页2.6 可行性研究可行性研究(Feasibility Study)可行性研究的目的可行性研究的目的是弄清待开发的项目是是弄清待开发的项目是否可能实现和值得进行。否可能实现和值得进行。可行性研究通常有系统分析师完成,并可行性研究通常有系统分析师完成,并需写出需写出“可行性论证报告可行性论证报告”。45*第45页,本讲稿共53页2.6.1 可行性研究的内容与步骤可行性研究的内容与步骤 1.研究的内容研究的内容 (1)经济可行性经济可行性
38、:有没有经济效益有没有经济效益?多长时间可以收回成本多长时间可以收回成本?(进行成进行成本本-效益分析效益分析)(2)技术可行性技术可行性:现有的技术能否实现该系统?有哪些技术难点现有的技术能否实现该系统?有哪些技术难点?建议采用的技术的先进程度怎样建议采用的技术的先进程度怎样?(3)运行可行性运行可行性:系统的运行方式是否可行?系统的运行方式是否可行?(4)法律可行性法律可行性:系统的开发会不会在社会上或政治上引起侵权、破系统的开发会不会在社会上或政治上引起侵权、破坏或其他责任问题?坏或其他责任问题?46*第46页,本讲稿共53页 2.研究的步骤研究的步骤 (1)对当前系统进行调查和研究。对
39、当前系统进行调查和研究。(2)导出新系统的解决方案。提出几种可能的导出新系统的解决方案。提出几种可能的解决方案,以便用户选择。解决方案,以便用户选择。(3)提出推荐的方案。提出推荐的方案。本项目的开发价值。本项目的开发价值。推荐这个方案的理由。推荐这个方案的理由。(4)编写可行性论证报告。编写可行性论证报告。47*第47页,本讲稿共53页2.6.2 软件风险分析软件风险分析 风险分析的目的:风险分析的目的:软件开发存在风险软件开发存在风险。软件风险具有不确定性,。软件风险具有不确定性,可能发生也可能不发生,但一旦风险变成现实,就可能发生也可能不发生,但一旦风险变成现实,就会造成损失或产生严重后
40、果。会造成损失或产生严重后果。进行风险分析,重视进行风险分析,重视风险并且有所防范,就可以最大限度减少风险的发风险并且有所防范,就可以最大限度减少风险的发生与损失。生与损失。48*第48页,本讲稿共53页风险分析的风险分析的 3 项活动项活动:1.风险识别风险识别 项目风险项目风险:指在预算、进度、人力、资源、客:指在预算、进度、人力、资源、客户等方面的潜在问题。户等方面的潜在问题。技术风险技术风险:指在设计、实现、维护等方面的问:指在设计、实现、维护等方面的问题。题。商业风险商业风险:包括市场、商业策略、推销策略等方:包括市场、商业策略、推销策略等方面的风险。面的风险。49*第49页,本讲稿
41、共53页2.风险预测风险预测 风险预测又称为风险估计,风险预测又称为风险估计,包括两个方面的内容:包括两个方面的内容:风险发生的可能性(概率):如极罕见、罕见、风险发生的可能性(概率):如极罕见、罕见、普通、可能、极可能等。普通、可能、极可能等。风险发生后的后果:如灾难性的、严重的、轻微风险发生后的后果:如灾难性的、严重的、轻微的、可忽略的,等等。的、可忽略的,等等。3.风险的驾驭和监控风险的驾驭和监控(风险控制风险控制)风险的驾驭和监控主要靠管理者的经验来实施,风险的驾驭和监控主要靠管理者的经验来实施,应该建立风险缓解、风险监控和管理计划。应该建立风险缓解、风险监控和管理计划。50*第50页
42、,本讲稿共53页2.6.3 项目实施计划(项目实施计划(软件计划)软件计划)软件计划(又称项目计划)包括以下软件计划(又称项目计划)包括以下 7 种主要类型:种主要类型:1.项目实施计划项目实施计划:这是最重要的软件计划这是最重要的软件计划,通常包括软件,通常包括软件目标、主要功能、进度安排、资源(包括硬件、软件、目标、主要功能、进度安排、资源(包括硬件、软件、人员、组织机构等)和费用预算等多个方面。人员、组织机构等)和费用预算等多个方面。2.质量保证计划质量保证计划 3.软件测试计划软件测试计划 4.文档编制计划文档编制计划 5.用户培训计划用户培训计划 6.综合支持计划综合支持计划 7.软
43、件分发计划软件分发计划51*第51页,本讲稿共53页项目实施计划是一种管理文档项目实施计划是一种管理文档,开发单位的,开发单位的管理人员根据这一计划安排和检查开发工作。管理人员根据这一计划安排和检查开发工作。52*第52页,本讲稿共53页项目实施计划项目实施计划1.系统概述系统概述 包包括括项项目目目目标标,主主要要功功能能,系系统统特特点点,以以及及关关于于开开发发工工作的安排等。作的安排等。2.系统资源系统资源 包包括括开开发发和和运运行行该该软软件件系系统统所所需需要要的的各各种种资资源源,如如硬硬件件、软件、人员和组织机构等。软件、人员和组织机构等。3.费用预算费用预算 分阶段的人员费用、机时费用及其它费用。分阶段的人员费用、机时费用及其它费用。4.进度安排进度安排 各阶段起止时间、完成文档及验收方式。各阶段起止时间、完成文档及验收方式。5.要交付的产品清单要交付的产品清单 图图12.9 项目实施计划的主要内容项目实施计划的主要内容53*第53页,本讲稿共53页