




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、软件工程导论,教育科学学院,第一章 软件危机和软件工程(3),软件危机的表现 开发成本难以控制,进度不可预计; 软件系统的质量和可靠性很差,难以满意; 软件文档相当缺乏,软件系统不可维护; 软件开发生产率很低,软件产品供不应求。 软件产品成本十分昂贵。,软件危机产生的原因 软件本身的特点: - 软件是一种逻辑实体,而不是具体的物理实体,具有高度的抽象性; - 软件是一个逻辑上复杂而规模上庞大的系统,涉及技术、管理等多方面的问题; - 软件的生产方式与硬件明显不同:产品的质量控制在设计和制造阶段的不同;产 品的生产方式不同;设计和制造阶段的资金和人力投入、 技术复杂度不同; - 软件的运行和维护
2、阶段,没有传统意义上的机械磨损、老化问题。 - 软件与硬件有关,对软件有可移植性的要求。 - 软件工作涉及许多社会因素。 对软件开发与维护存在许多错误认识和做法:忽视软件需求分析的重要性;对软件与程序的概念不清;轻视软件维护。 软件开发与维护的方法不正确:对系统需求没有清楚和准确的认识就进入开发阶段, 忽视对软件开发过程的管理;,1.1 软件危机,磨合调整,磨损用坏,t,失效率,硬、软件产品失效率曲线,软件的定义(Boehm):软件是程序以及开发、使用和维护程序需要的所有文档。,早,中,晚,引入同一变动付出的代价随时间变化的趋势,改正一个问题的估计费用(美元),改正一个问题的估计工作量(人天)
3、,20,200,1000,2000,0.05,0.5,2.5,5.0,RA,SD,DD,CD,IT,ST,RT,Bell 实验室统计结果(US),软件产品需要分阶段的定义、设计和开发,严格的产品质量控制,完整的文档记录。,50,60,70,80,90,硬件,软件,解决软件危机的途径 将软件开发看成是一种组织严密、管理严格、各类人员协同配合共同完成的 工程项目。 研究和推广成功的软件开发技术和方法。 开发和使用好的软件工具。 基本概念: 软件生命周期:软件所经历的定义、开发、使用和维护直到废弃所经历的 时期。 程序设计环境:源程序编辑,编译或解释,链接,调试和运行工具的集合。 软件工程环境:软件
4、定义,设计和实现,测试和维护等各个阶段所使用的 软件工具的集合。,1.2 软件工程,软件工程的基本原理 用分阶段的生命周期计划严格管理 6类计划 项目概要计划,里程碑计划,项目控制计划,产品控制计划, 验证计划,运行维护计划。 坚持进行阶段评审 1)经验数据说明,大部分错误是在编码之前造成的,在整个软件设计错误中, 设计错误占63%,而编码错误占37%。 2)错误发现和改正得越晚,所需付出的代价就越高。 实行严格的产品控制 主要实行基准配置管理。 软件配置成分: 软件开发各个阶段产生的文档和代码。 基准配置: 经过评审后的软件配置成分。 采用现代程序设计技术 提高开发和维护的效率,如结构化分析
5、SA和结构化设计SD技术。 结果应能清楚地审查 开发小组的人员应少而精 1)软件开发的进度并非与参与开发人员的数量成正比,有时恰恰相反。 2)软件产品的质量绝对与开发人员的素质相关。 承认不断改进软件工程实践的必要性,1.2 软件工程(续1),2. 软件工程的传统途径生命周期方法学 生命周期方法学的基本内容 从时间角度对软件开发和维护的复杂问题进行分解,把软件生命的漫长周 期依次划分为若干个阶段,每个阶段有相对独立的任务,然后逐步完成每个阶 段的任务。 生命周期方法学的应用方法 从对任务的抽象逻辑分析开始,一个阶段一个阶段地进行开发;前一个阶段任 务的完成是后一个阶段工作的前提和基础,而后一个
6、阶段任务通常是使前一阶 段提出的解法更进一步的具体化,加进了更多的实现细节。 阶段过渡方法 每一个阶段的开始和结束都有严格标准,前一阶段结束的标准是后一阶段工作 开始的标准。 技术审查和管理复审。 基本概念 文档及其作用。 生命周期各阶段的基本任务 问题定义可行性研究 需求分析 总体设计(概要设计) 详细设计 编码和单元测试 综合测试 软件维护。,1.2 软件工程(续2),4. 瀑布模型,问题定义,特点:1) 阶段间具有顺序性和依赖性 2) 推迟实现的观点 3) 质量保证的观点。,可行性研究,需求分析,总体设计,详细设计,编码与单元测试,综合测试,软件维护,软件定义时期,软件开发时期,软件维护
7、时期,1.2 软件工程(续3生命周期各阶段的基本任务),问题定义,可行性研究,需求分析,总体设计,详细设计,编码与单元测试,综合测试,软件维护,要解决的问题是什么?,问题性质、工程目标和规模的报告,分析员:实际用户+负责人,是否有解决办法?,分析员,高层逻辑模型,准确和具体的工程规模和目标,成本/效益分析等可行性报告,为了解决的问题,目标系统必须做什么?准确确定系统的功能,系统的逻辑模型 (数据流图+数据字典+简要算法),如何解决这些问题,模块划分软件结构,如何具体地实现系统:每个模块的流程图 (程序的详细规格说明),通过各种类型的测试,使软件达到预定的要求,写出正确的容易理解和容易维护的程序
8、模块,通过各种必要的维护活动使系统持久地满足用户的需要,1.3 技术审查和管理复审,必要性 管理复审和技术复审 错误传播模型,原始要求,正确的规格说明 错误的规格说明,正确的设计 错误的设计 对错误说明的设计,正确编码 错误编码 对错误设计的编码 对错误说明的编码,正确功能 可改正的错误 不可改正的错误 潜伏的错误,需求分析,设计,编码,测试,错误的扇形传播模型,第二章 可行性研究,2.1 可行性研究的任务,用最小的代价在尽可能短的时间内确定问题是否能够解决。,问题定义,可行性研究,问题定义 正 确 ?,问题定义阶段,审查,系 统 的逻辑模型,技术可行性,经济可行性,操作可行性,实 际 的物理
9、系统,否,是,系统实现方案若干,可行性研究需要的时间长短取决于工程的规模,一般来说,其成本只能占预期的工程总成本的5%10%.,可行性研究的结论,可行性研究阶段任务(示意图),2.2 可行性研究的步骤,复查系统的规模和目标,研究现正在 使用的系统,新系统的高层逻辑模型,重新定义问题,导出和评价 供选择的解法,推荐行动方针,草拟开发计划,书写文档提交审查,用户,分析员,是否符合系统目标,逻辑模型表达了系统分析员对新系统必须作什么工作、完成什么任务的理解.,1. 是否继续该工程的开发的建议2. 所选择解决方案的解法的说明3. 比较仔细的成本/效益分析,2.2 可行性研究的步骤(续),进厂载重汽车进
10、厂后至称重计量点称出货物毛重。 计量人员读出称重仪表上的重量指示,数据 ,开具相应的流 转单 (货物、毛重、车号、收发 货单位名称等的凭据 )。 货主持此流转单将货物送到接收单位 ,验收合格后签章以示有效 ,卸空后空车返回称重计量 点称出皮重 ,计量人员。 计算出净重以后收回流转单 ,出具计量单作为正式结帐凭据 ,货主即可开车离厂。结帐付款 一般在财务处定期核对进行。,研究目前正在使用的系统,这个计量流程存在以下问题 : 1 该计量点日平均过车 (仅进厂 ) 1 50 0多辆 ,如果每车都要返回称重去皮 ,则称重工作量成倍增加 ,经常引起严重的交通堵塞问题。 2 由于是用汽车衡称量 ,人工看表
11、读数 ,手工验车开票 ,所以工作效率十分低 ,有时竟引起长达 1公里的堵车现象 ,难以满足日车流量的要求。 3 为了克服车流量大而引起的工作量繁重的问题 ,对一部分送货单位的车型、车号相对固定的车实行定期称量空车 ,这样虽然减少了一定的称重工作量 ,但易引起车型车号不符、皮重不实的问题 ,在管理上也有漏洞存在。,4 在验票、开票等过程中大量存在人工干预 ,往往会出现计量差错、人情重量、违法乱纪乃至犯罪的情况 ,给企业造成非常严重的经济损失。原系统的工作流程如图 2。,2.2 可行性研究的步骤(续),系统要求,自动称量,提高工作效率; 自动除皮; 自动去杂和去水; 数据自动汇总; 任意点均可称量
12、;,2.2 可行性研究的步骤(续),财务处,计量点,整个称重点采用两台汽车衡、分布在公路两侧 ,物理上将进厂和出厂的车流分开 ,实行一侧称重 ,而另一侧回皮。 实现称重过程微机全过程自动化处理(免除人工操作 ) ,保证称重数据的客观公正和有效准确性 ,称重重量 ,车号等数据自动存储 ,实现多个称重点按权限共享和引用。 能对称重 ,计量数据的物资品种 ,供货单位 ,接收单位 ,供货车号均可分工作班次 ,日 ,旬 ,月进行分类查询和统计处理。一方面进一步减轻工作人员的负担 ,另一方面也使管理人员时时可掌握各种有关数据。 如果一侧称重点出现故障 ,另一侧称重点也可用微机称重和计量 ,进行以上工作。
13、可以随时将计量数据转发到计控处管理机 ,进入企业管理计算机网。,技术问题 称量自动化的程度:车号识别,杂质处理 数据通信方式:有线,无线 开票处理:,2.2 可行性研究的步骤(续),2.3 系统流程图,系统流程图:描绘物理系统的工具,其基本思想是用图形符号以黑盒子形式描绘 系统里面的每个部件(程序、文件、数据库、表格、人工过程等), 表达的是信息在系统各部件之间流动的情况。,常用符号,处理,输入/输出,连接,换页连接,数据流,文档,磁带,联机存储,磁盘,显示,人工输入,人工操作,2. 例子,事务,库存清单程序,定货信息,报告生成程序,定货报告,某装配厂有一座存放零件的仓库,仓库中现有各种零件的
14、数量和每种零件的库存临界值等数据存放在库存清单主文件中。当仓库中零件数量有变化时,应及时修改库存清单主文件,如果哪种零件的库存量少于它的库存量临界值,则应该报告给采购部门以便定货,规定每天向采购部门送一次定货报告。,3. 分层(略),库存清单主文件,(复杂系统),2.4 数据流图,数据流程图:描绘系统的逻辑模型,图中没有具体的物理元素,只是描绘信息在 系统中流动和处理的情况。 设计数据流图只需考虑系统必须完成的基本逻辑功能,完全不需要考虑如何具体的实现这些功能。,1. 符号(四种基本符号),数据的源点或终点,数据处理,数据存储,数据流,一些附加符号(略),仓 库 管理员,定货 系统,采购员,D
15、1: 库存清单,仓 库 管理员,1 处理 事务,2 产生 报表,采购员,D2: 定货信息,2. 例子,基本系统模型,功能级数据流图,事务,定货报表,事务,定货报表,定货信息,定货信息,库存清单,2.4 数据流图(续1),仓 库 管理员,1.1 接收 事务,1.2 更新库 存清单,1.3 处理 定货,2 产生 报表,采购员,D1: 库存清单,D2: 定货信息,事务,事务,库存信息,定货信息,定货信息,定货报表,3. 命名,为数据流(或数据存储)命名 为处理命名,4. 用途,交流信息的工具 分析和设计的工具 进一步设计的依据,库存清单,2.5 数据字典,数据字典是关于数据的信息的集合,也就是对数据
16、流图中包含的所有元素的定义的集合,1. 数据字典的内容,数据流 数据流分量 数据存储 处理,数据处理:用 IPO图或PDL描述比较方便直观。 数据元素的别名:,2. 定义数据的方法,由数据元素组成数据的方式的三种基本类型 顺序 +: 以确定次序连接两个或多个分量 a+b+c 选择 |, : 从两个或多个可能的元素中选取一个 a | b | c 重复 : 把指定的分量重复零次或多次 a 可选:一个分量是可有可无的(重复零次或一次), (a),3. 例子,定货报表=零件编号+零件名称+定货数量+目前价格+主要供应者+次要供应者 零件编号=8字符8 定货数量=1数字5,需求分析示例教材购销管理系统(
17、1),问题描述:学校教材科根据业务的需要,建立一个学校教材购销管理系统,提高教材采购、销售和信息管理的效率。,学生,张秘书,购书申请,王会计,李出纳,赵保管,学生,购书证明,购书申请,购书申请,书,学生,审 查有效性,购书单,开发票,开领书单,发书,学生,有 效购书单,发票,领书单,书,学生,审查并开发票,购书单,开领书单,发书,学生,发票,领书单,书,2)去掉具体模型中的非本质因素,抽象出当前系统的逻辑模型,1)通过对现实环境的调查研究,获得当前系统的具体模型,3)分析当前系统与目标系统的差别,建立目标系统的逻辑模型。,需求分析示例教材购销管理系统(2),学生,审查并开发票,购书单,开领书单
18、,学生,发票,领书单,无效书单,4)对目标系统进行补充和完善,并写出完整的需求说明。,学生,1 审查并开发票,购书单,2 开领书单,学生,发票,领书单,无效书单,各班学生用书表,教材存量表,5)对需求说明进行复审,直到确认文档齐全,并且符合用户的全部需求为止,需求分析示例教材购销管理系统(3),学生,教材购销管理系统,书 库保管员,1. 教材购销管理系统的顶层DFD,学生,书 库 保管员,2. 第二层DFD图教材购销系统,购书单,领书单,缺书单,进书通知,购书单,领书单,1 销 售,2 采购,进书通知,F2: 缺书登记表,F1: 教材存量表,缺书单,进书通知,需求分析示例教材购销管理系统(4)
19、,1.1 审 查有效性,1.2 开发票,有效 购书单,1.3 领书并 开领书单,发票,1.4 登记缺书,1.5 补售教材,F2: 缺书登记表,学生,学生,无效书单,领书单,领书单,F3: 各班学生用书表,F4: 售书登记表,补售书单,暂缺书单,采购,3. 第三层DFD图销售子系统,F1: 教材存量表,需求分析示例教材购销管理系统(5),2.3 修改教材库存和待购量,2.1 按 书 号 汇总缺书,F2: 缺书登记表,销售 子系统,书库 保管员,F1: 教材存量表,进书通知,3. 第三层DFD图采购子系统,2.2 按出版社 统计缺书,F5: 待购教材表,F6: 教材一览表,进书通知,需求分析示例教
20、材购销管理系统(6),数据字典(Data Directory-DD) 领书单 = 学院+专业+班级+学号+姓名+书号+书名+数量+日期 有效购书单 = 领书单 发票= 学号+姓名+书号+书名+单价+数量+总价+书费合计 教材存量表 = 书号+单价+数量 暂缺书单 = 学号+姓名+ 书号+数量 补售书单 = 学号+姓名+ 书号+数量,2.5 成本效益分析,1. 成本估计,代码行技术 。自动估计成本技术 任务分解技术,典型环境下各个开发阶段需要使用的人力的百分比,第三章 需求分析,1. 需求分析的任务,需求分析是软件定义的最后一个阶段,它的基本任务是准确地回答“系统必须做什么?”这个问题。对目标系
21、统提出完整、准确、清晰、具体的要求。 确定对系统的综合要求(四个方面) 系统功能要求 系统性能要求响应时间,所需存储容量及后援存储,安全性和简便性。 运行要求-系统运行环境 将来可能提出的要求 分析系统的数据要求 导出系统的逻辑模型(数据流图+数据字典+主要的处理算法) 修正系统开发计划 开发原型系统,2. 分析过程,结构化分析方法(SA方法)-面向数据流自顶向下逐步求精进行需求分析的方法。,沿数据流图回朔,用户复查,细化数据流图,修正开发计划,书写文档,审 查和复审,3. 概念模型和规范化,用户的数据要求-需要哪些数据,数据之间有哪些联系,数据本身有哪些性质,数据的结构 等)。 用户的处理要
22、求-对数据进行哪些处理,每个处理的逻辑功能。 概念性模型(信息模型)-一种面向问题的数据模型,是按照用户的观点来对数据和信息建模。表示概念性数据模型的最常用方法是实体-联系方法,采用用 ER图的方式,这种表示又称为ER模型。,ER模型,实体: 客观世界中存在的且可区分的事物。 联系: 客观事物之间的联系(三类-1:1,1:N,M:N) 属性: 实体或联系所具有的性质。,教师,姓名,性别,职称,职务,教师号,教,1,课程,N,课程号,课名,学时,学分,学,M,学生,N,学号,姓名,性别,系,年级,成绩,范式,通常用范式定义消除数据的冗余度(略),4. 图形工具,层次方框图: 用树形结构的一系列多
23、层次的矩形框描绘数据的层次结构。,产 品,硬 件,软 件,服 务,处理机,存储器,外部设备,系统软件,应用软件,软件服务,硬件维修,培训,操作系统,编译程序,软件工具,层次方框图的一个例子,注意:层次方框图即可以表示数据的层次结构,也可以表示程序的层次结构,4. 图形工具(续),Warnier 图: 用树形结构描绘数据的层次结构。,软件 产品,系统软件,操作系统(P1),编译程序 (P2),软件工具,编辑程序(P3),测试驱动程序(P4),设计辅助程序(P5),应用软件,4. 图形工具(续),IPO 图: 输入/处理/输出图的简称-IBM。,旧的主文件,事务文件,1、校验主记录,2、校验事务记
24、录,3、更新主记录,1、校验主记录,2、有效的事务记录,3、更新后的主文件,改进的IPO图的形式(P47),5. 验证软件需求,从哪几个方面验证软件需求的正确性(四个方面),一致性: 任何一条需求不能和其他需求互相矛盾。 完整性: 规格说明书应该包括用户需要的每一个功能和性能。 现实性: 指定的需求是用现有的硬件、软件技术可以实现的。 有效性: 需求是正确有效的,确实能解决用户面对的问题。,验证软件需求的方法,一致性:人工审查-形式化描述软件需求,软件工具自动验证。 现实性: 参考以往的开发经验,分析,仿真或模拟 完整性和一致性:原型系统,第四章 总体设计,0 总体设计的两项任务:,划分出组成
25、系统的物理元素-程序、文件、数据库、人工过程和文档 设计软件的结构-确定每个程序的模块组成及模块之间的相互关系。,1 总体设计的过程(两个主要阶段):,系统设计:确定系统的具体实现方案。 结构设计:确定软件结构。,设想供选择的方案,选 取 合理的方案,推荐最佳方案,功能分解,设计软件结构,数据库设 计,制订测试计划,书写文档,数据流图,系统流程图 组成系统的物理元素清单 成本/效益分析 实现系统的进度计划,系统说明 用户手册 测试计划 详细的实现计划 数据库设计结果,审查和复 审,2 软件设计的概念和原理,模块是数据说明、可执行语句等程序对象的说明。,模块化:把程序划分成若干个模块,每个模块完
26、成一个子功能,把这些模块集 总起来组成一个整体,可以完成指定的功能,满足问题的功能。,C(P1+P2) C(P1)+C(P2) E(P1+P2) E(P1)+E(P2),成本,模块数目,成本/模块,接口成本,最小成本区,抽象 信息隐蔽和局部化 模块独立-每个模块完成一个相对独立的子 功能,并且和其他模块之间的关 系很简单。,耦合:一个软件结构内不同模块之间互连程度的度量。 数据耦合:模块之间通过参数交换数据信息。 控制耦合:模块之间传递的参数含有控制信息。 公共环境耦合:两个或多个模块通过一个公共数据环境相互作用。 内容耦合:。,设计原则:尽量使用数据耦合,少用控制耦合,限制公共环境耦合,完全
27、不用内容耦合。,模块化和软件成本,数据耦合,控制耦合,公共环境耦合,内容耦合,低,高,2 软件设计的概念和原理 - 耦合,非直接耦合 数据耦合 特征耦合 控制耦合 外部耦合 公共耦合 内容耦合,弱耦合,中耦合,较强耦合,强耦合,模块1,模块2,模块3,模块4,数据耦合 通过简单变量交换数据,特征耦合 通过数据结构交换数据,非直接耦合 模块之间没有信息传递,模块A,模块B,模块C,模块D,模块L,模块N,全局性数据结构 公共耦合,Flag=1?,S1,S2,模块1,控制耦合 模块之间传递的是控制信息,T,F,全 局 性简单变量 外部耦合,模块A,模块B,内容耦合 访问其它模块的内部数据 直接跳到
28、其他模块内部执行,2 软件设计的概念和原理(续1),内聚:一个模块内各个元素彼此结合的紧密程度。 偶然内聚:一个模块完成一组任务,任务之间的关系很松散。公共语句。 逻辑内聚:若干个逻辑功能类似的任务组成一个模块。 时间内聚:若干个任务必须在同一段时间内执行。如初始化工作。,低内聚,中内聚,高内聚,过程内聚:模块内的处理元素是相关的,且必须以特定次序执行。 通信内聚:模块中所有元素都使用同一个输入数据,和/或产生同一个 输出数据。,顺序内聚:模块中所有处理元素和同一个功能密切相关,且这些处理必 须顺序执行。 功能内聚:所有处理元素属于一个整体,完成一个单一的功能。,模块A,模块B,模块C,S1;
29、 S2;,模块A,模块B,模块C,模块A,模块B,模块C,模块D,2 软件设计的概念和原理(续2),改进软件结构提高模块独立性 模块规模应该适中 深度、宽度、扇入、扇出都应适当 模块的作用域应该在控制域之内 力争降低模块接口的复杂程度 设计单入口单出口的模块 模块的功能应该可以预测,3 启发式规则,4 图形工具,层次图和HIPO图 层次图用来描述软件结构,层次图+IPO图= HIPO图,正文加工系统,输入,输出,编辑,加标题,存储,检索,编目录,格式化,添加,删除,插入,修改,合并,列表,结构图 方框之间的箭头表示模块的调用关系,带注释的箭头表示模块间来回传递的信息:空心圆数据,实心圆控制信息
30、。,结构图还可以表示模块的选择调用或循环调用 参见:P64,5 面向数据流的设计方法,概念 1) 变换流 2) 事务流 3) 设计过程,时间,输入流,输出流,变换流,事务,外部表示,内部表示,信息,T,事务中心,活动通路,事务中心 T 完成下述任务: 接受输入数据(事务) 分析每个事务以确定它的类型 根据事务类型选取一条活动通路,5 面向数据流的设计方法(续),精化数据流图,流类型,区分事务中心和数据接收通路,映射成事务结构,区分输入和输出分支,映射成变换结构,用启发式设计规则精化软件结构,导出接口描述和全程数据结构,复查,详细设计,事务分析,变换分析,5 面向数据流的设计方法(续),变换分析
31、: 汽车数字仪表板功能: 1) 通过A/D 转换实现传感器和微处理器接口, 2) 在发光二极管面板上显示数据, 3) 指示每小时英里数(mph),行驶的里程,每加伦油行驶的英里数(mpg)等等。 4) 指示加速或减速; 5) 超速警告:如果车速超过55英里/小时,则发出超速警告铃声。,A/D,转数计数器,流量传感器,微处理机,里程表,车速表,油效表,油管系统,加速/减速指示,超速报警,5 面向数据流的设计方法(续),读旋转信号,收集和求平均,转换成转/分( rpm),计算里程,确定加速 / 减速,产生加速/减速显示,产生里程显示,计算mph和超速值,计算燃料消耗,发出铃声,产生mph显示,产生
32、 mpg显示,读和校核,计算gph,旋转信号,信号/秒 SPS,SPS,SPS,rpm,rpm,箭头指示,上箭头,水平线,下箭头,英里,超速值,显示,铃声,mph,mph,mpg,gph,燃料流,燃料流传感器信号,Mpg 显示,数字仪表板 控 制,接受传感器 信 号,数据转换控制,驱动仪表 板,输入控制,变换控制,输入控制,5 面向数据流的设计方法(续),设计步骤:,复查基本系统模型,复查并精化数据流图,确定数据流图具有变换特性还是事务特性,确定输入流和输出流的边界,划分变换或事务中心,完成 “第一级分解”,Cm,Ca,Ct,Ce,第一级分解的方法,5 面向数据流的设计方法(续),A,D,B,
33、C,Cm,Ca,C,B,D,A,接受传感器 信 号,转换成rpm,收集SPS,读旋转信号,计算gph,读燃料流,数字仪表板 控 制,确 定加/减速,计算mph,计算gpg,计算里程,驱动仪表板,加速/减速显示,显示mpg,显示mph,显示里程,发出铃声,发光二极管显示,5 面向数据流的设计方法(续),数字仪表板 控 制,接受传感器 信 号,转换成rpm,读旋转信号,计算gph,读燃料流,数字仪表板 控 制,确 定加/减速,计算mph,计算gpg,计算里程,驱动仪表板,加速/减速显示,显示mpg,显示mph,显示里程,发出铃声,发光二极管显示,数字仪表板软件系统经过调整后的结构图,注意:红色模块
34、的位置有所调整,5 面向数据流的设计方法(续),事务分析,4,3,2,总 控,接收通路,C通路,B通路,A通路,调 度,A_CTL,1,4,2+1,3,2,1,B_CTL,C_CTL,设计优化 先使系统工作起来,然后使它快起来。,数据流图,软件结构,第五章 详细设计,详细设计阶段的目标: 确定应该怎样具体地实现所要求的系统。 精确地描述整个目标系统,从而在编码阶段可以把这个描述翻译成用某种程序设计语言书写的程序。,结构程序设计 E. W. Dijstra与Goto语句,1966,Bohm 和 Jacobini 证明了只要顺序、选择、循环这三种基本结构就能实现任何单入口单出口的程序。,B,exp
35、,A,A,B,exp,A,A,exp,T,F,T,T,F,F,顺序结构,选择结构,循环结构,1)“当”型循环,2)直到型循环,结构程序设计: 一种程序设计技术,它采用自顶向下逐步求精的设计方法和单入口单出口的控制结构。,1 结构程序设计,经典的结构程序设计:顺序,选择,当型循环 扩展的结构程序设计:顺序,选择+多分支,当型循环+直到型循环 修正的结构程序设计:顺序,选择+多分支,当型循环+直到型循环,break结构,详细设计的工具 程序流程图,开始或停止,准备,选择,多分支选择,注释,预先定义的处理,子程序,循环下界,循环上界,处理,控制流,2 详细设计的工具-盒图(N_S图),S1,S2,S
36、3,条件,F,T,Else 部分,Then 部分,Case 条件,值1,值2,。,值n,Case 1 部分,Case 2 部分,Case n 部分,循环条件,Do-While 部分,循环条件,Do-Until 部分,A,特点:1)功能域(既一个特定控制结构的作用域)明确 2)不可能任意转移控制 3)很容易确定局部和全程数据的作用域 4)很容易表现嵌套关系,也可以表示模块的层次结构,Nassi 假定 int 类型为16位整数。 需要测试216* 216* 216次。 每次1ms, 约要1万年,循环20次,各种组合,约520种,例二:白盒测试,7.1 基本概念(1),软件测试的步骤:,模块测试,子
37、系统测试,系统测试,平行运行,目的:保证每个模块作为一个单元能够正确运行,又称为单元测试,集成测试、组装测试、联合测试; 重点在于测试模块之间的接口;,将经过测试的子系统装配成一个完整的系统来测试; 发现设计和编码的错误,验证系统是否满足需求说明所定义的功能及其动态特性; 也称为集成测试。,同时运行新旧两个系统,并且对处理的结果进行比较,以确定新系统是否满足相关性能指标。,验收测试,有用户参加的系统测试; 验证是否满足用户的需要。,7.1 基本概念(2),测试阶段的信息流:,测试,软件配置,测试配置,测试结果,预期结果,评价,错误,错误率数据,调试,可靠性模型,正确,可靠性预测,测试与软件开发
38、各个阶段的关系 软件开发过程是一个自顶向下,逐步细化的过程 软件计划阶段定义软件作用域 软件需求分析建立软件信息域、功能和性能需求、约束等 软件设计 把设计用某种程序设计语言转换成程序代码 测试过程是依相反顺序安排的自底向上,逐步集成的过程。,包括需求说明书、设计说明书、源程序清单等,包括测试计划和测试方案,7.1 基本概念(3),测试与软件开发各个阶段的关系 (示意图),7.2 单元测试(1),单元测试又称模块测试,是针对软件设计的最小单位 程序模块,进行正确性检验的测试工作。其目的在于发现各模块内部可能存在的各种差错。 单元测试需要从程序的内部结构出发设计测试用例。多个模块可以平行地独立进
39、行单元测试。,1. 单元测试的内容,在单元测试时,测试者需要依据详细设计说明书和源程序清单,了解该模块的I/O条件和模块的逻辑结构,主要采用白盒测试的测试用例,辅之以黑盒测试的测试用例,使之对任何合理的输入和不合理的输入,都能鉴别和响应。,(1) 模块接口测试,在单元测试的开始,应对通过被测模块的数据流进行测试。测试项目包括: 调用本模块的输入参数是否正确; 本模块调用子模块时输入给子模块的参数是否正确; 全局量的定义在各模块中是否一致;,模块接口 局部数据结构 重要的执行通路 出错处理通路 影响上述各方面特性 的边界条件,7.2 单元测试(2),在做内外存交换时要考虑: 文件属性是否正确;
40、OPEN与CLOSE语句是否正确; 缓冲区容量与记录长度是否匹配; 在进行读写操作之前是否打开了文件; 在结束文件处理时是否关闭了文件; 正文书写输入错误, IO错误是否检查并做了处理。,(2) 局部数据结构测试 不正确或不一致的数据类型说明 使用尚未赋值或尚未初始化的变量 错误的初始值或错误的缺省值 变量名拼写错或书写错 不一致的数据类型 全局数据对模块的影响,(3) 路径测试 选择适当的测试用例,对模块中重要的执行路径进行测试。 应当设计测试用例查找由于错误的计算、不正确的比较或不正常的控制流而导致的错误。 对基本执行路径和循环进行测试可以发现大量的路径错误.,(4) 错误处理测试 出错的
41、描述是否难以理解 出错的描述是否能够对错误定位 显示的错误与实际的错误是否相符 对错误条件的处理正确与否 在对错误进行处理之前,错误条件 是否已经引起系统的干预等,7.2 单元测试(3),(5) 边界测试 注意数据流、控制流中刚好等于、大于或小于确定的比较值时出错的可能性。对这些地方要仔细地选择测试用例,认真加以测试。 如果对模块运行时间有要求的话,还要专门进行关键路径测试,以确定最坏情况下和平均意义下影响模块运行时间的因素,2. 单元测试的步骤,代码审查:组长+程序设计、编写、测试者 模块并不是一个独立的程序,在考虑测试模块时,同时要考虑它和外界的联系,用一些辅助模块去模拟与被测模块相联系的
42、其它模块。 驱动模块 (driver) :调用测试单元的“主程序”,它接受测试数据,把这些数据传送给被测试的模块并打印有关结果。 桩模块 (stub) 存根模块:是被测试模块单元所调用模块的代替模块,在模块调用接口、相关数据处理、控制返回等方面对被代替模块进行“模拟”。,驱动模块,被测模块,桩模块,桩模块,桩模块,测试用例,测试结果,单元测试的测试环境,7.3 集成测试(1),集成测试是组装软件的系统技术;组装测试 、联合测试 通常,在单元测试的基础上,需要将所有模块按照设计要求组装成为系统。这时需 要考虑的问题是: 在把各个模块连接起来的时侯,穿越模块接口的数据是否会丢失; 一个模块的功能是
43、否会对另一个模块的功能产生不利的影响; 各个子功能组合起来,能否达到预期要求的父功能; 全局数据结构是否有问题; 单个模块的误差累积起来,是否会放大,从而达到不能接受的程度。,在单元测试的同时可进行组装测试,发现并排除在模块连接中可能出现的问题,最终构成要求的软件系统。,子系统的组装测试特别称为部件测试,它所做的工作是要找出组装后的子系统与系统需求规格说明之间的不一致。 通常,把模块组装成为系统的方式有两种 一次性组装方式:又称为非渐增式测试; 增殖式组装方式:其中又分为自顶向下、自底向上和两种方法混合测试 方式。,7.3 集成测试(2),1.一次性组装方式(big bang),它是一种非增殖
44、式组装方式。也叫做整体拼装。 使用这种方式,首先对每个模块分别进行模块测试,然后再把所有模块组装在一起进行测试,最终得到要求的软件系统。,系 统结构图,单元测试,整体组装,7.3 集成测试(3),2. 增殖式组装方式,这种组装方式又称渐增式组装 首先对一个个模块进行模块测试,然后将这些模块逐步组装成较大的系统 在组装的过程中边连接边测试,以发现连接过程中产生的问题 通过增殖逐步组装成为要求的软件系统。,(1) 自顶向下的增殖方式,这种组装方式将模块按系统程序结构,沿控制层次自顶向下进行组装。 自顶向下的增殖方式在测试过程中较早地验证了主要的控制和判断点。 选用按深度方向组装的方式,可以首先实现
45、和验证一个完整的软件功能。,7.3 集成测试(4),(2) 自底向上的增殖方式,这种组装的方式是从程序模块结构的最底层的模块开始组装和测试。 因为模块是自底向上进行组装,对于一个给定层次的模块,它的子模块(包括 子 模块的所有下属模块)已经组装并测试完成,所以不再需要桩模块。在模块的测试 过程中需要从子模块得到的信息可以直接运行子模块得到。,自顶向下增殖的方式和自底向上增殖的方式各有优缺点。 一般来讲,一种方式的优点是另一种方式的缺点。,7.3 集成测试(5),非渐增式和渐增式测试方法的优缺点比较: 非渐增式方法要对每个模块编写驱动模块和桩模块,工作量较大;而渐增式 方法可以利用部分已测试过的
46、模块作为测试软件; 非渐增式方法发现模块间的接口错误较晚,而渐增式方法则要早一些; 非渐增式方法发现错误后较难定位;而渐增式方法则要容易一些; 非渐增式方法可以并行测试所有模块,可充分利用人力,加快工程进度; 渐增式方法接近全真运行环境,需要较多的测试运行时间,但对程序模块的 测试较为彻底。,7.4 验收测试 验证软件的有效性,软件的有效性:如果软件的功能和性能满足用户的需求,则软件是有效的; 软件有效性的标准:需求分析阶段所产生的准确的系统需求文档; 测试方法:一般用黑盒方法; 结果:功能和性能均与用户要求一致,软件是可以接受的;否则软件是不可接 受的。,7.5 设计测试方案,测试方案:包括
47、预定要测试的功能,应该输入的测试数据和预期的结果。其中最困难的 设计测试用的输入数据(称为测试用例)。 测试用例设计技术:黑盒测试的等价划分、边界值分析、错误推测法; 白盒测试的逻辑覆盖法;,1. 逻辑覆盖,语句覆盖 判定覆盖 条件覆盖 判定条件覆盖 条件组合覆盖 路径覆盖。,逻辑覆盖是以程序内部的逻辑结构为基础的设计测试用例的技术。它属白盒测试。,语句覆盖,(A1) and (B=0),(A=2) or (X1),X = X / A,X=X+1,T,T,F,F,b,c,e,PROCEDURE Example(A,B:real; X:real ); Begin IF (A1) AND (B=0
48、) THEN X:= X / A; IF ( A=2 ) OR (X1) THEN X:=X+1 END;,a,1,S,d,2,3,4,5,6,7,I. A=2, B= 0, X=4 - sacbed,语句覆盖 所有的语句至少执行一次!,判定覆盖,(A1) and (B=0),(A=2) or (X1),X = X / A,X=X+1,T,T,F,F,b,c,e,a,1,S,d,2,3,4,5,6,7,判定覆盖 每个判定的每种可能都至少执行一次! 即每个判定的每个分支都至少执行一次!,I: A=3, B=0,X=3: sacbd,II: A=2, B=1,X=1: sabed,满足判定覆盖的测
49、试用例一定满足语句覆盖:判定覆盖比语句覆盖强。,条件覆盖,(A1) and (B=0),(A=2) or (X1),X = X / A,X=X+1,T,T,F,F,b,c,e,a,1,S,d,2,3,4,5,6,7,条件覆盖 每个语句至少执行一次,而且判定表达式中的每个条件都要取得各种可能的结果。,(A1),(A1),(B=0),(B0),(A=2),(A2),(X1),(X1),II: A=1, B=1,X=1: sabd,条件覆盖一般情况下比判定覆盖要强,但是也有满足条件覆盖但不能满足判定覆盖的情况。,I: A=2, B=0,X=4: sacbed,I: A=2, B=0,X=1: sac
50、bed,II: A=1, B=1,X=1: sabed,判定/条件覆盖,(A1) and (B=0),(A=2) or (X1),X = X / A,X=X+1,T,T,F,F,b,c,e,a,1,2,3,4,5,6,7,S,d,判定条件不一定包含条件覆盖,条件覆盖也不一定包含判定覆盖;事实上同时满足这两种标准的判定/条件覆盖也不会比条件覆盖更强。,(A1),(A1),(B=0),(B0),(A=2),(A2),(X1),(X1),II: A=1, B=1,X=1: sabd,I: A=2, B=0,X=4: sacbed,测试用例I,II既满足判定覆盖也满足条件覆盖的要求。严格来讲,合适的条件覆盖测试用例设计应该作到满足判定/条件覆盖的标准:判定/条件覆盖并不比条件覆盖更强。,条件组合覆盖,(A1) and (B=0)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 影响愈合的生物学因素
- 企业培训课件分享模板
- 婴幼儿保育职业素养考核试题及答案
- 英语阅读难句分析之定语从句
- 城市综合体餐饮区承包经营合同
- 采石场矿山环境保护与劳务合作合同
- 国际化产业园厂房租赁合作协议
- 财务公司财务软件保密及用户隐私保护协议
- 防用房建设方案
- 早餐店标准化经营承包合同
- 急性肺栓塞课件
- 高校中外合作办学人才培养机制
- 《肢体残疾评定》课件
- 停车场数据分析与管理
- 全等三角形经典辅助线做法汇总
- 客运列车保洁作业服务方案
- 2023年广东省广州市白云区委政法委招聘1人笔试参考题库(共500题)答案详解版
- 心理治疗师(初级)必刷必练题库(600题)
- 广东省广州市2024届高三上学期8月阶段训练数学试题
- 电离方程式的书写高一上学期化学人教版(2019)必修第一册
- 哈萨克斯坦劳动法中文版
评论
0/150
提交评论