1第2章软件开发模型软件工程研究室2基本内容软件开发模型软件开发生命周期32.1软件开发模型/软件生命周期模型2.1.1瀑布模型(WaterfallModel)1970W.Royce定义阶段开发阶段运行、维护阶段需求分析计划设计编码测试运行维护图2-1瀑布模型4瀑布模型的变种:需求分析运行维护功能说明编码测试结构设计详细设计计划分析设计编码编码设计需求计划评价测试运行图2-2ANSI模型图2-3b模型52.1.2渐增模型(增量开发模型之一)(IncrementalModel)可行性确认需求确认产品设计检验详细设计校验系统测试确认编码单元测试集成测试检验详细设计校验编码单元测试集成测试检验详细设计校验编码单元测试集成测试检验实现部分功能增量1图2-4渐增模型增量26构件1规格说明实现集成交付设计规格说明实现集成交付设计规格说明实现集成交付设计构件2构件n图2-5渐增模型72.1.3快速原型模型(RapidPrototypingModel)规格说明可运行原型需求分析原型评价最终系统设计最终系统实现原型开发图2-6快速原型模型8计划需求分析设计编码测试运行计划计划需求分析需求分析设计设计编码编码测试测试运行运行原型模型的种类:抛弃式原型、进化式原型、可操作式原型图2-7进化式原型9操作模型(OperationalModel)图2-8可操作式原型操作规格(面向问题)测试转换规格(面向实现)执行与修订提交的系统10实例:空中美食需求阶段:空中的乘客有饮食的需求,而航班应提供满足乘客的食品.提供素食、海味、水果、饮料、小食品.提供低脂肪、低胆固醇、低热量、低盐、无糖食品.为特殊人群(老年、儿童、少数民族)提供不同食品.为有要求的乘客提供持殊食品,记录他们的座位号和要求的食品.可以预定食品,记录身份、航班号、日期、时间.11提供特殊食品的成本考虑:特殊食品的配料成分比一般食品花费要多.提供特殊食品的数量少,不能批量购买,无优惠.特殊食品要与食品厂签约,增加开销.每份食品从生产厂到机场要有运输费.食品的剩余(乘客改变飞行计划).一份食品,因人的因素,没装入指定的航班.12空中美食的管理者:获得特殊食品计划数据调查乘客对食品满意程度.特殊食品的质量.特殊食品漏装的百分比.航班在飞行前24小时,查询空中美食数据库,了解对特殊食品要求,生成报告,交给生产商,将食品准时送到飞机上.飞行结束后,处理反馈意见.特殊食品分析软件有三个独立、连续阶段:起飞前24小时生成附加记录;扫描清单;扫描明信片13记录的数据元素格式:预定者身份标识(6个大写字母)航班号(3位教字,右对齐且补零)航班日期(9个字符:日,2位、月,3位、年,4位)座位号(3个数字,右对齐且补零,后跟一个大写字母)乘客姓名(最多30个字母)乘客地扯(国家、省、地区、邮编)食品类型乘客在机上吗(1个字母)特殊食品装上飞机吗(1个字母)食品质量(好、一般、差)14新软件记录从数据库来的信息:每个特殊食品计划,整体计划.指定特殊食品装上飞机的百分比预订特殊食品的顾客登机的百分比预订特殊食品的顾客登上了飞机,但他的特殊食品没装上飞机的百分比.客户关系要求的报告:特殊食品多次没被装入飞机发生的日期;食品质量低.15空中美食产品的部分快速原型的Java实现:publicstaticfinalintNUM_PASSENGER_RECORDS=10;乘客publicstaticfinalintNUM_FLIGHT_RECORD=20;航班publicstaticCpassengerpassenger[]=newCpassenger[NUM_PASSENGER_RECORDS];publicstaticCFlightRecordfltRecs[]=newCFlightRecord[NUM_FLIGHT_RECORD];System.out.println(“24HOURCATERERLIST\n\n”);System.out.println(“Thicreportisnotimplementedintherapidprototype\n\n\n”);System.out.println(“pressENTERtoreturntothemenu…”);16最多有10个乘客记录存在数组中.是一个可变的数据结构.原型中使用数组,便于测试.在另一个数组中存20个航班记录.原型中仅实现两个食品报告(低盐的和机上的食品报告).其他4个报告与实现的两个报告类似,将这4个报告当作存根程序来编程(即包含一个界面但无程序体的伪例程,当被调用时仅显示一条信息),加速了快速原型开发.172.1.4螺旋模型(SpiralModel)风险分析原型1需求、生命周期计划风险分析原型2软件需求需求确认开发计划风险分析原型3软件产品设计设计确认验证集成与测试计划风险可运行模拟模型详细设计编码单元测试集成测试图2-9螺旋模型分析制定计划确定目标选择方案设定约束风险分析识别风险排除风险客户评估实施工程开发验证提出修改意见实现验收测试原型基准18计划阶段定义问题确认系统的可行性制定项目进度表为项目安排人员启动项目分析阶段收集信息确定系统需求建立需求发现的原型划分需求的优先级产生并评估可替换方案与管理人员一起审查建议设计阶段设计并集成网络设计应用程序结构设计用户界面设计系统界面设计并集成数据库设计细节的原型化设计并集成系统控制实现阶段构建软件的部件检验并测试开发调整原型转换数据培训与文档安装系统支持阶段目标:保证系统在安装后有效地运行对最终用户的支持帮助台,由技术人员组成培训计划维护并增强计算机系统增强升级维护2.2软件开发生命周期(SDLC,systemsdevelopmentlifecycle)19了解部分20调试验收入库概括聚集编码设计分析图2-10喷泉模型(1)喷泉模型•无隙性,复用•概括、聚集对客观世界的模型化21(SoftwareReuseModel)J.C.Jones于1984年提出的。软件计划需求分析软件设计实现测试运行,维护可重用构件库图2-11软件重用模型(2)软件重用模型22(3)构件集成模型将新构件存入库中候选构件在构件库中查找构件进行下一次迭代是否存在构件?是否计划风险分析用户通信产品开发与发布用户评估提取构件图2-1223(4)智能模型图2-9智能模型获取需求需求分析优化程序验证维护调整知识库/专家系统/具体描述图2-13智能模型24小结软件开发模型是软件开发全过程、活动、任务的结构框架软件开发模型:瀑布模型-知道做什么原型模型-快速开发增量模型-并行开发螺旋模型-风险驱动喷泉模型-重用各模型优点、缺点软件生命周期各个阶段及各阶段的任务25习题1.什么是软件的生命周期?2.软件生命周期分哪几个阶段?各阶段的任务是什么?3.简述一下软件开发模型。4.举例说明哪些项目的开发使用与原系概念模型和螺旋模型,哪些不适用于采用这两种模型?