收藏 分享(赏)

3.软件过程.ppt

上传人:tkhy51908 文档编号:8463812 上传时间:2019-06-29 格式:PPT 页数:62 大小:465KB
下载 相关 举报
3.软件过程.ppt_第1页
第1页 / 共62页
3.软件过程.ppt_第2页
第2页 / 共62页
3.软件过程.ppt_第3页
第3页 / 共62页
3.软件过程.ppt_第4页
第4页 / 共62页
3.软件过程.ppt_第5页
第5页 / 共62页
点击查看更多>>
资源描述

1、1,第3讲 软件过程,2,软件过程的概念,软件过程由关于项目的阶段、状态、方法、技术和开发、维护软件的人员以及相关对象(计划、文档、模型、编码、测试、手册等)组成。 一个过程定义了为达到某个确定的目标,需要什么人在什么时间以何种方式做何种工作 软件需要一个可用于指导顾客、用户、开发人员和项目经理等参与者的过程,3,软件开发过程,软件工程的核心是过程。产品、人员、技术通过过程关联起来。软件开发过程能够将技术集成在一起从而使软件的开发能够以一种合理而及时的方式完成。,4,有效的软件过程,有效的软件过程可以提高组织的生产能力 保证软件开发的基本原则的实现,辅助软件项目管理者作出明智的决定; 使软件开

2、发活动标准化,提高软件的可重用性和Team间的协作;有效的软件过程也可以改善软件组织对软件的维护能力 通过有效地定义如何管理需求变更,使得变更部分能够在未来的版本中恰当分配,实现平滑过渡; 在具体操作和相关支持中定义如何平滑地改造软件,并且这种具体操作和支持是可实施的;不可实施的软件过程被剔除。,5,问题求解的一般过程,问题求解的一般过程实际问题并不能简单划为四个阶段,各个阶段会在问题的不同层次上同时并存 软件开发实际上是一个“混沌”(chaos)过程(Raccoon),问题定义,方案集成,技术开发,现状,6,编码修正模型,Code and Fix Code like Hell(鲁莽编码) 从

3、一个大致的想法开始工作,然后经过非正规的设计、编码、调试和测试方法,最后完成工作,可能有可能没有的规范,发布(可能),7,编码修正模型,好处: 成本可能很低 只需要很少的专业知识,任何写过程序的人都可以 对于一些非常小的、开发完后就会很快丢弃的软件可以采用 对于规模稍大的项目,采用这种模型是很危险的,8,瀑布模型(Waterfall Model),所有过程模型的祖宗 项目从开始到结束按照一定的顺序执行 瀑布模型是文档驱动的,各个阶段不连续也不交叉,9,瀑布模型,瀑布模型适应于什么场合?有何优缺点?,10,瀑布模型,当有一个稳定的产品定义和很容易被理解的技术解决方案时,纯瀑布模型特别合适 当你对

4、一个定义得很好的版本进行维护或将一个产品移植到一个新的平台上,瀑布模型也特别合适。 纯瀑布模型能够降低管理费用,因为你可以预先完成所有计划。 对于那些容易理解但很复杂的项目,采用纯瀑布模型比较合适,因为可以用顺序方法处理问题。 在质量需求高于成本需求和进度需求的时候,它尤为出色。 当开发队伍的技术力量比较弱或者缺乏经验时,瀑布模型更为适合。,11,瀑布模型,纯瀑布模型的缺点是在项目开始的时候,在设计工作完成前和代码写出来前,很难充分描述需求。 瀑布模型最主要的问题是缺乏灵活性。必须在项目开始前说明全部需求。但这恰恰是非常困难的。,12,瀑布模型变种:V型模型,该方法是对瀑布模型的修正,强调了验

5、证活动,13,瀑布模型变种:生鱼片模型,把阶段重叠起来的瀑布模型 起源于日本硬件开发模型(富士通施乐),软件概念,需求分析,架构设计,详细设计,编码和调试,系统测试,14,瀑布模型变种:生鱼片模型,传统的瀑布模型强调阶段之间最小的重叠,而生鱼片模型强调大幅度的重叠,即在需求分析完成之前就可以进行架构设计和部分详细设计 纯瀑布模型强调在任意两个阶段交接时,文档从一个团队交给另一个完全隔离的团队,但是如果一个团队完成各个阶段任务时,可以没有那么多文档。 问题:缺点是什么? 生鱼片模型因为阶段重叠,因而里程碑不明确,很难有效地进行过程跟踪和控制。,15,瀑布模型变种:具有子项目的瀑布模型,纯瀑布模型

6、的一个问题是必须完成全部的架构设计后才能进行详细设计,但是,整个系统中有些部分可能有些特殊性,可以有自己的步骤,即将这些部分划分为为子项目。 问题:该模型有何问题? 这种方法的主要风险是相关性无法预料。,16,瀑布模型变种:能够降低风险的瀑布模型,纯瀑布模型要求在开始架构设计前,必须将用户的所有需求都搞清楚,但是实际中是很困难的。 可降低风险的瀑布模型是在顶端,即需求分析和架构设计阶段引入螺旋以便降低风险。 在该螺旋中,先开发一个用户界面原型,采用系统情节串联图版(system storyboarding)引导用户提出需求,记录用户与系统的交互操作方式,或者采用其它需求获取方法。,17,螺旋模

7、型,Spiral 模型(Boehm提出) 以风险为导向的生命期模型 从一个小范围的关键中心地带开始寻找风险因素,制定风险控制计划,并交付给下一步骤,如此迭代,每次迭代将项目扩展到一个更大的规模,18,问题:有何优缺点?,19,螺旋模型,优势:随着迭代的增加(成本的增加),风险程度随之降低 缺陷:比较复杂,需要责任心,专注和管理方面的知识。,20,WINWIN螺旋模型,在螺旋模型中,通过与客户的通信获取客户的需求,实际上,客户的需求与最终确定的需求是不一致的,客户与开发者之间需要进行协商,最终达到双赢的局面。 Boehm提出的WINWIN螺旋模型中,客户与开发者之间需要 识别系统或子系统的关键涉

8、及者(stakeholders) 确定涉及者的“win conditions” 对这些条件进行协商获得互赢条件,21,WINWIN螺旋模型,WINWIN螺旋模型还引入了三个过程的里程碑,被称为定位点(Anchor points) 生命周期目标(life cycle objectives)定义了每个主要活动的目标 生命周期体系结构(life cycle architecture)定义了系统和软件的体系结构目标 初步操作能力(initial operational capability)定义了软件安装,发布的目标。,22,并行开发模型,并行开发模型(concurrent development m

9、odel)又被称为并行工程(concurrent engineering)(By Davis and Sitaram) 软件开发中的所有活动可能同时并存,但是都处于不同的状态中 并行开发模型定义了活动从一个状态转化为另一个状态的事件,23,并行开发模型,None,Awaiting changes,Under revision,Under review,Baselined,Done,Under development,Analysis activity,24,并行开发模型,并行过程模型经常被用于开发C/S系统。该系统的活动可以被分为系统维和部件维。系统维包含了设计,装配和使用三个活动,而部件维包

10、含了设计和实现两个活动。并发性表现在两个方面: 系统和部件的活动同时发生 各个部件可以并行设计和开发,25,原型法,原型法 原型是项目系统中的一个方面或者多个方面的工作模型。 抛弃型原型:用于试验某些概念,试验完系统将无用处 进化型原型:原型系统不断被开发和被修正,最终它变为一个真正的系统。,26,原型法,原型的好处 从实践中学习(Learning by doing) 改善的通信 改善的用户参与 使部分已知的需求清晰化 展示描述的一致性和完整性 可能可以减少文档 减少了维护成本 特征约束(利用工具构造原型可以将某些特性落到实处,而非在纸上写的那样容易失误) 试验是否能产生期待的结果,27,原型

11、法,原型法的缺点 用户有时误解了原型的角色,例如他们可能误解原形应该和真实系统一样可靠 缺少项目标准,进化原型法有点像编码修正 缺少控制,由于用户可能不断提出新要求,因而原型迭代的周期很难控制 额外的花费:研究结果表明构造一个原型可能需要10%额外花费 运行效率可能会受影响 原型法要求开发者与用户密切接触,有时这是不可能的。例如外包软件。,28,从另外的角度看待原型,从中学到什么? 学生经常会做一些软件作业,这些作业被称为原型, 问题:这些原型和软件系统原型是否相同? 但是作为一个原型必须:描述他们希望从中学到的东西,规划原型评价的方法,报告从原型中真正学到的内容。 在不同的阶段,原型具有不同

12、的作用。 原型起作用的程度 实物模型(Mock-ups) 仿真交互 部分模型:水平,垂直(某些特性构造详细的原型),29,构造原型的对象,人机接口 系统的功能,30,练习:何时引入原型系统,保险公司的经理需要通过个人计算机上的一个系统来访问管理信息。该系统价格必须合适。很多人怀疑是否经理真需要使用该系统。 可行性研究阶段,采用实物模型的方法 支持客户销售人员通过电话回答有关客户询问汽车保险价格的系统 设计用户对话界面时 保险公司考虑实施一个基于MS Access的电话销售系统,他们不知道Access是否能够开发出相应界面的系统并具备足够快的相应时间。 方案设计阶段,31,阶段交付,阶段交付持续

13、地在确定的阶段向用户展示软件。 和渐进原型不同,在阶段交付的时候,你明确地知道下一步要完成什么工作。阶段交付的特点是不会在项目结束的时候一下交付全部软件,而是在项目整个开发过程中持续不断地交付阶段性成果。,32,阶段交付,软件概念,需求分析,构架设计,阶段1:详细设计,编码,调试,,阶段2:详细设计,编码,调试,,33,阶段交付,阶段交付的优点是项目结束交付全部成果前,分阶段将有用的功能交付给用户。 阶段交付的主要缺点是,如果管理层面和技术层面上缺乏仔细的规划,工作就无法进行。 使用阶段交付的注意点是: 必须确定每一阶段的交付是对用户有用的 必须确保考虑了不同产品组成部分的技术依赖关系,34,

14、面向进度的设计,类似于阶段交付,但是面向进度的设计生命周期模型在开始的时候不必知道究竟能达到何目标,但是要确保最后的期限。 该模型的关键是要按优先级别划分系统特性并规划开发阶段,保证前面的阶段具有高优先级的特性,低特性具有低优先级别。 是否采用这种方法决定于你是否对系统目标具有足够的信心,如果有信心,则没必要采用这种方法。,35,渐进交付,渐进交付是一种跨越了渐进原型和阶段交付两种模型的过程模型。 基本过程:开发一个产品的版本,展示给用户,根据反馈改善产品。 如果计划满足用户的绝大部分需求,渐进交付与渐进原型差不多,如果计划满足少量的需求,渐进交付就和阶段交付差不多。 渐进原型,强调的是系统看

15、得见的样子,再回来堵漏洞,渐进交付中,最初的重点是系统核心和底层系统功能。,36,渐进交付,软件概念,需求分析,构架和内核设计,开发一个版本,并入用户反馈,交付该版本,开发一个版本,交付最终版本,37,确定渐进交付目标的一种方法,价值成本比,38,面向开发工具的设计,只在现有软件工具直接支持的情况下增强产品的功能,如果它不支持,就放弃这些功能。 当时间成为主要约束时,采用该模型能够比其他模型能够更完整地实现功能。 该方法的缺点是你失去了很多对产品的控制能力。,39,商品软件,商品软件也许未必满足你所有的要求,但是自己开发也需要一个周期,到那个时候,商品软件可能已经满足了你的要求。 商品软件可能

16、存在不足,但是,你自己开发的产品也未必那么完美,当你补充了商品软件的不足时,也许带来了新的问题。 因而,商品软件始终是一个值得考虑的方案。,40,一个有趣的比喻,晚餐菜单 欢迎光临过程模型选择咖啡厅,希望您好胃口正餐 螺旋模型 手制烤鸡,外配风险减少调味料 15.95美元渐进交付模型 用水拌成的阶段交付及渐进原型 15.95美元,41,阶段交付模型 五门课程酒席,详情请问服务员 14.95美元面向进度的设计 各种方法学,特别适合于快速运作 11.95美元纯瀑布模型 按经典的原有菜谱制作 14.95美元,42,色拉 面向工具的设计 填鸭内填各种豆角 时价商用软件 名厨手艺,每日变动 4.95美元

17、编码及查错 大碗面 整日供应 5.95美元,43,软件过程工程,1984年召开第一届国际软件过程研讨会(Software Process Workshop) 软件过程工程试图通过某种形式化的手段对软件开发过程加以系统严格的描述,为开发人员提供一个标准的无歧义的软件开发规范,使他们之间能更有效地进行交流。通过在计算机上执行所描述的软件过程,项目管理人员可以对实际的软件开发过程进行监控,从而保证实际的软件开发过程按规定的方式和步骤进行,44,软件过程描述,软件过程描述研究就是设计一种可以理解、交流、执行的语言来说明软件开发过程,建立一个软件过程模型来规定软件工程师的各项工作。 软件过程描述与软件过

18、程之间的关系类似于程序和程序执行之间的关系,软件过程是软件过程描述的执行,软件过程描述是面向过程软件开发环境的基础,45,软件过程语言(1),过程程序设计:即基于程序设计语言的方法,它以某种程序设计语言为原型,根据过程描述的需要适当增加和修改一些机制,然后采用程序设计的方法对软件过程加以描述,例如Galois就是由C+而来。这种方法可以容易地将过程控制描述为过程程序。,46,软件过程语言(2),Petri-Net方法:Petri-Net方法以Petri-Net理论为依据,便于对模型进行分析。该方法主要用于实时响应系统,它能高度动态地描述系统行为,很适合描述软件过程的动态性,目前以此为基础的过程

19、描述语言较多。,47,软件过程语言(3),面向对象方法:由于面向对象方法的优良特性,它对数据的处理能力非常强,而且可维护性也好,软件过程中需要处理大量的数据,这些数据之间的关系非常复杂,使用面向对象方法显然要优越得多,因此面向对象方法就被广泛地用于软件过程的描述,如AP5、MARVEL、MVP等。,48,软件过程语言(4),可视语言描述方法:可视语言描述方法具有方便理解和交流的优点。前面的几种方法都没有很好地解决人机交互问题,而软件过程需要人的不断参与,由于这一矛盾,人们在最近几年里将注意力集中在了可视语言上。它有利于人的理解和交流,支持自动化指导,支持过程重用,但动态性较弱,如G_LOTOS

20、。,49,软件过程语言(5),相对于软件过程描述的要求而言(有利于人的理解与交流、支持过程的自动执行、支持过程管理等),这些方法又各有其不足之处。如基于程序设计语言的方法和功能化的方法不容易描述并发活动,也不容易从模型中抽象出各工程师的工作;Petri-Net方法建立的模型则过于复杂不便于理解和交流;可视语言的方法描述精度低,不能支持过程的自动执行。它们的共同问题是不能兼顾“方便人的理解和交流”与“过程自动化执行”这两方面的要求。,50,软件过程仿真,尽管仿真建模已经在众多领域应用多年,但应用于软件开发过程方面还是最近的事情。 目前,软件过程仿真建模已经开始应用于多个方面:软件开发战略的管理、

21、过程改进、软件项目管理培训等。范围从狭窄的部分生命周期到长期的产品演化模型。,51,仿真的一般内容,一般而言,仿真的目的(为什么仿真)和需要解决的问题在很大程度上决定了仿真内容(仿真什么)。仿真内容包括: 模型范围 结果变量 过程抽象 输入参数,52,软件过程仿真的范围,软件过程仿真的范围可以包括: 部分生命周期(如:设计阶段,编码检查,某些或所有的测试,需求管理) 一个开发项目(如,单个产品开发生命周期) 多个并行项目(如,跨部门或团队) 长期产品演化(如,某个产品多次连续发布) 长期组织战略(如,一定时间段内多个产品的连续发布),53,结果变量和过程抽象,结果变量是一种信息元素,它用来回答

22、需解决的关键问题。关键问题不同,结果变量也不同; 过程中的主要元素有:关键活动和任务,主要对象(如,代码、设计、问题报告),重要资源(如,人员、硬件),活动依赖关系和对象流,迭代、反馈和决策点等。这些均需要在仿真模型中表示。,54,输入参数,输入参数在很大程度上取决于结构变量和过程抽象。一些典型的输入参数如下: 计划工作量(一般用代码行和功能点表示) 测试或检查阶段的缺陷检测率 返工代码量 缺陷去除率,55,仿真方法,不同的仿真目的和仿真内容需要不同的软件过程模型。目前采用的方法有: 基于状态的过程模型 一般离散事件仿真 系统动力学(或连续仿真) 基于规则的语言 Petri网模型 排队论模型

23、项目管理方法(如CPM和PERT) 调度方法(来自管理科学和制造领域),56,仿真原则,连续时间仿真(如,系统动力学)适合分析战略、初始逼近、长期走势和高层(全局)视图等,侧重于过程细节层次之上的分析。 离散事件和基于状态的仿真适合分析过程细节、资源利用率和队列等,侧重于短期分析。,57,基于知识的仿真,基于知识的仿真(knowledge-based simulation, KBS)技术也在软件开发过程中得到了应用。该方法利用有限状态机的产生式规则进行推理运行。它的模型基础是基于知识的软件过程元模型,适合分析细粒度的软件过程,支持递增式仿真,过程模型可以逐步建立。,58,基于知识的仿真,KBS和DES可以结合使用,生成和分析仿真结果:KBS侧重于生成永久过程执行记录,可以查询和回退,便于观察和测量多agent间(如,不同角色的软件开发人员)的交互机制;DES侧重于对仿真过程执行结果的统计分析,如时间、工作量和成本(利用ABC和PBC方法)。KBS(Knowledge Based Systems)公司和IST(Intelligent Systems Technology)公司均开发了商品化的集成DES的KBS产品。,59,60,61,62,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报