第3章软件项目全生命周期的阶段划分ppt课件_第1页
第3章软件项目全生命周期的阶段划分ppt课件_第2页
第3章软件项目全生命周期的阶段划分ppt课件_第3页
第3章软件项目全生命周期的阶段划分ppt课件_第4页
第3章软件项目全生命周期的阶段划分ppt课件_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第3章 软件工程全生命周期 的阶段划分 主要内容: 软件工程分类 软件工程全生命周期的阶段划分 软件工程各阶段之间的关系 软件工程生命周期中里程碑的设定与管理3.1 软件工程分类 根据实施主体的不同分为两大类: 1自主研发工程 对于立项的软件工程,采取自主开发和自主维护的方式进展。即立项单位本身就是工程开发单位,既是实施单位,也是受害单位。 由于整个工程的立项、开发在一个单位内部独立完成,整个开发过程只存在于本单位工程内部的组织和管理,不存在不同单位之间的协作,所以这类工程管理的难度要小些。 2外包软件工程 提出工程立项的单位本身不具备软件开发的才干,工程实施要借助于专业的软件研发机构来完成。

2、 由于工程主体方和工程实施方属于不同的单位,在工程实施过程中,由于利益及责任的不同,双方在工程的实施过程中存在着复杂的协作关系,呵斥工程在组织上和管理上存在较大的困难。 根据运用类型的不同也可分为两大类: 1系统软件 是支持计算机及运用软件集成化运转的根底平台及软件。 操作系统软件、目录效力软件、文件效力软件、通讯效力软件、数据库效力软件、言语编译软件等。 2运用软件。 是最终用户运用的用来提高办公效率的终端软件。 运用软件不像系统软件具有更广泛的通用性,它普通是为客户在某一个公用领域提供效力而定制的。 3.2 软件工程全生命周期的阶段划分3.2.1软件开发模型 在软件工程的实施过程中,选择有

3、效的开发模型对工程的胜利有很大的影响。比较典型的软件开发模型有瀑布模型、演化模型和螺旋模型。 (1)瀑布模型。 1970年,由Royce Winston提出,如图3-1所示。瀑布模型规定软件开发各阶段的活动依次是:用户提出软件需求,工程成员开展需求分析、系统设计、编码、测试、实施和运转维护等一系列的义务。模型中各阶段的活动从上一阶段向下一阶段逐级过渡,好像瀑布逐级下落,最终完成软件产品并交付用户运用。 其软件开发活动具有以下特点: 1)阶段性 要求在开发过程中前一阶段任务完成以后,后一阶段任务才干开场。 2)阶段评审 对每一阶段完成的任务都要进展评审,以利于尽早发现问题,防止后期的返工,假设评

4、审不合格,那么不能开场下一阶段任务。 3)文档管理 每个阶段都明确规定了要完成的任务。假设文档没有完成,就以为本阶段的任务没有完成。 瀑布模型为软件开发与维护提供了一种有效的工程管理方式。但在实践运用中,软件开发活动的各阶段间的关系并非是简单的线性关系,阶段评审能够会出现向上一阶段反响的景象,使模型中产生环路,像图3-1中虚线所示。 瀑布模型的缺乏: 由于开发阶段呈线性,当开发成果尚未经过测试阶段时,用户无法看到软件的运转效果,能够会存在需求方面的缺陷,呵斥开发出来的软件不是用户真正需求的软件,呵斥工程的返工或在维护中纠正需求的偏向。 由于固定顺序,前期任务中呵斥的偏向假设延续到后期阶段,所呵

5、斥的损失将会更大,工程的风险也就会越大。 (2)演化模型 是利用迭代的思想,使软件开发活动逐渐完善的机制。 该模型设计主要针对在用户需求阶段,难以给出准确、完好的用户需求的软件工程。在工程开场时,用户可以给出目的系统的中心功能需求,开发人员可以根据中心需求开发系统的中心模块。 系统中心模块开发完成后,交付用户试用,用户根据试用的结果,提 出细化和加强后的新的用户需求。开发人员可在新需求的根底上实施开发的迭代过程,以实现系统的最终目的。每一迭代过程均由需求、设计、编码、测试、集成等阶段组成。图32是采用演化模型开展软件工程的过程模型。 利用演化模型进展软件开发的最大优点或特点是在软件开发过程中,

6、假设一次迭代还不能满足用户的实践需求,可经过下一次的迭代完成,这样就可以在一定程度上减少软件开发的盲目性,提高软件的开发效率。 (3)螺旋模型 螺旋模型是在演化模型的根底上开展起来的。它在演化模型的根底上添加了风险分析机制。 它将软件工程开发划分为制定方案、风险分析、实施开发,以及客户评价四类活动。 软件风险是任何软件工程中普遍存在的问题,不同工程只是风险大小不同而已。工程规模越大、问题越复杂,资源、本钱、进度等要素的不确定性就越大,承当工程的风险也就越大。进展风险分析与管理的目的就是使人们在危害呵斥之前及时对风险进展识别、分析,采取对策,消除或减少风险所呵斥的损失。 如图3-3所示,软件工程

7、沿着螺旋式模型旋转在笛卡儿坐标的四个象限上。 1)制定方案 确定软件工程的目的,选定实施方案,定义工程的边境条件。 2)风险分析 分析所选方案,思索如何识别、预防、防止和去除风险。 3)工程实施 开展软件工程全生命周期的分析、设计、编码、 测试和实施等任务。 4)客户评价 评价软件工程各阶段的任务,提出修正性建议。 沿着螺旋线每旋转一周,表示开发出一个较前一个版本更为完善的软件新版本。 例如:在第一圈确定了初步目的、方案和限制后,转入右上象限,对风险进展识别和分析。假设风险过大,开发者和用户无法接受,工程有能够因此而终止。 在多数情况下会沿螺旋线继续执行下去,直到最终获得称心的软件成果。 但在

8、实际中,迭代结果必需尽快收敛到用户允许的或可接受的目的范围内。只需降低迭代次数、减少每次迭代的任务量,才干降低软件工程开发的时间和本钱;反之,假设迭代过程收敛很慢,每迭代一次任务量很大,由于时间和本钱上的开销太大,用户无法支持,软件工程开发能够会中途天折。 螺旋模型的优越性在于适宜大型软件的开发。可使开发人员和用户对每一个演化层出现的情况均有所了解,并对下一阶段任务做出正确的安排。 在实践运用过程中,假设用户提出了明确的业务需求,开发人员也正确了解了用户需求后,开发过程无需开发原型系统,整个开发过程可采用瀑布模型。 (4)模型的运用 在模型实践的运用不能生搬硬套现有的开发模型,而是要深化领会模

9、型的精神,结合本人软件工程的实践情况,选择符合本身工程特点的开发模型。 瀑布模型无法处理软件需求不明确或不准确的问题,会对整个软件开发任务带来严重影响,最终能够导致开发出的软件并不是用户真正需求的,且这一点只需在软件开发完成后才可以被发现,所以瀑布模型对于需求简单、明确的软件开发工程比较适宜。 演化模型有效地处理了瀑布模型的缺乏,利用原型技术可有效防备软件开发过程中的风险,但对风险的分析的预防机制略显缺乏,因此适宜规模中等的软件工程开发。 螺旋模型既承继了演化模型的特点,又有效地添加了风险预防和处理机制,适宜于大型规模的软件工程开发。 本书定义了如图3,4所示的软件工程的“螺旋渐进模型。 该模

10、型将整个软件开发过程划分为两个主要阶段。 第一阶段: 工程组成员根据用户的初步需求,利用快速原型技术完成系统原型的开发任务。经过用户试用原模型之后,提出对原模型的修正意见。 经过第一阶段的任务可实现两个目的:一是获取一个比较完好的用户需求,可有效地减少后续开发阶段的需求变卦和任务反复;二是在用户需求根本清楚的情况下,经过对工程潜在风险的分析,使开发方和用户方对工程整体实施情况有一个比较清楚的认识和了解,有利于提早做好各项任务安排,预防和减少在工程实施过程中的风险。 第二阶段: 工程组成员根据第一阶段用户的修正报告和最后完成的需求定义,进展系统的设计和实现任务,完成符合用户实践需求的系统开发任务

11、,经过用户的验收测试后,进展最后的工程验收任务。 3.2.2软件工程生命周期阶段划分 不同的软件开发模型,生命周期的阶段划分会有所差别。 这里所论述的软件工程生命周期阶段划分是以经典“瀑布模型为原型,吸纳其他典型软件开发模型的知识,再加上现代软件工程任务开展的特点提出的。如图3-5所示。 整个软件开发活动可划分为四个主要的任务阶段:立项、设计、实现及收尾。每个阶段又包含多个不同的子过程,各个子过程之间关系严密,并且并行的、反复循环的任务内容比较频繁。 (1)工程立项。 软件工程立项任务有两个方面:工程定义和工程启动。 经过工程的可行性分析研讨处理工程能否立项。对于曾经立项的工程,指定工程担任人

12、,制定工程实施的全面任务方案。 在这一阶段中,工程的启开任务要在确定工程必需开展的情况下才干开场。 2软件系统设计 软件系统设计包括需求分析和系统设计两方面的任务。 需求分析是系统设计(包括概要设计、详细设计等)的前提,也是系统设计内容的重要组成部分。 在实践任务中,在软件设计的前期阶段,就曾经开场了一些重要的难度较大的开发实验任务,也只需这样才干确保设计出的逻辑系统可以实现。 3软件系统实现 实现阶段的义务包括编码、测试、试运转等多个延续循环往复的软件开发任务,也正是这些任务的不断反复与循环才最终获得客户称心的交付成果,它是设计模型的物理实现,是直接面向用户的真实系统。 普通在软件工程管理过

13、程中,系统设计与系统实现各占整个工程任务量的三分之一,其他内容占工程总任务量的三分之一。 4收尾阶段 收尾阶段包括工程验收、系统运转、系统维护、直到软件系统生命周期终了等一系列收尾过程的活动。 5各阶段之间的关系 各阶段之间:1既有严厉的任务接续关系,即前一阶段任务完成以后,后一阶段任务才干开场;2同时又存在一定的任务并行性以及任务反响与循环,如在前一阶段任务即将终了前,开场着手下一阶段的方案制定。3.2.2.1工程定义 工程定义阶段主要思索工程的立项问题,详细义务是完成问题定义与工程可行性分析、研讨与论证任务,确定能否立项。 (1)问题定义 软件工程立项的第一个义务是问题定义,确定所要实现的

14、软件系统的背景、目的、功能、性能以及预期到达的效果,并进展本钱的粗略估计。 问题定义通常很简短,但在性质上它是一个相对独立的步骤,不应该和其他步骤混淆,更不应该省略。问题定义清楚后,构成一份关于该工程的规模、目的及本钱粗略估计的报告书。 (2)可行性分析 可行性分析的主要目的是论证工程在时间、资源、资金、效果、实现技术和方法等方面的必要性和能够性。主要包括经济可行性、技术可行性与操作可行性等方面。 1)经济可行性 对开发工程进展本钱效益分析,评价工程的开发本钱,估算工程本钱能否会超越工程预期的全部利润。 其中本钱费用包括购置软硬件及其相关设备的费用,系统开发费用,系统安装、运转、维护费用,人员

15、培训费用等。 效益包括经济效益和社会效益。经济效短可以经过直接的或统计的方法估算,社会效益只能用定性的方法估算。 2)技术可行性 根据需求定义所要实现系统功能、性能等各方面,从软件技术的角度研讨系统实现的能够性。 技术可行性分析是系统开发过程中难度最大的任务。系统目的、功能和性能的不确定性往往会给技术可行性论证带来许多困难。 技术可行性研讨包括:风险分析、资源分析和技术分析。 风险分析的义务是在给定的约束条件下,判别能否设计并实现系统所需功能和性能。 资源分析的义务是论证能否具备系统开发所需的各类人员、软件、硬件资源和任务环境等。 技术分析的义务是当前的科学技术能否支持系统开发的全过程以及拟采

16、用的技术道路等。 3)操作可行性 包括政策、法律等要素。政策要素在软件开发工程中有着重要的作用,假设工程得到政策的扶持,往往在人力、财力等方面都会有充分的保证。另外,在系统开发过程中能够涉及的各种合同、侵权、责任以及各种与法律相抵触的问题,也必需加以仔细研讨。 (3)交付成果 在可行性分析阶段,应提出实现系统的各种初步方案,并构成书面报告即可行性分析报告,作为工程立项阶段的交付成果,它是工程能否继续开展研讨与开发的重要根据。 本阶段的任务以工程的受害者即客户为中心开展任务。在我国,传统的做法是客户本人经过多方调查来完成论证,但往往由于客户对软件及其运用效果不能有很多直观的印象、对软件运用后的效

17、益很难估算呵斥可行性论证阶段缺乏科学的根据。 3.2.2.2工程启动 工程的可行性研讨阐明工程可行后,就应立刻启动。 软件工程启动阶段包括工程方案的制定、工程的招招标、系统开发环境与运转环境确实定与购买、工程经理的选择、工程团队的方案和组织等、各种合同的签署等一系列软件工程开发前的预备任务和根底性任务。 软件工程启动过程完成的重要标志有:成立工程管理委员会、任命工程经理、组织工程团队、获取工程答应证、签署开发协议、预备好一切软件开发的根底环境等。3.2.2.3需求分析 客户需求是软件开发的根据。软件需求分析是用户对目的软件系统在功能、行为、性能、设计约束等方面的了解、认识、定义和期望。经过对相

18、应问题及系统环境的了解与分析,为问题涉及的信息、功能及系统行为建立软件系统模型,实现将用户需求准确化、完全化,最终构成需求规格阐明书。 需求分析主要包括三个子阶段的工:作,即问题分析、需求描画及需求评审。 (1)问题分析阶段 分析人员经过对环境及问题的了解、分析和综合,并在用户的协助下对相互冲突的要求进展折衷,努力去除用户需求的模糊性、二义性。 在这一阶段,分析人员一方面应根据本人对原始问题的了解和软件开发阅历结合起来,以便发现片面性或短期行为导致的不合理需求;另一方面要发现用户未认识到的、有价值的潜在需求,然后为原始问题及其软件建立需求模型。 (2)需求描画阶段 以问题分析为根底,并思索问题

19、的软件可解性,生成需求规格阐明和初步的用户手册。 需求规格阐明包含对目的软件系统的外部行为的完好描画、需求验证规范以及用户在性能、质量、可维护性等方面的要求。 用户手册包括用户界面描画以及有关目的软件运用方法的初步想象。 (3)需求评审阶段 对完成的需求规格阐明和初步的用户手册进展复检,以确保软件需求的全面性、准确性和一致性。 并运用户和软件设计人员对需求规格阐明及用户手册的了解达成一致。在需求规格阐明得到用户和软件开发方的一致确认后,它应成为用户方与开发方之间的合同,任何改动都该当由提出问题的一方承当责任。3.2.2.4系统设计 主要完成系统的总体设计、详细设计、边境设计、信息模型设计、过程

20、设计、功能设计以及软硬件环境的搭建与预备等任务。 在勾画出系统总体逻辑框架的同时,要详细划分出组成系统的各个物理元素程序、文件、数据库、人工过程和文档等,并确定 系统功能模块及其之间的相互关系,系统功能模块的划分遵照了模块内的高内聚,模块间低耦合的根本原那么。设计阶段还涉及各种流行的设计思想和方法,交付成果是各种版本的系统设计报告:详细内容请参考第6章。3.2.2.5编码实现 编码实现是系统目的实现的详细过程以及完成软件系统的程序编写任务。 本阶段首先需求思索开发本软件工程要用到何种程序设计言语以及采用哪种数据库管理系统,其次是编程思绪和详细算法的实现与优化等问题。 详细内容参见第7章。3.2

21、.2.6系统测试 系统测试是针对软件工程交付成果的正确性、科学性以及到达目的系统的逼近程度进展测试,测试的对象是软件系统或软件产品,测试的目的是为了尽能够早地发现并修正软件中存在的错误。 软件测试按范围和内容可以划分为部分测试和集成测试,也称为单元测试和综合测试两方面的内容。单元测试义务由程序开发者和专业测试者共同完成;而综合测试那么由专门的软件测试机构担任。 需求阐明的是,不能保证经过测试的程序一定正确。 测试只能找出错误,而不能证明程序中没有错误。 在软件开发过程的各个阶段,测试任务是不延续的,随时进展的,软件投入运用后,用户将扮演测试者的角色。 软件系统典型的测试方法有白盒测试和黑盒测试

22、两种方法,详细内容请参考第8章。3.2.2.7系统试运转 软件产品经过正确性和完好性测试后,软件工程成果最终将交付给用户。 在工程验收之前,系统试运转是必需进展的重要实际环节,很多软件系统商也称之为系统实施过程。试运转结果和运转报告与记录将构成用户运用报告,它是软件工程能否经过最终验收的重要根据。 软件系统试运转是软件系统客户化过程的一部分,是检验软件系统能否满足用户需求的关键阶段。 软件系统客户化过程包括很多内容,如系统功能定制,用户权限分配,客户数据装载、数据转换、新老系统切换、客户培训等一些将软件系统交付给客户运用的过程和环节。详细内容参见第9章。3.2.2.8工程验收 软件工程终了时,

23、工程开发方将软件产品交付给用户前,工程接纳方将与开发方、监理方以及业内专家等需求对工程的任务成果进展全面审查和考核,查核应交付的软件产品能否满足用户需求。 假设检查合格,将工程成果交付工程接纳方,完成系统切换任务,使新系统正式投入运用。 工程验收后,整个软件工程即告终了。3.2.2.9运转维护 新系统交付运用后,开发方按照合同进入系统的免费或有偿维护效力阶段,即运转维护。 由于软件行业的开展非常迅速,软件产品更新换代速度也比较快,用户在认识、了解和熟习软件系统后,将会根据新的业务提出新的需求。 在运转维护期,假设用户提出的要求是本工程初始界定的目的范围内,那么开发方应尽其责进展完善;假设提出的需求超出了工程目的范围,双方可以商量再立一个新的工程来开展任务,切忌客户随意提要求,开发方信口答应的不规范做法。3.3软件工程各阶段之间的关系 (1)层次与承继关系 在软件工程的开发过程中,往往上一个阶段的输出就是下一个阶段的输入,下一阶段的成果是对上一阶段成果的丰富、完善、加强和详细化与实现。 在实践任务开展过程中,各个阶段的任务会出现一定的并行性,不一定完全按照必需前一个阶段任务完成和评审后,才允许开展

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论