《第4章 软件工程14830.pptx》由会员分享,可在线阅读,更多相关《第4章 软件工程14830.pptx(75页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第四章软件工程2023/3/141本章学习的主要内容n第1节软件工程概述n第2节软件开发模型n第3节软件需求分析n第4节软件设计概述n第5节项目开发过程2023/3/142第1节软件工程概述n软件与软件危机n软件工程学n传统软件工程和面向对象软件工程2023/3/143软件n程序、软件与软件产品独唱-小合唱-合唱-万人大合唱|简单程序较复杂程序软件n软件定义:软件=程序+数据+文档程序:按事先设计的功能和性能需求执行的指令序列数据:是程序能正常操纵信息的数据结构文档:与程序开发、维护和使用有关的图文材料2023/3/144软件开发的发展过程n程序设计时代(1946-1955)n硬件配置低,内存
2、小速度慢,稳定性差n程序以机器语言、汇编语言;程序规模小,结构简单n软件时代(1955-1970)n计算机性能提高,产量上升n提出软件的概念,软件需求猛增,开发技术能力不足n软件工程时代(1970-今)n硬件已不是考虑的问题n对开发方法、技术理论进行研究2023/3/145软件开发的发展过程计算机应用发展软件数量多规模大软件成本高质量低个体化软件开发方法软件维护困难软件危机软件工程2023/3/146软件工程时代n第一代软件技术n自顶向下、逐步求精的结构化程序设计方法n第二代软件技术n软件生存周期,注重软件测试技术n第三代软件技术n需求分析方法高层定义低层实施2023/3/147软件危机n定义
3、计算机软件的开发和维护过程所遇到的一系列严重问题n表现n对软件开发成本和进度的估算很不准确n用户很不满意n质量很不可靠n没有适当的文档n软件成本比重上升n供不应求:软件开发生产率跟不上计算机应用迅速深入的趋势2023/3/148硬件/软件成本变化趋势硬件软件100%0%1955197019852023/3/149软件技术进步落后于需求增长2023/3/1410软件危机n原因n客观:软件本身特点n逻辑部件n规模庞大n主观:不正确的开发方法n忽视需求分析n错误认为:软件开发=程序编写n轻视软件维护2023/3/1411软件危机n解决途径n组织管理n工程项目管理方法n技术措施n软件开发技术与方法n软
4、件工具2023/3/1412软件工程学的范畴n软件工程学n指导计算机软件开发和维护的工程学科n工程管理+开发技术n软件开发技术n软件开发方法学n软件工具n软件工程管理n软件管理学n软件经济学n软件度量学2023/3/1413两种程序设计方法程序设计的两次飞跃n结构化程序设计n程序=数据结构+算法n面向对象程序设计n程序=对象+消息2023/3/1414面向过程和面向对象的编码存款取款利息结算帐户余额帐户余额利息结算存款取款2023/3/1415两类软件工程方法n传统软件工程n软件分析总体设计详细设计面向过程的编码测试n面向对象软件工程n软件分析与对象抽取对象详细设计面向对象的编码测试2023/
5、3/1416软件工程的目的n适用性n有效性n可修改性n可靠性n可理解性n可维护性n可重用性n可移植性n可追踪性n可互操作性2023/3/1417第2节软件开发模型n传统开发模型n瀑布模型(waterfallmodel)n快速原型模型(rapidprototypemodel)n演化开发模型n增量模型(incrementalmodel)n螺旋模型(spiralmodel)n面向对象开发模型n构件集成模型(componentintegrationmodel)n形式化开发模型n转换模型(transformationalmodel)n净室模型(cleanroommodel)2023/3/1418瀑布生存
6、周期模型n计划时期n问题定义n可行性分析n开发时期n需求分析n软件设计n编码n测试n运行时期n软件维护2023/3/1419瀑布模型问题定义可行性研究需求分析软件设计编码测试维护计划时期开发时期运行时期2023/3/1420瀑布模型n特点n阶段的顺序性和依赖性(故也称线性顺序模型)n推迟实现原则(宁慢求好)n质量保证n存在问题n不适合需求模糊的系统2023/3/1421瀑布模型1、瀑布模型有以下优点、瀑布模型有以下优点n1)为项目提供了按阶段划分的检查点。n2)当前一阶段完成后,只需要去关注后续阶段。n3)可在迭代模型中应用瀑布模型。2、瀑布模型有以下缺点、瀑布模型有以下缺点n1)在项目各个阶
7、段之间极少有反馈。n2)只有在项目生命周期的后期才能看到结果。n3)通过过多的强制完成日期和里程碑来跟踪各个项目阶段。2023/3/1422快速原型模型原型是指模拟某种产品的原始模型。快速原型模型需要迅速建造一个可以运行的软件原型;便于理解和澄清问题,使开发人员与用户达成共识,最终在确定的客户需求基础上开发客户满意的软件产品。快速原型模型允许在需求分析阶段对软件的需求进行初步而非完全的分析和定义,快速设计开发出软件系统的原型,该原型向用户展示待开发软件的全部或部分功能和性能;用户对该原型进行测试评定,给出具体改进意见以丰富细化软件需求;开发人员据此对软件进行修改完善,直至用户满意认可之后,进行
8、软件的完整实现及测试、维护。2023/3/1423快速原型模型需求分析原型开发最终系统设计原型评价最终系统实现用户反馈2023/3/1424快速原型模型n特点n需要快速开发工具支持n循环开发模式n适用于用户需求不明确的情况n种类n渐进型n抛弃型2023/3/1425增量模型n融合了瀑布模型的基本成分和原型实现的迭代特征,该模型采用随着日程时间的进展而交错的线性序列,每一个线性序列产生软件的一个可发布的“增量”。n当使用增量模型时,第1个增量往往是核心的产品,即第1个增量实现了基本的需求,但很多补充的特征还没有发布。n客户对每一个增量的使用和评估都作为下一个增量发布的新特征和功能,这个过程在每一
9、个增量发布后不断重复,直到产生了最终的完善产品。2023/3/1426增量模型规格说明设计实现和集成交付客户规格说明设计实现和集成交付客户规格说明设计实现和集成交付客户规格说明设计实现和集成交付客户增量1增量2增量3增量n2023/3/1427增量模型n增量n小而可用的软件n特点n在前面增量的基础上开发后面的增量n每个增量的开发可用瀑布或快速原型模型n迭代的思路2023/3/1428增量模型n优点优点n人员分配灵活,刚开始不用投入大量人力资源。如果核心产品很受欢迎,则可增加人力实现下一个增量。n可先发布部分功能给客户,对客户起到镇静剂的作用。n增量能够有计划地管理技术风险。n缺点缺点1)需要软
10、件具备开放式的体系结构。2)容易退化为边做边改模型,从而是软件过程的控制失去整体性。3)如果增量包之间存在相交的情况且未很好处理,则必须做全盘系统分析。2023/3/1429螺旋模型2023/3/1430将瀑布模型和快速原型模型结合起来,强调了其他模型所忽视的风险分析,特别适合于大型复杂的系统。螺旋模型沿螺线进行若干次迭代,将工程分为四个活动:(1)制定计划制定计划:确定软件目标,选定实施方案,弄清项目开发的限制条件;(2)风险分析风险分析:分析评估所选方案,考虑如何识别和消除风险;(3)实施工程实施工程:实施软件开发和验证;(4)客户评估客户评估:评价开发工作,提出修正建议,制定下一步计划。
11、螺旋模型由风险驱动,强调可选方案和约束条件从而支持软件的重用,有助于将软件质量作为特殊目标融入产品开发之中。螺旋模型2023/3/1431螺旋模型n特点n瀑布模型+快速原型+风险分析n迭代过程n一个螺旋式周期n确定目标,选择方案,选定完成目标的策略n风险角度分析该策略n启动一个开发阶段n评价前一步的结果,计划下一轮的工作螺旋模型的项目适用:对于新近开发,需求不明确的情况下,适合用螺旋模型进行开发,便于风险控制和需求变更!2023/3/1432螺旋模型n优点优点n1)设计上的灵活性,可以在项目的各个阶段进行变更。n2)以小的分段来构建大型系统,使成本计算变得简单容易。n3)客户始终参与每个阶段的
12、开发,保证了项目不偏离正确方向以及项目的可控性。n4)随着项目推进,客户始终掌握项目的最新信息,从而他或她能够和管理层有效地交互。n5)客户认可这种公司内部的开发方式带来的良好的沟通和高质量的产品。n缺点缺点n很难让用户确信这种演化方法的结果是可以控制的。n建设周期长,而软件技术发展比较快,所以经常出现软件开发完毕后,和当前的技术水平有了较大的差距,无法满足当前用户需求。2023/3/1433面向对象模型n对象Objectn类Classn继承Inheritancen消息Messagen面向对象n对象+类+继承+消息通信2023/3/1434构件集成模型构件集成模型利用预先封装好的软件构件来构造
13、应用软件系统,它融合了螺旋模型的很多特征,支持软件开发的迭代方法。开发活动从描述候选类开始,通过检查软件系统处理的数据以及操作这些数据的方法,把相关的数据和方法封装成一个类,然后到构件库中查找这个类。如果已经存在,就从库中提取出来以供复用;如果候选类不存在,则采用面向对象的方法使它实现,并把它存储到构件库中。通过集成从构件库中提取的已有类和为了满足应用程序的特定需要而构建的新类,即可得到待开发软件的第一个迭代。然后进入下一轮螺旋周期,继续进行构件集成的迭代。2023/3/1435构件集成模型2023/3/1436构件集成模型n特点n面向对象n基于构件库n融合螺旋模型特征n支持软件开发的迭代方法
14、n软件重用2023/3/1437转换模型该模型结合了形式化软件开发方法和程序自动生成技术,采用形式化需求规格说明和变换技术等技术手段,生产目标程序系统。软件需求分析确定以后,选用某种形式化的需求规格说明语言描述软件规格说明,可以生成形式化的规格说明。为了确认该形式化规格说明与软件需求的一致性,还可以在形式化规格说明的基础上开发一个软件原型,让用户对该软件原型系统的界面,功能和性能进行确认,必要时,可对形式化需求说明和原型进行修改,直到形式化规格说明能正确反映用户需求为止。然后进行一系列的人机交互或全自动的程序变换,直到生成计算机系统可以接受的目标代码。2023/3/1438转换模型形式化规格说
15、明与需求比较后修正变换2变换1变换n测试形式化开发记录系统需求目标系统2023/3/1439转换模型n特点n形式化软件开发方法n形式化需求规格说明n变换技术n程序自动生成技术n确保正确2023/3/1440净室模型净室模型是一种形式化的增量开发模型。基本思想是力求在分析和设计阶段就消除错误,确保正确,然后在无缺陷或“洁净”的状态下实现软件的制作。和增量模型一样,净室开发把软件看成一系列的增量,每个增量是一个形式化方法表示的“盒”。当需求收集结束后,就用盒结构表示分析和设计模型。这种“盒”是在某个特定的抽象层次上对系统(或系统的某些方面)的一次封装。完成了盒结构设计之后,先对设计的软件构件进行正
16、确性检验;通过正确性验证后,再将形式化的盒结构设计转换为适当的程序设计语言,并进行源代码的正确性验证;接着开始统计性使用测试,即根据统计样本得出使用分布概率,按此概率进行随机测试;以上工作全部完成后,还要对增量进行集成前的认证。2023/3/1441净室模型需求收集盒结构规约形式化设计统计性使用测试正确性证明代码生成与检查测试计划认证需求收集盒结构规约形式化设计统计性使用测试正确性证明代码生成与检查测试计划认证需求收集盒结构规约形式化设计统计性使用测试正确性证明代码生成与检查测试计划认证增量1增量2增量n2023/3/1442净室模型n净室思想n在分析和设计阶段消除错误n在“洁净”状态下实现软
17、件制作n形式化n盒结构表示分析和设计n正确性验证n增量模型2023/3/1443小结n软件开发模型是不断变化发展的n各种软件开发模型各有优缺点n选用时不必拘泥与某种模型n可组合多种模型n也可根据实际创建新的模型2023/3/1444第3节软件需求分析n需求分析的任务与步骤n需求获取的常用方法n分析建模n软件需求说明n结构化分析方法n面向对象分析方法2023/3/1445需求分析的任务和步骤n需求分析的任务n建立分析模型n编写需求说明n需求分析的步骤n需求获取n需求提炼n需求描述n需求验证2023/3/1446需求获取的常用方法n联合分析小组n用户代表、领域专家和系统分析员n客户访谈n充分准备,
18、寻找共同语言n循循序渐进、逐步逼近n问题分析与确认n多个来回2023/3/1447分析建模n结构化分析模型n面向对象分析模型n分析模型描述工具n数据流图(DFD)、数据字典(DD)和处理规格说明(PSPEC)n控制流图(CFD)、控制规格说明(CSPEC)和状态转移图(STD)n实体关系图(E-R图)n用例图,对象-关系图,对象-行为图2023/3/1448结构化分析模型加工说明数据对象说明CFD,STD图DFD图E-R图DD控制说明2023/3/1449面向对象分析模型属性、操作、协作者对象-行为模型对象-关系模型类/对象模型使用实例2023/3/1450分析模型描述工具n结构化分析工具n数
19、据流程图(DFD)n数据字典(DD)nE-R图n面向对象分析工具n用例图,类对象图n对象-关系图n对象-行为图2023/3/1451数据流图DFDn描述系统逻辑模型n信息在系统中的流动和处理n用途n交流信息的工具n结构化分析和设计的工具2023/3/1452数据流图DFDn组成符号n圆框代表加工n箭头代表数据流向n方框代表源点和终点n双杠表示数据文件或数据库n分层n从高层到低层n分解前后的数据流必须一致n命名n数据流n处理2023/3/1453领书单进书通知购书单缺书单DFD练习售书系统学生教材购销系统书 库保 管员2023/3/1454领书单进书通知进书通知购书单缺书单DFD练习售书系统1销
20、售2采购书库保管员学生F1教材存量表F2缺书登记表2023/3/1455用例图n用例:是从系统外部可见的行为,是系统为某一个或几个参与者(Actor)提供的一段完整的服务。n符号表示:系统名称系统用例名用例角色关联2023/3/1456UseCase图例子保险商务系统签定保险单销售统计客户统计客户保险销售员2023/3/1457用例之间的关系n扩展关系n使用关系n组合关系扩展签保险单签汽车购买契约2023/3/1458使用使用签保险单签汽车保险单签房屋保险单包含保单维护新建保单变更保单删除保单包含包含对象-关系图n从E-R图演变而来n描述对象间关系学生书出版社购买来自1:11:m1:11:12
21、023/3/1459对象-行为图n描述对象的动态行为n对象状态转换图n事件流图2023/3/1460对象状态转换图例子加纸纸用完故障修复打印故障打印完成接到打印命令就绪打印缺纸故障2023/3/1461事件流图例子打印机忙保存文件打印机就绪打印文件打印文件打印文件计算机打印服务器打印队列打印机2023/3/1462软件需求说明(SRS)1引言1.1编写目的1.2项目背景1.3术语概念定义1.4参考资料2项目概述2.1产品描述2.2产品功能2.3用户特点2.4一般约束2.5假设和依据3具体需求3.1功能需求3.1.1功能需求13.1.2功能需求23.1.n功能需求n2023/3/14633.2外
22、部接口需求3.2.1用户接口3.2.2硬件接口3.2.3软件接口3.2.4通信接口3.3性能需求3.4设计约束3.4.1其他标准的约束3.4.2硬件的限制3.5属性3.5.1可用性3.5.2安全性3.5.3可维护性3.6其他需求3.6.1数据库3.6.2场合适应性需求4附录结构化分析方法总结n基本步骤n功能分解n分层DFDn定义数据和加工nDD,PSPECn根据需要,分析复杂数据和动态模型nE-R图,CFD,CSPEC,STDn编写SRS2023/3/1464面向对象分析方法总结n基本步骤n定义系统的用例n领域分析,建立类对象模型n建立对象-关系模型n建立对象-行为模型n编写SRS2023/3
23、/1465第4节软件设计概述n4.1软件设计的任务n4.2软件设计的基本概念n4.3模块化设计n4.4设计需要处理的问题n4.5设计文档及其复审2023/3/14664.1软件设计的任务n分析模型设计模型设计文档n回答Howtodo?n可以分为概要设计、详细设计n软件设计包括n数据设计n体系结构设计n接口设计n过程设计2023/3/14674.1软件设计的任务n数据设计n信息模型软件数据结构n体系结构设计n定义软件部件间的关系n接口设计n软件内部、外部及与人之间的通信n过程设计n软件组件的过程性描述2023/3/14684.2软件设计的基本概念n模块(module)与构件(component)
24、n模块:定义输入、输出和特性的程序实体n构件:可重复使用的软件组件n抽象(abstract)与细化(refinement)n抽象:分层次考虑和处理问题(数据和过程)n细化:从高到低的逐步分解过程n信息隐藏n对其它模块隐藏模块内部的数据和过程n软件复用nDesign with reuse,design for reuse2023/3/14694.3模块化设计(modulardesign)n分解(decomposition)n模块独立性(moduleindependence)n自顶向下(topdowndesign)n自底向上(bottomupdesign)2023/3/1470分解(decompo
25、sition)C(P1+P2)C(P1)+C(P2)E(P1+P2)E(P1)+E(P2)C为问题的复杂度,E为解题需要的工作量模块数接口成本最小成本区M软件开发工作量总成本模块成本2023/3/14714.4设计需要处理的问题n协同设计n谁最合适设计系统的某一方面?n如何使组内成员相互了解别人的设计?n如何协调设计组件使整个系统统一?n用户界面设计n让用户驾驭软件,不是软件驾驭用户n减少用户的记忆n保持界面的一致性n并发系统设计n怎样确保同时执行的组件间对共享数据的一致性2023/3/14724.5设计文档及其复审n软件设计文档n1)范围n2)数据设计n3)体系结构设计n4)接口设计n5)模块的过程设计n6)其他包括测试的考虑,确保设计满足所有需求,设计约束和一些特殊注解等内容。2023/3/14734.5设计文档及其复审n设计复审(designreview)n及早发现设计中的缺陷n差错的传播n复审的内容n概要设计复审n系统的总体结构,模块划分,内外接口n详细设计复审n各个模块的具体设计2023/3/1474设计复审(designreview)n复审的方式n正式复审FormalreviewnDesignreviewmeetingn非正式复审InformalreviewnWalk-through2023/3/1475