第4章 软件工程_第1页
第4章 软件工程_第2页
第4章 软件工程_第3页
第4章 软件工程_第4页
第4章 软件工程_第5页
已阅读5页,还剩70页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第四章软件工程2026/1/131本章学习的主要内容第1节软件工程概述第2节软件开发模型第3节软件需求分析第4节软件设计概述第5节项目开发过程2026/1/132第1节软件工程概述软件与软件危机软件工程学传统软件工程和面向对象软件工程2026/1/133软件程序、软件与软件产品独唱-->小合唱-->合唱-->万人大合唱

|||简单程序较复杂程序软件软件定义:软件=程序+数据+文档程序:按事先设计的功能和性能需求执行的指令序列数据:是程序能正常操纵信息的数据结构文档:与程序开发、维护和使用有关的图文材料2026/1/134软件开发的发展过程程序设计时代(1946-1955)硬件配置低,内存小速度慢,稳定性差程序以机器语言、汇编语言;程序规模小,结构简单软件时代(1955-1970)计算机性能提高,产量上升提出软件的概念,软件需求猛增,开发技术能力不足软件工程时代(1970-今)硬件已不是考虑的问题对开发方法、技术理论进行研究2026/1/135软件开发的发展过程计算机应用发展软件数量多规模大软件成本高质量低个体化软件开发方法软件维护困难软件危机软件工程2026/1/136软件工程时代第一代软件技术自顶向下、逐步求精的结构化程序设计方法第二代软件技术软件生存周期,注重软件测试技术第三代软件技术需求分析方法高层定义低层实施2026/1/137软件危机定义计算机软件的开发和维护过程所遇到的一系列严重问题表现对软件开发成本和进度的估算很不准确用户很不满意质量很不可靠没有适当的文档软件成本比重上升供不应求:软件开发生产率跟不上计算机应用迅速深入的趋势2026/1/138硬件/软件成本变化趋势

硬件

软件

100%0%1955197019852026/1/139软件技术进步落后于需求增长2026/1/1310软件危机原因客观:软件本身特点逻辑部件规模庞大主观:不正确的开发方法忽视需求分析错误认为:软件开发=程序编写轻视软件维护2026/1/1311软件危机解决途径组织管理工程项目管理方法技术措施软件开发技术与方法软件工具2026/1/1312软件工程学的范畴软件工程学指导计算机软件开发和维护的工程学科工程管理+开发技术软件开发技术软件开发方法学软件工具软件工程管理软件管理学软件经济学软件度量学2026/1/1313两种程序设计方法程序设计的两次飞跃结构化程序设计程序=数据结构+算法面向对象程序设计程序

=对象

+消息

2026/1/1314面向过程和面向对象的编码存款取款利息结算帐户余额帐户余额利息结算存款取款2026/1/1315两类软件工程方法传统软件工程软件分析

总体设计

详细设计

面向过程的编码

测试

面向对象软件工程软件分析与对象抽取

对象详细设计

面向对象的编码

测试

2026/1/1316软件工程的目的适用性有效性可修改性可靠性可理解性可维护性可重用性可移植性可追踪性可互操作性2026/1/1317第2节软件开发模型传统开发模型瀑布模型(waterfallmodel)快速原型模型(rapidprototypemodel)演化开发模型增量模型(incrementalmodel)螺旋模型(spiralmodel)面向对象开发模型构件集成模型(componentintegrationmodel)

形式化开发模型转换模型(transformationalmodel)净室模型(cleanroommodel)2026/1/1318瀑布生存周期模型计划时期问题定义可行性分析开发时期需求分析软件设计编码测试运行时期软件维护2026/1/1319瀑布模型问题定义可行性研究需求分析软件设计编码测试维护计划时期开发时期运行时期2026/1/1320瀑布模型特点阶段的顺序性和依赖性(故也称线性顺序模型)推迟实现原则(宁慢求好)质量保证存在问题不适合需求模糊的系统2026/1/1321瀑布模型1、瀑布模型有以下优点

1)为项目提供了按阶段划分的检查点。

2)当前一阶段完成后,只需要去关注后续阶段。

3)可在迭代模型中应用瀑布模型。2、瀑布模型有以下缺点

1)在项目各个阶段之间极少有反馈。

2)只有在项目生命周期的后期才能看到结果。

3)通过过多的强制完成日期和里程碑来跟踪各个项目阶段。2026/1/1322快速原型模型原型是指模拟某种产品的原始模型。快速原型模型需要迅速建造一个可以运行的软件原型;便于理解和澄清问题,使开发人员与用户达成共识,最终在确定的客户需求基础上开发客户满意的软件产品。快速原型模型允许在需求分析阶段对软件的需求进行初步而非完全的分析和定义,快速设计开发出软件系统的原型,该原型向用户展示待开发软件的全部或部分功能和性能;用户对该原型进行测试评定,给出具体改进意见以丰富细化软件需求;开发人员据此对软件进行修改完善,直至用户满意认可之后,进行软件的完整实现及测试、维护。2026/1/1323快速原型模型需求分析原型开发最终系统设计原型评价最终系统实现用户反馈2026/1/1324快速原型模型特点需要快速开发工具支持循环开发模式适用于用户需求不明确的情况种类渐进型抛弃型2026/1/1325增量模型融合了瀑布模型的基本成分和原型实现的迭代特征,该模型采用随着日程时间的进展而交错的线性序列,每一个线性序列产生软件的一个可发布的“增量”。当使用增量模型时,第1个增量往往是核心的产品,即第1个增量实现了基本的需求,但很多补充的特征还没有发布。客户对每一个增量的使用和评估都作为下一个增量发布的新特征和功能,这个过程在每一个增量发布后不断重复,直到产生了最终的完善产品。2026/1/1326增量模型规格说明设计实现和集成交付客户规格说明设计实现和集成交付客户规格说明设计实现和集成交付客户规格说明设计实现和集成交付客户增量1增量2增量3增量n2026/1/1327增量模型增量小而可用的软件特点在前面增量的基础上开发后面的增量每个增量的开发可用瀑布或快速原型模型迭代的思路2026/1/1328增量模型优点人员分配灵活,刚开始不用投入大量人力资源。如果核心产品很受欢迎,则可增加人力实现下一个增量。可先发布部分功能给客户,对客户起到镇静剂的作用。增量能够有计划地管理技术风险。

缺点

1)需要软件具备开放式的体系结构。

2)容易退化为边做边改模型,从而是软件过程的控制失去整体性。

3)如果增量包之间存在相交的情况且未很好处理,则必须做全盘系统分析。2026/1/1329螺旋模型2026/1/1330

将瀑布模型和快速原型模型结合起来,强调了其他模型所忽视的风险分析,特别适合于大型复杂的系统。螺旋模型沿螺线进行若干次迭代,将工程分为四个活动:

(1)制定计划:确定软件目标,选定实施方案,弄清项目开发的限制条件;(2)风险分析:分析评估所选方案,考虑如何识别和消除风险;(3)实施工程:实施软件开发和验证;(4)客户评估:评价开发工作,提出修正建议,制定下一步计划。螺旋模型由风险驱动,强调可选方案和约束条件从而支持软件的重用,有助于将软件质量作为特殊目标融入产品开发之中。螺旋模型2026/1/1331螺旋模型特点瀑布模型+快速原型+风险分析迭代过程一个螺旋式周期

确定目标,选择方案,选定完成目标的策略

风险角度分析该策略

启动一个开发阶段

评价前一步的结果,计划下一轮的工作

螺旋模型的项目适用:

对于新近开发,需求不明确的情况下,适合用螺旋模型进行开发,便于风险控制和需求变更!2026/1/1332螺旋模型优点1)设计上的灵活性,可以在项目的各个阶段进行变更。2)以小的分段来构建大型系统,使成本计算变得简单容易。3)客户始终参与每个阶段的开发,保证了项目不偏离正确方向以及项目的可控性。4)随着项目推进,客户始终掌握项目的最新信息,

从而他或她能够和管理层有效地交互。5)客户认可这种公司内部的开发方式带来的良好的沟通和高质量的产品。

缺点很难让用户确信这种演化方法的结果是可以控制的。建设周期长,而软件技术发展比较快,所以经常出现软件开发完毕后,和当前的技术水平有了较大的差距,无法满足当前用户需求。2026/1/1333面向对象模型对象Object类Class继承Inheritance消息Message面向对象对象+类+继承+消息通信2026/1/1334构件集成模型构件集成模型利用预先封装好的软件构件来构造应用软件系统,它融合了螺旋模型的很多特征,支持软件开发的迭代方法。开发活动从描述候选类开始,通过检查软件系统处理的数据以及操作这些数据的方法,把相关的数据和方法封装成一个类,然后到构件库中查找这个类。

如果已经存在,就从库中提取出来以供复用;

如果候选类不存在,则采用面向对象的方法使它实现,并把它存储到构件库中。通过集成从构件库中提取的已有类和为了满足应用程序的特定需要而构建的新类,即可得到待开发软件的第一个迭代。然后进入下一轮螺旋周期,继续进行构件集成的迭代。2026/1/1335构件集成模型2026/1/1336构件集成模型特点面向对象基于构件库融合螺旋模型特征支持软件开发的迭代方法

软件重用2026/1/1337转换模型该模型结合了形式化软件开发方法和程序自动生成技术,采用形式化需求规格说明和变换技术等技术手段,生产目标程序系统。

软件需求分析确定以后,选用某种形式化的需求规格说明语言描述软件规格说明,可以生成形式化的规格说明。为了确认该形式化规格说明与软件需求的一致性,还可以在形式化规格说明的基础上开发一个软件原型,让用户对该软件原型系统的界面,功能和性能进行确认,必要时,可对形式化需求说明和原型进行修改,直到形式化规格说明能正确反映用户需求为止。然后进行一系列的人机交互或全自动的程序变换,直到生成计算机系统可以接受的目标代码。2026/1/1338转换模型形式化规格说明与需求比较后修正变换2变换1变换n测试形式化开发记录系统需求目标系统2026/1/1339转换模型特点形式化软件开发方法

形式化需求规格说明

变换技术程序自动生成技术

确保正确2026/1/1340净室模型净室模型是一种形式化的增量开发模型。基本思想是力求在分析和设计阶段就消除错误,确保正确,然后在无缺陷或“洁净”的状态下实现软件的制作。

和增量模型一样,净室开发把软件看成一系列的增量,每个增量是一个形式化方法表示的“盒”。当需求收集结束后,就用盒结构表示分析和设计模型。这种“盒”是在某个特定的抽象层次上对系统(或系统的某些方面)的一次封装。完成了盒结构设计之后,先对设计的软件构件进行正确性检验;通过正确性验证后,再将形式化的盒结构设计转换为适当的程序设计语言,并进行源代码的正确性验证;接着开始统计性使用测试,即根据统计样本得出使用分布概率,按此概率进行随机测试;以上工作全部完成后,还要对增量进行集成前的认证。2026/1/1341净室模型需求收集盒结构规约形式化设计统计性使用测试正确性证明代码生成与检查测试计划认证需求收集盒结构规约形式化设计统计性使用测试正确性证明代码生成与检查测试计划认证需求收集盒结构规约形式化设计统计性使用测试正确性证明代码生成与检查测试计划认证增量1增量2增量n2026/1/1342净室模型净室思想在分析和设计阶段消除错误在“洁净”状态下实现软件制作形式化盒结构表示分析和设计正确性验证增量模型2026/1/1343小结软件开发模型是不断变化发展的各种软件开发模型各有优缺点选用时不必拘泥与某种模型可组合多种模型也可根据实际创建新的模型2026/1/1344第3节软件需求分析需求分析的任务与步骤需求获取的常用方法分析建模软件需求说明结构化分析方法面向对象分析方法2026/1/1345需求分析的任务和步骤需求分析的任务建立分析模型

编写需求说明

需求分析的步骤需求获取

需求提炼

需求描述

需求验证

2026/1/1346需求获取的常用方法联合分析小组

用户代表、领域专家和系统分析员客户访谈

充分准备,寻找共同语言循循序渐进、逐步逼近

问题分析与确认

多个来回2026/1/1347分析建模结构化分析模型面向对象分析模型分析模型描述工具数据流图(DFD)、数据字典(DD)和处理规格说明(PSPEC)控制流图(CFD)、控制规格说明(CSPEC)和状态转移图(STD)实体关系图(E-R图)

用例图,对象-关系图,对象-行为图

2026/1/1348结构化分析模型加工说明数据对象说明CFD,STD图DFD图E-R图DD控制说明2026/1/1349面向对象分析模型属性、操作、协作者对象-行为模型对象-关系模型类/对象模型使用实例2026/1/1350分析模型描述工具结构化分析工具数据流程图(DFD)数据字典(DD)E-R图

面向对象分析工具用例图,类对象图对象-关系图对象-行为图2026/1/1351数据流图DFD描述系统逻辑模型信息在系统中的流动和处理用途交流信息的工具结构化分析和设计的工具

2026/1/1352数据流图DFD组成符号圆框代表加工箭头代表数据流向方框代表源点和终点双杠表示数据文件或数据库分层从高层到低层分解前后的数据流必须一致命名数据流处理2026/1/1353领书单

进书通知

购书单

缺书单

DFD练习—售书系统学生教材购销系统书库保管员2026/1/1354领书单进书通知

进书通知

购书单缺书单

DFD练习—售书系统1销售2采购书库保管员学生F1教材存量表

F2缺书登记表

2026/1/1355用例图用例:是从系统外部可见的行为,是系统为某一个或几个参与者(Actor)提供的一段完整的服务。符号表示:

系统名称系统用例名用例角色关联2026/1/1356UseCase图例子保险商务系统签定保险单销售统计客户统计客户保险销售员2026/1/1357用例之间的关系扩展关系使用关系组合关系《扩展》签保险单签汽车购买契约2026/1/1358《使用》《使用》签保险单签汽车保险单签房屋保险单《包含》保单维护新建保单变更保单删除保单《包含》《包含》对象-关系图从E-R图演变而来描述对象间关系学生书出版社购买来自1:11:m1:11:12026/1/1359对象-行为图描述对象的动态行为对象状态转换图事件流图2026/1/1360对象状态转换图例子加纸纸用完故障修复打印故障打印完成接到打印命令就绪打印缺纸故障2026/1/1361事件流图例子[打印机忙]保存文件[打印机就绪]打印文件打印文件打印文件计算机打印服务器打印队列打印机2026/1/1362软件需求说明(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功能需求1

3.1.2功能需求2

3.1.n功能需求n2026/1/13633.2外部接口需求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附录结构化分析方法——总结基本步骤功能分解分层DFD定义数据和加工DD,PSPEC根据需要,分析复杂数据和动态模型E-R图,CFD,CSPEC,STD编写SRS2026/1/1364面向对象分析方法——总结基本步骤定义系统的用例领域分析,建立类对象模型建立对象-关系模型建立对象-行为模型编写SRS2026/1/1365第4节软件设计概述4.1软件设计的任务4.2软件设计的基本概念4.3模块化设计4.4设计需要处理的问题4.5设计文档及其复审2026/1/13664.1软件设计的任务分析模型设计模型设计文档回答Howtodo?可以分为概要设计、详细设计软件设计包括数据设计体系结构设计接口设计过程设计2026/1/13674.1软件设计的任务数据设计信息模型软件数据结构体系结构设计定义软件部件间的关系接口设计软件内部、外部及与人之间的通信过程设计软件组件的过程性描述2026/1/13684.2软件设计的基本概念模块(module)与构件(component)模块:定义输入、输出和特性的程序实体构件:可重复使用的软件组件抽象(abstract)与细化(refinement)抽象:分层次考虑和处理问题(数据和过程)细化:从高到低的逐步分解过程

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论