软件系统开发方法.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《软件系统开发方法.ppt》由会员分享,可在线阅读,更多相关《软件系统开发方法.ppt(172页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第3章 软件系统开发方法v3.1 软件开发生命周期v3.2 软件开发模型v3.3 传统软件开发方法v3.4 面向对象软件开发方法v3.5 RUP统一软件开发过程v3.6 敏捷软件开发技术12/4/20221v在软件开发的早期,人们常用的软件开发方法是边写边改法。这种开发方法在应用开发中最为快捷,但由于其开发的随意性,因而也最为低效。同时,使用该方法的项目常常因为管理失控而终结。基于这种情况,业界人士借鉴其它工程领域的方法,提出了许多有规则可言的软件系统开发方法。最著名的当数“瀑布式”方法了,即把软件开发过程分解成这样一些阶段:制定开发计划、需求分析和定义、系统设计、编码实现、测试验证。然而,在
2、软件开发实践中完全遵循这种过程取得成功的案例并不多。其原因主要在于这种方法有一个前提条件,那就是系统需求必须明确、不变。但在现实应用中,这几乎是不可能的。需求通常模糊不清,并且在系统开发期间随时都有可能发生变化。因此软件开发要求采用的方法过程也必须能适应这种变化,这就出现了其它一些软件开发方法,如原型法、敏捷方法等。12/4/202223.1 软件开发生命周期v正如任何事物一样,软件也有其孕育、诞生、成长、成熟以及衰亡的生命过程,一般称其为“软件生命周期”。12/4/202233.1 软件开发生命周期v根据这一思想,可以得到软件生命周期的六个阶段:制定计划需求分析和定义设计编码测试运行及维护。
3、12/4/202243.1 软件开发生命周期v(1)制定计划(Planning)团队人员:分析人员、领域专家及用户等。这个阶段的任务是确定待开发软件系统的总体目标,给出软件系统的功能、性能及接口等方面的要求。由团队人员协作,共同研究完成该项软件开发任务的技术、经济、社会可行性,探讨解决问题的各种可能方案,并对现有可利用资源、成本、可取得的效益、开发进度等做出估计,制定出完成该项开发任务的实施计划,并编写可行性研究报告。12/4/202253.1 软件开发生命周期v(2)需求分析和定义(Requirement Analysis and Definition)团队人员:分析人员、测试人员、领域专家
4、及用户等。该阶段对于待开发软件项目获取的用户需求进行分析,并给出详细定义。这个阶段团队人员必须协同工作,让软件开发人员充分理解用户的各项需求,并确定哪些需求是可以满足的,哪些需求在现有技术下是不能满足的,对能满足的需求加以确切的描述。然后,编写出软件需求规格说明书(SRS)或系统功能说明书,以及初步的系统用户手册、测试用例等。为了团队人员之间能很好地沟通,从这个阶段开始通常会采用一些标准的建模语言(如:统一建模语言,Unified Modeling Language,简称UML)对系统建模。12/4/202263.1 软件开发生命周期v(3)软件设计(Software Design)团队人员:
5、架构设计人员、软件设计人员、数据库设计员、用户界面设计员、封装体设计员和集成人员、测试人员等。这个阶段通常分为两部分:概要设计和详细设计。在软件设计阶段,软件开发人员把已经经过用户和领域专家确认的各项需求转换成相应的软件体系结构。结构中的每一成份都是意义明确的子系统、模块或用例,每个部分都和某些需求相对应,进行所谓的概要设计。然后对每个模块或用例要完成的工作采用合适的技术进行具体的描述,如画出模块的程序流程图或描述类的属性、操作等,为源程序的编写工作打下基础,即所谓的详细设计。12/4/202273.1 软件开发生命周期v(4)编码(Coding)团队人员:编程人员、测试人员等。将详细设计阶段
6、所描述的模块程序流程图或类的设计转换为计算机能处理的程序代码,即使用特定的程序设计语言表示的源程序。目前,通常使用高级程序设计语言编写程序,如C语言、Java语言等。12/4/202283.1 软件开发生命周期v(5)软件测试(Software Testing)团队人员:测试人员、开发人员、用户等。测试是保证软件质量的重要手段,其主要目的是通过软件测试暴露出软件中隐藏的错误和缺陷。软件测试的主要方式是在设计测试用例的基础上检验软件的各个组成部分。软件测试一般包括单元测试、集成测试、系统测试、验收测试等几个阶段。首先进行单元测试,查找各模块或类在功能和结构上存在的问题并加以修改,这个过程会反复进
7、行;其次进行集成测试,验证各软件单元集成后形成的模块能否达到概要设计规格说明中各模块的设计目标;然后进行系统测试,目的是对最终软件系统进行全面的测试,确保最终软件系统满足产品需求并且遵循系统设计;最后进行确认测试,以检查已实现的软件是否满足了需求规格说明书中确定的各种需求,包括功能需求和性能需求,决定已开发的软件能否交付用户使用。12/4/202293.1 软件开发生命周期v(6)运行/维护(Running/Maintenance)团队人员:系统支持人员等。已交付的软件投入正式使用,软件便进入运行阶段。软件在运行过程中可能会因为发现了软件中存在的错误需要修改;或为了适应变化了的软件工作环境,需
8、做一些变更;或为了增强软件的功能需做变更等。这就称为软件维护。12/4/2022103.2 软件开发模型v从上节的内容中我们知道,一个软件的生命周期包含了若干个活动,那么,这些活动应该如何组织呢?不同的组织方式可能会产生很大差别的结果。v实际上,与其它工程项目中安排各道工序类似,为了反应软件开发生命周期内的各种活动应如何组织,各活动之间应如何衔接,需要用软件开发模型做出直观的图示来表达。12/4/2022113.2 软件开发模型v软件开发模型是从软件项目需求定义到软件经使用后被废弃为止,跨越整个软件生命周期的系统开发、运作和维护的全部过程、活动和任务的结构框架,它给出了软件开发活动各个阶段之间
9、的关系。每种软件生命周期模型代表一种软件开发与管理的组织过程。12/4/2022123.2 软件开发模型v迄今为止,出现了多种软件开发模型。如:迄今为止,出现了多种软件开发模型。如:瀑布模型螺旋模型演化模型喷泉模型智能模型增量模型原型化模型 12/4/2022133.2.1 瀑布模型v瀑布模型将软件生命周期划分为制定开发计划、需求分析和定义、软件设计、程序编写、软件测试和运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。12/4/2022143.2.1 瀑布模型v瀑布模型是最早出现的软件开发模型,在软件工程中占有十分重要的地位,它提供了软件开发的基本框
10、架。瀑布模型规定了各项软件工程活动,其核心思想是按工序将问题化简,将功能的实现与设计分开,便于分工协作,即采用结构化的分析与设计方法将逻辑实现与物理实现分开。12/4/2022153.2.1 瀑布模型v瀑布模型每项开发活动均应具有下述特征:(1)从上一项活动接收本项活动的工作对象,作为本项活动的输入;(2)利用这一输入实施本项活动应完成的任务;(3)给出本项活动的工作成果,作为输出传递给下一项活动;(4)对本项活动实施的工作进行评审。若得到确认,则继续下一项活动;否则,返回到前项活动,或更前一项活动进行返工。12/4/2022163.2.1 瀑布模型v瀑布模型中软件维护的特点:瀑布模型中软件维
11、护的特点:(1)维护的具体要求是在软件投入使用以后提出来的,经过评价,确定需求变更的必要性,才进行维护工作。(2)维护中对软件的变更仍然要经历软件生命周期在开发中已经历过的各项活动。12/4/2022173.2.1 瀑布模型v瀑布模型的优点:瀑布模型的优点:(1)为软件项目提供了按阶段划分的检查点,强调开发的阶段性。(2)强调早期计划及需求调查。(3)强调产品测试和阶段评审。(4)强调文档的重要性。12/4/2022183.2.1 瀑布模型v瀑布模型的缺点:瀑布模型的缺点:(1)在项目各个阶段之间极少有反馈,往往会将早期的错误引入到后期各个阶段。(2)依赖于早期进行的唯一一次需求调查,用户参与
12、较少,不能适应需求的变化。(3)只有在项目生命周期的后期才能看到结果,可能与用户的需求出现很大的偏差,使风险推迟到项目开发的后期阶段才显露出来,因而失去及早纠正的机会。(4)通过过多的强制完成日期和里程碑来跟踪各个项目阶段,灵活性较差。12/4/2022193.2.1 瀑布模型v瀑布模型缺乏灵活性,无法通过开发活动来理清本来不够明确的需求,这将可能导致直到软件开发完成时才发现所开发的软件并非用户所需要的,此时必将付出高额的代价才能纠正出现的偏差。v瀑布模型一般适用于功能、性能明确、完整、无重大变化的软件系统的开发。如操作系统、编译系统等系统软件的开发。v当用户需求不明确或经常变更时,不宜采用瀑
13、布模型,可以考虑其它的架构来进行项目管理,如:演化模型等。12/4/2022203.2.2 演化模型v演化模型主要针对事先不能完整定义需求的软件开发。用户可以给出待开发系统的核心需求,并且当看到核心需求实现后,能够有效地提出反馈,以支持系统的最终设计和实现。12/4/2022213.2.2 演化模型v该模型可以表示为:第一次迭代(需求设计编码测试集成)反馈第二次迭代(需求设计编码测试集成)反馈.12/4/2022223.2.2 演化模型12/4/2022233.2.2 演化模型v演化模型的主要优点:演化模型的主要优点:(1)用户能在开发过程中而不是开发接近尾声时看到自己所需要的软件产品。对发现
14、的问题能够提早解决。(2)在一定程度上减少了软件开发活动的盲目性。如果在某次迭代中,其需求没有满足用户的要求,软件开发人员可根据用户的反馈信息在下一次迭代中予以修正。(3)将系统中难度较大、风险较高的部分安排在早期的迭代中,可增加项目的成功率。12/4/2022243.2.2 演化模型v演化模型的缺点演化模型的缺点(1)由于项目需求在开发初期不可能完全弄清楚,这样会给系统总体设计带来很大的困难,并影响系统设计的完整性。(2)如果在开发过程中缺乏严格的过程管理,演化模型很可能退化为边写边改模式。(3)如果没有一定的约束条件,可能永远无法得到一个最终的软件产品。12/4/2022253.2.2 演
15、化模型v采用演化模型的软件开发过程,实际上是从最初的原型逐步演化成最终软件产品的过程。在整个演化过程中,不断修正缺陷,以开发出最终满足用户需要的软件产品。v演化模型特别适用于用户需求不够明确的软件开发项目,但不适宜用于大而复杂的系统。12/4/2022263.2.3 螺旋模型v对于复杂的大型软件系统,开发一个原型往往很难达到要求,显然用单一的演化模型很难开发出这样的软件系统。那么,究竟要使用什么样的模型才适合用来开发大型而复杂的软件系统呢?答案就是螺旋模型。12/4/2022273.2.3 螺旋模型v螺旋模型沿着螺线旋转,在笛卡尔坐标的四个象限上分别表达了每个迭代周期的四个阶段,从左象限按顺时
16、针方向依次为:12/4/2022283.2.3 螺旋模型v(1)制定计划确定该阶段的软件目标,选定为完成这些目标的实施方案,设定这些方案的约束条件。v(2)风险分析分析所选方案,识别并努力消除各种潜在的风险,通常用构建原型的方法来消除风险。如果不能消除风险,则停止开发工作或降低软件项目规模。如果成功地消除了所有风险,则转向下一个阶段。v(3)实施工程实施软件开发。这个阶段相当于一个纯粹的瀑布模型。v(4)用户评估由用户评价开发工作,提出修改建议。12/4/2022293.2.3 螺旋模型v螺旋模型将瀑布模型和演化模型结合起来,吸取了两者的优点,并加入了两种模型都忽略了的风险分析,弥补了两种模型
17、的不足。12/4/2022303.2.3 螺旋模型v软件风险是任何软件开发项目中普遍存在的实际问题,项目规模越大,问题越复杂,资源、成本、进度等因素的不确定性就越大,承担该项目所冒的风险也就越大。软件风险可能在不同程度上损害软件的开发过程和软件产品的质量。因此,在软件开发过程中必须及时对风险进行识别、分析,采取应有的措施,以消除或较少风险的损害。12/4/2022313.2.3 螺旋模型v在螺旋模型中,沿着螺线由内向外每旋转一圈,也就是每完成一次迭代过程,软件开发就前进一个层次,开发出一个更加完善的软件版本。在每一圈螺线上,风险分析作为开发是否能够继续下去的判断点。假如风险太大,开发人员和用户
18、无法承受,开发项目有可能被终止。但多数情况下沿螺线的活动会继续下去,并由内向外逐步延伸,最终得到用户所期望的系统。12/4/2022323.2.3 螺旋模型v螺旋模型的优点:螺旋模型的优点:(1)设计上的灵活性,可以保证在项目的各个阶段进行变更。(2)以小的分段来构建大型系统,使资源、成本和进度的估计变得更加简单容易。(3)用户始终参与到每个阶段的开发中,保证了项目的正确性与可控性。12/4/2022333.2.3 螺旋模型v螺旋模型的缺点:螺旋模型的缺点:(1)采用螺旋模型需要具有丰富的风险评估经验和专门知识,在风险较大的项目开发中,如果未能及时识别出潜在的风险,或者消除风险的能力不足,都会
19、造成极其重大的损失。(2)过多的迭代次数会增加软件开发成本,延迟交付使用的时间。12/4/2022343.2.3 螺旋模型v螺旋模型支持需求不明确,特别是大型软件系统的开发,并支持面向规格说明、面向过程、面向对象等多种软件开发方法。由于螺旋模型是以风险分析驱动的,一旦在开发过程中风险过大就要停止继续开发,因此,螺旋模型比较适合应用于产品研发或机构内部大型的复杂系统的开发,而不适合用于合同项目的开发。如果要将螺旋模型作为合同项目的开发模型,则必须在签订合同之前考虑清楚所有的开发风险,否则,在开发过程中如果由于风险过大而中途停止开发,就会赔偿经济损失或者承担法律责任。12/4/2022353.2.
20、4 增量模型v采用瀑布模型或演化模型开发项目时,目标都是一次性就把一个满足所有需求的产品提交给用户。然而,增量模型则与之不同,它分批地逐步向用户提交可操作的产品。12/4/2022363.2.4 增量模型v增量模型融合了瀑布模型的基本成分和快速原型模型的迭代特征。该模型采用随着日程的进展而交错进行的线性序列,每一个线性序列产生软件的一个可发布的“增量”。v当使用增量模型时,第1个增量往往是核心产品,即第1个增量实现了基本的需求,但很多补充的特征还没有发布。客户对每一个增量的使用和评估都作为下一个增量发布的新特征和功能,这个过程在每一个增量发布后不断重复,直到产生了最终的完善产品。v增量模型强调
21、每一个增量均发布一个可操作的产品。12/4/2022373.2.4 增量模型12/4/2022383.2.4 增量模型v增量模型的优点:增量模型的优点:(1)人员分配灵活,刚开始不用投入大量人力资源,可以避免不必要的浪费。(2)重要功能被首先交付,可以获得最多的测试,保证软件产品的质量。(3)早期发布的可操作产品可以作为原型为后期增量开发提供需求。(4)在较短时间内向用户提交部分工作的产品,可以让用户对开发项目和开发团队有信心。(5)用户能看到所开发软件的中间版本,可以使最终产品不至于偏离用户的需求。(6)可以将技术难度大的部分作为早期的增量,能够有效地管理与控制技术风险。12/4/20223
22、93.2.4 增量模型v增量模型的缺点:增量模型的缺点:(1)在开发过程中,需求的变化是不可避免的。如果不能有效地控制并管理好需求的变更,增量模型很容易退化为边写边改模式,从而使软件过程的控制失去整体性。(2)由于各个增量逐渐并入已有的结构,所以加入的增量部分不能破坏已构造好的系统部分,这需要软件具备开放式的体系结构,对开发团队的技术要求更高。(3)难以对所有增量进行有效的集成。12/4/2022403.2.4 增量模型v增量模型与原型模型、演化模型一样,本质上是迭代的,都能应用在需求不明确、需求变化大的软件项目的开发中,但与其它迭代式的模型不一样的是,增量模型强调每一个增量均发布一个可操作产
23、品。早期的增量是最终产品的“可拆卸”版本。用户可对每一个可操作产品进行评估,能很好地满足用户需求,大大提高了项目的成功率。12/4/2022413.3 传统软件开发方法v在传统的软件开发过程中,最重要的是明确和分解系统功能。这种方法看起来很符合人们处理事务的流程,是实现预期目标的最直接的途径。然而,一旦系统的需求发生变化,这种基于功能分解的系统将会需要大量的修改工作。随着计算机技术、网络技术的不断发展,计算机应用范围不断扩大,软件系统的规模也变得越来越庞大。基于传统生命周期的结构化软件开发方法逐渐暴露出了它自身的一些缺点:难以理解和维护、可重用性差等。v这些缺点是由什么原因引起的?12/4/2
24、022423.3 传统软件开发方法v在结构化软件开发(传统的面向过程的软件开发方法)的整个过程中,重点放在了操作上。这些操作是通过函数、模块或一条简单的指令来执行的。在整个开发过程中,过程化程序设计方法完全将程序中的一个非常重要的方面数据,与操作分离开来,使得数据可以被所有函数或过程完全访问。12/4/2022433.3 传统软件开发方法v传统软件开发方法遵循软件生命周期,整个开发过程包括可行性研究、需求分析、总体设计、详细设计、编码、测试和维护等六个阶段。12/4/2022443.3 传统软件开发方法v结构化方法是传统软件开发方法的一个很好的例子,包括结构化分析、结构化设计、结构化编程和结构
25、化测试等。12/4/2022453.3 传统软件开发方法v结构化分析的工具是数据流图和数据字典,用来表达和理解问题的数据域和功能域。数据域包括数据流、数据内容和数据结构,而功能域则反映这三个方面的控制信息。通常将一个复杂问题按功能进行分解并逐层细化。12/4/2022463.3 传统软件开发方法v结构化设计的基本思想是模块化思想。将数据流图进一步细化到每一个子功能都清晰易懂,每个模块完成一个子功能,每层模块合成一个高一级的功能。总体设计阶段包括数据库结构设计、用户界面设计、功能模块结构设计等。详细设计是根据每个模块的功能设计实现算法以及实现这些算法的逻辑控制流程。详细设计的表示工具有程序流程图
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 系统 开发 方法
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内