软件工程ch2软件过程_第1页
软件工程ch2软件过程_第2页
软件工程ch2软件过程_第3页
软件工程ch2软件过程_第4页
软件工程ch2软件过程_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

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

文档简介

1、软件过程陈第二讲 软件过程 软件过程软件过程模型模型的选择案例RUP统一过程敏捷软件开发2建造一个房屋的过程3麦当劳薯条的制作过程4任务思维模式问题在哪里?问题假设:软件需求可以在开发初期完全确定下来与用户的交互只是发生在确定需求之时和发布 之后现实情况很少符合上述假设5过程思维模式好处在哪里?好处通过提高可见性来降低开发风险在项目进展过程中基于用户的反馈进行项目变更标准化、预见性、生产率、高质量、计划进度和预算的能力6软件过程的概念软件过程是软件工程为了获得软件而在软件工具的支持下实施的一系列软件工程活动。软件过程应该明确定义团队的工作和职责所执行的活动及其顺序关系活动的内容和步骤为保证质量

2、和协调变化所需要的管理软件开发各个阶段完成的里程碑软件过程的目标 标准化、预见性、生产率、高质量、计划进度和预算的能力7软件过程的概念通俗来说,软件过程包含了谁在什么时候按照什么样的规则完成相应的工作。也就是3W1H8软件过程的运行机制9定义软件过程的步骤定义则:何时开始步骤? 可重复的任务:应该做什么? 确认:如何知道做得怎样?则:已经完成了吗?10过程定义的模板11项目目的1. 目标该过程的目的是什么?2. 所有者谁是负责该过程?谁负责文档、交流、维护和持续改进此过程?3. 输入该过程的输入是什么?这些输入来自何处?这些输入有什么约束和依赖?4. 输出该过程的输出是什么?这些输出去向如何?

3、这些输出有什么约束和依赖?5.则该过程的启动要求是什么?6.则该过程的结束要求是什么?7. 任务实现该过程目标需要什么任务?8. 依赖约束该过程任务或步骤中有什么依赖或约束?9. 确认该过程的度量标准是什么?如何知道任务是否达到预期?如何知道目标是否满足?软件过程的基本活动软件过程的四个基本活动规格说明(Specification)定义软件功能以及对其使用的限制软件开发(Development) 设计和实现满足规格说明的软件软件确认(Validation)验证软件以保证能够满足客户的要求软件演化(Evolution)改进软件以适应不断变化的需求不同的组织或软件类型拥有不同的软件开发活动。12规

4、格说明软件规格说明是确定系统需要的服务以及运行 与开发中所受约束的过程,也称为需求工程。需求工程的过程:13软件设计与实现软件设计是根据需求规格说明,确定软件体系结构,进一步设计每个系统部件的实现算法、数据 结构及其接口等。软件实现是将软件设计转换成程序代码。软件设计的过程:14软件确认验证和确认(V&V)需要指出软件是否符合规格说明以及是否满足客户的需求。 验证和确认包括检查和评审过程以及系统测试 系统测试是使用由规格说明产生的测试用例执行软件的过程软件测试过程15软件演化软件的内在本质是灵活的和可变的 随着业务需求的变化,软件必须进化和变更 尽管在开发过程和演化(维护)过程之间但是

5、现实中全新的系统越来越少认识软件演化过程划分,好的软件需要维护维护软件的成本是很高的,应该在开发阶段考虑维护的问题文档是很重要的,但在实际开发中经常或缺少文档的情况文档过时16案例:IBM 开发过程流程17案例:设计规格说明阶段则由计划和开发决定是否在编码之前需要更详细的设计规格说明则设计规格说明书通过批准输入 与该模块相关的功能规格说明输出经批准的设计规格说明书与所批准的设计规格说明书相关的配置项评审文档的质量批准文档的质量18案例:设计规格说明阶段设计规格说明的评审者固定评审人计划,开发,功能测试(由计划相关组件的开发决定)可用性测试代表(如果在功能规格说明或用户接口文档中缺少附加的外部接

6、口细节)可选评审人开发团队系统测试和性能测试,文档编写,可用性测试设计规格说明的批准者开发19案例:设计规格说明阶段流程 设计围决定所设计规格说明书的数量和范 设计规格说明参考模板创建文档 将设计规格说明书发布在配置库中 评审文档 开发批准所有的设计规格说明书20课程实验项目的软件过程21第二讲 软件过程软件过程 软件过程模型模型的选择案例RUP统一过程敏捷软件开发22软件过程模型软件过程模型:描述软件过程的整体框架 软件过程模型是对实际过程的抽象描述 包括软件过程的活动、软件以及参与的不同包括:瀑布模型快速模型螺旋模型增量模型形式化方法模型基于组件的开发 通用软件过程模型23瀑布模型24带反

7、馈的瀑布模型发现问题,要反馈到前面的有关阶段,确认之后再转入下一阶段的工作25V字型瀑布模型 分析设计过程与软件测试过程一一对应; 强化了软件分析设计和测试的关系; 增强了软件质量保证。26编码调试单元测试详细设计集成测试概要设计确认测试需求分析运行维护可行性研究瀑布模型适用 在开发的早期阶段软件需求被完整确定。 实际项目开发很少是线性过程;客户很难明确描述软件需求。缺点 各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量; 开发过程中很难响应客户的变更要求; 早期的错误可能要等到开发后期的测试阶段才能发现,进而带来严重的后果。27快速快速件需要迅速建造一个可以运行的软,以便理

8、解和澄清问题,使开发人员与用户达成共识。28快速模型目的 尽早与用户见面,减少开发风险和需求不确定性缺点系统的内部结构可能不好 开发具适用需要掌握建立快速的开发技术和工 小型或中等规模的交互式系统 大型系统的某些部分,例如用户界面 生命周期较短的系统29螺旋模型螺旋模型沿着螺线旋转(一个螺旋式周期 ), 在四个象限上分别表达四个方面的活动,即: 制定计划确定软件目标,选定实施方案,弄清项目开发的限制,选定完成目标的策略风险分析分析所选方案,考虑如何识别和消除风险,风险角度分析该策略实施工程实施软件开发,启动一个开发阶段客户评估评价议,计划下一轮的工作特点开发工作,提出建 瀑布模型+快速 迭代过

9、程+风险分析30螺旋31螺旋模型优点关注软件的重用;关注早期错误的消除; 将质量目标放在首位;边学习、边建模;边开发、边使用、。缺点风险分析需要成本,影响件项目;,所以只适于大规模软客户未必能接受,所以往往适应于内部的大规模软件开发;需要风险评估的经验,否则会带来更大风险;由于需求的不确定性,软件开发初期无法进行体系结构设计,多次迭代会导致软件体系结构变坏,影响软件理解和维护。32增量模型33增量模型优点: 整个被分解成若干个构件逐步交付,用户可以不断地看到所开发软件的可运行中间版本 将早期增量作为 降低开发风险 重要功能被首先交付,从而使其得到最多的测试缺点: 需要软件具备开放式的体系结构

10、需求难以在增量实现之前详细定义,因此增量与有助于明确后期增量的需求需求的准确比较以及所有增量的有效集成可能会 容易去整体性为边做方式,使软件过程的失34形式化方法模型形式化方法模型是采用形式化的数学方法将系统描述转换成可执行的程序。35形式化方法模型适用: 特别适合于那些对安全性、可靠性和性要求极高的软件系统,这些系统需要在投入运行前进行验证优点: 由于数学方法具有严密性和准确性,形式化方法开发过程所交付的软件系统具有较少的缺陷和较高的安全性缺点: 开发需要具备一定技能并经过特殊训练 形式化描述和转换是一项费时费力的工作 现实应用的系统大多数是交互性强的软件,但是这些系统难以用形式化方法进行描

11、述36基于组件的开发模型基于组件的开发技术是使用可重用的组件或商业组件建立复杂的软件系统。37基于组件的开发模型组件开发技术的两个重要因素 基于组件的软件体系结构 基于组件的开发过程优点: 充分体现软件复用的思想 实现快速交付软件缺点: 商业组件的修改受到限制,的演化38通用软件过程模型传统的软件过程模型没有“工程”特点,没有软件项目策划、立项、计划、部署等内容通用软件过程模型将开发过程活动划分为策划、建模、构建、部署既可以是线性也可以是迭代、包括通用增量、通过过程模型等P28、通用螺旋、通用并行39第二讲 软件过程软件过程软件过程模型 模型的选择案例RUP统一过程敏捷软件开发40案例一:某公

12、司计划开发二维CAD 软件软件功能需求基本功能与国外AutoCAD一致新增加功能三个功能:智能画线、智能标注、.dwg文件问题:该软件开发适于采用什么过程?41案例二:北京市交通设施设计与漫游系统用户的要求 完成交通设施的二维图纸设计 在二维设计的基础上模拟显示设计的效果现实情况 二维设计部分已有工作基础,新功能开发量不大 设计与漫游显示部分需求不确定 用户要求开发方提出可行的方案问题:采用什么方法开发与漫?42案例三:基于工作流的项目管理系统43案例四:空通系统在系统运行之前需要进行安全性和可靠性的检验问题:该软件开发适于采用什么过程?44案例五:开发学生选课系统某大学计划开发一个新的学生选

13、课系统,以替换原有的选课系统原有的课程信息数据库将继续使用新的选课系统学生在网上选课和课程成绩,教师可以在网上确认所教课程、成绩选课学生并登记问题:该软件开发适于采用什么过程?45第二讲 软件过程软件过程软件过程模型 模型的选择案例 RUP统一过程敏捷软件开发46统一开发过程(RUP) 开发过程与软件生命周期相对 软件生命周期划分为5个阶段; 开发过程分解为9个工作流。; 9个工作流横贯生命周期4个阶段; 工作流在不同阶段强度不同; 每个阶段工作侧重点不同; 每个阶段可以多次迭代,逐步细化。47过程工作流支持工作流ProductionRUP的9个工作流48工作流任 务项目管理范围、时间、成本、

14、质量、风险、。环境提供软件开发、维护的工具和环境。配置&变更管理配置管理、变更管理、版本和发布管理、系统变更、测试业务建模调研访谈、收集需求、梳理业务、优化过程、建立模型。需求需求分析、需求描述、需求验证。分析设计体系结构设计、人机交互设计、详细设计。实现编写、调试代码,构造系统组件,进行系统集成。验证确认走查、评审、单元测试、集成测试、系统测试贯穿全过程。部署创建和发布软件制品版本,安装到工作现场,保障系统运行。RUP的4个阶段业务术语表、业务模型、基本需求、风险评估、项目、初始49RUP的4个阶段需求规约、体系结构、的风险评估、项目计划、工作手册初稿50RUP的4个阶段详细设计模型

15、、源代码、运行程序、测试计划、 测试用例、支持文档、用户手册、安装手册51RUP的4个阶段提交的软件增量、软件可执行代码、Beta测试报告、用户综合反映。52RUP的迭代思想Lifecycle ObjectivetoneLifecycle ArchitecturetoneInitial Operational CapabilitytoneProduct ReleasetoneLow-EndMediumHigh-END某一需求实现过程可能在初始与细化阶段迭代多次才能进入构造阶段;在构造阶段迭代多次才进入移交阶段;BRDIT一个或多个迭代。 在每个阶段中最终软件也可能分次移交。53 在每个迭代中,

16、可以有多个工作流。初始细化构造移交RUP的并行迭代过程同一时刻,软件制品可能处于不同阶段;第1次迭代的需求处于“移交”阶段;第2次迭代的需求增量处于“构造”阶段; 第4次迭代的需求增量处于“细化”阶段54工作流初 始细 化构造移 交业务建模工需求作设计组织实现V&V 实施配置变更管理项目管理环境过程迭代54321时 间 组 织RUP与通用软件过程风险分析、项目、细 化成本估算、制定项目需求分析、软件体系结构设计计划、项目跟踪初 始项目立项,与用户交流,获取需求, 建立业务过程模型。RUP过程构 造发布: 软件增量构件获取或构件设计、编码和测试。生 产移交发布软件制品、现场安装、运行、维

17、护,及用户培训。55部署: 实施、V&V构建: 实现、V&V:业务建模建模: 需求、设计策划: 管理、需求第二讲 软件过程软件过程软件过程模型模型的选择案例RUP统一过程 敏捷软件开发56敏捷软件开发2001年Robert C Martin等21位经验丰富的软件开发发采用大型、高中小型事务处理软件开软件开发的标准带来的文档多、成本高、开发时间长等弊端, 论述了他们对软件开发原则、模式与实践的态度,了敏捷软件开发。极限编程是敏捷软件开发过程中极具代表性的应用。57敏捷软件开发的12条原则 尽早的、持续的、向客户交付有价值的软件; 支持客户的变更,即使到了软件开发后期; 每隔几个或

18、几就交付一个可工作的软件新版本; 项目开发期间,业务天在一起工作;和开发天58敏捷软件开发的12条原则 信任、支持充满工作热情的人们,依靠他们构建软件项目,给他们提供所需的环境; 面对面的交谈是团队内部效果最好、效率最高的信息传递方法; 能工作的软件是度量软件开发进度的首要标准; 提倡责任人、开发者和用户保持长期的、稳定的、可持续的开发速度;59敏捷软件开发的12条原则 重视优秀的软件技术和设计方案,增强软件开发能力; 在保证质量的前提下釆用最简单的方法完成任务; 敏捷团队是自组织团队,能出色完成项目的系统架构、需求、设计和测试; 为了更有效地工作,每隔一段时间,团队要总结一下的工作和环境的变化,以此调整团队的活动。60极限编程“XP nominates coding as the key activity throughout a software project.” (Erich Gamma, for

温馨提示

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

最新文档

评论

0/150

提交评论