




已阅读5页,还剩414页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2020 1 12 2020 1 12 软件工程 哈尔滨工业大学韩静萍 SoftwareEngineering 2020 1 12 在一些人眼里 今天的软件开发似乎已成为简单的事情 已有了不少很好的开发工具和软件库 软件开发人员训练有素 都强烈渴望去编写很酷的软件 可以在几天的时间里编写出一个相当复杂的软件 但为什么有一些软件能够得到用户的喜欢 而另一些则不能 为什么有些软件能够在市场上成功 而有些则受到冷落 由此可见 开发软件并不一定难 难就难在如何开发有用的软件 微软凌小宁博士 2020 1 12 我最大的心得是 一个产品一定要找到能够真正适用的场合 不能只是为了技术而从事技术为了研究而进行研究 却不管用户对你所研究的技术和产品有没有需求 否则 无论你的技术是多么优秀 多么先进 恐怕你的产品在市场上都无法获得成功 微软张益肇博士 2020 1 12 2020 1 12 本课程比较全面 系统地介绍软件工程的概念 技术与方法 主要内容包括 软件工程概述 软件生存周期及软件需求分析 软件设计方法 软件测试技术等 通过本课程的学习 使学生能真正的从中了解软件开发的整个过程 为了让学生真正得以实践 结合实际软件开发项目 让学生从问题定义开始 经过可行性研究 需求分析 概要设计 详细设计 编码直到最后要对自己开发的软件还要进行测试 这样一个软件开发过程 从而使学生掌握软件开发的基本技能 课程主要内容 2020 1 12 2020 1 12 各章学时安排 2020 1 12 第一章软件工程概述 水利工程 建筑工程 机械工程 软件工程 本章将对软件的地位和作用 软件的特点 软件的发展 软件的危机以及软件工程学科的形成 软件生期等方面的问题和基本概念 传统工程 新兴工程 气象工程 生物工程 2020 1 12 1 1软件的概念与特点 1 软件 software soft ware 软制品 软体 软件是计算机系统中与硬件相互依存的另一部分 它包括程序 数据及其相关文档的完整集合 2020 1 12 2 软件特点 软件是一种逻辑实体 而不是具体的物理实体 软件的生产与硬件不同 在软件的运行和使用期间 没有硬件那样的机械磨损 老化问题 磨合调整 磨损用坏 修改点 实际曲线 理想曲线 2020 1 12 软件的成本相当昂贵 软件技术的发展落后于需求 硬 软件成本比例的变化 年份 成本 软件 硬件 2020 1 12 3 软件的分类 1 按软件的功能进行划分 2020 1 12 支撑软件 2020 1 12 2 按软件的规模进行划分 2020 1 12 3 按软件开发划分 2020 1 12 1 2软件工程的概念及范畴 1 软件工程 SoftwareEngineering 于1968年NATO组织在德国召开的一次会议上提出 是把软件当作一种工业产品 要求 采用工程化的原理与方法对软件进行计划 开发和维护 2020 1 12 软件工程学 软件开发技术 软件工程管理 软件开发方法学 软件工具 软件工程环境 软件工程管理学 软件经济学 软件工程学的范畴 2 软件工程学 2020 1 12 Wakeupeverydaywithafeelingofpassionforthedifferenttechnologywillmakeinpeople sLife 微软企业文化宗旨部分内容 每天醒来的时候 要对技术给生活造成的改变始终拥有一份激情 2020 1 12 程序 3 软件的演变 即从传统软件开发到现代软件开发 软件 软件产品 传统软件开发 现代软件开发 2020 1 12 1 3软件生存周期 把软件从产生 发展到成熟 直至衰亡为止 SWlifecycle 2020 1 12 特点 上一阶段的变换结果是下一阶段的变换的输入 相邻两个阶段具有因果关系 紧密相联 需求分析 问题定义 可性行研究 计划时期 概要设计 详细设计 编码 测试 开发时期 运行与维护 运行时期 软件生存周期模型 瀑布模型WaterfallModel 2020 1 12 原型模型 PrototypeModel 加工原型 原型 是指模拟某种产品的原始模型 快速分析和设计 建造原型 客户评价原型 1 原型系统仅包括未来系统的主要功能 以及系统的重要接口 2 为了尽快向用户提供原型 开发原型系统时应尽量使用能缩短开发周期的语言和工具 2020 1 12 第二章问题的定义与可性行研究 当我们在着手做任何一件工作以前 必须明确工作的性质 任务 制定完成任务的计划 这是非常必要的 同样对于软件产品的开发 显然也应该解决好这样类似的问题 明确该软件产品开发的任务 以及完成任务的价值从而制定出完成任务的计划 那么问题的定义和可性行研究就是制定软件系统的计划的第一步 所以在软件工程中把这一步称为计划时期 2020 1 12 开始 问题定义 可性行研究 可行否 项目实施计划 终止项目的建议 结束 Y 计划时期的工作流程图 N 2020 1 12 Who What Why 3W WinCE1 0 有用的软件 2020 1 12 2 1现状调查和问题的定义 目的 弄清楚用户要求计算机解决什么问题 任务 编写系统目标与规范说明书 系统目标与规范说明书1 项目 教材销售系统2 问题 人工销售教材手续繁琐 容易出错3 项目目标 建立一个高效率 无差错的计算机教材销售系统4 项目范围 利用现有的计算机 软件开发费用不得超过2000元5 初步想法 建议在系统中增加对缺书的统计与采购功能6 可性行研究 建议进行大约10天的可性行研究 且研究费用不超过500元 2020 1 12 2 2可行性研究与论证 1 经济可行性 进行成本效益分析 评估项目的开发成本 基于计算机系统的成本由四部分组成 其论证的焦点是 围绕着对系统开发的价值进行论证 2020 1 12 举例 关于开发CAD系统的软件开发成本及效益分析 该系统节省经费 该系统成本 盈亏平衡点 投资回收期 成本及效益分析图 2020 1 12 2 技术可行性 对系统的性能 可靠性 可维护性以及生产率等方面的信息进行评价 通过技术可行性的分析 将为新系统提交技术可行性评估 以指明为完成系统的功能和性能需要什么技术 需要哪些材料 方法 算法 或者过程等 2020 1 12 可行性论证报告 2020 1 12 2 3可行性分析所需工具 系流程图与系统结构图 1 系统流程图 是用来描述系统物理模型的一种传统工具 2020 1 12 2020 1 12 举例 库存清单系统流程图 2020 1 12 人工销售教材流程图 2020 1 12 计算机售书系统流程图 结束 学生 购书发票 到书库领书 购书单 终端 审查并开发票 1 1 学生各学期用书数据库 购书单 2 2 教材存量数据库 2020 1 12 练 习 请画出由下列文字描述的系统流程图 2020 1 12 2 系统结构图 系统工程师用结构摸板开发的系统模型 用户界面处理 输入处理 维护和自测试 处理和控制功能 输出处理 结构摸板 2020 1 12 传输线的分类系统 3 系统结构环境图 ACD ArchitectureContextDiagram ACD可用于描述实现系统与系统运行环境之间的信息边界 2020 1 12 传输线分类系统的ACD图 处理与控制功能区 外部实体 2020 1 12 ACD的层次结构 2020 1 12 作 请画出学生成绩管理系统的ACD图 业 2020 1 12 第3章软件需求分析 软件需求分析是软件开发早期的一个重要阶段 它在问题定义和可行性研究阶段之后进行 需求分析的基本任务是软件人员和用户一起完全弄清用户对系统的确切要求 这是关系到软件开发成败的关键步骤 也是整个系统开发的基础 软件需求分析阶段要求用需求规格说明书 SRS 来表达用户对系统的要求 规格说明书可用文字方式表示 也可用图形表示 本章将介绍需求分析的任务 步骤 需求分析方法 面向数据流图分析方法 面向对象的分析方法 2020 1 12 一 确定目标系统的具体要求 1 确定系统的运行环境要求 2 系统的性能要求 3 系统功能 3 1需求分析的任务 硬件环境和软件环境 确定目标系统具备的所有功能 2020 1 12 数据库中存放的是职工的 某学校医疗费管理系统 所属部门 职工号 姓名 职工报销时应填写 所属部门 职工号 姓名 日期 校内门诊 校外门诊 住院费 子女医疗费 医疗费分类 该校规定 每年每个职工的医疗费有一个限额 如80元 限额在年初确定 其限额规则如下 1 每个职工一年内报销的医疗费不超过限额时 全部报销2 超额 则超出部分只可报销90 其余10 由职工个人负担3 职工子女的医疗费也有限额 如40元 2020 1 12 1 医疗费管理系统每天记录当天报销的若干职工或职工子女的医疗费的类别 金额 2 在当天下班前让系统自动结帐 统计当天报销的医疗费总额 供出纳员核对 3 每笔帐要保存备查 每天所报销的费用要和各个职工已报销的金额累计起来 以便检查哪些职工已超额 4 系统还要配有适当的查询功能 5 年终结算后 下一年度开始时要对数据库文件进行初始化 6 当职工调离本单位 职工调如本单位或在本单位内部门间调动 数据库文件应能及时得到修改 请完成对上述系统的需求分析 用户对系统的要求 2020 1 12 该系统规模不太大 可以和用户单位的其他管理系统使用相同的计算机硬件设备 相同的操作系统和相同的关系数据库管理系统 如果 可以使用汉化了的数据库管理系统 但在建立数据库结构时 凡是用英文名称来代表字段名时 则必须在数据字典中予以说明 1 确定系统的环境要求 2020 1 12 3 系统的功能 1 具有表格形式屏幕的输入格式 2 具有重复录入数据的功能 3 具有查询和统计汇总的功能 4 职工的调入和调出以及对数据库的初始化 2020 1 12 2 系统性能要求 1 数据不能随意更改2 保证数据的准确性由于医疗费管理系统涉及到会计经费问题 数据不能随意更改但数据输入又难免会出错 因而在每输入一个职工的医疗费后 屏幕提示 数据有误吗 若是在核对时有误 可及时更改 避免输入错误 一天报销结束时 在数据存档前 再让出纳员核对一下经费总额 若出纳员支出的金额总数有误时 应让计算机显示每笔帐目 供一一仔细核对 此时在允许修改一次 当正式登帐后 数据就绝对不允许在修改了 由此保证财务制度的严格性 保证数据的安全性 2020 1 12 二 建立目标系统的逻辑模型 通常软件软件开发项目是要实现目标系统的物理模型 即确定待开发软件系统的系统元素 并将功能和数据结构分配到这些系统元素中 它是软件实现的基础 但是目标系统的物理模型是由它的逻辑模型经实例化 即具体到某个业务领域而得到的 与物理模型不同 逻辑模型忽视机制和细节 只描述系统要完成的功能和要处理的数据 为此 该阶段的主要任务是 借助于当前系统的逻辑模型导出目标系统的逻辑模型 也就是解决目标系统 做什么 的问题 2020 1 12 用户调查 具体模型 建立系统模型的工作流程 逻辑抽象 当前系统 逻辑模型 当前系统 计算机化 评审修改 正式模型 完善细节 目标系统 目标系统初始模型 经认可的 问题需求 系统模型 用户 1 建立目标系统逻辑模型的步骤 2020 1 12 图形工具 2 建立目标系统逻辑模型的图形工具 2020 1 12 学生购买教材的具体模型 请建立计算机售书系统的逻辑模型 学生购买教材的逻辑模型 2020 1 12 学生购买教材的逻辑模型 完善目标系统并补充细节 的出目标系统的正式逻辑模型 2020 1 12 三 需求规格说明书与评审 软件需求说明书 SRS SoftwareRequirementSpecification 主要包括以下的内容 SRS 数据流图 数据字典 2020 1 12 一 数据流图 3 2面向数据流的方法 DFD DataFlowDiagram 2020 1 12 储户 检验 付款 登录 存折 帐卡 取款信息 办理取款手续的DFD图 检验不合格 现款 付款信息 取款单 存折 2020 1 12 1 数据流图中的主要图形元素 转换数据流的处理过程 可以是数据库文件或任何形式的数据组织 箭头向内则表示写入文件或查询文件 箭头向外则表示从文件中读取数据或得到查询结果 数据转换 外部实体 位于软件系统边界之外的信息生产者或消费者 数据流 在转换之间有向流动的数据项或数据集合 数据存储文件 2020 1 12 系统逻辑模型 2020 1 12 学生购买教材的逻辑模型 2020 1 12 2 数据流图中的其它图形元素 有A则B或者C 或者两者都有 有A则B与C 或者两者同时有 有A则B或C 但不会同时有B与C 2020 1 12 标识多个数据流与加工之间关系的符号 当A或B有一个存在就有C 只有当A与B都存在 则有C 2020 1 12 3 分层的数据流图 第n 2层 2020 1 12 人工销售教材系统流程图 2020 1 12 学生 教材购销系统 保管员 外部实体 外部实体 2020 1 12 教材销售子系统 1 3登记并开领书单 1 2开发票 1 1审查有效性 1 4登记缺书 1 5补售教材 采购 学生 学生 暂缺书单 补售书单 第3层 F1书号单价数量 外部项 2020 1 12 采购子系统 第2层 缺书单 2 3修改教材库存和待购量 销售 2 1按书号汇总缺书 2 2按出版社统计缺书 保管员 2020 1 12 便于实现 便于使用 采用逐步细化的扩展方法 可避免一次引入过多的细节 有利于控制问题的复杂度 用一组图代替一张总图 方便用户及软件开发人员阅读 4 分层DFD图的优点 2020 1 12 注意父图和子图的平衡 5 画分层DFD的指导原则 2020 1 12 区分局部文件和局部外部项 掌握分解的速度 一般来说 每一个加工每次可分为2 4个子加工 最多不得超过7个 遵守加工编号规则 顶层加工不编号 第二层的加工编号为1 2 3 n号 第三层编号为1 1 1 2 1 3 n 1 n 2 等号 依此类推 2020 1 12 局部外部项 局部文件 2020 1 12 练 请画出学生成绩管理系统的DFD图 习 2020 1 12 二 数据字典 DD DataDictionary 2020 1 12 1 数据字典的定义 数据流名 说明 简要介绍作用即它产生的原因和结果 数据流来源 即该数据流来自何方 数据流去向 去向何处 数据流组成 数据结构 每个数据量流通量 数据量 流通量 1 数据流词条的描述 数据流名 发票说明 用作学生已付书款的依据数据流来源 来自加工 审查并开发票 数据流去向 流向加工 开领书单 数据流组成 学号 姓名 书号 单价总价 书费合计 2020 1 12 数据元素名 类型 数字 离散值 连续值 文字 编码类型 长度 取值范围 相关的数据元素及数据结构 2 数据元素词条的描述 2020 1 12 3 数据文件词条的描述 数据文件名 简述 存放的是什么数据 输入数据 输出数据 数据文件组成 数据结构 存储方式 顺序 直接 关键码 存取频率 2020 1 12 加工名 加工编号 反映该加工的层次简要描述 加工逻辑及功能简述输入数据流 取值范围 相关的数据元素及数据结构 4 加工逻辑词条的描述 2020 1 12 名称 外部实体名简要描述 什么外部实体有关数据流 数目 5 外部实体词条描述 2020 1 12 2 数据字典定义符号 被定义为 与 x a b 则表示x由a和b组成 x a b 则表示x由a或由b组成 或 重复 x a 则表示x由0个或多个a组成 可选 表示在两个 之间的内容为词条的注释 m n 重复 x 3 a 8 则表示x中至少出现3次a 最多出现8次 注释符 x a 则表示a在x中出现 也可不出现 2020 1 12 请为下列给出的DFD图编写DD 2020 1 12 2020 1 12 2020 1 12 3 数据字典的实现 数据字典的实现 2020 1 12 三 加工说明 ProcessSpecification 2020 1 12 加工说明组成 加工说明描述工具 描述把输入数据流变换为输出数据流的加工过程 是加工说明的主体 2020 1 12 2020 1 12 自然语言 结构化形式 结构化语言 2020 1 12 例1 请写出下列在DFD图中给出的 统计晚婚职工 的加工说明 CountLate MarriageEmployees Late Marriage CountRequest 职工名册文件 Late Marriage List List Count Name List Name List Name 2020 1 12 CountLate MarriageEmployeesPolicyForeachLate Marriage Countrequest Repeatthefollowing Accessthestaffs Record Ifstatusissingle IfsexismaieandAgeisover30orsexisfemaleandAgeisover26WriteNametoName List IncrementList Count UntiltherearenomoreStaff Records CombineList CountandName List WriteUpLate Marriage List 2020 1 12 例2 请为下列DFD中的 审查并开发票 加工点写加工说明 2020 1 12 把学生学号和姓名写到发票上按购书单上学生的年级和系 专业与班号检索 各班学生用书表 文件 获得该生当年的书单对购书单上的每一书号如果书单上无此书号则把书号写到出错通知单上否则按书号检索 教材存量表 文件 从而获得该书的单价与库存量如果库存量 购书单的数量则将书号写到出错通知单上否则将书号 单价 数量 总价等项写入到发票上 更新存书量 并写回 教材存量表 文件 累计书费合计把书费合计写到发票上 对每张购书单 2020 1 12 分房加工逻辑 判断表 1 一般职工婚后5年可参加分房2 中级以上职称的职工婚后3年可参加分房3 符合正常分房条件的职工 若再符合晚婚条件可优先分房 2020 1 12 2020 1 12 判断树 2020 1 12 检查发货单 的判断表 2020 1 12 工资管理系统 一 对工资管理系统进行需求分析 二 阅读教课书的P27页 2020 1 12 三 把下列用文字叙述的内容请采判断表和判断树描述出来 设某旅游票预定系统中 在旅游旺季7 9 12月份 如果订票超过50张 则优惠票价的15 50张以下 优惠5 在旅游淡季1 6 10 11月份 若订票超过50张 则优惠30 50张以下 优惠20 2020 1 12 面向对象 3 3面向对象的需求分析 一 面向对象的概念 2020 1 12 对象 数据 操作代码 2020 1 12 类 是一组具有相同数据结构和相同操作的对象集合 类的定义包括一组数据属性和在数据上的一组合法操作 类定义可视为一个具有类似特性与共同行为的对象摸板 可用来产生对象 可以说 类是对象的抽象 而对象是类的具体实例 2020 1 12 继承 是在一个已存有的类的基础上建立一个新的类 并将已存在的类称为 基类或父类 新建立的类称为 派生类或子类 基类 派生类 2020 1 12 对象继承了类所有属性 从类到对象的继承 对象 类 继承 2020 1 12 对象继承类的所有属性和操作 BuySellWeightmove 2020 1 12 面向对象类的表示模式 2020 1 12 识别对象 1 标识潜在对象 找出通过分析过程中的所有名词或名词短语并合并同义词 除去有动作含义的名词 使它们将被描述为对象的操作 标识规则如下 1 外部实体 2 事物 3 位置 7 聚焦对象 5 事件 6 角色 4 组织机构 2020 1 12 二 面向对象的分析方法 OOA ObjectOrientedAnalysis OOA的核心思想是利用OO的概念和方法对软件需求建造模型 以使用户需求逐步精确化 一致化 完全化 为此 OOA的方法步骤为 识别对象 属性及外部服务 识别类及其结构 定义对象之间的消息传递 2020 1 12 例如 2020 1 12 2 筛选对象 筛选对象规则如下 1 具有记忆自身状态的能力 2 有意义的操作 3 多个属性 5 公共操作 6 必须的需求 4 公共属性 2020 1 12 第四章软件设计基础 2020 1 12 4 1软件设计过程 编码 测试 设计 软件开发阶段的信息流 2020 1 12 软件设计任务 4 2软件设计的任务和步骤 2020 1 12 软件设计方法 4 3软件设计的方法 2020 1 12 一 模块化设计与信息隐藏 模块 又称 构件 一般指用一个名字调用的一段程序 4 4软件设计基础 模块 module 模块化设计 modulardesign 按适当的原则把软件划分为一个个较小的 相关而又相对独立的模块 2020 1 12 1 分解 decomposition E P1 P2 E P1 E P2 设 C x 为复杂程度函数E x 为决定解决问题x所需的工作量 时间 函数 C P1 C P2 E P1 E P2 C P1 P2 C P1 C P2 奇妙的数字7 2 人类信息处理能力的限度 2020 1 12 C P1 P2 C P1 C P2 E P1 P2 E P1 E P2 软件工程基本定理 2020 1 12 每个模块的实现细节对于其他模块来说是隐藏的 也就是说 模块中所包含的信息是不允许其他不需要这些信息的模块使用的 2 信息隐藏 informationhiding 栈stack 2020 1 12 3 模块的独立性 moduleindependence 模块的独立性是指软件系统中每个模块只涉及软件要求的具体的子功能 而和软件系统中其他模块的接口是简单的 模块之间的相对独立性的度量 模块功能强度的度量 2020 1 12 1 内聚 Cohesion 低 高 强 弱 内聚性 模块独立性 2020 1 12 偶然性内聚 当模块内各部之间没有联系 或者即使有联系 这种联系也很松散 则称这种模块为巧合内聚模块 2020 1 12 逻辑性内聚 这种模块是把几种功能组合在一起 每次调用时 则由传递给模块的判定参数来确定该模块应执行哪一种功能 被调用模块 2020 1 12 2020 1 12 信息性内聚 这种模块能完成多个功能 各个功能都在同一数据结构上操作 每一项功能有一个唯一的入口点 符号表 2020 1 12 功能性内聚 如果一个模块内所有成分都完成一个功能则称这样的模块为功能模块 低 高 强 弱 内聚性 模块独立性 2020 1 12 2 耦合 耦合性是程序结构中各个模块之间相互关联的度量它取决于各个模块之间接口的复杂程度 调用模块的方式以及那些信息通过接口 低 高 弱 强 耦合性 模块独立性 2020 1 12 公共耦合 允许一组模块访问同一全局性的数据结构 2020 1 12 控制耦合 如果一个模块通过传送开关 标志 名字等控制信息 明显地控制选择另一模块的功能就是控制耦合 2020 1 12 以上给出了7种耦合类型 这只是从耦合的机制上所做的分类 按耦合的强弱程度的排列只是相对的关系 但它给设计人员在设计程序结构时提供了一决策准则 实际上 开始时两个模块之间的耦合不只是一种类型 而是多种类型的混合 这就要求设计人员按照实际情况进行分析 比较和分析 逐步加以改进 以提高模块的独立性 2020 1 12 4 5结构化设计方法 SD StructuredDesign 结构化设计方法是基于模块化 自顶向下细化 结构化程序设计等程序设计技术基础发展起来的 它所提供的方法和原则 主要是用来指导软件的概要设计 它还提供了一种 结构图 的描述工具 是专门用来描述软件的总体结构的 2020 1 12 结构化设计属于面向数据流的设计方法 在软件的需求分析阶段 数据流是软件开发人员考虑问题的出发点和基础 数据流从系统的输入端向输出端 则要经历一系列的变换或处理 用来表现这个过程的数据流 DFD 实际上就是软件系统的逻辑模型 面向数据流的设计要解决的任务 就是在上述需求分析的基础上 将DFD图映射 Mapping 软件系统的结构 换句话说 这类设计方法 允许把用DFD图表示的系统逻辑模型 很方便地转换成对于软件结构的初始设计描述 结构化设计方法中 软件的结构一律用SC图来描述 2020 1 12 2020 1 12 目标系统的DFD SC图 StructuredChart 该图常用来表示系统的软件结构 利用它可以清楚地表达软件结构中模块间的层次调用关系和模块之间的联系 SD 目标系统的SC 2020 1 12 A SC图中的主要内容 1 模块 在SC图中用矩形框表示 并用名字来标记它 模块调用关系 2 模块的调用关系和接口 B 调用模块 调用模块 A 查询学生 B 查找学生记录 数据信号 控制信号 学号 查找成功信号 模块间接口的表示 2020 1 12 SC图的一般格式 2020 1 12 1 在系统结构图中的模块 一 典型的系统结构形式 原子模块 在系统结构图中通常是指不能再分割的底层模块 完全因子分解系统 如果一个软件系统 它的全部实际加工 即数据计算或处理 都是由底层的原子模块来完成 而其它所有非原子模块仅仅执行控制或协调功能 2020 1 12 从下属模块取得数据 进行某些处理 再将其结果传给上级模块 在此 将它传送的数据流称为逻辑输入数据流 在系统结构图中有四种类型的模块 逻辑输入数据流 2020 1 12 从上级模块获得数据 进行某些处理 再将其结果传给下属模块 在此 将它传送的数据流称为逻辑输出数据流 逻辑输出数据流 2020 1 12 也叫加工模块 它是从上级模块获得数据 进行特定的处理 将其转换为其他形式 再传回上级模块它所加工的数据流叫做变换数据流 C B 变换数据流 2020 1 12 对所有下属模块进行协调和管理的模块 在一个好的系统结构图中 协调模块应在较高层出现 Y X Y X 2020 1 12 2 典型的系统结构形式之一 变换型系统结构图 i a e o 变换数据 传入部分 变换中心 传出部分 具有变换型数据流图 2020 1 12 主模块 C变换成D 取得C 给出D 取得B B变换成C D变换成E 给出E 取得A A变换成B A A B B B C C D C D E D 协调模块 变换模块 传出模块 具有变换型系统结构图 2020 1 12 3 典型的系统结构形式之二 事务型系统结构图 事务 由它接受一项事务 根据事务处理的特点和性质选择分配一个适当的处理单元 然后给出结果 2020 1 12 输入 事务型数据流图 1 A B C 3 D E F G H 2 4 5 6 7 中心变换 输出 逻辑输入 物理输入 逻辑输出 物理输出 2020 1 12 事务型数据流图 DFD 事务型系统结构图 SC 2020 1 12 2020 1 12 简化的事务型系统结构图 2020 1 12 二 从DFD图导出SC图的步骤 开始 事务分析 变换分析 完善SC图 2020 1 12 1 变换分析 是将具有变换型的DFD图导出SC图 变换分析 2020 1 12 1 在DFD图上标出逻辑输入 逻辑输出和变换中心的分界 变换中心 c e逻辑输入 w u逻辑输出 具有变换型数据流图 2020 1 12 2 完成第第一级分解 Mc MA MT ME C e C e U w U w 变换中心 顶层 第一层 第一级分解后的SC图 2020 1 12 第一级分解后的SC图 另一种画法 2020 1 12 3 完成第第二级分解 MA 变换中心 对逻辑输入的分解 C E B A D 逻辑输入模块的调用与执行过程 2020 1 12 2020 1 12 ME 变换中心 对输出的分解 W U V MT Q P R e C p r U w 对变换中心加工的分解 p r w u 2020 1 12 4 获得完整的SC图 2020 1 12 运用变换分析方法建立系统的SC时需注意以下几点 模块设计的次序时 应遵循对一个模块的全部直接下属模块都设计完成后 再转向另一个模块的下层模块的设计 在设计下层模块时 应考虑模块的耦合和内聚问题 以提高设计初始SC图的质量 注意 黑盒 技术的使用 2020 1 12 主模块 A B C A1 A2 A3 A11 A12 A13 2020 1 12 低 高 强 弱 内聚性 模块独立性 低 高 弱 强 耦合性 模块独立性 具有高内聚低耦合的模块才是模块独立性比较强的模块 2020 1 12 具有高内聚低耦合的模块才是模块独立性比较强的模块 模块A 模块D 模块C 模块B 非直接耦合 通过参数表传递数据 数据耦合 通过参数表传递数据结构 数据耦合 具有松散型的耦合类型 2020 1 12 请将上列给出的具有变换型的DFD图导出它的SC图 练习 2020 1 12 2 事务分析 是将具有事务型的DFD图导出SC图 事务中心 事务源 2020 1 12 主模块 给出H 取得A L M N A G H B E C F D 2020 1 12 发送部分 请将下列给出的采购子系统DFD图转换成SC图 练习 加工名称 2 1按书号汇总缺书2 2按出版社汇总缺书2 3修改教材库存和待购量 文件名称 F1教材存量表F2缺书登记表F5待购教材表F6教材一览表F7进书登记表 2020 1 12 发送部分 采购 按书号汇总 缺书登记表 统计缺书 登记进书 按出版社汇总 打印缺书单 修改教材存量表 修改教材待购量 统计命令 登记命令 待购教材表 暂缺书单 暂缺书单 进书通知 进书通知 采购子系统的SC图 缺书登记表 班号 姓名 书号 数量 2020 1 12 三 软件模块结构的改进 一 模块功能的完善化 2020 1 12 二 消除重复功能 改善软件结构 完全相似 局部相似 2020 1 12 X Y R1 R2 X Y R R 相似模块的各种合并方案的示意图 2020 1 12 三 模块的作用范围应在控制范围之内 作用范围 是一个与条件判定相关联的所有模块 控制范围 包括模块本身及其所有的从属模块 即供它调用的模块 2020 1 12 模块的控制范围 包括模块本身及其所有的从属模块 即供它调用的模块 2020 1 12 一个模块的作用范围 是指受这个模块中的判定所影响的模块 关于模块的作用范围 控制范围的关系示意图 G D B C 控制耦合 2020 1 12 Top C D E B2 B D G C 理想的情况 应该使判定的作用范围和判定所在模块的控制范围尽可能地吻合 即应使模块的作用范围尽可能地在控制范围之内 符合作用范围 控制范围的理想判定位置 D C G B A 对于一个理想SC图中的模块设计 所有受到一个判定影响的模块应该都从属该判定所在的模块 最好位于作出判定的那个模块本身及它的直接下属模块 2020 1 12 计算实发工资 取得工资数据 计时工人实发工资 计薪工人实发工资 编外人员实发工资 计时制工资额 税收扣款 薪金制工资额 常规扣款 编外人员工资 编外人员税款 编外人员扣款 2020 1 12 四 尽可能地减少高扇出结构 随着深度增大扇入 2020 1 12 P Q 2020 1 12 五 模块的大小要适中 50 100 2020 1 12 六 应设计出功能可预测的模块 但要避免过分受限制的模块 A 2020 1 12 发送部分 请将下列给出的DFD图转换成SC图 作业 2020 1 12 发送部分 请完成下列描述的DFD图 导出它的SC图 练习 美国某大学共有200名教师 校方与工会刚刚签定一项协议按照协议 所有年工资 26 000的教师工资将保持不变 年工资 26 000的教师将增加工资 所增加的工资数按下述方法计算 给每个由此教师所赡养的人 包括教师本人 每年补助 100 此外 教师满一年工龄的再多补助 50 但是增加后的年工资总额不能多于 26 000 教师的工资档案储存在行政办公室的磁带上 档案中有目前的年工资 赡养人数 雇用日期等信息 2020 1 12 发送部分 请将上列给出的DFD图导出它的SC图 作业 2020 1 12 第五章详细设计描述的工具 5 1详细设计阶段的目的与任务 详细设计的目的 为软件结构图 SC 中的每一个模块确定采用的算法和模块内数据结构 用某种选定的表达工具给出清晰的描述 详细设计阶段的主要任务 编写软件的 详细设计说明书 c 2020 1 12 2020 1 12 详细设计阶段的主要任务 2020 1 12 描述工具 5 2详细设计阶段的描述工具 2020 1 12 A 1 顺序型 一 程序流程图 B 几个连续的加工依次序排列 exp A B 2 选择型 由某个判断式的取值决定选择两个加工中的一个 2020 1 12 3 当型循环型 当循环控制条件成立时 重复执行特定的加工 4 直到型循环型 重复执行特定的加工 直到循环控制条件成立时 2020 1 12 5 多情况选择型 列出多种加工情况 根据控制变量的取值 选择执行其一 2020 1 12 2020 1 12 标准化程序流程图规定符号 2020 1 12 流程符号的使用规则 1 循环符号的使用 循环体 循环流程符号的使用 2020 1 12 2 判断有一个入口 但也允许有多个可选出口 多出口判断流程符号的使用 2020 1 12 请利用程序流程图描述下列问题的程序结构 练习 某汽车修配厂 有一个存有汽车零件的仓库 其中存有若干种零件 请编写一个查询程序 用于查询该库中某零件的库存量为多少 2020 1 12 顺序型 二 N S图 选择型 NassiandShneideman 当型循环型 直到型循环型 多分支选择型 2020 1 12 2020 1 12 三 PAD图 直到型循环型 当型循环型 顺序型 选择型 多分支选择型循环型 ProblemAnalysisDiagram 2020 1 12 举例 2020 1 12 练习 请为学生成绩管理系统中的学生成绩统计模块设计程序结构 2020 1 12 四 PDL ProgramDdesignLanguage PDL是一种用于描述功能模块的算法设计和加工细节的语言 称为设计程序用语言 它是一种伪代码 Pseudocode PDL 关键词 自然语言 2020 1 12 1 数据说明 格式 TYPEAS 其功能是定义数据的类型和作用域 说明 1 变量名 是一个模块内部使用的变量或模块间共用的全局变量名 2 限定词1 标明数据类型 3 限定词2 标明该变量的作用域 TYPEnumberASSTRINGLENGTH 12 2020 1 12 2 程序块 PDL的过程成分是由块结构构成的 而块将作为一个单个的实体来执行 BEGINEND 2020 1 12 3 子程序结构 把PDL中的过程称为子程序 PROCEDUREINTERFACEEND 2020 1 12 4 基本控制结构 IFTHEN ELSE ENDIF 选择型结构 2020 1 12 DOWHILE ENDDO REPEATUNTIL ENDREP 重复型结构 2020 1 12 DOLOOP EXITWHENENDLOOP DOFOR ENDFOR 重复型结构 2020 1 12 多路选择结构 CASEOF WHENSELECT WHENSELECT DEFAULT ENDCASE 2020 1 12 READ WRITETO 输入 输出结构 2020 1 12 EnteravectorSetMaximumtothevalueofthefirstelementinthevectorDOforeachsecondonetothelastIFvalueofTHENelementisgreaterthantheMaximumvalueSetMaximumtovalueoftheelementENDDOPrinttheMaximumvalue 2020 1 12 设某模块的功能是 读入任意长的一段英文课文 将其分解为单字 然后输出一个单词表 并指出每个单词在课文中所出现的次数 练习 请按下列给出的文字要求 用PDL描述其该模块的算法 2020 1 12 executeprocessaREPEATUNTILconditionX8executeprocessbIFconditionX1THENBEGINexecuteprocessfIFconditionX6THENREPEATUNTILconditionX7executeprocessiENDREPELSEBEGINexecuteprocessgexecuteprocesshENDENDIFEND 练习 请将下列的PDL表示的某模块的过程性描述 改为用 1 N S图2 PAD图表示 2020 1 12 ELSECASEOFXiWHENconditionX2SELECTDOWHILEconditionX5executeprocessCENDDOWHENconditionX3SELECTprocessdWHENconditionX4SELECTprocesseENDCASEENDIFENDREPexecuteprocessjEND 2020 1 12 第六章程序编码 编码的目的 是使用选定的程序设计语言 把模块的过程性描述翻译为用该语言书写的源程序 源代码 模块的过程性描述 不可执行的 源程序 可执行的 编码 6 1编码的目的 2020 1 12 Winberg的程序实验结果 2020 1 12 结构化程序设计是一种设计程序的技术 它采用自顶向下逐步细化的设计方法和单入口 Singleentry 单出口 Singleexit 的控制结构 这种控制结构包括有 顺序 选择和循环 6 2结构化程序设计 StructuredProgramming 2020 1 12 for a 1 b 1 a 20 break if b 3 1 b 3 continue b 5 单入口 单出口 2020 1 12 If A LT B goto120If B LT C goto110100write 6 Cgoto140110write 6 Bgoto140120If A LT C goto130goto100130write 6 A140continue 单入口多出口结构 2020 1 12 无节制地使用了GOTO语句所产生的程序流程 2020 1 12 一 结构化程序设计的原则 1 使用语言中的顺序 选择 重复等有限的基本控制结构表示程序2 选用的控制结构只准许有一个入口和一个出口3 程序语句组成容易识别的块 Block 每块只有一个入口和一个出口4 复杂结构应该用基本控制结构进行组合嵌套来实现5 严格控制GOTO语句 2020 1 12 F0 F a F1 F b if F0 F10 X0 Xm F0 Fm elseX1 Xm finish printf d n Xm 2020 1 12 Begin F0 F1 0 X0 aX1 bi 1 Xm X0 X1 2Fm F m Q F0 Fm 0 X0 Xm X1 Xm F0 Fm T T Xm F T F F F0 F a F1 F b 1 1 End 2 2 i n i Q abs Fm eps abs X1 X0 eps 2020 1 12 F0 F a F1 F b if F0 F10 X0 Xm F0 Fm elseX1 Xm printf d n Xm 2020 1 12 F0 F a F1 F b if F0 F10 X0 Xm F0 Fm elseX1 Xm i printf d n Xm 2020 1 12 二 程序设计自顶向下 逐步求精 1 程序设计是一个由粗到细的 渐进 的过程 2 程序设计不仅包括对控制结构的设计 也包括对数据结构的设计 二者都要一步一步地细化 采用逐步细化方法设计程序的步骤 2020 1 12 用逐步细化方法设计一个程序 其功能为 从一组数中找出最大的数 举例 第一步 列出问题的初步解 1 输入一组数 2 找出其中最大的数 3 输出最大的数 2020 1 12 第二步 分解主要问题 2 1 首先读入一个数并设其为最大的数 2 2 将该数逐次与其它数进行比较 2 3 若有大于该数的则将其保存 2020 1 12 第三步 确定数据结构 3 1 定义一数组A 3 2 max A 1 3 3 从A 2 至A n 开始比较 3 4 若当前数大于max 则令 max A I 2020 1 12 第四步 用PDL描述 InputarrayASetMax A 1 DOforI 2toNIFMax A I SetMax A I ENDIFENDDOPrintMax 2020 1 12 练习 请用逐步细化方法设计一由下列描述的程序结构 读入一段任意长度的英语课文 将其分解为单字 然后输出一张单词表 listofwords 并指出每种单词在课文中的出现次数 2020 1 12 三 程序复杂性的度量 程序复杂性主要是指模块内部程序的复杂性 它直接关系到软件开发费用的多少 开发周期的长短和软件和软件内部潜伏错误的多少 同时它也是软件可理解性的另一种度量 2020 1 12 为了度量程序复杂性 要求复杂性度量应满足以下假设 2020 1 12 如果设每行代码的出错率为每100行源程序中可能的错误数目 例如 每行代码的出错率为1 也就是说 每100行源程序中就可能有一个错误 1 代码行度量法 统计程序中的源代码的行数 较小的程序 1 3 1 8 行 较大的程序 2 7 3 2 行 2020 1 12 该方法是利用程序模块的程序图中环路的个数 来计算程序的复杂性的 为此 该方法也称为环路复杂度计算法 2 McCabe度量法 利用程序的控制流来度量程序的复杂性 它是一种退化了的程序流程图 即 把程序流程图中每个处理符号都退化成一个结点 而原来流程图中的流程线 则变成连接不同结点的有向弧 2020 1 12 1 程序图符号 2020 1 12 2020 1 12 2 从流程图导出程序图 2020 1 12 3 环路复杂性的计算方法 V G m n p 说明 V G 是有向图G中环路数 m 为图G中弧数 n 为图G中节点数 p 为图G中强连通分量个数 V G 13 11 1 3 McCabe的环路复杂性度量值为3 2020 1 12 练习 请将右侧给出的程序流程图转换为程序图并计算其环路值 2020 1 12 程序的环路复杂度则取决于程序控制流的复杂度 也就是取决于程序结构的复杂程度 当程序内分支或循环个数增加时 则相应地环域复杂度也随之增加 因此 它是对测试难度的一种定量度量 也能对软件最终的可靠性给出某种预测 4 环路复杂度的用途 2020 1 12 练习 请用程序流程图描述下列问题的算法 再将其转换为程序图并计算其环路值 请定义一个数组a 要求找出数组中最大数和最小数 并把最大数和a 0 中的数对调 最小数和a 1 中的数对调 2020 1 12 练习 请画出下列伪代码程序的流
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 产品采购与供应合同协议
- 2025年单位个人现金借款风险补偿协议
- 2025年新版采购与销售协议
- 水稻贪青课件
- 2025房产赠与与绿色建筑认证合同
- 儿童医院基本标准
- 私募股权投资基金2025年投资热点与退出策略在文化产业的风险控制报告
- 数字政务云存储解决方案创新创业项目商业计划书
- 会员积分体系构建研究分析报告
- 宠物医院服务创新创业项目商业计划书
- 2025年度全国保密教育线上培训考试题库及答案(完整版)
- 题型专攻:平行线分线段成比例【八大题型】(原卷版)
- 宠物洗澡美容免责协议书
- 食品生产监管培训课件
- 教科版(2024)九年级上册物理教学计划含进度表
- 2025-2026学年北师大版(2024)小学数学三年级上册教学计划及进度表
- 公益诉讼案件汇报案件
- 出入境人员安全知识培训课件
- 2025至2030飞轮储能(FES)系统行业市场占有率及有效策略与实施路径评估报告
- 启动院长再审申请书怎样写
- 吊顶工程教学课件
评论
0/150
提交评论