上海交通大学计算机集成技术开放实验室1第5讲项目方法选择上海交通大学计算机集成技术开放实验室2技术选择技术选择将影响:开发人员的训练需要人员招聘开发环境——硬件和软件系统维护安排步骤:分析项目是目标驱动的还是产品驱动的分析项目其他特征面向数据还是面向控制通用还是专用是否涉及需要专用工具支持的专门技术是否有特殊的安全性要求对软硬件有何要求上海交通大学计算机集成技术开放实验室3练习对下列系统进行分类工资支付系统饮料灌装企业的控制系统供水企业管理对企业供水计划的系统支持项目管理的软件供律师查询法律条文的系统面向数据或特定领域的应用系统包含嵌入式软件的过程控制或者工业系统使用图形的信息系统通用信息系统软件包信息收集的通用软件包上海交通大学计算机集成技术开放实验室4识别项目中的高风险产品不确定性:系统需求理解的准确性。用户在开始时有可能对系统应该什么样都无法确定。在某些环境中,精确而有效的需求描述可能迅速变得过时。过程不确定性:在项目开始时需要选择方法或过程模型,或者一种新的工具,任何对原先采用的开发方法的变化都将引入不确定性资源不确定性:项目进行中资源的数量可能发生变化上海交通大学计算机集成技术开放实验室5练习识别学院工资系统中的风险金融和职员之间的矛盾职员对系统不接受缺少运行该系统的经验缺少管理系统的计算机专业人员需求变化上海交通大学计算机集成技术开放实验室6选择方法考虑用户关于实现的需求用户可能在合同中限定了有关实现方面的方法。例如,规定了企业必须具有相应的CMM等级,或者通过了ISO9000方法选择通用的生命周期方法控制系统:一般为实时系统,比如需要Petri网技术信息系统:……上海交通大学计算机集成技术开放实验室2001/9/23Toooften,softwareworkfollowsthefirstlawofbicycling:Nomatterwhereyou’regoing,it’suphillandagainstthewind上海交通大学计算机集成技术开放实验室8过程模型的选择开发一个软件需要选择开发策略(包括过程,方法和工具)以及通用阶段,这些策略和阶段被称为过程模型“过程”:相关联的活动过程模型的选择基于项目和应用的特性,使用的工具和方法,所需要的控制方法和交付物。上海交通大学计算机集成技术开放实验室9问题求解的一般过程问题求解的一般过程实际问题并不能简单划为四个阶段,各个阶段会在问题的不同层次上同时并存软件开发实际上是一个“混沌”(chaos)过程(Raccoon)问题定义方案集成技术开发现状上海交通大学计算机集成技术开放实验室10编码修正模型CodeandFixCodelikeHell(鲁莽编码)从一个大致的想法开始工作,然后经过非正规的设计、编码、调试和测试方法,最后完成工作可能有可能没有的规范发布(可能)上海交通大学计算机集成技术开放实验室11编码修正模型好处:成本可能很低只需要很少的专业知识,任何写过程序的人都可以对于一些非常小的、开发完后就会很快丢弃的软件可以采用对于规模稍大的项目,采用这种模型是很危险的上海交通大学计算机集成技术开放实验室12瀑布模型(WaterfallModel)所有过程模型的祖宗项目从开始到结束按照一定的顺序执行瀑布模型是文档驱动的,各个阶段不连续也不交叉上海交通大学计算机集成技术开放实验室13瀑布模型发瀑布模型适应于什么场合?有何优缺点?上海交通大学计算机集成技术开放实验室14瀑布模型当有一个稳定的产品定义和很容易被理解的技术解决方案时,纯瀑布模型特别合适当你对一个定义得很好的版本进行维护或将一个产品移植到一个新的平台上,瀑布模型也特别合适。纯瀑布模型能够降低管理费用,因为你可以预先完成所有计划。对于那些容易理解但很复杂的项目,采用纯瀑布模型比较合适,因为可以用顺序方法处理问题。在质量需求高于成本需求和进度需求的时候,它尤为出色。当开发队伍的技术力量比较弱或者缺乏经验时,瀑布模型更为适合。上海交通大学计算机集成技术开放实验室15瀑布模型纯瀑布模型的缺点是在项目开始的时候,在设计工作完成前和代码写出来前,很难充分描述需求。瀑布模型最主要的问题是缺乏灵活性。必须在项目开始前说明全部需求。但这恰恰是非常困难的。上海交通大学计算机集成技术开放实验室16瀑布模型变种:V型模型该方法是对瀑布模型的修正,强调了验证活动上海交通大学计算机集成技术开放实验室17瀑布模型变种:生鱼片模型把阶段重叠起来的瀑布模型起源于日本硬件开发模型(富士通—施乐)软件概念需求分析架构设计详细设计编码和调试系统测试上海交通大学计算机集成技术开放实验室18瀑布模型变种:生鱼片模型传统的瀑布模型强调阶段之间最小的重叠,而生鱼片模型强调大幅度的重叠,即在需求分析完成之前就可以进行架构设计和部分详细设计纯瀑布模型强调在任意两个阶段交接时,文档从一个团队交给另一个完全隔离的团队,但是如果一个团队完成各个阶段任务时,可以没有那么多文档。问题:缺点是什么?生鱼片模型因为阶段重叠,因而里程碑不明确,很难有效地进行过程跟踪和控制。上海交通大学计算机集成技术开放实验室19瀑布模型变种:具有子项目的瀑布模型纯瀑布模型的一个问题是必须完成全部的架构设计后才能进行详细设计,但是,整个系统中有些部分可能有些特殊性,可以有自己的步骤,即将这些部分划分为为子项目。问题:该模型有何问题?这种方法的主要风险是相关性无法预料。上海交通大学计算机集成技术开放实验室20瀑布模型变种:能够降低风险的瀑布模型纯瀑布模型要求在开始架构设计前,必须将用户的所有需求都搞清楚,但是实际中是很困难的。可降低风险的瀑布模型是在顶端,即需求分析和架构设计阶段引入螺旋以便降低风险。在该螺旋中,先开发一个用户界面原型,采用系统情节串联图版(systemstoryboarding)引导用户提出需求,记录用户与系统的交互操作方式,或者采用其它需求获取方法。上海交通大学计算机集成技术开放实验室21螺旋模型Spiral模型(Boehm提出)以风险为导向的生命期模型从一个小范围的关键中心地带开始寻找风险因素,制定风险控制计划,并交付给下一步骤,如此迭代,每次迭代将项目扩展到一个更大的规模上海交通大学计算机集成技术开放实验室22问题:有何优缺点?上海交通大学计算机集成技术开放实验室23螺旋模型优势:随着迭代的增加(成本的增加),风险程度随之降低缺陷:比较复杂,需要责任心,专注和管理方面的知识。上海交通大学计算机集成技术开放实验室24WINWIN螺旋模型在螺旋模型中,通过与客户的通信获取客户的需求,实际上,客户的需求与最终确定的需求是不一致的,客户与开发者之间需要进行协商,最终达到双赢的局面。Boehm提出的WINWIN螺旋模型中,客户与开发者之间需要识别系统或子系统的关键涉及者(stakeholders)确定涉及者的“winconditions”对这些条件进行协商获得互赢条件上海交通大学计算机集成技术开放实验室25WINWIN螺旋模型WINWIN螺旋模型还引入了三个过程的里程碑,被称为定位点(Anchorpoints)生命周期目标(lifecycleobjectives)定义了每个主要活动的目标生命周期体系结构(lifecyclearchitecture)定义了系统和软件的体系结构目标初步操作能力(initialoperationalcapability)定义了软件安装,发布的目标。上海交通大学计算机集成技术开放实验室26并行开发模型并行开发模型(concurrentdevelopmentmodel)又被称为并行工程(concurrentengineering)(ByDavisandSitaram)软件开发中的所有活动可能同时并存,但是都处于不同的状态中并行开发模型定义了活动从一个状态转化为另一个状态的事件上海交通大学计算机集成技术开放实验室27并行开发模型NoneAwaitingchangesUnderrevisionUnderreviewBaselinedDoneUnderdevelopmentAnalysisactivity上海交通大学计算机集成技术开放实验室28并行开发模型并行过程模型经常被用于开发C/S系统。该系统的活动可以被分为系统维和部件维。系统维包含了设计,装配和使用三个活动,而部件维包含了设计和实现两个活动。并发性表现在两个方面:系统和部件的活动同时发生各个部件可以并行设计和开发上海交通大学计算机集成技术开放实验室29原型法原型法原型是项目系统中的一个方面或者多个方面的工作模型。抛弃型原型:用于试验某些概念,试验完系统将无用处进化型原型:原型系统不断被开发和被修正,最终它变为一个真正的系统。上海交通大学计算机集成技术开放实验室30原型法原型的好处从实践中学习(Learningbydoing)改善的通信改善的用户参与使部分已知的需求清晰化展示描述的一致性和完整性可能可以减少文档减少了维护成本特征约束(利用工具构造原型可以将某些特性落到实处,而非在纸上写的那样容易失误)试验是否能产生期待的结果上海交通大学计算机集成技术开放实验室31原型法原型法的缺点用户有时误解了原型的角色,例如他们可能误解原形应该和真实系统一样可靠缺少项目标准,进化原型法有点像编码修正缺少控制,由于用户可能不断提出新要求,因而原型迭代的周期很难控制额外的花费:研究结果表明构造一个原型可能需要10%额外花费运行效率可能会受影响原型法要求开发者与用户密切接触,有时这是不可能的。例如外包软件。上海交通大学计算机集成技术开放实验室32从另外的角度看待原型从中学到什么?学生经常会做一些软件作业,这些作业被称为原型,问题:这些原型和软件系统原型是否相同?但是作为一个原型必须:描述他们希望从中学到的东西,规划原型评价的方法,报告从原型中真正学到的内容。在不同的阶段,原型具有不同的作用。原型起作用的程度实物模型(Mock-ups)仿真交互部分模型:水平,垂直(某些特性构造详细的原型)上海交通大学计算机集成技术开放实验室33构造原型的对象人机接口系统的功能上海交通大学计算机集成技术开放实验室34练习:何时引入原型系统保险公司的经理需要通过个人计算机上的一个系统来访问管理信息。该系统价格必须合适。很多人怀疑是否经理真需要使用该系统。可行性研究阶段,采用实物模型的方法支持客户销售人员通过电话回答有关客户询问汽车保险价格的系统设计用户对话界面时保险公司考虑实施一个基于MSAccess的电话销售系统,他们不知道Access是否能够开发出相应界面的系统并具备足够快的相应时间。方案设计阶段上海交通大学计算机集成技术开放实验室35阶段交付阶段交付持续地在确定的阶段向用户展示软件。和渐进原型不同,在阶段交付的时候,你明确地知道下一步要完成什么工作。阶段交付的特点是不会在项目结束的时候一下交付全部软件,而是在项目整个开发过程中持续不断地交付阶段性成果。上海交通大学计算机集成技术开放实验室36阶段交付软件概念需求分析构架设计阶段1:详细设计,编码,调试,……阶段2:详细设计,编码,调试,……上海交通大学计算机集成技术开放实验室37阶段交付阶段交付的优点是项目结束交付全部成果前,分阶段将有用的功能交付给用户。阶段交付的主要缺点是,如果管理层面和技术层面上缺乏仔细的规划,工作就无法进行。使用阶段交付的注意点是:必须确定每一阶段的交付是对用户有用的必须确保考虑了不同产品组成部分的技术依赖关系上海交通大学计算机集成技术开放实验室38面向进度的设计类似于阶段交付,但是面向进度的设计生命周期模型在开始的时候不必知道究竟能达到何目标,但是要确保最后的期限。该模型的关键是要按优先级别划分系统特性并规划开发阶段,保证前面的阶段具有高优先级的特性,低特性具有低优先级