第4章 软件工程课件

举报
资源描述
第四章软件工程2022/9/121本章学习的主要内容n第1节软件工程概述n第2节软件开发模型n第3节软件需求分析n第4节软件设计概述n第5节项目开发过程2022/9/122第1节软件工程概述n软件与软件危机n软件工程学n传统软件工程和面向对象软件工程2022/9/123软件n程序、软件与软件产品独唱-小合唱-合唱-万人大合唱|简单程序较复杂程序软件n软件定义:软件=程序+数据+文档程序:按事先设计的功能和性能需求执行的指令序列数据:是程序能正常操纵信息的数据结构文档:与程序开发、维护和使用有关的图文材料2022/9/124软件开发的发展过程n程序设计时代(1946-1955)n硬件配置低,内存小速度慢,稳定性差n程序以机器语言、汇编语言;程序规模小,结构简单n软件时代(1955-1970)n计算机性能提高,产量上升n提出软件的概念,软件需求猛增,开发技术能力不足n软件工程时代(1970-今)n硬件已不是考虑的问题n对开发方法、技术理论进行研究2022/9/125软件开发的发展过程计算机应用发展软件数量多规模大软件成本高质量低个体化软件开发方法软件维护困难软件危机软件工程2022/9/126软件工程时代n第一代软件技术n自顶向下、逐步求精的结构化程序设计方法n第二代软件技术n软件生存周期,注重软件测试技术n第三代软件技术n需求分析方法高层定义低层实施2022/9/127软件危机n定义计算机软件的开发和维护过程所遇到的一系列严重问题n表现n对软件开发成本和进度的估算很不准确n用户很不满意n质量很不可靠n没有适当的文档n软件成本比重上升n供不应求:软件开发生产率跟不上计算机应用迅速深入的趋势2022/9/128硬件/软件成本变化趋势硬件软件100%0%1955197019852022/9/129软件技术进步落后于需求增长2022/9/1210软件危机n原因n客观:软件本身特点n逻辑部件n规模庞大n主观:不正确的开发方法n忽视需求分析n错误认为:软件开发=程序编写n轻视软件维护2022/9/1211软件危机n解决途径n组织管理n工程项目管理方法n技术措施n软件开发技术与方法n软件工具2022/9/1212软件工程学的范畴n软件工程学n指导计算机软件开发和维护的工程学科n工程管理+开发技术n软件开发技术n软件开发方法学n软件工具n软件工程管理n软件管理学n软件经济学n软件度量学2022/9/1213两种程序设计方法程序设计的两次飞跃n结构化程序设计n程序=数据结构+算法n面向对象程序设计n程序=对象+消息2022/9/1214面向过程和面向对象的编码存款取款利息结算帐户余额帐户余额利息结算存款取款2022/9/1215两类软件工程方法n传统软件工程n软件分析总体设计详细设计面向过程的编码测试n面向对象软件工程n软件分析与对象抽取对象详细设计面向对象的编码测试2022/9/1216软件工程的目的n适用性n有效性n可修改性n可靠性n可理解性n可维护性n可重用性n可移植性n可追踪性n可互操作性2022/9/1217第2节软件开发模型n传统开发模型n瀑布模型(waterfallmodel)n快速原型模型(rapidprototypemodel)n演化开发模型n增量模型(incrementalmodel)n螺旋模型(spiralmodel)n面向对象开发模型n构件集成模型(componentintegrationmodel)n形式化开发模型n转换模型(transformationalmodel)n净室模型(cleanroommodel)2022/9/1218瀑布生存周期模型n计划时期n问题定义n可行性分析n开发时期n需求分析n软件设计n编码n测试n运行时期n软件维护2022/9/1219瀑布模型问题定义可行性研究需求分析软件设计编码测试维护计划时期开发时期运行时期2022/9/1220瀑布模型n特点n阶段的顺序性和依赖性(故也称线性顺序模型)n推迟实现原则(宁慢求好)n质量保证n存在问题n不适合需求模糊的系统2022/9/1221瀑布模型1、瀑布模型有以下优点、瀑布模型有以下优点n1)为项目提供了按阶段划分的检查点。n2)当前一阶段完成后,只需要去关注后续阶段。n3)可在迭代模型中应用瀑布模型。2、瀑布模型有以下缺点、瀑布模型有以下缺点n1)在项目各个阶段之间极少有反馈。n2)只有在项目生命周期的后期才能看到结果。n3)通过过多的强制完成日期和里程碑来跟踪各个项目阶段。2022/9/1222快速原型模型原型是指模拟某种产品的原始模型。快速原型模型需要迅速建造一个可以运行的软件原型;便于理解和澄清问题,使开发人员与用户达成共识,最终在确定的客户需求基础上开发客户满意的软件产品。快速原型模型允许在需求分析阶段对软件的需求进行初步而非完全的分析和定义,快速设计开发出软件系统的原型,该原型向用户展示待开发软件的全部或部分功能和性能;用户对该原型进行测试评定,给出具体改进意见以丰富细化软件需求;开发人员据此对软件进行修改完善,直至用户满意认可之后,进行软件的完整实现及测试、维护。2022/9/1223快速原型模型需求分析原型开发最终系统设计原型评价最终系统实现用户反馈2022/9/1224快速原型模型n特点n需要快速开发工具支持n循环开发模式n适用于用户需求不明确的情况n种类n渐进型n抛弃型2022/9/1225增量模型n融合了瀑布模型的基本成分和原型实现的迭代特征,该模型采用随着日程时间的进展而交错的线性序列,每一个线性序列产生软件的一个可发布的“增量”。n当使用增量模型时,第1个增量往往是核心的产品,即第1个增量实现了基本的需求,但很多补充的特征还没有发布。n客户对每一个增量的使用和评估都作为下一个增量发布的新特征和功能,这个过程在每一个增量发布后不断重复,直到产生了最终的完善产品。2022/9/1226增量模型规格说明设计实现和集成交付客户规格说明设计实现和集成交付客户规格说明设计实现和集成交付客户规格说明设计实现和集成交付客户增量1增量2增量3增量n2022/9/1227增量模型n增量n小而可用的软件n特点n在前面增量的基础上开发后面的增量n每个增量的开发可用瀑布或快速原型模型n迭代的思路2022/9/1228增量模型n优点优点n人员分配灵活,刚开始不用投入大量人力资源。如果核心产品很受欢迎,则可增加人力实现下一个增量。n可先发布部分功能给客户,对客户起到镇静剂的作用。n增量能够有计划地管理技术风险。n缺点缺点1)需要软件具备开放式的体系结构。2)容易退化为边做边改模型,从而是软件过程的控制失去整体性。3)如果增量包之间存在相交的情况且未很好处理,则必须做全盘系统分析。2022/9/1229螺旋模型2022/9/1230将瀑布模型和快速原型模型结合起来,强调了其他模型所忽视的风险分析,特别适合于大型复杂的系统。螺旋模型沿螺线进行若干次迭代,将工程分为四个活动:(1)制定计划制定计划:确定软件目标,选定实施方案,弄清项目开发的限制条件;(2)风险分析风险分析:分析评估所选方案,考虑如何识别和消除风险;(3)实施工程实施工程:实施软件开发和验证;(4)客户评估客户评估:评价开发工作,提出修正建议,制定下一步计划。螺旋模型由风险驱动,强调可选方案和约束条件从而支持软件的重用,有助于将软件质量作为特殊目标融入产品开发之中。螺旋模型2022/9/1231螺旋模型n特点n瀑布模型+快速原型+风险分析n迭代过程n一个螺旋式周期n确定目标,选择方案,选定完成目标的策略n风险角度分析该策略n启动一个开发阶段n评价前一步的结果,计划下一轮的工作螺旋模型的项目适用:对于新近开发,需求不明确的情况下,适合用螺旋模型进行开发,便于风险控制和需求变更!2022/9/1232螺旋模型n优点优点n1)设计上的灵活性,可以在项目的各个阶段进行变更。n2)以小的分段来构建大型系统,使成本计算变得简单容易。n3)客户始终参与每个阶段的开发,保证了项目不偏离正确方向以及项目的可控性。n4)随着项目推进,客户始终掌握项目的最新信息,从而他或她能够和管理层有效地交互。n5)客户认可这种公司内部的开发方式带来的良好的沟通和高质量的产品。n缺点缺点n很难让用户确信这种演化方法的结果是可以控制的。n建设周期长,而软件技术发展比较快,所以经常出现软件开发完毕后,和当前的技术水平有了较大的差距,无法满足当前用户需求。2022/9/1233面向对象模型n对象Objectn类Classn继承Inheritancen消息Messagen面向对象n对象+类+继承+消息通信2022/9/1234构件集成模型构件集成模型利用预先封装好的软件构件来构造应用软件系统,它融合了螺旋模型的很多特征,支持软件开发的迭代方法。开发活动从描述候选类开始,通过检查软件系统处理的数据以及操作这些数据的方法,把相关的数据和方法封装成一个类,然后到构件库中查找这个类。如果已经存在,就从库中提取出来以供复用;如果候选类不存在,则采用面向对象的方法使它实现,并把它存储到构件库中。通过集成从构件库中提取的已有类和为了满足应用程序的特定需要而构建的新类,即可得到待开发软件的第一个迭代。然后进入下一轮螺旋周期,继续进行构件集成的迭代。2022/9/1235构件集成模型2022/9/1236构件集成模型n特点n面向对象n基于构件库n融合螺旋模型特征n支持软件开发的迭代方法n软件重用2022/9/1237转换模型该模型结合了形式化软件开发方法和程序自动生成技术,采用形式化需求规格说明和变换技术等技术手段,生产目标程序系统。软件需求分析确定以后,选用某种形式化的需求规格说明语言描述软件规格说明,可以生成形式化的规格说明。为了确认该形式化规格说明与软件需求的一致性,还可以在形式化规格说明的基础上开发一个软件原型,让用户对该软件原型系统的界面,功能和性能进行确认,必要时,可对形式化需求说明和原型进行修改,直到形式化规格说明能正确反映用户需求为止。然后进行一系列的人机交互或全自动的程序变换,直到生成计算机系统可以接受的目标代码。2022/9/1238转换模型形式化规格说明与需求比较后修正变换2变换1变换n测试形式化开发记录系统需求目标系统2022/9/1239转换模型n特点n形式化软件开发方法n形式化需求规格说明n变换技术n程序自动生成技术n确保正确2022/9/1240净室模型净室模型是一种形式化的增量开发模型。基本思想是力求在分析和设计阶段就消除错误,确保正确,然后在无缺陷或“洁净”的状态下实现软件的制作。和增量模型一样,净室开发把软件看成一系列的增量,每个增量是一个形式化方法表示的“盒”。当需求收集结束后,就用盒结构表示分析和设计模型。这种“盒”是在某个特定的抽象层次上对系统(或系统的某些方面)的一次封装。完成了盒结构设计之后,先对设计的软件构件进行正确性检验;通过正确性验证后,再将形式化的盒结构设计转换为适当的程序设计语言,并进行源代码的正确性验证;接着开始统计性使用测试,即根据统计样本得出使用分布概率,按此概率进行随机测试;以上工作全部完成后,还要对增量进行集成前的认证。2022/9/1241净室模型需求收集盒结构规约形式化设计统计性使用测试正确性证明代码生成与检查测试计划认证需求收集盒结构规约形式化设计统计性使用测试正确性证明代码生成与检查测试计划认证需求收集盒结构规约形式化设计统计性使用测试正确性证明代码生成与检查测试计划认证增量1增量2增量n2022/9/1242净室模型n净室思想n在分析和设计阶段消除错误n在“洁净”状态下实现软件制作n形式化n盒结构表示分析和设计n正确性验证n增量模型2022/9/1243小结n软件开发模型是不断变化发展的n各种软件开发模型各有优缺点n选用时不必拘泥与某种模型n可组合多种模型n也可根据实际创建新的模型2022/9/1244第3节软件需求分析n需求分析的任务与步骤n需求获取的常用方法n分析建模n软件需求说明n结构化分析方法n面向对象分析方法2022/9/1245需求分析的任务和步骤n需求分
展开阅读全文
温馨提示:
金锄头文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
相关搜索

当前位置:首页 > 建筑/环境 > 建筑规划


电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号