软件工程导论(第五版)ppt课件_第1页
软件工程导论(第五版)ppt课件_第2页
软件工程导论(第五版)ppt课件_第3页
软件工程导论(第五版)ppt课件_第4页
软件工程导论(第五版)ppt课件_第5页
已阅读5页,还剩325页未读 继续免费阅读

下载本文档

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

文档简介

软件开发 ( Software Engineering ) 信息学院 严诚 盐城师院 信息科学与技术学院 1 软件工程概述 1.1 软件危机 60年代中期以前:通用硬件相当普遍,软件却是为某个 具体的应用而编写的。 60年代中到70年代中:软件作坊。 盐城师院 信息科学与技术学院 软件危机:计算机软件的开发和维护过程中所遇 到的一系列严重问题。(正常、不正常运行软件都 具有这种问题) 1.1.1软件危机的定义 盐城师院 信息科学与技术学院 1)对软件开发成本和进度的估计常常很不准确; 2)用户对完成的软件系统不满意的现象经常发生 ; 3)软件产品的质量往往靠不住; 软件危机的典型表现: 盐城师院 信息科学与技术学院 4)软件常常是不可维护的; 5)软件通常没有适当的文档资料; 6)软件成本在计算机系统总成本中所占的比 例逐年上升; 7)软件开发生产率提高的速度跟不上计算机 应用的发展趋势。 盐城师院 信息科学与技术学院 1.1.2 产生软件危机的原因 1)软件本身特点造成; 2)软件开发与维护的方法不正确。 主要表现: (a)忽视软件需求分析; (b)认为软件开发就是写程序并使之运行; (c)轻视软件维护; 盐城师院 信息科学与技术学院 在软件开发的不同阶段进行修改需要付出的 代价很不相同: 高 中 低 早期中期后期软件开发时期 代价 引入同一修改的代价随时间变化的趋势 盐城师院 信息科学与技术学院 1)推广使用在实践中总结出来的开发软件的成 功技术和方法,并研究探索更有效的技术和方法 ; 2)开发和使用更好的软件工具; 3)良好的组织管理措施。 1.1.3 解决软件危机的途径 盐城师院 信息科学与技术学院 为了解决软件危机产生的问题,软件工程与 方法学逐渐形成,然后出现了两个相互相承又 各有侧重的学科: 1)软件工程学:主要应用工程的方法和技术 研究软件开发与维护的方法、工具和管理的一 门交叉学科。 2)程序设计方法学:主要应用数学的方法研 究程序的性质以及程序设计的理论和方法的学 科。 盐城师院 信息科学与技术学院 1.2 软件工程 1.2.1 软件工程的介绍 1968年NATO会议:软件工程就是为了经济地获 得可靠的且能在实际机器上有效地运行的软件, 而建立和使用完善的工程原理。 1993年IEEE:软件工程是(1)把系统的、规范 的、可度量的途径应用于软件开发、运行和维护 过程;(2)研究(1)中提到的途径。 盐城师院 信息科学与技术学院 1. 软件工程关注于大型程序的构造; 2. 软件工程的中心课题是控制复杂性; 3. 软件经常变化; 4. 开发软件的效率非常重要; 5. 和谐地合作是软件开发的关键; 6. 软件必须有效地支持它的用户; 7. 在软件工程领域中是由具有一种文化背景的 人替具有另一种文化背景的人创造产品。 软件工程的本质特性: 盐城师院 信息科学与技术学院 1.2.2 软件工程的基本原理 1. 用分阶段的生命周期计划严格管理; 2. 坚持进行阶段评审; 3. 实行严格的产品控制; 4. 采用现代程序设计技术; 5. 结果能清楚地审查; 6. 开发小组的人员应该少而精; 7. 承认不断改进软件工程实践的必要性。 盐城师院 信息科学与技术学院 1.2.3 软件工程方法学 通常把在软件生命周期全过程中使用的一整套 技术方法的集合称为方法学(Methodology), 也称为范型(Paradigm)。 软件工程方法学的3要素:方法、工具和过程 盐城师院 信息科学与技术学院 1. 传统方法学 也称为生命周期方法学或结构化范型。 结构化方法(Structure Method)有: 1)结构化设计方法(SD); 2)结构化分析方法(SA); 3)结构化分析与设计技术(SADT) 4)JACKSON方法 5)WARNIER方法 盐城师院 信息科学与技术学院 2. 面向对象方法学 把数据和对数据的操作紧密结合起来的方法, 模拟人类认识世界解决问题的方法和过程。 面向对象的方法 =对象(属性与服务的封装) +分类 +继承 +通过消息的通讯 盐城师院 信息科学与技术学院 1)适用于实时事物处理系统的有限状态机方法 (FSM); 2)适用于并发软件系统的PETRI网方法; 3)以数学概念和理论为基础的形式化方法,如 SDC公司的形式化开发方法FDM: (Formal Development Methodology) IBM公司的维也纳开发方法VDM: (Vienna Development Method ) 3. 其他开发方法 盐城师院 信息科学与技术学院 1.3 软件生命周期 软件生命周期: 指软件从提出到最终被淘汰的这个存在期。 盐城师院 信息科学与技术学院 软件生命周期组成: 1)软件定义; A.问题定义 B.可行性研究 C.需求分析 2)软件开发; D.总体设计 E.详细设计 F.编码和单元测试 G.综合测试 3)运行维护。 盐城师院 信息科学与技术学院 1.问题定义; 2.可行性研究; 3.需求分析; 4.总体设计(概要设计); 5.详细设计; 6.编码与单元测试; 7.综合测试; 8.维护。 软件生命周期各个阶段: 盐城师院 信息科学与技术学院 1.4 软件过程 软件过程:为了获得高质量软件所需要完成的一 系列任务的框架,它规定了完成各项任务的工作 步骤。 软件过程(ISO9000):使用资源将输入转化为 输出的活动所构成的系统。 输入:如软件需求 输出:如软件产品 盐城师院 信息科学与技术学院 1.4.1 瀑布模型 1. 阶段间具有顺序性和 依赖性 2. 推迟实现的观点 3. 质量保证的观点 盐城师院 信息科学与技术学院 优点:采用规范的 方法;严格规定每 个阶段提交的文档 ;要求每个阶段交 出的产品必须经过 验证。 盐城师院 信息科学与技术学院 1.4.2 快速原型模型 优点:不带反馈环,基 本上是线性顺序进行。 盐城师院 信息科学与技术学院 1.4.3 增量模型 优点:能较短时间内提交可完成部分工作的产品;可以使用 户有充裕的时间学习和适应新产品。 盐城师院 信息科学与技术学院 一种风险更大的增量模型: 盐城师院 信息科学与技术学院 1.4.4 螺旋模型 可把它看作在每 个阶段之前都增加 风险分析的快速原 型模型。 盐城师院 信息科学与技术学院 盐城师院 信息科学与技术学院 1.4.5 喷泉模型 典型的面向对象软件 开发过程模型之一。 盐城师院 信息科学与技术学院 1.4.6 Rational 统一过程 1. RUP软件开发经验 (1)迭代式开发 (2)管理需求 (3)使用基于构件的体系结构 (4)可视化建模 (5)贯穿于开发过程的软件质量验证 (6)控制软件变更 盐城师院 信息科学与技术学院 1.4.7 敏捷过程与极限编程 1.敏捷过程 具有高效、快速响应变化的开发过程。 (1)个体和交互胜过过程和工具; (2)可以工作的软件胜过面面俱到的文档; (3)客户合作胜过合同谈判; (4)响应变化胜过遵循计划。 2.极限编程 敏捷过程中最著名的一种,指把好的开发实践运 用到极致,多应用于软件需求模糊的场合。 盐城师院 信息科学与技术学院 1.4.8 微软过程 1.微软过程准则 2.微软软件生命周期 (1)规划阶段 (2)设计阶段 (3)开发阶段 (4)稳定阶段 (5)发布阶段 3.微软过程模型 盐城师院 信息科学与技术学院 问题定义就是要确定为用户建立什么样的软 件系统,软件叫什么样的名称等等。“问题”是 指软件最基本的问题,如: 软件的总体目标什么? 有什么用途? 为那些用户设计? 1.5 问题定义阶段 盐城师院 信息科学与技术学院 问题定义报告的内容包括: 1)软件项目标题; 2)软件目标; 3)软件用户对象; 4)软件规模。 盐城师院 信息科学与技术学院 问题定义是软件生命周期中时间最短的阶段 ,一般都比较简单,因此在实际开发中它是最 容易被忽视的一个阶段。 这一阶段工作主要由系统分析员来完成,系 统分析员要尽可能从较高的角度概括软件所要 做的工作,而不用写明问题的实现细节。 盐城师院 信息科学与技术学院 2 可行性研究 可行性研究就是要回答“所定义的问题有可 行的解决办法吗?”。 可行性研究的目的是:用最小的代价在尽 可能短的时间内确定问题是否有解,以及是 否值得去解。 2.1 可行性研究的任务 盐城师院 信息科学与技术学院 可行性研究所需的时间取决于工程的规 模,所需要的成本要占工程总成本的 5%10%。 盐城师院 信息科学与技术学院 可行性研究的内容: 1)技术可行性 技术可行性要分析各种技术因素,例如: 使用现有的技术能否实现这个系统? 是否有胜任开发该项目的熟练技术人员? 能否按期得到开发该项目所需的软件、硬件 资源? 盐城师院 信息科学与技术学院 2)经济可行性 对经济合理性进行评价,所要考虑的问题是: 这个系统的经济效益能否超过它的开发成本? 这就需要对项目进行价格/利益分析,即“投入/ 产出”分析。 由于利益分析取决于软件系统的特点,因此在 软件开发之前,很难对新系统产生的效益作出精 确的定量描述,所以往往采用一些估算方法。 盐城师院 信息科学与技术学院 3)操作可行性 操作可行性评价系统运行后会引起的各方 面变化,如:对组织机构管理模式、用户工作 环境等产生的影响。 盐城师院 信息科学与技术学院 4)社会可行性 社会可行性主要讨论法律方面和使用方面 的可行性。 例如,被开发软件的权利归属问题、软件 所使用的技术是否会造成侵权等问题。 盐城师院 信息科学与技术学院 2.2 可行性研究的步骤 1)复查系统规模和目标; 2)研究目前正在使用的系统; 3)导出新系统的高层逻辑模型(数据流图 、数据字典); 4)重新定义问题; 盐城师院 信息科学与技术学院 5)导出和评价供选择的解法(物理解决方案); 6)推荐行动方案; 7)草拟开发计划; 8)书写文档提交审查。 2.2 可行性研究的步骤 盐城师院 信息科学与技术学院 2.3 系统流程图 (描绘物理系统的工具) 2.3.1 符号 符号名称说明 处理 如:程序,处理机,人工加工 输入/输出 连接 换页连接 数据流 表示输入或输出 同一页上图的连接 不同页上图的连接 指明数据流动方向 图2.1 基本符号 盐城师院 信息科学与技术学院 符号名称说明 穿孔卡片 文档 磁带 联机存储 磁盘 磁鼓 显示 人工输入 人工操作 辅助操作 通信链路 穿孔卡片输入/输出,或穿孔卡片文件 打印输出,或打印终端输入数据 磁带输入/输出,或表示磁带文件 任何种类磁盘存储,如磁盘、磁鼓等 磁盘输入/输出,或磁盘上文件、数据库 磁鼓输入/输出,或磁鼓上文件、数据库 显示器部件 人工输入数据,如填写表格 人工完成的处理 使用辅助设备进行的脱机操作 通过远程通信线路传送数据 图2.2 系统符号 盐城师院 信息科学与技术学院 2.3.2 例子 事务 库存清单程序 报告生成程序 定货 信息 定货报告 库存清单 主文件 图2.3 库存清单系统的系统流程图 盐城师院 信息科学与技术学院 2.4 数据流图(描绘数据在系统中流动的逻辑过程) 2.4.1 符号 或 或 或 数据源点或终点 变换数据的处理 数据存储 数据流 图2.4 基本符号的含义 盐城师院 信息科学与技术学院 2.4.2 绘制数据流图的例子 事务 库存清单程序 报告生成程序 定货 信息 定货报告 库存清单 主文件 图2.3 库存清单系统的系统流程图 盐城师院 信息科学与技术学院 2.4.2 绘制数据流图的例子 仓库 管理员采购员 定货系 统 事务定货报表 图2.5 定货系统的基本系统模型 盐城师院 信息科学与技术学院 1)利用它作为交流信息的工具; 2)作为软件分析和设计的工具。 2.4.3 数据流图的用途 盐城师院 信息科学与技术学院 2.4.3 数据流图的用途 仓库 管理员采购员 事务 定货报表 图2.8 这种自动化边界建议以联机方式更新库存清单 更新 库存 清单 1.2 产生 报表 2 D1库存清单 D2定货信息 接收 事务 1.1 处理 定货 1.3 库存清单 定货信息定货信息 盐城师院 信息科学与技术学院 数据字典:对数据流图中包含的所有元素的 定义的集合; 可行性研究阶段,数据流图与数据字典共同 构成系统的逻辑模型。 2.5 数据字典 盐城师院 信息科学与技术学院 2.5.1 数据字典的内容 数据字典应该对下列元素进行定义: 1)数据流; 2)数据元素(数据流分量); 3)数据存储; 4)处理。 盐城师院 信息科学与技术学院 1)数据元素字典定义 其定义的基本内容有: A数据元素编号、名称及其含义; B数据类型和长度; C合理取值; D其他内容,如它与其它数据的逻辑关 系等。 2.5.2 定义数据的方法 盐城师院 信息科学与技术学院 数据元素字典定义实例: 数据元素编号:DC001 数据元素名称:考试成绩 别名:成绩、分数 简述:学生考试成绩,分五个等级 类型/长度:两个字节,字符类型 取值/含义:优 90-100 良 80-89 中 70-79 及格 60-69 不及格 0-59 有关数据项或结构:学生成绩档案 有关处理逻辑:计算成绩 图2.10 数据元素字典定义 盐城师院 信息科学与技术学院 2)数据流字典定义 其定义的基本内容有: A数据流编号及名称; B数据流来源; C数据流去处; D数据流的组成; E流通量; F峰值。 盐城师院 信息科学与技术学院 数据流字典定义实例: 数据流编号:DF001 数据流名称:订票单 简述:订票时填写的订票单 数据流来源:外部实体“乘客” 数据流去处:处理逻辑“预订机票” 数据流组成:订单编号 日期 乘客号 航班号 状态 订单失效日期 流通量:每天300份 高峰值流通量:每天早上9:00,约160份 图2.11 数据流字典定义 盐城师院 信息科学与技术学院 3)数据存储字典定义 其定义的基本内容有: A数据存储编号及名称; B数据存储的组成; C其它要求。 盐城师院 信息科学与技术学院 4)数据处理字典定义 其定义的基本内容有: A数据处理编号及名称; B简单描述; C输入/输出; D功能描述; E有关数据存储。 盐城师院 信息科学与技术学院 数据处理字典定义实例: 数据处理编号:DP001 数据处理名称:编辑订票 简述:接收从终端录入的订票单,检验是否正确 输入:乘客订单,来源:外部实体“乘客” 输出:1.合格订单,去处:处理逻辑“确定订票” 2.不及格订单,去处:外部实体“乘客” 功能描述:(略) 图2.12 数据处理字典定义 盐城师院 信息科学与技术学院 5)组成数据项的表示方法 = 表示“等价于”或“定义为” + 表示“与” 与 | 表示“或” 表示重复 ( ) 表示可选项 通讯录=通讯地址 通讯地址=姓名+邮编+省|直辖市|自治区+ 市|县+街道+门牌号+(电话) 盐城师院 信息科学与技术学院 1. 作为分析阶段的重要工具; 2. 数据元素的控制信息非常有用; 3. 有助于开发数据库。 2.5.3 数据字典的用途 盐城师院 信息科学与技术学院 实现数据字典: 1)程序处理; 2)卡片式人工书写; 2.5.4 数据字典的实现 盐城师院 信息科学与技术学院 小结 可行性分析报报告 说说明该软该软件开发项发项目的实现实现在技术术上、经济经济上和社 会因素上的可行性,评评述为为了合理地达到开发发目标标可供 选择选择的各种可能实实施方案,说说明并论证论证所选选定实实施方 案的理由。 项项目开发计发计划 为软为软件项项目实实施方案制订订出具体计计划,应该应该包括各 部分工作的负责负责人员员、开发发的进进度、开发经费发经费 的预预算 、所需的硬件及软软件资资源等。 盐城师院 信息科学与技术学院 3 需求分析 3.1.1 确定对系统的综合要求 1功能需求 2性能需求 如:相应时间(速度)、主存容量、磁盘容量 、安全性、等。 3.1 需求分析的任务 盐城师院 信息科学与技术学院 3. 可靠性和可用性需求 4. 出错处理需求 系统发现错误时采取的行动,主要在系统关键部分设置。 5. 接口需求 用户接口、硬件接口、软件接口、通信接口、等。 6. 约束 精度、工具和语言、设计约束、硬件约束、标准,等。 7. 逆向需求 8. 将来可能提出的要求 盐城师院 信息科学与技术学院 3.1.3 导出系统的逻辑模型 包括完善的数据流图、实体联系图、状态转换图 、数据字典、主要的处理算法(IPO图)等。 3.1.2 分析系统的数据要求 通过建立数据模型来分析,如数据字典、层次方框图 、Warnier图,并将数据结构规范化。 3.1.4 修正系统开发计划 修订前期制定的开发进度计划、等。 盐城师院 信息科学与技术学院 3.2 与用户沟通获取需求的方法 3.2.1 访谈 正式访谈:系统分析员提出事先准备好的问题。 非正式访谈:提出一些用户可以自由回答的开放性问 题,鼓励被访者说出自己的想法。 需要访问大量人员时,利用调查表访问较佳。 盐城师院 信息科学与技术学院 3.2.2 面向数据流自顶向下求精 分析追踪数 据流图 用户复查细化数据流 图 有补充修正 无补充 修正 需要分解 不需分解 图3.1 需求分析基本过程 借助数据流图、数据字典、IPO图等,细化、完善详 细的数据流图,等到各处理环节对应的功能。 盐城师院 信息科学与技术学院 仓库 管理员采购员 事务 定货报表 定货系统数据流图 更新 库存 清单 1.2 产生 报表 2 D1 库存清单 D2 定货信息 接收 事务 1.1 处理 定货 1.3 库存清单 定货信息定货信息 例: 分析销售趋势统计功能 盐城师院 信息科学与技术学院 3.2.3 简易的应用规格说明技术 面向团队的需求收集法: (用户与开发者配合) 1)初步访谈; 2)开发者和用户分别写出“产品需求”; 3)开会讨论,各自展示需求列表; 4)得出一致意见,为需求列表制定小型规格说明; 5)根据会议成果,起草完整的软件需求规格说明。 盐城师院 信息科学与技术学院 3.2.4 快速建立软件原型 快速建立能演示目标系统主要功能的程序。 (1)第四代技术 (2)可重用的软件构件 (3)形式化规格说明和原型环境 盐城师院 信息科学与技术学院 3.3 分析建模与规格说明 3.3.1 分析建模 为了开发复杂的系统,应从不同角度(模型)抽象出 目标系统的特性(数据模型、功能模型、行为模型)。 1)实体联系图:建立数据模型,描述数据对象及数据对 象之间的关系; 2)数据流图:建立功能模型的基础; 3)状态转换图:描绘系统的状态和状态间转换的方式。 3.3.2 软件需求规格说明 盐城师院 信息科学与技术学院 3.4 实体联系图 数据对象可以是外部实体、事物、行为、事件 、角色、单位、地点、结构等。 数据对象 3.4.1 数据对象 盐城师院 信息科学与技术学院 3.4.2 属性 属性定义了数据对象的性质。 属性 盐城师院 信息科学与技术学院 3.4.3 联系 (1)一对一联系(1:1) (2)一对多联系(1:N) (3)多对多联系(M:N) 在ER图中,用菱形框表示联系。 联系 盐城师院 信息科学与技术学院 教师学生 课程 学号 姓名 系 年级 职务 性别 职称 性别 姓名 教工号 教学 成绩 学分 学时课名 课程号 图3.2 某校教学管理ER图 M N1 N 例子: 盐城师院 信息科学与技术学院 Warnier图也用树形结构描绘信息,但是这种图形工具 比层次方框图提供了更丰富的描绘手段。 软件产品 软件工具 编辑程序(P3) 应用软件 编译程序(P2) 操作系统(P1) 系统软件 测试驱动程序(P4) 设计辅助工具(P5) 图3.4 Warnier图的一个例子 Warnier图 盐城师院 信息科学与技术学院 IPO图是输入/处理/输出图。 旧的主文件 事务文件 1.校验主记 录 2.校验事务 记录 3.更新主记 录 有效的主记 录 有效的事务 记录 更新后的主 文件 输入处理输出 图3.7 IPO图的一个例子 IPO图 盐城师院 信息科学与技术学院 IPO表 系统: 模块: 编号: 作者: 日期: 被调用:调用: 输入:输出: 处理: 局部数据元素:注释: 图3.8 改进的IPO图的形式 盐城师院 信息科学与技术学院 用于需求分析的软件应该满足下列要求: 1)必须有形式化的语法 2)使用这个软件工具能够导出详细的文档 3)必须提供分析规格说明书的不一致性和 冗余性的手段 4)使用这个软件工具后,应该能够改进通 信状况 3.5 用于需求分析的软件工具 盐城师院 信息科学与技术学院 小结 软软件需求说说明书书(软软件规规格说说明书书) 对对所开发软发软件的功能、性能、用户户界面及运行环环境等 作出详细详细的说说明。 它是在用户户与开发发人员员双方对软对软件需求取得共同理解 并达成协议协议的条件下编编写的,也是实实施开发发工作的基础础 。该说该说明书应给书应给 出数据逻辑逻辑和数据采集的各项项要求,为为 生成和维护维护系统统数据文件做好准备备。 盐城师院 信息科学与技术学院 4 总体设计 4.1 设计过程 1.设想供选择的方案 2.选择合理的方案 对每个合理的方案要提供: A系统流程图 B组成系统的物理元素清单 C成本/效益分析 D实现这个系统的进度计划 盐城师院 信息科学与技术学院 3.推荐最佳方案 4.功能分解 5.设计软件结构 6.数据库设计 A模式设计 B子模式设计 C完整性和安全性设计 D优化 盐城师院 信息科学与技术学院 7.制定测试计划 8.书写文档 A系统说明 B用户手册 C测试计划 D详细的实现计划 E数据库设计结果 9.审查和复审 盐城师院 信息科学与技术学院 4.2 设计原理 如果一个大型程序仅由一个模块组成,很难被人理解。 设函数C(x)定义问题x的复杂程度,函数E(x)定义解决问 题x需要的工作量(时间)。对于两个问题P1和P2,如果 : C(P1)C(P2) 那么 E(P1)E(P2) 根据解决问题的经验,有一个规律是: C(P1+P2)C(P1)+C(P2) 于是有 E(P1+P2)E(P1)+E(P2) 4.2.1 模块化 盐城师院 信息科学与技术学院 模块数目 接口成本 成本/模块 软件总成本 M 最小成本区 成本 图5.1 模块化与软件成本 盐城师院 信息科学与技术学院 4.2.2 抽象 4.2.3 逐步求精 模块的独立性很重要,因为: 1)有效的模块化的软件比较容易开发出来; 2)独立的模块比较容易测试和维护。 4.2.4 信息隐蔽和局部化 4.2.5 模块独立 盐城师院 信息科学与技术学院 一、耦合 耦合:指软件结构内不同模块彼此之间相 互依赖(连接)的紧密程度。 模块独立程度可以由两个定性标准度量:耦 合与内聚。 盐城师院 信息科学与技术学院 模块的偶合分四类: 1)数据耦合 两个模块之间只是通过参数交换信息,而且 交换的信息仅仅是数据。 数据耦合是最低程度的耦合。 AB 数据 (1)数据耦合 盐城师院 信息科学与技术学院 2)控制耦合 两个模块之间所交换的信息包含控制信息。 控制耦合是中等程度的耦合。 图中模块A的内部处理程序判断是执行C还是执行D ,要取决于模块B传来的信息状态(Status)。 B A CD (2)控制耦合 a status 盐城师院 信息科学与技术学院 3)公用耦合 两个或多个模块通过一个公共区相互作用时 的耦合。 公共区可以是:全程数据区、共享通信区、 内存公共覆盖区、任何介质上的文件、物理设 备等。 软件结构中存在大量的公用耦合时会给诊断 错误带来困难。 盐城师院 信息科学与技术学院 图中存在公用耦合,假设模块A、C、E都存取全程数据 区(如公用一个磁盘文件)中的一个数据项。 如果A模块读取该项数据,然后调用C模块对该项重新计 算,并进行数据更新。 A BC D E 全程数 据区 (3)公用耦合 盐城师院 信息科学与技术学院 如果此时C模块错误地更新了该项数据,在往下的处理 中模块E读该数据项时出现错误。 表面上看,问题由模块E产生,实际上由模块C引起。 A BC D E 全程数 据区 (3)公用耦合 盐城师院 信息科学与技术学院 4)内容耦合 一个模块与另一个模块的内容直接发生联系。 内容耦合对维护会带来严重的困难。 模块A LAB:MOVE 1 模块B GOTO LAB 内容耦合 (4)内容耦合 程序中如果一个模块直接把程序转移到另一个模块中,或一个模块使 用另一个模块内部的数据,都会产生内容耦合。内容耦合是最高程度的 耦合,应该避免采用。 盐城师院 信息科学与技术学院 软件设计应追求尽可能松散耦合,避免强耦 合,这样模块间的联系就越小,模块的独立性 就越强,对模块的测试、维护就越容易。 因此建议:尽量使用数据耦合,少用控制耦 合,限制公用耦合,完全不用内容偶合。 盐城师院 信息科学与技术学院 二、内聚 内聚:一个模块内部各个元素彼此结合 的紧密程度。 它是衡量一个模块内部组成部分间整体 统一性的度量。 常见的内聚有七类。 盐城师院 信息科学与技术学院 1)功能内聚(Functional Cohesion) 如果一个模块内所有处理元素完成一个,而 且仅完成一个功能,则称为功能内聚。 功能内聚是最高程度的内聚。但在软件结构 中,并不是每个模块都能设计成一个功能内聚 模块。 盐城师院 信息科学与技术学院 2)顺序内聚(Sequential Cohesion) 如果一个模块内处理元素和同一个功能密切 相关,而且这些处理元素必须顺序执行,则称 为顺序内聚。 盐城师院 信息科学与技术学院 如图,一个求一元二次方程根的模块由三个 处理元素组成,该模块中存在顺序内聚。 通常,顺序内聚中一个处理元素的输出是另 一个处理元素的输入。 求一元二次方 程根模块 1输入方程系数 2求解 3打印方程的解 顺序内聚示例 盐城师院 信息科学与技术学院 3)通信内聚(Communicational Cohesion) 如果一个模块中所有处理元素都使用同一个输 入数据和(或)产生同一个输出数据,称为通信 内聚。 盐城师院 信息科学与技术学院 如图,模块A的处理单元将根据同一个数据 文件FILE的数据产生不同的表格,因此它存 在通信内聚。 通信内聚有时也称为数据内聚。 A 从文件FILE中读出数据 1.由数据产生报表A 2.由数据产生报表B 通信内聚示例 盐城师院 信息科学与技术学院 4)过程内聚(Procedural Cohesion) 如果一个模块内的处理元素是相关的,而且 必须以特定的次序执行,称为过程内聚。 过程内聚与顺序内聚的区别是: 顺序内聚中是数据流从一个处理单元流到另 一个处理单元,而过程内聚是控制流从一个动 作流向另一个动作。 盐城师院 信息科学与技术学院 5)时间内聚(Temporal Cohesion) 如果一个模块包含的任务必须在同一段时间 内执行,称为时间内聚。也称为瞬时内聚。 盐城师院 信息科学与技术学院 例如,完成各种初始化工作的模块,或者处理故障 的模块都存在时间内聚。 如图,在“紧急故障处理模块”中,“关闭文件” 、“报警”、“保留现场”等任务都必须无中断地同 时处理。 紧急故障处理 模块 1关闭文件 2报警 3保留现场 时间内聚示例 盐城师院 信息科学与技术学院 6)逻辑内聚(Logical Cohesion) 如果模块完成的任务在逻辑上属于相同或 相似的一类,称为逻辑内聚。 盐城师院 信息科学与技术学院 如图,A、B、C模块合并成ABC模块之后, ABC模块就是逻辑内聚模块。 XYZ ABC XYZ ABC 合并 逻辑内聚示例 盐城师院 信息科学与技术学院 对逻辑内聚模块的调用,常常需要有一个功能 开关,由上层调用模块向它发出一个控制信号, 在多个关联性功能中选择执行某一个功能。 这种内聚较差,增加了模块之间的联系,不易 修改。 盐城师院 信息科学与技术学院 7)偶然内聚(Coincidental Cohesion) 如果一个模块由完成若干毫无关系的功能 处理元素偶然组合在一起的,就叫偶然内聚 。 盐城师院 信息科学与技术学院 偶然内聚是最差的一种内聚。 常犯这种错误的一种情况是:有时在写完 程序后,发现一组语句在多处出现,于是为 了节省空间而将这些语句作为一个模块设计 ,就出现偶然内聚。 盐城师院 信息科学与技术学院 如图,模块A、B、C出现 公共代码段W,于是将W独 立成一个模块,而W中这些 语句并没有任何联系。 如果在测试中发现模块A 不需要做“X=Y+Z”,而应 该做“X=Y*Z”,此时对W的 维护就很困难了。 ABC W模块 X=Y+Z GET CARD IF I=5 THEN E=0 偶然内聚示例 盐城师院 信息科学与技术学院 软件设计中应该:力求做到高内聚,尽 量少用中内聚,不用低内聚。 盐城师院 信息科学与技术学院 4.3 图形工具 4.3.1 层次图和HIPO图 正文加工 系统 输入输出编辑加标题存储检索编目录格式化 添加删除插入修改合并列表 图5.3 正文加工系统的层次图 盐城师院 信息科学与技术学院 正文加工 系统 输入 1.0 输出 2.0 编辑 3.0 加标题 4.0 存储 5.0 检索 6.0 编目录 7.0 格式化 8.0 添加 3.1 删除 3.2 插入 3.3 修改 3.4 合并 3.5 列表 3.6 图5.4 带编号的层次图(H图) HIPO图是:“层次图输入/处理/输出图” 盐城师院 信息科学与技术学院 4.3.2 结构图 产生最佳解 得到好输入计算最佳解输出结果 读输入编辑输入结果格式化显示结果 图4.5 结构图的例子产生最佳解的一般结构 盐城师院 信息科学与技术学院 4.4 面向数据流的设计方法 面向数据流设计(Data Flow-Oriented Design,DFOD)是与数据流分析(DFA)对应 的结构化软件设计技术。 面向数据流的设计将得到以数据流图为基础的 软件模块结构图。 盐城师院 信息科学与技术学院 数据流可以分为两种类型: 1)变换型数据流 2)事务型数据流 4.4.1 变换流与事务流 盐城师院 信息科学与技术学院 一、变换流 具有较明确的输入、变换(或称主加工)和输 出界面的数据流图称为变换型数据流图。 如图所示,该变换中心可以理解为数据的加工 和处理程序。 读入原 始数据 校验原 始数据 计算最 优结果 编辑打印 最优结果 输入变换中心输出 盐城师院 信息科学与技术学院 事务型数据流图中存在一个事务中心(也就是数据处理 、加工中心),它将输入分离成若干个发散的数据流,形 成许多活动路径,并根据输入值选择其中一条路径。 要求类 别处理 分房处理 调房处理 退房处理 住房要求 事务中心 活动路径 二、事务流 盐城师院 信息科学与技术学院 通常,一个实际系统的数据流图是变换型和事务型两 种类型的混合体。 如图所示,中间的子块属事务型数据流,如果把中间 子块视为一个处理整体的话,整个程序属变换型程序。 A (事务型,A为事务中心) 变换中心 输入 输出 混合型数据流图 盐城师院 信息科学与技术学院 面向数据流设计软件结构的基本步骤有七步: 1)复审并精化数据流图; 2)确定数据处理流图的类型; 3)确定变换中心或事务中心; 4.4.2 面向数据流设计的步骤 盐城师院 信息科学与技术学院 4)将数据流图映射成软件模块结构图,设计 出该数据流图对应的第一层模块结构; 5)基于数据流图逐步分解,设计下层模块; 6)运用模块设计和优化准则优化软件结构; 7)描述模块的接口。 盐城师院 信息科学与技术学院 复查、精化数据流图 类型 找出事务中心找出变换中心 映射成事务结构映射成变换结构 优化软件模块结构 导出模块结构 复查 不满意 变换事务 变换设计事务设计 面向数据流的设计步骤 盐城师院 信息科学与技术学院 变换设计就是从变换型数据流图映射出 软件模块结构的过程,也称以变换为中心 的设计。 4.4.3 变换设计 盐城师院 信息科学与技术学院 变换设计的基本方法有两步: 1)分解第一层模块结构 就是把整个变换分解成输入控制模块Ci、输出 控制模块Co和变换中心控制模块Ct,由主控模 块控制。 主控模块 输出控制模块Co变换中心控制模块Ct输入控制模块Ci 盐城师院 信息科学与技术学院 2)分别设计输入、输出和处理的下层模块结构 方法是: 从变换中心边界向两侧移动,分别把输入通路 和输出通路的每个处理映射成输入控制模块Ci和 输出控制模块Co的下属模块。 变换中心的下层模块,是把每个处理映射成变 换中心控制模块Ct的一个直接下属模块。 盐城师院 信息科学与技术学院 A B C D F E G H IJ K 变换中心 输入输出 主控模块 输出控制模块Co 变换中心控制模块Ct 输入控制模块Ci DC B A EFGIH JK 盐城师院 信息科学与技术学院 事务设计就是从事务型数据流图映射 出软件模块结构的过程,也称为以事务为 中心的设计。 4.4.4 事务设计 盐城师院 信息科学与技术学院 事务设计的基本方法有两步: 1)建立主控模块、接收输入类型分 析模块和事务调度模块; 主模块 调度输入类型分析 盐城师院 信息科学与技术学院 2)分别设计输入类型分析模块和调度模块的 下层模块结构。 方法是:将输出的每条通路作为调度模块的 一个判断分支,而输入类型分析模块的下层模 块与变换设计类似。 盐城师院 信息科学与技术学院 I2 I3 I1 TC A1 B1 C1 A2 B2 C2 事务中心 主模块 调度输入类型分析 I1 I3I2 A1 A2 B1 B2 C1 C2 盐城师院 信息科学与技术学院 小结 概要设计说设计说 明书书 该说该说明书书是概要实际阶实际阶 段的工作成果,它应说应说 明功能分配、模块块划分、程序的总总体结结构、输输入输输 出以及接口设计设计、运行设计设计、数据结结构设计设计和出 错处错处理设计设计等,为详细设计为详细设计 提供基础础。 盐城师院 信息科学与技术学院 5 详细设计 目标:确定如何具体实现所要求的系统。 不是具体编写程序,而是设计程序的“ 蓝图”。 详细设计的结果决定最终程序代码的 质量。 盐城师院 信息科学与技术学院 E.W.Dijkstra 最早提出结构程序设计:程序质量与 程序中包含的Goto语句的数量成反比(1965)。 1966 ,Bohm, Jacopini ,证明了只用“顺序”、“选择” 、“循环”控制结构就能实现任何单入口单出口程序。 5.1 结构程序设计 盐城师院 信息科学与技术学院 理论上,最基本的控制结构只有两种:顺序、 循环结构(选择结构可由其两者构造)。 学界认识到,不是简单去掉Goto语句的问题, 而是要创立一种新的程序设计方法。 结构化程序设计(IBM率先成功运用)。 盐城师院 信息科学与技术学院 结构程序设计: 一种设计程序的技术,它采用自顶向 下逐步求精的设计方法和单入口单出口 的控制结构。 盐城师院 信息科学与技术学院 使用结构程序设计技术的好处: 1)提高软件开发工程的成功率和生产率; 2)系统有清晰的层次结构,容易阅读理解; 3)单入口单出口的控制结构,容易诊断纠正; 4)模块化可以使得软件可以重用; 5)程序逻辑结构清晰,有利于程序正确性证明。 盐城师院 信息科学与技术学院 经典的结构程序设计:只允许使用顺序、 IF_THEN_ELSE选择和DO_WHILE循环; 扩展的结构程序设计:除了三种基本控制结构 ,还使用DO_CASE和DO_UNTIL循环; 修正的结构程序设计:除了三种基本控

温馨提示

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

评论

0/150

提交评论