资源预览内容
第1页 / 共419页
第2页 / 共419页
第3页 / 共419页
第4页 / 共419页
第5页 / 共419页
第6页 / 共419页
第7页 / 共419页
第8页 / 共419页
第9页 / 共419页
第10页 / 共419页
亲,该文档总共419页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
2024/9/22024/9/2软件工程软件工程 哈哈尔尔滨滨工工业业大大学学 韩静萍Software Engineering 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 在一些人眼里,今天的软件开发似乎已 成为简单的事情,已有了不少很好的开发工 具和软件库,软件开发人员训练有素,都强 烈渴望去编写很酷的软件,可以在几天的时 间里编写出一个相当复杂的软件。但为什么 有一些软件能够得到用户的喜欢,而另一些 则不能?为什么有些软件能够在市场上成功 ,而有些则受到冷落?由此可见,开发软件 并不一定难,难就难在如何开发有用的软件。微软凌小宁博士 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 我最大的心得是,一个产品一定要找到能够真正适用的场合,不能只是为了技术而从事技术为了研究而进行研究,却不管用户对你所研究的技术和产品有没有需求。否则,无论你的技术是多么优秀,多么先进,恐怕你的产品在市场上都无法获得成功。微软张益肇博士 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 软件工程是计算机科学与技术专业的一门专业核心课程。通过本课程的学习,使学生掌握系统的软件开发理论、技术和方法,使用正确的工程方法开发出成本低、可靠性好并在机器上能高效运行的软件,为今后从事软件开发和维护打下坚实的基础。课程的性质、目的与任务课程的性质、目的与任务 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 本课程比较全面、系统地介绍软件工程的概念、技术与方法。 主要内容包括:软件工程概述、软件生存周期及软件需求分析、软件设计方法、软件测试技术等。 通过本课程的学习,使学生能真正的从中了解软件开发的整个过程。为了让学生真正得以实践,结合实际软件开发项目,让学生从问题定义开始,经过可行性研究、需求分析、概要设计、详细设计、编码直到最后要对自己开发的软件还要进行测试,这样一个软件开发过程,从而使学生掌握软件开发的基本技能。课程主要内容课程主要内容 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2学习本课程的基本要求学习本课程的基本要求 本课程是继程序设计课程之后,对提高学生软件开发能力有重要作用的一门课程。要求学生在学习本课程前应掌握信息管理系统、数据结构、结构化程序设计、面向对象程序设计以及程序设计方法论。 通过本课程的学习,为学生后期的毕业设计环节奠定了良好的基础。 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2章学时章学时章学时章学时123494132补充2421021442284122总学时 46=38(讲授)+8(课程设计)各 章 学 时 安 排 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2第一章第一章 软件工程概述软件工程概述水利工程建筑工程机械工程 软件工程软件工程软件工程软件工程 本章将对软件的地位和作用、软件的特点、软件 的发展、软件的危机以及软件工程学科的形成、软件 生期等方面的问题和基本概念传统工程新兴工程气象工程生物工程 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/21.1 软件的概念与特点软件的概念与特点1、软件softwaresoft+ware软制品(软体) 软件是计算机系统中与硬件相互依存的另一部分。 它包括程序、数据及其相关文档的完整集合。 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/22、软件特点. . 软件是一种逻辑实体,而不是具体的物理实体. . 软件的生产与硬件不同 . . . . 在软件的运行和使用期间,没有硬件那样的机械 磨损,老化问题磨合调整磨损用坏修改点实际曲线理想曲线硬件失效率曲线时间失效率时间失效率软件失效率曲线 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2. . 软件的成本相当昂贵软件技术的发展落后于需求时间软件复杂性软件需求差距软件技术硬、软件成本比例的变化年份成本%软件软件1950197019851995硬件硬件 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/23、软件的分类1 1、按软件的、按软件的、按软件的、按软件的功能功能功能功能进行划分进行划分进行划分进行划分系统软件支撑软件应用软件 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2支撑软件一般类型一般类型一般类型一般类型: 文本编辑程序文本编辑程序文本编辑程序文本编辑程序 文本格式化程序文本格式化程序文本格式化程序文本格式化程序支持需求分析支持需求分析支持需求分析支持需求分析: PSL/PSA PSL/PSA问题描述语言问题描述语言问题描述语言问题描述语言 关系数据库管理系统关系数据库管理系统关系数据库管理系统关系数据库管理系统支持设计支持设计支持设计支持设计: 图形软件包图形软件包图形软件包图形软件包 结构化流程图绘图程序结构化流程图绘图程序结构化流程图绘图程序结构化流程图绘图程序支持测试支持测试支持测试支持测试: 静态分析器静态分析器静态分析器静态分析器 测试覆盖检验程序测试覆盖检验程序测试覆盖检验程序测试覆盖检验程序支持实现支持实现支持实现支持实现: 编辑程序编辑程序编辑程序编辑程序 连接编辑程序连接编辑程序连接编辑程序连接编辑程序支持管理支持管理支持管理支持管理: 标准检验程序标准检验程序标准检验程序标准检验程序 库管理程序库管理程序库管理程序库管理程序 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/22 2、按软件的、按软件的、按软件的、按软件的规模规模规模规模进行划分进行划分进行划分进行划分 按开发软件所需的 人力、时间以及完成的 源代码行数。类别参加人数研制期限产品规模(源代码行数)微型微型微型微型小型小型小型小型中型中型中型中型大型大型大型大型甚大型甚大型甚大型甚大型极大型极大型极大型极大型1 11 12-52-55-205-20100-1000100-10002000-50002000-50001-41-4周周周周1-61-6周周周周1-21-2年年年年2-32-3年年年年4-54-5年年年年5-105-10年年年年约约约约500500行行行行 约约约约20002000行行行行 5000-500005000-50000行行行行5 5万万万万-10-10万行万行万行万行100100万行万行万行万行10001000万行万行万行万行 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 3 3、按软件、按软件、按软件、按软件开发开发开发开发划分划分划分划分软件项目开发软件产品开发 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/21.2 软件工程的概念及范畴软件工程的概念及范畴 1、“软件工程”-Software Engineering 于1968年 NATO 组织在德国召开的一次会议上提出 是把软件当作一种工业产品,要求是把软件当作一种工业产品,要求是把软件当作一种工业产品,要求是把软件当作一种工业产品,要求 “ “采用工程化的采用工程化的采用工程化的采用工程化的 原理与方法对软件进行计划、开发和维护原理与方法对软件进行计划、开发和维护原理与方法对软件进行计划、开发和维护原理与方法对软件进行计划、开发和维护 ” ”。 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 软件工程学 软件开发技术 软件工程管理 软件开发方法学 软件工具 软件工程环境 软件工程管理学 软件经济学 - 软件工程学的范畴 2、 软件工程学 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 Wake up every day with a feeling of passion for the different technology will make in peoples Life.微软企业文化宗旨部分内容 每天醒来的时候,要对技术给生活造成的改变 始终拥有一份 激情。 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2程序 3、软件的演变(即从传统软件开发到现代软件开发) 软件软件产品传统软件开发现代软件开发 1975 1989 2000 0.00016240营业额增长曲线 80 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/21.3 软件生存周期软件生存周期把软件从产生、发展到成熟、直至衰亡为止(SW life cycle) 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2特点: 上一阶段的变换结果 是下一阶段的变换的 输入,相邻两个阶段 具有因果关系,紧密 相联。需求分析需求分析问题定义问题定义可性行研究可性行研究计划计划时期时期概要设计概要设计详细设计详细设计编编 码码 测测 试试开发开发时期时期运行与维护运行与维护运运 行行时时 期期软件生存周期模型(瀑布模型 Waterfall Model) 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2原型模型(Prototype Model)加工原型原型原型:是指模拟某种产品的原始模型快速分析和设计建造原型客户评价原型1、原型系统仅包括未来系统的 主要功能,以及系统的重要 接口。2、为了尽快向用户提供原型, 开发原型系统时应尽量使用 能缩短开发周期的语言和工 具。 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 第二章第二章 问题的定义与可性行研究问题的定义与可性行研究 当我们在着手做任何一件工作以前,必须明确工作的性质、任务,制定完成任务的计划,这是非常必要的。同样对于软件产品的开发 ,显然也应该解决好这样类似的问题,明确该软件产品开发的任务,以及完成任务的价值从而制定出完成任务的计划。那么问题的定义和可性行研究就是制定软件系统的计划的第一步。 所以在软件工程中把这一步称为 计划时期 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2开始问题定义可性行研究 可行否?项目实施计划终止项目的建议结束Y计划时期的工作流程图N 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2Who 为谁设计,用户是谁?What 要解决哪些问题?Why 为什么要解决这些问题 3W Win CE1.0 有用的软件有用的软件 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/22.1 现状调查和问题的定义现状调查和问题的定义 目的目的: :弄清楚用户要求计算机解决什么问题弄清楚用户要求计算机解决什么问题任务任务: :编写系统目标与规范说明书编写系统目标与规范说明书 系统目标与规范说明书系统目标与规范说明书系统目标与规范说明书系统目标与规范说明书1 1 1 1、项目:教材销售系统、项目:教材销售系统、项目:教材销售系统、项目:教材销售系统2 2 2 2、问题:人工销售教材手续繁琐,容易出错、问题:人工销售教材手续繁琐,容易出错、问题:人工销售教材手续繁琐,容易出错、问题:人工销售教材手续繁琐,容易出错3 3 3 3、项目目标:建立一个高效率、无差错的计算机教材销售系统、项目目标:建立一个高效率、无差错的计算机教材销售系统、项目目标:建立一个高效率、无差错的计算机教材销售系统、项目目标:建立一个高效率、无差错的计算机教材销售系统4 4 4 4、项目范围:利用现有的计算机,软件开发费用不得超过、项目范围:利用现有的计算机,软件开发费用不得超过、项目范围:利用现有的计算机,软件开发费用不得超过、项目范围:利用现有的计算机,软件开发费用不得超过2000200020002000元元元元5 5 5 5、初步想法:建议在系统中增加对缺书的统计与采购功能、初步想法:建议在系统中增加对缺书的统计与采购功能、初步想法:建议在系统中增加对缺书的统计与采购功能、初步想法:建议在系统中增加对缺书的统计与采购功能6 6 6 6、可性行研究:建议进行大约、可性行研究:建议进行大约、可性行研究:建议进行大约、可性行研究:建议进行大约10101010天的可性行研究,且研究费用不超过天的可性行研究,且研究费用不超过天的可性行研究,且研究费用不超过天的可性行研究,且研究费用不超过500500500500元元元元 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/22.2 可行性研究与论证可行性研究与论证 1、经济可行性: 进行成本效益分析,评估项目的开发成本。基于计算机系统的成本由四部分组成1、购置软、硬件及有关设备费用2、系统开发费用3、系统安装和维护费用4、人员培训费用费用其论证的焦点是: :围绕着对系统开发的价值价值进行论证 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2举例:关于开发CAD系统的软件开发成本及效益分析 1 2 3 4 5 年604020 0成本-效益(万元)该系统节省经费该系统成本盈亏平衡点投资回收期 -成本及效益分析图 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/22、技术可行性:对系统的性能、可靠性、可维护性以及生产率等方面的信息进行评价。 通过技术可行性的分析,将为新系统提交技术可行性评估。以指明为完成系统的功能和性能需要什么技术?需要哪些材料、方法、算法、或者过程等 技术可行性分析方法- 数学模型和优化技术、概率和统计、排队论、控制论等方法。 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2可行性论证报告1、系统概述2、可行性分析3、拟订开发计划4、结论意见 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/22.3 可行性分析所需工具可行性分析所需工具 (系流程图与系统结构图)1、系统流程图: 是用来描述系统物理模型的一种传统工具。流程符号含 义流程符号含 义数据加工符号换页连接 输入/输出符号磁带符号连接点符号文档符号人工操作多文档符号 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2流程符号含 义流程符号含 义显示器或终端机控制流符号磁盘机或数据库流程开始与结束 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 举例库存清单系统流程图库存清单程序库存清单程序定货报告定货报告事务事务定货信息定货信息结束结束报告生成程序报告生成程序零件库零件库 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2人工销售教材 流程图结束结束结束结束学生学生学生学生申请购申请购申请购申请购书书书书 购书证明购书证明购书证明购书证明检索教材检索教材检索教材检索教材帐本是帐本是帐本是帐本是否有该否有该否有该否有该教材教材教材教材购书单购书单购书单购书单开购书发开购书发开购书发开购书发票和购票和购票和购票和购书单书单书单书单购书发票购书发票购书发票购书发票到书库到书库到书库到书库领书领书领书领书 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2计算机售书系统流程图结束结束结束结束学生学生学生学生购书发票购书发票购书发票购书发票到书库到书库到书库到书库领书领书领书领书 购书单购书单购书单购书单终端终端终端终端审查并审查并审查并审查并开发票开发票开发票开发票1 11-1-学生各学期用书数据库学生各学期用书数据库学生各学期用书数据库学生各学期用书数据库购书单购书单购书单购书单2 2 2- 2-教材存量数据库教材存量数据库教材存量数据库教材存量数据库 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2练练练练习习习习 设某城市招干考试成绩统计系统。设某城市招干考试成绩统计系统。设某城市招干考试成绩统计系统。设某城市招干考试成绩统计系统。 考生分三个专业,不同专业考试科目不同:考生分三个专业,不同专业考试科目不同:考生分三个专业,不同专业考试科目不同:考生分三个专业,不同专业考试科目不同: 法律专业法律专业法律专业法律专业-考政治、语文、法律考政治、语文、法律考政治、语文、法律考政治、语文、法律 行政专业行政专业行政专业行政专业-考政治、语文、行政考政治、语文、行政考政治、语文、行政考政治、语文、行政 财经专业财经专业财经专业财经专业-考政治、语文、财经学考政治、语文、财经学考政治、语文、财经学考政治、语文、财经学 每个考生在报名时登记姓名、地址、年龄和报考专业。报每个考生在报名时登记姓名、地址、年龄和报考专业。报每个考生在报名时登记姓名、地址、年龄和报考专业。报每个考生在报名时登记姓名、地址、年龄和报考专业。报 名后招干办公室根据专业考生专业及地址在市区或郊区来编排名后招干办公室根据专业考生专业及地址在市区或郊区来编排名后招干办公室根据专业考生专业及地址在市区或郊区来编排名后招干办公室根据专业考生专业及地址在市区或郊区来编排 准考证号码和考场。考生参加考试后,输入每个考生的各门课准考证号码和考场。考生参加考试后,输入每个考生的各门课准考证号码和考场。考生参加考试后,输入每个考生的各门课准考证号码和考场。考生参加考试后,输入每个考生的各门课 程的成绩,并统计出每个考生三门课程的总成绩。按准考证号程的成绩,并统计出每个考生三门课程的总成绩。按准考证号程的成绩,并统计出每个考生三门课程的总成绩。按准考证号程的成绩,并统计出每个考生三门课程的总成绩。按准考证号 的顺序打印出考生考试成绩单,分发给每个考生。各专业分别的顺序打印出考生考试成绩单,分发给每个考生。各专业分别的顺序打印出考生考试成绩单,分发给每个考生。各专业分别的顺序打印出考生考试成绩单,分发给每个考生。各专业分别 将考生按成绩总分从高到低的次序排序,以便决定录取名单。将考生按成绩总分从高到低的次序排序,以便决定录取名单。将考生按成绩总分从高到低的次序排序,以便决定录取名单。将考生按成绩总分从高到低的次序排序,以便决定录取名单。 请画出由下列文字描述的系统流程图请画出由下列文字描述的系统流程图请画出由下列文字描述的系统流程图请画出由下列文字描述的系统流程图 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/22、系统结构图: 系统工程师用结构摸板开发的系统模型用户界面处理用户界面处理用户界面处理用户界面处理输输输输入入入入处处处处理理理理维护和自测试维护和自测试维护和自测试维护和自测试处理和控制功能处理和控制功能处理和控制功能处理和控制功能输输输输出出出出处处处处理理理理 - 结构摸板 - 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2- 传输线的分类系统 3、系统结构环境图(ACD-Architecture Context Diagram) : ACD 可用于描述实现系统与系统运行环境之间的信息边界。 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2传输线分类系统条形码阅读器传输线分配站操作员分配站操作员分类机构主 机条形码线速指示器分路命令格式化报告数据查询查询及报告诊断数据- 传输线分类系统的 ACD 图处理与控制功能区外部实体 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 ACD 的层次结构ABC 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2作作作作请画出学生成绩管理系统的 ACD 图 业业业业 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 第第3 章章 软件需求分析软件需求分析 软件需求分析是软件开发早期的一个重要阶段。它在问题定义和可行性研究阶段之后进行。需求分析的基本任务是软件人员和用户一起完全弄清用户对系统的确切要求。这是关系到软件开发成败的关键步骤,也是整个系统开发的基础。 软件需求分析阶段要求用 需求规格说明书(SRS) 来表达用户对系统的要求。规格说明书可用文字方式表示,也可用图形表示。 本章将介绍需求分析的任务、步骤、需求分析方法任务、步骤、需求分析方法任务、步骤、需求分析方法任务、步骤、需求分析方法(面向数据流图分析方法、面向对象的分析方法)。 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2一、确定目标系统的具体要求一、确定目标系统的具体要求一、确定目标系统的具体要求一、确定目标系统的具体要求1 1 1 1、确定系统的运行环境要求、确定系统的运行环境要求、确定系统的运行环境要求、确定系统的运行环境要求2 2 2 2、系统的性能要求、系统的性能要求、系统的性能要求、系统的性能要求 3 3 3 3、系统功能、系统功能、系统功能、系统功能 3.1 需求分析的任务需求分析的任务 硬件环境和软件环境硬件环境和软件环境硬件环境和软件环境硬件环境和软件环境 确定目标系统具备的所有功能确定目标系统具备的所有功能确定目标系统具备的所有功能确定目标系统具备的所有功能 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2举举例例数据库中存放的是职工的数据库中存放的是职工的数据库中存放的是职工的数据库中存放的是职工的某学校医疗费管理系统所属部门、职工号、姓名所属部门、职工号、姓名所属部门、职工号、姓名所属部门、职工号、姓名职工报销时应填写:职工报销时应填写:职工报销时应填写:职工报销时应填写: 所属部门、职工号、姓名、日期所属部门、职工号、姓名、日期所属部门、职工号、姓名、日期所属部门、职工号、姓名、日期 校内门诊、校外门诊、住院费、子女医疗费校内门诊、校外门诊、住院费、子女医疗费校内门诊、校外门诊、住院费、子女医疗费校内门诊、校外门诊、住院费、子女医疗费 医疗费分类:医疗费分类:医疗费分类:医疗费分类: 该校规定,每年每个职工的医疗费有一个限额(如该校规定,每年每个职工的医疗费有一个限额(如该校规定,每年每个职工的医疗费有一个限额(如该校规定,每年每个职工的医疗费有一个限额(如 80 80 80 80元),限元),限元),限元),限 额在年初确定,其限额规则如下:额在年初确定,其限额规则如下:额在年初确定,其限额规则如下:额在年初确定,其限额规则如下: 1 1 1 1、每个职工一年内报销的医疗费不超过限额时,全部报销、每个职工一年内报销的医疗费不超过限额时,全部报销、每个职工一年内报销的医疗费不超过限额时,全部报销、每个职工一年内报销的医疗费不超过限额时,全部报销 2 2 2 2、超额,则超出部分只可报销、超额,则超出部分只可报销、超额,则超出部分只可报销、超额,则超出部分只可报销90%90%90%90%,其余,其余,其余,其余10%10%10%10%由职工个人负担由职工个人负担由职工个人负担由职工个人负担 3 3 3 3、职工子女的医疗费也有限额(如、职工子女的医疗费也有限额(如、职工子女的医疗费也有限额(如、职工子女的医疗费也有限额(如 40 40 40 40元)元)元)元) 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 1 1、医疗费管理系统每天医疗费管理系统每天记录记录当天报销的若干职工或职工子女的医当天报销的若干职工或职工子女的医 疗费的疗费的类别、金额类别、金额。 2 2、在当天下班前让系统在当天下班前让系统自动结帐自动结帐、统计当天报销的医疗费总额统计当天报销的医疗费总额,供,供 出纳员核对。出纳员核对。 3 3、每笔帐要保存备查,每天所报销的费用要和各个职工已报销的金每笔帐要保存备查,每天所报销的费用要和各个职工已报销的金 额累计起来,以便检查哪些职工已超额。额累计起来,以便检查哪些职工已超额。 4 4、系统还要配有适当的系统还要配有适当的查询功能查询功能。 5 5、年终结算后,下一年度开始时要对数据库文件进行初始化。年终结算后,下一年度开始时要对数据库文件进行初始化。 6 6、当职工调离本单位,职工调如本单位或在本单位内部门间调动,当职工调离本单位,职工调如本单位或在本单位内部门间调动, 数据库文件应能及时得到修改。数据库文件应能及时得到修改。 请完成对上述系统的 需求分析用户对系统的要求 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 该系统规模不太大,可以和用户单位的其他管理系统该系统规模不太大,可以和用户单位的其他管理系统该系统规模不太大,可以和用户单位的其他管理系统该系统规模不太大,可以和用户单位的其他管理系统使用使用使用使用相同的计算机硬件设备相同的计算机硬件设备相同的计算机硬件设备相同的计算机硬件设备、相同的操作系统相同的操作系统相同的操作系统相同的操作系统和和和和相同的关相同的关相同的关相同的关 系数据库管理系统系数据库管理系统系数据库管理系统系数据库管理系统。 如果,可以使用汉化了的数据库管理系统,但在建立如果,可以使用汉化了的数据库管理系统,但在建立如果,可以使用汉化了的数据库管理系统,但在建立如果,可以使用汉化了的数据库管理系统,但在建立数据库结构时,凡是用英文名称来代表字段名时,则必须数据库结构时,凡是用英文名称来代表字段名时,则必须数据库结构时,凡是用英文名称来代表字段名时,则必须数据库结构时,凡是用英文名称来代表字段名时,则必须在数据字典中予以说明。在数据字典中予以说明。在数据字典中予以说明。在数据字典中予以说明。 1 1 1 1、确定系统的环境要求、确定系统的环境要求、确定系统的环境要求、确定系统的环境要求 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/23 3 3 3、系统的功能、系统的功能、系统的功能、系统的功能 (1 1 1 1)具有表格形式屏幕的输入格式)具有表格形式屏幕的输入格式)具有表格形式屏幕的输入格式)具有表格形式屏幕的输入格式 (2 2 2 2)具有重复录入数据的功能)具有重复录入数据的功能)具有重复录入数据的功能)具有重复录入数据的功能 (3 3 3 3)具有查询和统计汇总的功能)具有查询和统计汇总的功能)具有查询和统计汇总的功能)具有查询和统计汇总的功能 (4 4 4 4)职工的调入和调出以及对数据库的初始化)职工的调入和调出以及对数据库的初始化)职工的调入和调出以及对数据库的初始化)职工的调入和调出以及对数据库的初始化 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/22 2 2 2、系统性能要求、系统性能要求、系统性能要求、系统性能要求 (1 1 1 1)数据不能随意更改)数据不能随意更改)数据不能随意更改)数据不能随意更改 2 2 2 2)保证数据的准确性)保证数据的准确性)保证数据的准确性)保证数据的准确性 由于医疗费管理系统涉及到会计经费问题,由于医疗费管理系统涉及到会计经费问题,由于医疗费管理系统涉及到会计经费问题,由于医疗费管理系统涉及到会计经费问题,数据不能数据不能数据不能数据不能随意更改随意更改随意更改随意更改但数据输入又难免会出错。因而在每输入一个职但数据输入又难免会出错。因而在每输入一个职但数据输入又难免会出错。因而在每输入一个职但数据输入又难免会出错。因而在每输入一个职工的医疗费后,屏幕提示工的医疗费后,屏幕提示工的医疗费后,屏幕提示工的医疗费后,屏幕提示“ “数据有误吗?数据有误吗?数据有误吗?数据有误吗?” ”。若是在核对时。若是在核对时。若是在核对时。若是在核对时 有误,可及时更改,避免输入错误。一天报销结束时,在有误,可及时更改,避免输入错误。一天报销结束时,在有误,可及时更改,避免输入错误。一天报销结束时,在有误,可及时更改,避免输入错误。一天报销结束时,在 数据存档前,再让出纳员核对一下经费总额,若出纳员支数据存档前,再让出纳员核对一下经费总额,若出纳员支数据存档前,再让出纳员核对一下经费总额,若出纳员支数据存档前,再让出纳员核对一下经费总额,若出纳员支 出的金额总数有误时,应让计算机显示每笔帐目,供一一出的金额总数有误时,应让计算机显示每笔帐目,供一一出的金额总数有误时,应让计算机显示每笔帐目,供一一出的金额总数有误时,应让计算机显示每笔帐目,供一一 仔细核对,此时在允许修改一次。当正式登帐后,数据就仔细核对,此时在允许修改一次。当正式登帐后,数据就仔细核对,此时在允许修改一次。当正式登帐后,数据就仔细核对,此时在允许修改一次。当正式登帐后,数据就 绝对不允许在修改了,由此保证财务制度的严格性,保证绝对不允许在修改了,由此保证财务制度的严格性,保证绝对不允许在修改了,由此保证财务制度的严格性,保证绝对不允许在修改了,由此保证财务制度的严格性,保证 数据的安全性。数据的安全性。数据的安全性。数据的安全性。 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2二、建立目标系统的逻辑模型二、建立目标系统的逻辑模型二、建立目标系统的逻辑模型二、建立目标系统的逻辑模型 通常软件软件开发项目是要实现目标系统的物理模型,即通常软件软件开发项目是要实现目标系统的物理模型,即通常软件软件开发项目是要实现目标系统的物理模型,即通常软件软件开发项目是要实现目标系统的物理模型,即 确定待开发软件系统的系统元素,并将功能和数据结构分配到确定待开发软件系统的系统元素,并将功能和数据结构分配到确定待开发软件系统的系统元素,并将功能和数据结构分配到确定待开发软件系统的系统元素,并将功能和数据结构分配到 这些系统元素中。它是软件实现的基础。这些系统元素中。它是软件实现的基础。这些系统元素中。它是软件实现的基础。这些系统元素中。它是软件实现的基础。 但是目标系统的物理模型是由它的逻辑模型经实例化,即但是目标系统的物理模型是由它的逻辑模型经实例化,即但是目标系统的物理模型是由它的逻辑模型经实例化,即但是目标系统的物理模型是由它的逻辑模型经实例化,即 具体到某个业务领域而得到的。与物理模型不同,逻辑模型忽具体到某个业务领域而得到的。与物理模型不同,逻辑模型忽具体到某个业务领域而得到的。与物理模型不同,逻辑模型忽具体到某个业务领域而得到的。与物理模型不同,逻辑模型忽 视机制和细节,只描述系统要完成的功能和要处理的数据。视机制和细节,只描述系统要完成的功能和要处理的数据。视机制和细节,只描述系统要完成的功能和要处理的数据。视机制和细节,只描述系统要完成的功能和要处理的数据。 为此,该阶段的主要任务是,为此,该阶段的主要任务是,为此,该阶段的主要任务是,为此,该阶段的主要任务是,借助于当前系统的逻辑模型借助于当前系统的逻辑模型借助于当前系统的逻辑模型借助于当前系统的逻辑模型 导出目标系统的逻辑模型导出目标系统的逻辑模型导出目标系统的逻辑模型导出目标系统的逻辑模型,也就是解决目标系统,也就是解决目标系统,也就是解决目标系统,也就是解决目标系统“ “做什么做什么做什么做什么” ”的问的问的问的问 题。题。题。题。 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2用户用户用户用户调查调查调查调查具体模型具体模型具体模型具体模型建立系统模型的工作流程建立系统模型的工作流程建立系统模型的工作流程建立系统模型的工作流程逻辑逻辑逻辑逻辑抽象抽象抽象抽象当前系统当前系统当前系统当前系统逻辑模型逻辑模型逻辑模型逻辑模型当前系统当前系统当前系统当前系统计算计算计算计算机化机化机化机化评审评审评审评审修改修改修改修改正式模型正式模型正式模型正式模型完善完善完善完善细节细节细节细节目标系统目标系统目标系统目标系统目标系统目标系统目标系统目标系统初始模型初始模型初始模型初始模型经认可的经认可的经认可的经认可的问题需求问题需求系统模型系统模型系统模型系统模型用户用户用户用户 1、建立目标系统逻辑模型的步骤 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2图形工具 数据流图 数据字典 2、建立目标系统逻辑模型的图形工具 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 - 学生购买教材的具体模型 举举例例请建立计算机请建立计算机请建立计算机请建立计算机售书系统的逻辑模型售书系统的逻辑模型售书系统的逻辑模型售书系统的逻辑模型张张张张秘书秘书秘书秘书学学学学生生生生购书购书购书购书 购书购书购书购书 王王王王会计会计会计会计发票发票发票发票李李李李出纳出纳出纳出纳领书领书领书领书赵赵赵赵保管保管保管保管单单单单申请申请申请申请证明证明证明证明书书书书 -学生购买教材的 逻辑模型 审查审查审查审查有效性有效性有效性有效性学学学学生生生生有效有效有效有效购书单购书单购书单购书单 开发票开发票开发票开发票发票发票发票发票开领开领开领开领书单书单书单书单领书单领书单领书单领书单发书发书发书发书购书单购书单购书单购书单书书书书 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 - - - -学生购买教材的学生购买教材的学生购买教材的学生购买教材的 逻辑模型逻辑模型逻辑模型逻辑模型 审查并审查并审查并审查并开发票开发票开发票开发票学学学学生生生生发票发票发票发票购书单购书单购书单购书单 各班学生用书表各班学生用书表各班学生用书表各班学生用书表教材存量表教材存量表教材存量表教材存量表无效书单无效书单无效书单无效书单开领开领开领开领书单书单书单书单领书单领书单领书单领书单学学学学生生生生 完善目标系统并补充细节,的出目标系统的正式逻辑模型 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2三、需求规格说明书与评审三、需求规格说明书与评审三、需求规格说明书与评审三、需求规格说明书与评审 软件需求说明书软件需求说明书软件需求说明书软件需求说明书 - - SRS(Software Requirement Specification) SRS(Software Requirement Specification) 主要包括以下的内容主要包括以下的内容主要包括以下的内容主要包括以下的内容: : SRSSRS 引言引言引言引言 数据描述数据描述数据描述数据描述 数据流图数据流图数据流图数据流图 数据字典数据字典数据字典数据字典 功能描述功能描述功能描述功能描述 性能描述性能描述性能描述性能描述 特殊需求特殊需求特殊需求特殊需求 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2一、数据流图一、数据流图 3.2 面向数据流的方法面向数据流的方法 - - DFD(Data Flow Diagram) 是用来描述系统逻辑模型的一种图形工具。是用来描述系统逻辑模型的一种图形工具。 数据流图从数据传递和加工的角度,以图形的方式数据流图从数据传递和加工的角度,以图形的方式刻画数据流从输入到输出的移动变换过程。刻画数据流从输入到输出的移动变换过程。 DFD 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2储储储储户户户户检验检验检验检验付款付款付款付款登录登录登录登录存折存折存折存折帐卡帐卡帐卡帐卡取款取款取款取款信息信息信息信息办理取款手续的办理取款手续的办理取款手续的办理取款手续的 DFD DFD 图图图图检验不合格检验不合格检验不合格检验不合格现款现款现款现款付款信息付款信息付款信息付款信息取款单取款单取款单取款单存折存折存折存折 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/21 1 1 1、数据流图中的主要图形元素、数据流图中的主要图形元素、数据流图中的主要图形元素、数据流图中的主要图形元素 - - 转换数据流的处理过程转换数据流的处理过程转换数据流的处理过程转换数据流的处理过程 - 可以是数据库文件或任何形式的数可以是数据库文件或任何形式的数可以是数据库文件或任何形式的数可以是数据库文件或任何形式的数 据组织。箭头向内则表示写入文件据组织。箭头向内则表示写入文件据组织。箭头向内则表示写入文件据组织。箭头向内则表示写入文件 或查询文件,箭头向外则表示从文或查询文件,箭头向外则表示从文或查询文件,箭头向外则表示从文或查询文件,箭头向外则表示从文 件中读取数据或得到查询结果件中读取数据或得到查询结果件中读取数据或得到查询结果件中读取数据或得到查询结果 数据转换数据转换数据转换数据转换外部实体外部实体外部实体外部实体 - - 位于软件系统边界之外的信息生产者位于软件系统边界之外的信息生产者位于软件系统边界之外的信息生产者位于软件系统边界之外的信息生产者 或或或或 消费者消费者消费者消费者数据流数据流数据流数据流 - - 在转换之间有向流动的数据项或数据在转换之间有向流动的数据项或数据在转换之间有向流动的数据项或数据在转换之间有向流动的数据项或数据 集合集合集合集合数据存储文件数据存储文件数据存储文件数据存储文件 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2- 系统系统逻辑逻辑模型模型数据的数据的数据的数据的加工或加工或加工或加工或变换变换变换变换输入输入输入输入输出输出输出输出软件软件软件软件系统系统系统系统外部实体外部实体外部实体外部实体外部实体外部实体外部实体外部实体 外部实体外部实体外部实体外部实体外部实体外部实体外部实体外部实体 输入输入输入输入数据流数据流数据流数据流输入输入输入输入数据流数据流数据流数据流输出输出输出输出数据流数据流数据流数据流输出输出输出输出数据流数据流数据流数据流 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 - - - -学生购买教材的学生购买教材的学生购买教材的学生购买教材的 逻辑模型逻辑模型逻辑模型逻辑模型 审查并审查并审查并审查并开发票开发票开发票开发票学学学学生生生生发票发票发票发票购书单购书单购书单购书单 各班学生用书表各班学生用书表各班学生用书表各班学生用书表教材存量表教材存量表教材存量表教材存量表无效书单无效书单无效书单无效书单开领开领开领开领书单书单书单书单领书单领书单领书单领书单学学学学生生生生外部外部外部外部实体实体实体实体数据的数据的数据的数据的加工加工加工加工 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/22 2 2 2、数据流图中的其它图形元素、数据流图中的其它图形元素、数据流图中的其它图形元素、数据流图中的其它图形元素A AB BC C - - 有有有有 A A 则则则则 B B 或者或者或者或者 C C,或者两者都有或者两者都有或者两者都有或者两者都有* *A AB BC C+ +A AB BC C - - 有有有有 A A 则则则则 B B 与与与与 C C,或者两者同时有或者两者同时有或者两者同时有或者两者同时有 - - 有有有有 A A 则则则则 B B 或或或或 C C,但不会同时有但不会同时有但不会同时有但不会同时有B B与与与与C C 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2- - 标识多个数据流与加工之间关系的符号标识多个数据流与加工之间关系的符号标识多个数据流与加工之间关系的符号标识多个数据流与加工之间关系的符号 - - 当当当当 A A 或或或或 B B 有一个存在就有有一个存在就有有一个存在就有有一个存在就有 C CA AB BC C* *A AB BC C - - 只有当只有当只有当只有当 A A 与与与与 B B 都存在,则有都存在,则有都存在,则有都存在,则有 C C 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/23 3 3 3、分层的数据流图、分层的数据流图、分层的数据流图、分层的数据流图 F0F0A0A0B0B0F11F11A0A0B0B0F12F12F13F13F14F14F15F15p1p1C1C1D1D1M1M1N1N1F21F21M1M1F22F22N1N1F23F23K2K2F24F24W2W2F25F25p1p1Y2Y2X2X2第第第第 n n 层层层层第第第第 n+1n+1 层层层层第第第第 n+2n+2 层层层层 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2人工销售教材人工销售教材人工销售教材人工销售教材 系统流程图系统流程图系统流程图系统流程图学生学生学生学生开购书开购书开购书开购书证明证明证明证明购书购书购书购书证明证明证明证明开购书开购书开购书开购书发票发票发票发票 发发发发 票票票票收书费收书费收书费收书费 领书单领书单领书单领书单发书发书发书发书学生学生学生学生举举例例 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2学学学学生生生生教材教材教材教材购购购购销销销销系统系统系统系统购书单购书单购书单购书单领书单领书单领书单领书单缺书单缺书单缺书单缺书单进书通知进书通知进书通知进书通知进书通知进书通知进书通知进书通知保保保保管员管员管员管员1 1销售销售销售销售购书单购书单购书单购书单领书单领书单领书单领书单学学学学生生生生缺书单缺书单缺书单缺书单进书通知进书通知进书通知进书通知2 2采购采购采购采购保保保保管员管员管员管员第第第第 1 1 层层层层第第第第 2 2 层层层层 教材存量表教材存量表教材存量表教材存量表 F1F1F1F1 缺书登记表缺书登记表缺书登记表缺书登记表 F2F2F2F2外部实体外部实体 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 教材销售子系统教材销售子系统教材销售子系统教材销售子系统 无效书单无效书单无效书单无效书单购书单购书单购书单购书单1.31.3登记并开登记并开登记并开登记并开领书单领书单领书单领书单1.21.2开发票开发票开发票开发票1.11.1审查审查审查审查有效性有效性有效性有效性1.41.4登记登记登记登记缺书缺书缺书缺书1.51.5补售补售补售补售教材教材教材教材采采采采购购购购学学学学生生生生学学学学生生生生进书通知进书通知进书通知进书通知有效书单有效书单有效书单有效书单发票发票发票发票领书单领书单领书单领书单暂缺书单暂缺书单暂缺书单暂缺书单1 1销售销售销售销售购书单购书单购书单购书单领书单领书单领书单领书单缺书单缺书单缺书单缺书单进书通知进书通知进书通知进书通知2 2采购采购采购采购进书通知进书通知进书通知进书通知缺书登记表缺书登记表缺书登记表缺书登记表教材存量表教材存量表教材存量表教材存量表学学学学生生生生保保保保管员管员管员管员第第第第 2 2 层层层层补售补售补售补售书单书单书单书单第第第第 3 3 层层层层 教材存量表教材存量表教材存量表教材存量表 F1F1F1F1 缺书登记表缺书登记表缺书登记表缺书登记表 F2F2F2F2 F1书号书号单价单价数量数量 各班用书表各班用书表各班用书表各班用书表 F3F3F3F3 售书登记表售书登记表售书登记表售书登记表 F4F4F4F4外部外部外部外部项项项项 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/21 1销售销售销售销售购书单购书单购书单购书单领书单领书单领书单领书单缺书单缺书单缺书单缺书单进书通知进书通知进书通知进书通知2 2采购采购采购采购进书通知进书通知进书通知进书通知缺书登记表缺书登记表缺书登记表缺书登记表教材存量表教材存量表教材存量表教材存量表学学学学生生生生保保保保管员管员管员管员采购采购采购采购 子系统子系统子系统子系统 第第第第 2 2 层层层层第第第第 3 3 层层层层缺书单缺书单缺书单缺书单2.32.3修改教材库修改教材库修改教材库修改教材库存和待存和待存和待存和待购量购量购量购量销销销销售售售售进书通知进书通知进书通知进书通知进书通知进书通知进书通知进书通知2.12.1按书号汇按书号汇按书号汇按书号汇总缺书总缺书总缺书总缺书2.22.2按出版社统按出版社统按出版社统按出版社统计缺书计缺书计缺书计缺书保保保保管员管员管员管员 教材存量表教材存量表教材存量表教材存量表 F1F1F1F1 待购教材表待购教材表待购教材表待购教材表 F5F5F5F5 教材一览表教材一览表教材一览表教材一览表 F6F6F6F6 缺书登记表缺书登记表缺书登记表缺书登记表 F2F2F2F2 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 . . . . 便于实现便于实现便于实现便于实现. . . . 便于使用便于使用便于使用便于使用 - 采用采用采用采用逐步细化逐步细化逐步细化逐步细化的扩展方法,可避免一的扩展方法,可避免一的扩展方法,可避免一的扩展方法,可避免一 次引入过多的细节,有利于控制问题次引入过多的细节,有利于控制问题次引入过多的细节,有利于控制问题次引入过多的细节,有利于控制问题 的复杂度;的复杂度;的复杂度;的复杂度; - 用一组图代替一张总图,方便用户及用一组图代替一张总图,方便用户及用一组图代替一张总图,方便用户及用一组图代替一张总图,方便用户及 软件开发人员阅读。软件开发人员阅读。软件开发人员阅读。软件开发人员阅读。4 4 4 4、分层、分层、分层、分层 DFD 图的优点图的优点图的优点图的优点 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 . . . . 注意父图和子图的平衡注意父图和子图的平衡注意父图和子图的平衡注意父图和子图的平衡5 5 5 5、画分层、画分层、画分层、画分层 DFD 的指导原则的指导原则的指导原则的指导原则发票发票发票发票1.31.3开领书单开领书单开领书单开领书单领书单领书单领书单领书单( (a) a) 父图父图父图父图 1.3.11.3.1学生学生学生学生领书单领书单领书单领书单1.3.21.3.21.3.31.3.3教材教材教材教材( ( ( (a)a)子图子图子图子图 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 . . . . 区分局部文件和局部外部项区分局部文件和局部外部项区分局部文件和局部外部项区分局部文件和局部外部项 . . . . 掌握分解的速度掌握分解的速度掌握分解的速度掌握分解的速度 一般来说,每一个加工每次可分为一般来说,每一个加工每次可分为一般来说,每一个加工每次可分为一般来说,每一个加工每次可分为 2-42-42-42-4个子加工,最个子加工,最个子加工,最个子加工,最 多不得超过多不得超过多不得超过多不得超过 7 7 7 7 个。个。个。个。. . . . 遵守加工编号规则遵守加工编号规则遵守加工编号规则遵守加工编号规则 顶层加工不编号。第二层的加工编号为顶层加工不编号。第二层的加工编号为顶层加工不编号。第二层的加工编号为顶层加工不编号。第二层的加工编号为1,2,3,1,2,3,1,2,3,1,2,3, , , ,n n n n号。号。号。号。第三层编号为第三层编号为第三层编号为第三层编号为1.1,1.2,1.31.1,1.2,1.31.1,1.2,1.31.1,1.2,1.3n.1,n.2n.1,n.2n.1,n.2n.1,n.2等号,依此类推。等号,依此类推。等号,依此类推。等号,依此类推。 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/21 1销售销售销售销售购书单购书单购书单购书单领书单领书单领书单领书单缺书单缺书单缺书单缺书单进书通知进书通知进书通知进书通知2 2采购采购采购采购进书通知进书通知进书通知进书通知缺书登记表缺书登记表缺书登记表缺书登记表教材存量表教材存量表教材存量表教材存量表学学学学生生生生保保保保管员管员管员管员采购采购采购采购 子系统子系统子系统子系统 第第第第 2 2 层层层层第第第第 3 3 层层层层缺书单缺书单缺书单缺书单2.32.3修改教材库修改教材库修改教材库修改教材库存和待存和待存和待存和待购量购量购量购量销销销销售售售售进书通知进书通知进书通知进书通知进书通知进书通知进书通知进书通知2.12.1按书号汇按书号汇按书号汇按书号汇总缺书总缺书总缺书总缺书2.22.2按出版社统按出版社统按出版社统按出版社统计缺书计缺书计缺书计缺书保保保保管员管员管员管员 教材存量表教材存量表教材存量表教材存量表 F1F1F1F1 待购教材表待购教材表待购教材表待购教材表 F5F5F5F5 教材一览表教材一览表教材一览表教材一览表 F6F6F6F6 缺书登记表缺书登记表缺书登记表缺书登记表 F2F2F2F2局部局部局部局部外部项外部项外部项外部项局部局部局部局部文件文件文件文件 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2练练练练请画出学生成绩管理系统的 DFD 图 习习习习 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2二、数据字典二、数据字典 - - DD(Data Dictionary) 数据字典的任务是数据字典的任务是: : 对于数据流图中出现的所有被对于数据流图中出现的所有被命名的图形元素在字典中作为一个词条加以定义,使得命名的图形元素在字典中作为一个词条加以定义,使得每一个图形元素的名字都有一个确切的解释。每一个图形元素的名字都有一个确切的解释。DD 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/21 1 1 1、数据字典的定义、数据字典的定义、数据字典的定义、数据字典的定义数据流名:数据流名:数据流名:数据流名: 说明:简要介绍作用即它产生的原因和结果。说明:简要介绍作用即它产生的原因和结果。说明:简要介绍作用即它产生的原因和结果。说明:简要介绍作用即它产生的原因和结果。 数据流来源:即该数据流来自何方。数据流来源:即该数据流来自何方。数据流来源:即该数据流来自何方。数据流来源:即该数据流来自何方。 数据流去向:去向何处。数据流去向:去向何处。数据流去向:去向何处。数据流去向:去向何处。 数据流组成:数据结构。数据流组成:数据结构。数据流组成:数据结构。数据流组成:数据结构。 每个数据量流通量:数据量、流通量。每个数据量流通量:数据量、流通量。每个数据量流通量:数据量、流通量。每个数据量流通量:数据量、流通量。(1) (1) (1) (1) 数据流词条的描述数据流词条的描述数据流词条的描述数据流词条的描述 数据流名:数据流名:数据流名:数据流名:发票发票发票发票 说明:用作学生已付书款的依据说明:用作学生已付书款的依据说明:用作学生已付书款的依据说明:用作学生已付书款的依据 数据流来源:来自加工数据流来源:来自加工数据流来源:来自加工数据流来源:来自加工“ “审查并开发票审查并开发票审查并开发票审查并开发票” ” 数据流去向:流向加工数据流去向:流向加工数据流去向:流向加工数据流去向:流向加工“ “开领书单开领书单开领书单开领书单” ”。 数据流组成:学号数据流组成:学号数据流组成:学号数据流组成:学号+ + + +姓名姓名姓名姓名+ + + +书号书号书号书号+ + + +单价总价单价总价单价总价单价总价+ + + +书费合计书费合计书费合计书费合计审查并审查并审查并审查并开发票开发票开发票开发票发票发票发票发票购书单购书单购书单购书单 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2数据元素名数据元素名数据元素名数据元素名: : : : 类型类型类型类型: : : :数字(离散值、连续值),文字(编码类型)数字(离散值、连续值),文字(编码类型)数字(离散值、连续值),文字(编码类型)数字(离散值、连续值),文字(编码类型) 长度长度长度长度: : : : 取值范围取值范围取值范围取值范围: : : : 相关的数据元素及数据结构相关的数据元素及数据结构相关的数据元素及数据结构相关的数据元素及数据结构 (2)(2)(2)(2) 数据元素词条的描述数据元素词条的描述数据元素词条的描述数据元素词条的描述 年年年年 = “1900”.“3000” = “1900”.“3000” 月月月月 = “01”.“12” = “01”.“12” 日日日日 = “01”.“31” = “01”.“31” 摘要摘要摘要摘要 = 1 = 1字母字母字母字母4 4 金额金额金额金额 = “00000000.01”.“999999999.99” = “00000000.01”.“999999999.99” 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2(3) (3) (3) (3) 数据文件词条的描述数据文件词条的描述数据文件词条的描述数据文件词条的描述 数据文件名:数据文件名:数据文件名:数据文件名: 简述:存放的是什么数据。简述:存放的是什么数据。简述:存放的是什么数据。简述:存放的是什么数据。 输入数据输入数据输入数据输入数据: : : : 输出数据输出数据输出数据输出数据: : : : 数据文件组成数据文件组成数据文件组成数据文件组成: : : :数据结构。数据结构。数据结构。数据结构。 存储方式存储方式存储方式存储方式: : : :顺序,直接,关键码。顺序,直接,关键码。顺序,直接,关键码。顺序,直接,关键码。 存取频率存取频率存取频率存取频率: : : : 审查并审查并审查并审查并开发票开发票开发票开发票学学学学生生生生发票发票发票发票购书单购书单购书单购书单 各班学生用书表各班学生用书表各班学生用书表各班学生用书表教材存量表教材存量表教材存量表教材存量表 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 加工名加工名加工名加工名: : : : 加工编号加工编号加工编号加工编号: : : :反映该加工的层次反映该加工的层次反映该加工的层次反映该加工的层次 简要描述简要描述简要描述简要描述: : : :加工逻辑及功能简述加工逻辑及功能简述加工逻辑及功能简述加工逻辑及功能简述 输入数据流输入数据流输入数据流输入数据流: : : : 取值范围取值范围取值范围取值范围: : : : 相关的数据元素及数据结构相关的数据元素及数据结构相关的数据元素及数据结构相关的数据元素及数据结构 (4)(4)(4)(4) 加工逻辑词条的描述加工逻辑词条的描述加工逻辑词条的描述加工逻辑词条的描述 1.31.3审查并审查并审查并审查并开发票开发票开发票开发票学学学学生生生生发票发票发票发票购书单购书单购书单购书单 各班学生用书表各班学生用书表各班学生用书表各班学生用书表教材存量表教材存量表教材存量表教材存量表 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 名称:外部实体名名称:外部实体名名称:外部实体名名称:外部实体名 简要描述简要描述简要描述简要描述: : : :什么外部实体什么外部实体什么外部实体什么外部实体 有关数据流有关数据流有关数据流有关数据流: : : : 数目数目数目数目: : : :(5) (5) (5) (5) 外部实体词条描述外部实体词条描述外部实体词条描述外部实体词条描述 1 1销售销售销售销售购书单购书单购书单购书单领书单领书单领书单领书单缺书单缺书单缺书单缺书单进书通知进书通知进书通知进书通知2 2采购采购采购采购进书通知进书通知进书通知进书通知缺书登记表缺书登记表缺书登记表缺书登记表教材存量表教材存量表教材存量表教材存量表学学学学生生生生保保保保管员管员管员管员 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/22 2 2 2、数据字典定义符号、数据字典定义符号、数据字典定义符号、数据字典定义符号 符号符号符号符号含含含含 义义义义例例例例 子子子子 = =被定义为被定义为被定义为被定义为+ +与与与与 x=a+bx=a+b,则表示则表示则表示则表示 x x 由由由由 a a 和和和和 b b 组成组成组成组成x=a,bx=a,b,则表示则表示则表示则表示 x x 由由由由 a a 或由或由或由或由 b b 组成组成组成组成 或或或或重复重复重复重复x=ax=a,则表示则表示则表示则表示 x x 由由由由 0 0个个个个或多个或多个或多个或多个 a a 组成组成组成组成( )( )可选可选可选可选 表示在两个表示在两个表示在两个表示在两个 * * 之间的内容为词条的注释之间的内容为词条的注释之间的内容为词条的注释之间的内容为词条的注释mm n n重复重复重复重复x=3a8x=3a8,则表示则表示则表示则表示x x中至少出现中至少出现中至少出现中至少出现3 3 3 3次次次次a ,a ,最多出现最多出现最多出现最多出现8 8 8 8次次次次*注释符注释符注释符注释符x=(a)x=(a),则表示则表示则表示则表示 a a 在在在在 x x 中出现中出现中出现中出现, , 也可不出现也可不出现也可不出现也可不出现 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2储储储储户户户户检验检验检验检验付款付款付款付款登录登录登录登录存折存折存折存折帐卡帐卡帐卡帐卡取款取款取款取款信息信息信息信息- - 办理取款手续的办理取款手续的办理取款手续的办理取款手续的 DFD DFD 图图图图检验不合格检验不合格检验不合格检验不合格现款现款现款现款付款信息付款信息付款信息付款信息取款单取款单取款单取款单存折存折存折存折练练习习请为下列给出的请为下列给出的请为下列给出的请为下列给出的 DFDDFD 图编写图编写图编写图编写 DDDD 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2日期日期日期日期年月日年月日年月日年月日摘要摘要摘要摘要支出支出支出支出存入存入存入存入余额余额余额余额操作操作操作操作复核复核复核复核户名户名户名户名: :储蓄网点名称储蓄网点名称储蓄网点名称储蓄网点名称: :帐号帐号帐号帐号: :开户日开户日开户日开户日: :性质性质性质性质: :印密印密印密印密: :- - 存折格式存折格式存折格式存折格式 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2日期日期日期日期 ( (年月日年月日年月日年月日) )摘要摘要摘要摘要支出支出支出支出存入存入存入存入余额余额余额余额操作操作操作操作复核复核复核复核户名户名户名户名: :储蓄网点名称储蓄网点名称储蓄网点名称储蓄网点名称: :帐号帐号帐号帐号: :开户日开户日开户日开户日: :性质性质性质性质: :印密印密印密印密: :存折存折存折存折 = = 户名户名户名户名+ +所号所号所号所号+ +帐号帐号帐号帐号+ +开户日开户日开户日开户日+ +性质性质性质性质+(+(印密印密印密印密)+1)+1存取行存取行存取行存取行2020户名户名户名户名 = 2 = 2字母字母字母字母2424所号所号所号所号 = “001”.“999” = “001”.“999”帐号帐号帐号帐号 = “00000001”.“99999999” = “00000001”.“99999999”开户日开户日开户日开户日 = = 年年年年+ +月月月月+ +日日日日性质性质性质性质 = “1”.“6” = “1”.“6”印密印密印密印密 = “0” = “0”存取行存取行存取行存取行 = = 日期日期日期日期+ +(摘要)(摘要)(摘要)(摘要)+ +支出支出支出支出+ +存入存入存入存入+ +余额余额余额余额+ +操作操作操作操作+ +复核复核复核复核日期日期日期日期 = =年年年年+ +月月月月+ +日日日日年年年年 = “1900”.“3000” = “1900”.“3000” 月月月月 = “01”.“12” = “01”.“12” 日日日日 = “01”.“31” = “01”.“31”摘要摘要摘要摘要 = 1 = 1字母字母字母字母44支出支出支出支出 = = 金额金额金额金额金额金额金额金额 = “00000000.01”.“999999999.99” = “00000000.01”.“999999999.99” 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/23 3 3 3、数据字典的实现、数据字典的实现、数据字典的实现、数据字典的实现数据字典的实现数据字典的实现数据字典的实现数据字典的实现 人工方法人工方法人工方法人工方法 自动方法自动方法自动方法自动方法将每一字典中的词条将每一字典中的词条将每一字典中的词条将每一字典中的词条写在一张卡片上,由写在一张卡片上,由写在一张卡片上,由写在一张卡片上,由专人管理和维护专人管理和维护专人管理和维护专人管理和维护利用利用利用利用 “ “字典管理程序字典管理程序字典管理程序字典管理程序” ”在计算机中对字典进在计算机中对字典进在计算机中对字典进在计算机中对字典进行管理和维护。行管理和维护。行管理和维护。行管理和维护。 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2三、加工说明三、加工说明三、加工说明三、加工说明 - - - -(Process SpecificationProcess Specification) 加工说明是加工说明是加工说明是加工说明是: : : :对对对对 DFD DFD DFD DFD 中每个加工给予说明。它是从中每个加工给予说明。它是从中每个加工给予说明。它是从中每个加工给予说明。它是从系统功能的角度对系统功能的角度对系统功能的角度对系统功能的角度对 DFD DFD DFD DFD 作出了注解,与作出了注解,与作出了注解,与作出了注解,与 DD DD DD DD 一样是一样是一样是一样是DFD DFD DFD DFD 必不可缺少的辅助资料。必不可缺少的辅助资料。必不可缺少的辅助资料。必不可缺少的辅助资料。PSPS 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2加工说明组成加工说明组成加工说明组成加工说明组成输入输入输入输入数据数据数据数据加工加工加工加工逻辑逻辑逻辑逻辑输出输出输出输出数据数据数据数据加工说明加工说明加工说明加工说明描述工具描述工具描述工具描述工具结构化结构化结构化结构化语言语言语言语言判定判定判定判定表表表表判定判定判定判定树树树树 描述把输入数据流变 换为输出数据流的加工过 程,是加工说明的主体。 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 - - - -学生购买教材的学生购买教材的学生购买教材的学生购买教材的 逻辑模型逻辑模型逻辑模型逻辑模型 审查并审查并审查并审查并开发票开发票开发票开发票学学学学生生生生发票发票发票发票购书单购书单购书单购书单 各班学生用书表各班学生用书表各班学生用书表各班学生用书表教材存量表教材存量表教材存量表教材存量表无效书单无效书单无效书单无效书单开领开领开领开领书单书单书单书单领书单领书单领书单领书单学学学学生生生生 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2自然语言自然语言+ +结构化形式结构化形式结构化语言结构化语言选选择择结结构构如果如果 If 如果如果 则则 否则否则 情况情况1 情况情况n If then Otherwise case 1 case n 循循环环结结构构对对 , 重复以下重复以下 直至直至 For each , Repeat the following: Until 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 例例1: 1: 请写出下列在请写出下列在 DFD DFD 图中给出的图中给出的 “统计晚婚职工统计晚婚职工” 的加工说明的加工说明 Count Late-MarriageEmployeesLate-Marriage -Count Request职工名册文件职工名册文件职工名册文件职工名册文件Late-Marriage-List=List-Count+Name-ListName-List=Name 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 Count Late-Marriage Employees Policy For each Late-Marriage-Count request: Repeat the following; Access the staffs-Record. If status is single, If sex is maie and Age is over 30 or sex is female and Age is over 26 Write Name to Name-List. Increment List-Count. Until there are no more Staff-Records. Combine List-Count and Name-List. Write Up Late-Marriage-List. 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 - - - -学生购买教材的学生购买教材的学生购买教材的学生购买教材的 系统逻辑模型系统逻辑模型系统逻辑模型系统逻辑模型 审查并审查并审查并审查并开发票开发票开发票开发票学学学学生生生生发票发票发票发票购书单购书单购书单购书单 各班学生用书表各班学生用书表各班学生用书表各班学生用书表教材存量表教材存量表教材存量表教材存量表无效书单无效书单无效书单无效书单开领开领开领开领书单书单书单书单领书单领书单领书单领书单学学学学生生生生 例例2: 2: 请为下列请为下列DFDDFD中的中的“审查并开发票审查并开发票”加工点写加工点写 加工说明加工说明 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2把学生学号和姓名写到发票上把学生学号和姓名写到发票上按购书单上学生的年级和系、专业与班号按购书单上学生的年级和系、专业与班号 检索检索“各班学生用书表各班学生用书表”文件,获得该生当年的书单文件,获得该生当年的书单 对对 购书单上的每一书号购书单上的每一书号 如果如果 书单上无此书号书单上无此书号 则则 把书号写到出错通知单上把书号写到出错通知单上 否则否则 按书号检索按书号检索 “教材存量表教材存量表”文件,文件, 从而获得该书的单价与库存量从而获得该书的单价与库存量 如果如果 库存量库存量 购书单的数量购书单的数量 则则 将书号写到出错通知单上将书号写到出错通知单上 否则否则 将将书号、单价、数量、总价等项写入到发票上;书号、单价、数量、总价等项写入到发票上; 更新存书量,并写回更新存书量,并写回“教材存量表教材存量表” 文件;文件; 累计书费合计累计书费合计 把把书费合计写到发票上书费合计写到发票上对对每张购书单每张购书单 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2分房分房加工加工婚龄婚龄中级职称中级职称晚婚晚婚正常分房正常分房优先分房优先分房不分房不分房分房加工逻辑分房加工逻辑判断表判断表采用表格的形式来表达采用表格的形式来表达具复杂判断的加工逻辑具复杂判断的加工逻辑1 1、一般职工婚后、一般职工婚后5 5年可参加分房年可参加分房 2 2、中级以上职称的职工婚后、中级以上职称的职工婚后3 3年年 可参加分房可参加分房 3 3、符合正常分房条件的职工,、符合正常分房条件的职工, 若再符合晚婚条件可优先分房若再符合晚婚条件可优先分房 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2分房分房加工加工婚龄婚龄中级职称中级职称晚婚晚婚正常分房正常分房优先分房优先分房不分房不分房123456说说 明明条条件件婚婚 龄龄5年年3-5年年 5年年3-5 年年$500$500=$50060天天60天天E(P1)+E(P2)设: C(x) 为复杂程度函数 E(x) 为决定解决问题x x所需的工作量(时间)函数 C(P1)C(P2) E(P1)E(P2)C(P1+P2)C(P1)+C(P2) Magical Number Seven,Plus or Minus Two,Some Limits on Our Capacity for Processing Information The Psychological Review,1956 G.A. Miller奇妙的数字 7+2,人类信息处理能力的限度 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2C(P1+P2)C(P1)+C(P2)E(P1+P2)E(P1)+E(P2)软件工程基本定理最小成本区M模块成本接口成本总成本软件开发工作量 模块数 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 每个模块的实现细节对于其他模块来说是隐藏的。 也就是说,模块中所包含的信息是不允许其他不需要 这些信息的模块使用的。 2、信息隐藏(information hiding)栈stack置空栈 makenull进栈 push退栈 pop 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/23、模块的独立性(module independence) 模块的独立性是指软件系统中每个模块只模块的独立性是指软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统涉及软件要求的具体的子功能,而和软件系统中其他模块的接口是简单的。中其他模块的接口是简单的。耦合耦合耦合耦合 模块之间的模块之间的模块之间的模块之间的相对独立性相对独立性相对独立性相对独立性的度量。的度量。的度量。的度量。 内聚内聚内聚内聚 模块功能强模块功能强模块功能强模块功能强度的度量。度的度量。度的度量。度的度量。 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2(1)、内聚(Cohesion)低功能内聚信息内聚通信内聚过程内聚时间内聚逻辑内聚巧合性内聚 高强弱 内聚性模块独立性 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 偶然性内聚偶然性内聚 M STORE RECN() TO N READ MASTRE FILE ADD 1 TO X 。 。 ABC 当模块内各部之间没有联系,或者即使有联系,这种联系也很松散。则称这种模块为巧合内聚模块。 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 逻辑性内聚逻辑性内聚 这种模块是把几种功能组合在一起,每次调用时,则由传递给模块的判定参数来确定该模块应执行哪一种功能。 调用模块判定读一个记录写一个记录被调用模块 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2SXYZWABCDSXYZW ABCD 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 信息性内聚信息性内聚 这种模块能完成多个功能,各个功能都在同一数据结构上操作,每一项功能有一个唯一的入口点。 符符 号号 表表 查找登录删除修改 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 功能性内聚功能性内聚 如果一个模块内所有成分都完成一个功能则称这样的模块为功能模块。 主控模块录入查询打印低功能内聚信息内聚通信内聚过程内聚时间内聚逻辑内聚巧合性内聚 高强弱 内聚性模块独立性 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2(2)、耦合 耦合性是程序结构中各个模块之间相互关联的度量它取决于各个模块之间接口的复杂程度、调用模块的方式以及那些信息通过接口。低非直接非直接耦合耦合数据数据耦合耦合标记标记耦合耦合控制耦合外部耦合公共耦合内容耦合 高弱 强耦合性模块独立性 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 公共耦合公共耦合 允许一组模块访问同一全局性的数据结构。全局全局数据区数据区ABCDEFB、C、E 为公共耦合 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 控制耦合控制耦合 如果一个模块通过传送开关、标志、名字 等控制信息,明显地控制选择另一模块的功能 就是控制耦合。A 模块flagf1Bf2fn 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 以上给出了 7种耦合类型,这只是从耦合 的机制上所做的分类,按耦合的强弱程度的排 列只是相对的关系。但它给设计人员在设计程 序结构时提供了一决策准则。实际上,开始时 两个模块之间的耦合不只是一种类型,而是多 种类型的混合。这就要求设计人员按照实际情 况进行分析、比较和分析,逐步加以改进,以 提高模块的独立性。 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/24.5 结构化设计方法结构化设计方法( (SD- Structured Design) ) 结构化设计方法是基于模块化、自顶向模块化、自顶向下细化、结构化程序设计下细化、结构化程序设计等程序设计技术基础发展起来的。 它所提供的方法和原则,主要是用来指导软件的概要设计。它还提供了一种 “结构图” 的描述工具,是专门用来描述软件的总体结构的。 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 结构化设计属于面向数据流 的设计方法。 在软件的需求分析阶段,数据流是软件开发人员考虑问题的出发点和基础。数据流从系统的输入端向输出端,则要经历一系列的变换或处理。用来表现这个过程的数据流(DFD),实际上就是软件系统的逻辑模型。 面向数据流的设计要解决的任务,就是在上述需求分析的基础上,将DFD图 映射(Mapping)- 软件系统的结构。 换句话说,这类设计方法,允许把用 DFD图表示的系统逻辑模型,很方便地转换成对于软件结构的初始设计描述。 结构化设计方法中,软件的结构一律用 SC SC 图来描述。 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2结构化设计的目的 使程序的结构尽可能反映要解决的问题的结构结构化设计的任务 完成目标系统的系统结构图(SCSC) 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2目标系统的DFDSC 图 - Structured Chart 该图常用来表示系统的软件结构。利用它可以清楚地表达软件结构中模块间的层次调用关系和模块之间的联系。 SD目标系统的SC 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2ASC 图中的主要内容图中的主要内容1、模块-在SC图中用矩形框表示,并用名字来标记它- 模块调用关系2、模块的调用关系和接口B调用模块调用模块A(查询学生)B(查找学生记录)数据信号控制信号学号查找成功信号- 模块间接口的表示 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2产生最佳解产生最佳解得到好的输入得到好的输入计算最佳解计算最佳解输出结果输出结果读输入读输入编辑输入编辑输入好输入好输入解解原始输入原始输入编辑结果结果格式化结果格式化显示结果显示结果解格式化的解SC 图的一般格式图的一般格式 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/21、在系统结构图中的模块一、典型的系统一、典型的系统结构形式结构形式原子模块: 在系统结构图中通常是指不能再分割的底层模块 完全因子分解系统 如果一个软件系统,它的全部实际加工 (即数据计算或处理)都是由底层的原子模块来 完成,而其它所有非原子模块仅仅执行控制或 协调功能。 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2传入模块AA传入模块 从下属模块取得数据,进行某些处理,再将其结果 传给上级模块。在此,将它传送的数据流称为逻辑输入 数据流。 在系统结构图中有四种类型的模块:逻辑输入数据流成绩成绩成绩成绩处理处理处理处理成绩录入成绩录入 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2传出模块 从上级模块获得数据,进行某些处理,再将其结果 传给下属模块。在此,将它传送的数据流称为逻辑输出 数据流。 传出模块DD逻辑输出数据流成绩成绩成绩成绩处理处理处理处理成绩输出成绩输出 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2变换模块 也叫加工模块。它是从上级模块获得数据,进行 特定的处理,将其转换为其他形式,再传回上级模块 它所加工的数据流叫做变换数据流。 变换模块CB变换数据流审查并审查并审查并审查并开发票开发票开发票开发票发票发票发票发票购书单购书单购书单购书单 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2协调模块 对所有下属模块进行协调和管理的模块。在一个 好的系统结构图中,协调模块应在较高层出现。协调模块YXYX 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/22、典型的系统结构形式之一(变换型系统结构图)取得数据iaeo变换数据给出数据传入部分变换中心传出部分- 具有变换型数据流图 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2主模块C变换成D取得C给出D取得BB变换成CD变换成E给出E取得AA变换成BAABBBCCDCDED取得数据CD变换数据给出数据协调模块变换模块传出模块- 具有变换型系统结构图DFD-SC 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/23、典型的系统结构形式之二(事务型系统结构图)“事务” 引起、触发或启动某一动作或一串动作的任何数据、控制信号、事件或状态的变化。 由它接受一项事务,根据事务处理的特点和性质 选择分配一个适当的处理单元,然后给出结果。 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2输入- 事务型 数据流图1 1ABC3 3DEFGH2 24 45 56 67 7中心变换输出逻辑输入物理输入逻辑输出物理输出 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/21 1ABC3 3DEFGH2 24 45 56 67 7MT3逻辑输入逻辑输出CDCD,E,F4 45 56 6- 事务型 数据流图(DFD)- 事务型 系统结构图(SC) 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2事务中心输入已分析的作业内部表示的作业结果- 事务型系统结构(层次)图输出结果调度作业信息读入作业分析作业事务1事务2事务3事务4操作2操作3 操作4 操作5操作6操作1细节2细节3 细节4 细节5细节6细节1细节7结果 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2-简化的事务型系统结构图事务中心得到作业 作业结果输出结果分析 调度事务1事务2事务3 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2二、从二、从 DFD 图导出图导出 SC图的步骤图的步骤开 始细化修改SRS中的DFD图判断DFD图的结构类型 是变换型吗?F事务分析变换分析完善SC 图T对最终的SC 图进行评审结束 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/21、变换分析 -是将具有变换型的DFD图导出SC图变换变换变换变换分析分析分析分析 从物理输入、物理输出及从物理输入、物理输出及从物理输入、物理输出及从物理输入、物理输出及变换中心进行由顶向下的分解变换中心进行由顶向下的分解变换中心进行由顶向下的分解变换中心进行由顶向下的分解得出各个分支的所有组成模块得出各个分支的所有组成模块得出各个分支的所有组成模块得出各个分支的所有组成模块 在数据流图上区分系统的在数据流图上区分系统的在数据流图上区分系统的在数据流图上区分系统的逻辑输入、逻辑输出和变换中逻辑输入、逻辑输出和变换中逻辑输入、逻辑输出和变换中逻辑输入、逻辑输出和变换中心部分,并标出它们的分界。心部分,并标出它们的分界。心部分,并标出它们的分界。心部分,并标出它们的分界。 进行一级分解,设计系统进行一级分解,设计系统进行一级分解,设计系统进行一级分解,设计系统模块结构的顶层和第一层。模块结构的顶层和第一层。模块结构的顶层和第一层。模块结构的顶层和第一层。 进行二级分解,设计中、进行二级分解,设计中、进行二级分解,设计中、进行二级分解,设计中、下层模块。下层模块。下层模块。下层模块。 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2(1)(1)(1)(1)在 DFDDFD 图上标出逻辑输入、逻辑输出和变换中心的分界A Ae eB BaC CbD Dc cE EdP PQQR Rwwu uv vwwu uvrp变换中心变换中心c,e 逻辑输入w,u 逻辑输出- 具有变换型数据流图 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2(2) (2) (2) (2) 完成第第一级分解A Aabc cP Pwwu uvrpB BC CD DdeE EQQR RWWU UV VMcMAMTMEC,eC,eU,wU,w变换中心变换中心顶层第一层第一级分解后的 SC 图协调模块YXYX 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2A Aabc cP Pwwu uvrpB BC CD DdeE EQQR RWWU UV V第一级分解后的 SC 图(另一种画法)McMA1ME1C eU MA2QPRME2e c,p pr r w,uw 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2(3) (3) (3) (3) 完成第第二级分解A Aabc cP Pwwu uvrpB BC CD DdeE EQQR RWWU UV VMA变换中心变换中心对逻辑输入的分解CEBADabdeccbaABCMAEDde 逻辑输入模块的调用与执行过程 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2MACEBADabdecMAGet CGet EBtoCAtoBDtoEaecReadDGet BRead Ac,eabbbcde 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2A Aabc cP Pwwu uvrpB BC CD DdeE EQQR RWWU UV VME变换中心变换中心对输出的分解WUVvuwMTQPR eC,prU,w对变换中心加工的分解 prw,u 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2MACBAEDMTQPR从变换分析导出的初始 SC 图MEWUVMCc, eW,uW,uC,e(4) (4) (4) (4) 获得完整的 SCSC 图 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2运用变换分析方法建立系统的SC时需注意以下几点: 模块设计的次序时,应遵循对一个模块模块设计的次序时,应遵循对一个模块模块设计的次序时,应遵循对一个模块模块设计的次序时,应遵循对一个模块的全部直接下属模块都设计完成后,再转向的全部直接下属模块都设计完成后,再转向的全部直接下属模块都设计完成后,再转向的全部直接下属模块都设计完成后,再转向另一个模块的下层模块的设计。另一个模块的下层模块的设计。另一个模块的下层模块的设计。另一个模块的下层模块的设计。 在设计下层模块时,应考虑模块的耦合在设计下层模块时,应考虑模块的耦合在设计下层模块时,应考虑模块的耦合在设计下层模块时,应考虑模块的耦合和内聚问题,以提高设计初始和内聚问题,以提高设计初始和内聚问题,以提高设计初始和内聚问题,以提高设计初始SCSC图的质量。图的质量。图的质量。图的质量。 注意注意注意注意“ “黑盒黑盒黑盒黑盒” ”技术的使用。技术的使用。技术的使用。技术的使用。 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2主模块主模块ABCA1A2A3A11A12A13 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2低功能内聚信息内聚通信内聚过程内聚时间内聚逻辑内聚巧合性内聚 高强弱 内聚性模块独立性低非直接耦合数据耦合标记耦合控制耦合外部耦合公共耦合内容耦合 高弱 强耦合性模块独立性 具有高内聚低耦合的模块才是模块独立性比较强的模块。 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 具有高内聚低耦合的模块才是模块独立性比较强的模块。模块A模块D模块C模块B非直接耦合通过参数表通过参数表传递传递数据数据( (数据耦合数据耦合) )通过参数表通过参数表传递传递数据结构数据结构( (数据耦合数据耦合) ) 具有松散型 的耦合类型 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2请将上列给出的具有变换型的DFD图导出它的SC图A A1 1A A2 2a1a2P P B B b1C C1 1c1C C2 2c1p1P2 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/22、事务分析 -是将具有事务型的DFD图导出SC图I IA AL LMMN NOOB BC CD DE EF FGGH H事务中心事务源 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2I IA AL LMMN NOOB BC CD DE EF FGGH H主模块给出H取得ALMNA GHBECF D 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2发送部分请将下列给出的采购子系统请将下列给出的采购子系统请将下列给出的采购子系统请将下列给出的采购子系统 DFDDFD 图转换成图转换成图转换成图转换成SCSC图图图图2.12.12.22.22.32.3书库保管员F2F1F5F6F7加工名称加工名称加工名称加工名称: : : :2.1 2.1 按书号汇总缺书按书号汇总缺书按书号汇总缺书按书号汇总缺书2.2 2.2 按出版社汇总缺书按出版社汇总缺书按出版社汇总缺书按出版社汇总缺书2.3 2.3 修改教材库存和待修改教材库存和待修改教材库存和待修改教材库存和待 购量购量购量购量文件名称文件名称文件名称文件名称: : : :F1F1 教材存量表教材存量表教材存量表教材存量表F2F2 缺书登记表缺书登记表缺书登记表缺书登记表F5F5 待购教材表待购教材表待购教材表待购教材表F6F6 教材一览表教材一览表教材一览表教材一览表F7F7 进书登记表进书登记表进书登记表进书登记表 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2发送部分采采采采 购购购购按书号按书号按书号按书号汇总汇总汇总汇总缺书缺书缺书缺书登记表登记表登记表登记表统计缺书统计缺书统计缺书统计缺书登记进书登记进书登记进书登记进书按出版社按出版社按出版社按出版社汇总汇总汇总汇总打印打印打印打印缺书单缺书单缺书单缺书单修改修改修改修改教材存量表教材存量表教材存量表教材存量表修改修改修改修改教材待购量教材待购量教材待购量教材待购量统计统计统计统计命令命令命令命令登记登记登记登记命令命令命令命令待购待购待购待购教材表教材表教材表教材表暂缺暂缺暂缺暂缺书单书单书单书单暂缺暂缺暂缺暂缺书单书单书单书单进书进书进书进书通知通知通知通知进书进书进书进书通知通知通知通知- 采购子系统的 SC 图 -缺书登记表缺书登记表缺书登记表缺书登记表=班号班号班号班号+ + + +姓名姓名姓名姓名+ + + +书号书号书号书号+ + + +数量数量数量数量 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2三、软件模块结构的改进三、软件模块结构的改进一、模块功能的完善化执行指定的功能部分执行指定的功能部分执行指定的功能部分执行指定的功能部分出错处理的部分。出错处理的部分。出错处理的部分。出错处理的部分。 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 二、消除重复功能,改善软件结构。完全相似完全相似完全相似完全相似局部相似局部相似局部相似局部相似 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2X XY YR1R1R2R2 物理输入相似部分X XY YR1 R1 R2R2R RX+R1 X+R1 Y+R2Y+R2R R相似模块的各种合并方案的示意图 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 三、模块的作用范围应在控制范围之内。作用范围作用范围作用范围作用范围: : : :是一个与条件判定是一个与条件判定是一个与条件判定是一个与条件判定 相关联的所有模块。相关联的所有模块。相关联的所有模块。相关联的所有模块。控制范围控制范围控制范围控制范围: : : :包括模块本身及其包括模块本身及其包括模块本身及其包括模块本身及其所有的从属模块所有的从属模块所有的从属模块所有的从属模块( ( ( (即供它调用即供它调用即供它调用即供它调用的模块的模块的模块的模块) ) ) )。 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2模块的模块的模块的模块的控制范围控制范围控制范围控制范围: : : :包括模块本身及其所有的从包括模块本身及其所有的从包括模块本身及其所有的从包括模块本身及其所有的从 属模块属模块属模块属模块( ( ( (即供它调用的模块即供它调用的模块即供它调用的模块即供它调用的模块) ) ) )。A AB BD DC CE EF FGG关于模块的关于模块的关于模块的关于模块的控制范围示意图控制范围示意图控制范围示意图控制范围示意图 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 一个模块的作用范围,是指受这个模块中的判定所影响的模块 。 关于模块的作用范围/控制范围的关系示意图 TopTopA AB BC CD DE EGGG G D DB BC C控制控制控制控制耦合耦合耦合耦合 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2TopTopC CD DE EB2B2B BD DG G C C 理想的情况,应该使判定的作用范围和判定所在模块的控制范围尽可能地吻合(即应使模块的作用范围尽可能地在控制范围之内)。符合作用范围符合作用范围符合作用范围符合作用范围/ / / /控制范围的理想判定位置控制范围的理想判定位置控制范围的理想判定位置控制范围的理想判定位置 D DC CGGB BA A对于一个理想 SC图中的模块设计, 所有受到一个判定影响的模块应该都从属该判定所在的模块,最好位于作出判定的那个模块本身及它的直接下属模块。 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2计算实发工资取得工资数据计时计时工人实发工资计薪计薪工人实发工资编外编外人员实发工资计时制工资额税收扣款薪金制工资额常规扣款编外人员 工资编外人员税款编外人员扣款 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 四、尽可能地减少高扇出结构,随着深度增大扇入。扇入:指模块的上级模块数。 (即共有多少个模块需要 调用这个模块)扇出:指模块调用其下属模块 数目。调用的下属模块数应控制在小于3-4个模块。MMMM 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2P PPP1P2QQQ1Q2Q3Q 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 五、模块的大小要适中。50-100 模块的大小,可以用模块中所含语句的数量的多少来衡量。 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 六、应设计出功能可预测的模块,但要避免过分受限制的模块。 A A 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2发送部分ABABA AB BBCBCT3T3T2T2T1T1CDCDDEDEEHEHFJFJHKHKKLKLLMLMB1B1B2B2B3B3C1C1C2C2C3C3D DE EF FGGH HJ JK KL LMM请将下列给出的请将下列给出的请将下列给出的请将下列给出的 DFDDFD 图转换成图转换成图转换成图转换成SCSC图图图图 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2发送部分请完成下列描述的DFD图,导出它的SC图 美国某大学共有美国某大学共有200200名教师,校方与工会刚刚签定一名教师,校方与工会刚刚签定一 项协议按照协议,所有年工资项协议按照协议,所有年工资=$26,000=$26,000的教师工资将保的教师工资将保 持不变,年工资持不变,年工资$26,000100i 100i=i+1 F F T T循环体 - 循环流程符号的使用 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 2、判断有一个入口,但也允许有多个可选出口A:BA:B A=B ABX=?X=? x=1 x=2 x=3 x=4X=?X=? =1 =2 =3 =4 =5 - 多出口判断流程符号的使用 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 请利用程序流程图描述下列问题的程序结构 某汽车修配厂,有一个存有汽车零件的仓库,其中存有若干种零件,请编写一个查询程序,用于查询该库中某零件的库存量为多少。 设该模块为 查询模块。请设计该模块的 程序结构。具体要求: 1、应具有重复查询功能; 2、应具有数据检测功能; 3、请利用程序流程图描述该模块的算法。 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 顺序型二、N-SN-S 图A B 选择型- Nassi and Shneideman BpFTA ApFT p=1=2=n A1 A2 An do while(p) S do until (p) S 当型循环型 直到型循环型 多分支选择型 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2零件号100011000210003100041000510006库存量100012508866920203450建立零件库 (s数组), i=0 输入零件号 x do while(x!=s0i)i+i+x=s0i) Y N s0i输出 s1i 输入错误! 继续查询? Y N 跳出循环 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2三、PADPAD 图 直到型循环型A BAB p pA p pWhile P SUntil P S 当型循环型 顺序型 选择型A1 p pA2An =1=1 =2=2 =n=n 多分支选择型循环型- Problem Analysis Diagram 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2s17s22=0while num(1-1000) 输入 age ageage =17=17 s17+ s18+ =18=18 s19+ =19=19 s20+ =20=20 s21+ =21=21 s22+ =22=22while i(17-22) 输出 sibeginend 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 请为学生成绩管理系统中的学生成绩统计模块设计程序结构。 要求: 1、统计各专业、各班级的高等数学平均分; 2、并将统计结果输出; 3、按平均成绩以班级为单位由高到低排序; 4、请利用PAD图描述该模块的算法。 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2四、PDLPDL- Program Ddesign LanguagePDL PDL 是一种用于描述功能模块的算法设计和加工细节的语言。称为设计程序用语言。它是一种伪代码(Pseudo code) PDLPDL-关键词+自然语言 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2(1)、数据说明:格式: TYPE AS 其功能是定义数据的类型和作用域说明: 1. 变量名:是一个模块内部使用的变量或模块间共用 的全局变量名。 2. 限定词1 :标明数据类型 3. 限定词2 :标明该变量的作用域 TYPE number AS STRING LENGTH (12) 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2(2)、程序块: PDL的过程成分是由块结构构成的,而块将作为一个单个的实体来执行。 BEGIN END 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2(3)、子程序结构:把 PDL 中的过程称为子程序。 PROCEDURE INTERFACE END 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2(4)、基本控制结构: IF THEN ; ELSE ; ENDIF - 选择型结构 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 DO WHILE ; ENDDO REPEAT UNTIL ; ENDREP - 重复型结构 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 DO LOOP ; EXIT WHEN ENDLOOP DO FOR ; ENDFOR - 重复型结构 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 - 多路选择结构 CASE OF ; WHEN SELECT ; WHEN SELECT ; DEFAULT: 缺省或错误case: ; ENDCASE 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 READ/WRITE TO - 输入/输出结构 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 Enter a vector Set Maximum to the value of the first element in the vector DO for each second one to the last IF value of THEN element is greater than the Maximum value Set Maximum to value of the element ENDDO Print the Maximum valueInput array AMax=A(1)DO for I=2 to N IF MaxA(I) Set Max=A(I) ENDIFENDDOPrint Max 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 设某模块的功能是:读入任意长的设某模块的功能是:读入任意长的 一段英文课文,将其分解为单字。然后一段英文课文,将其分解为单字。然后 输出一个单词表,并指出每个单词在课输出一个单词表,并指出每个单词在课 文中所出现的次数。文中所出现的次数。 请按下列给出的文字要求,用 PDL 描述其该模块的算法 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 execute process a execute process a REPEAT UNTIL condition X8 REPEAT UNTIL condition X8 execute process b execute process b IF condition X1 IF condition X1 THEN BEGIN THEN BEGIN execute process f execute process f IF condition X6 IF condition X6 THEN REPEAT UNTIL condition X7 THEN REPEAT UNTIL condition X7 execute process i execute process i ENDREP ENDREP ELSE BEGIN ELSE BEGIN execute process g execute process g execute process h execute process h END END ENDIF ENDIF END END 请将下列的 PDL 表示的某模块的过程性描述,改为用:1、N-S 图 2、PAD 图表示 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 ELSE CASE OF Xi ELSE CASE OF Xi WHEN condition X2 SELECT WHEN condition X2 SELECT DO WHILE condition X5 DO WHILE condition X5 execute process C execute process C ENDDO ENDDO WHEN condition X3 SELECT process d WHEN condition X3 SELECT process d WHEN condition X4 SELECT process e WHEN condition X4 SELECT process e ENDCASE ENDCASE ENDIF ENDIF ENDREP ENDREP execute process j execute process jEND END 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2第六章第六章 程序编码程序编码 编码的目的: : 是使用选定的程序设计语言,把模块的过程性描述翻译为用该语言书写的源程序(源代码)模块的过程性描述 (不可执行的) 源程序(可执行的)编码6.1 编码的目的 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2清晰性效率开发时间程序输出内存数语句数程序可读性最佳输出可读性最佳占内存最小语句数最少开发时间最短1-21-245321433351243521442-352-31编码要求结果 名次评判 项目Winberg 的程序实验结果 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 结构化程序设计是一种设计程序的技术,它采用自顶向下逐步细化的设计方法和单入口(Single entry)单出口(Single exit)的控制结构。 这种控制结构包括有: 顺序、选择和循环。 6.2 结构化程序设计 (Structured Programming) 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 for(a=1,b=1;a=20) break; if (b%3=1) b+=3; continue; b-=5; a=20b%3=1 b+=3 a+ b-=5TFFT a=0,b=1单入口 M1单出口 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2ABA,B,CBCAC打印BFTFTTF打印C打印A If (A.LT.B) goto 120 If (B.LT.C) goto 110100 write(6,*) C goto 140 110 write(6,*) B goto 140 120 If(A.LT.C) goto 130 goto 100 130 write(6,*) A 140 continue - 单入口多出口结构 M2 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2无节制地使用了GOTO语句所产生的程序流程 M 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 一、结构化程序设计的原则1 1、使用语言中的顺序、选择、重复等有限的基本控制结构表示程序2、选用的控制结构只准许有一个入口和一个出口 3、程序语句组成容易识别的块(Block),每块只有一个入口和一个 出口4、复杂结构应该用基本控制结构进行组合嵌套来实现 5、严格控制GOTO语句 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 F0=F(a); F1=F(b); if(F0*F1=0) X0=a; X1=b; for(i=1;i=n;i+) Xm=(X0+X1)/2; Fm=F(Xm); if(abs(Fm)eps|abs(X1-X0)0) X0=Xm; F0=Fm; else X1=Xm; finish: printf(“%dn”,Xm); 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2Begin(F0*F1)0 X0=Xm X1=Xm F0=Fm TTXmFTFF F0=F(a) F1=F(b)11End22 i=n i i Q=abs(Fm)eps|abs(X1-X0)eps) 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 F0=F(a); F1=F(b); if(F0*F1=0) X0=a; X1=b; for(i=1;i=n;i+) Xm=(X0+X1)/2; Fm=F(Xm); if(abs(Fm)eps|abs(X1-X0)0) X0=Xm; F0=Fm; else X1=Xm; printf(“%dn”,Xm); 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 F0=F(a); F1=F(b); if(F0*F1=0) X0=a; X1=b; i=1; finish=0; while(i=n & finish=0) Xm=(X0+X1)/2; Fm=F(Xm); if(abs(Fm)eps|abs(X1-X0)0) X0=Xm; F0=Fm; else X1=Xm; i+; printf(“%dn”,Xm); 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2二、程序设计自顶向下,逐步求精1、程序设计是一个由粗到细的 “渐进” 的过程 2、程序设计不仅包括对控制结构的设计,也包括对数据结构的设计。 二者都要一步一步地细化。 采用逐步细化方法设计程序的步骤列出问题的初步解分解主要问题 继续细化利用图形工具或伪代码描述程序的详细逻辑 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2用逐步细化方法设计一个程序,其功能为“从一组数中找出最大的数 ” 第一步:列出问题的初步解1:输入一组数2:找出其中最大的数3:输出最大的数 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2第二步:分解主要问题2.1:首先读入一个数并设其为最大的数2.2:将该数逐次与其它数进行比较2.3:若有大于该数的则将其保存 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2第三步:确定数据结构3.1:定义一数组 A3.2:max=A(1)3.3:从A(2)至A(n)开始比较3.4:若当前数大于max, 则令:max=A(I) 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2第四步:用PDL描述Input array ASet Max=A(1)DO for I=2 to N IF MaxA(I) Set Max=A(I) ENDIFENDDOPrint Max 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 请用逐步细化方法设计一由下列描述的程序结构 读入一段任意长度的英语课文,将其分解为单字,然后输出一张单词表(list of words),并指出每种单词在课文中的出现次数。 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2三、程序复杂性的度量 程序复杂性主要是指模块内部程序的复杂性。它 直接关系到软件开发费用的多少,开发周期的长短和 软件和软件内部潜伏错误的多少。同时它也是软件可 理解性的另一种度量。 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 它可以用来计算任何一个程序的复杂性; 对于不合理的程序,例如对于长度动态增长的程序, 或者对于原则上无法排错的程序,不应当使用它进行 复杂性计算; 如果程序中指令条数、附加存储量、计算时间增多, 不会减少程序的复杂性。为了度量程序复杂性,要求复杂性度量应满足以下假设: 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 如果设每行代码的出错率为每100行源程序中可能的错误数目。例如,每行代码的出错率为 1%,也就是说,每 100 行源程序中就可能有一个错误。 1、代码行度量法 :统计程序中的源代码的行数较小的程序 -1.3%1.8%/行较大的程序 -2.7%3.2%/行 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 该方法是利用程序模块的程序图中环路的个数,来计算程序的复杂性的。为此,该方法也称为环路复杂度计算法。 2、McCabe 度量法:利用程序的控制流来度量程序的复杂性 它是一种退化了的程序流程图。即:把程序流程图中每个处理符号都退化成一个结点,而原来流程图中的流程线,则变成连接不同结点的有向弧。 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2(1)程序图符号 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2TC1C2CABED(2)从流程图导出程序图 A开始C1BCED结束C2TF 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2(3)环路复杂性的计算方法 V(G)=m-n+p 说明: V(G) 是有向图G中环路数; m: 为图G中弧数; n: 为图G中节点数; p: 为图G中强连通分量个数; A B C D E F G H K L I V(G)=13-11+1=3V(G)=13-11+1=3McCabe 的环路复杂性度量值为 3 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2请将右侧给出的程序流程图转换为程序图并计算其环路值。a=20b%3=1 b+=3 a+ b-=5TFFT a=0,b=1 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 程序的环路复杂度则取决于程序控制流的复杂度,也就 是取决于程序结构的复杂程度。当程序内分支或循环个数增 加时,则相应地环域复杂度也随之增加。因此,它是对测试 难度的一种定量度量,也能对软件最终的可靠性给出某种预 测。(4)、环路复杂度的用途V(G)=10V(G)0 A=A+1 IF A10 THEN X=A ELSE Y=Z END IF IF Y0 THEN PRINT G E LSE PRINT K END IF STOP 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2四、程序效率 程序效率是指程序的执行速度及程序占用的存储空间。程序编码是最后提高运行速度和节省存储机会,因此在此阶段不能不考虑程序的效率。 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/21、算法对效率的影响源程序的效率与详细设计阶段确定的算法的效率有着直接的关系。当我们把详细设计翻译并转换成源代码之后,那么算法效率就会反映为程序的执行速度和存储容量的要求 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2(1)在编程序前,尽可能化简有关的算术表达式和逻辑表达式(2)仔细检查算法中的嵌套的循环,尽可能将某些语句或表达 式移到循环外面(3)尽量避免使用多维数组(4)尽量避免使用指针和复杂的表(5)不要混淆数据类型,避免在表达式中出现类型混杂(6)尽量采用整数算术表达式和布尔表达式(7)选用等效的高效率算法转换过程中的指导原则是: 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 (i+1) (j+2) 20 320 3 i=1 j=1i=1 j=1请设计求解下列问题的算法 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2main()main() int i,j; float sum; sum=0.0; int i,j; float sum; sum=0.0; for(i=1;i=20;i+) for(i=1;i=20;i+) for(j=1;j=3;j+) for(j=1;j=3;j+) sum=sum+(i+1)*(i+1)*(j+2); sum=sum+(i+1)*(i+1)*(j+2); printf(“sum=%dn”,sum); printf(“sum=%dn”,sum); (i+1) (j+2) 20 3 i=1 j=1 内循环次数 20X4=80 外循环次数 21 总循环次数 101 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2main()main() int i,j; float sum; sum=0.0; int i,j; float sum; sum=0.0; for (j=1;j= for (j=1;j=3 3;j+);j+) for (i=1;i= for (i=1;i=2020;i+);i+) sum=sum+(i+1)*(i+1)*(j+2); sum=sum+(i+1)*(i+1)*(j+2); printf(“sum=%dn”,sum); printf(“sum=%dn”,sum); 应把变化范围大的循环变量放在内层。 内循环次数 3X21=63 外循环次数 4 总循环次数 67 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2main()main() int i,j; float sum; sum=0.0; int i,j; float sum; sum=0.0; for ( for (j j=1;j=1;j=3 3;j+);j+) for (i=1;i= for (i=1;i=2020;i+);i+) sum=sum+(i+1)*(i+1)* sum=sum+(i+1)*(i+1)*(j+2)(j+2); ; printf(“sum=%dn”,sum); printf(“sum=%dn”,sum); j+2 共计执行了 3X20=60次 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2main()main() int i,j; float sum; sum=0.0; int i,j; float sum; sum=0.0; for (j=1;j=3;j+) for (j=1;j=3;j+) k=j+2k=j+2; ; for (i=1;i=20;i+) for (i=1;i=20;i+) sum=sum+(i+1)*(i+1)* sum=sum+(i+1)*(i+1)*k k; ; printf(“sum=%dn”,sum); printf(“sum=%dn”,sum); j+2 共计执行了 3次 减少了57次应尽量把与循环变量无关的运算移到循环外去。 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2main()main() int i,j; float sum; sum=0.0; int i,j; float sum; sum=0.0; for (j=1;j=3;j+) for (j=1;j=3;j+) k=j+2; k=j+2; for (i=1;i=20;i+) for (i=1;i=20;i+) sum=sum+ sum=sum+(i+1)*(i+1)(i+1)*(i+1)*k;*k; printf(“sum=%dn”,sum); printf(“sum=%dn”,sum); i+1 共计执行了 60X60=120次 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2main()main() int i,j; float sum; sum=0.0; int i,j; float sum; sum=0.0; for (j=1;j=3;j+) for (j=1;j=3;j+) k=j+2; k=j+2; for (i=1;i=20;i+) for (i=1;i=20;i+) m=i+1m=i+1; ; sum=sum+m*m*k; sum=sum+m*m*k; printf(“sum=%dn”,sum); printf(“sum=%dn”,sum); i+1 共计执行了 60次 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 从键盘输入 10个整数,要求按有小到大的顺序将它们输出。 请采用比较交换法和选择法对上述10条数据进行排序,然后分别对这两种方法进行比较,并从程序的运行了效率的角度对两个程序进行比较。 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 main() main() int a10,i,j,t; int a10,i,j,t; for(i=0;i10;i+) for(i=0;i10;i+) scanf(“%d”,&ai); scanf(“%d”,&ai); for(i=0;i9;i+) for(i=0;i9;i+) for(j=i+1;j10;j+) for(j=i+1;j10;j+) if(ajai) if(ajai) t=aj; aj=ai;ai=t; t=aj; aj=ai;ai=t; for(i=0;i10;i+) for(i=0;i10;i+) printf(“%2d”, ai); printf(“%2d”, ai); 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 for(i=0;i9;i+) for(i=0;i9;i+) k=ik=i ; ; for(j=i+1;j10;j+) for(j=i+1;j10;j+) if(ajak) if(ajak) k=jk=j; ; if(kj) if(kj) t=aj;aj=ak;ak=t; t=aj;aj=ak;ak=t; 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2五、程序设计风格 Coding style 1、保持控制流的直线性 (1)、对多入口和多出口的控制结构 要作适当的处理要作适当的处理 If C1 then goto 30 If C1 then goto 301010S2S2 20 If 20 If C2 C2 then goto 40then goto 40goto 10 goto 10 3030S1 S1 goto 20goto 20 40 Sn 40 Sn C1S1S2C2SnTT多入口循环结构多入口循环结构 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 If C1 then S1 If C1 then S1 else S2 else S2 While (not C2) While (not C2) do S2 do S2 C1S1C2SnTTS2S2改进后的循环结构改进后的循环结构重复环节法 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 10 if (not C1) then goto 20 10 if (not C1) then goto 20 if (not C2) then goto 30 if (not C2) then goto 30 S1 S1 goto 10 goto 10 20 S2 20 S2 30 Sn 30 Sn 多出口循环结构多出口循环结构C1S2TTC2S1S Sn n 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 while (C1 and C2) do while (C1 and C2) doS1 S1 If (not( C1) then S2 If (not( C1) then S2Sn Sn 经过处理后的单出口循环结构C1 and C2S2TC1S1SnT逻辑分析法 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 while (C1) do Begin S1 If C2 then goto 10 else S2End 10 Sn EXIT:=false while (C1 and (not EXIT) do Begin S1 If C2C2 then EXIT:=true else S2 End 10 Sn 标志变量法标志变量breakbreakExit doExit doExit forExit for 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 SUM=0 SUM=0 Do Do input x input x if x=0 then if x=0 then exitexit dodo SUM=SUM+x SUM=SUM+x loop until SUM1000 loop until SUM1000 Print SUM Print SUM 使用 Ture Basic 语言中的专用语句退出循环上面程序的功能是:从键盘输入一个数,并累加到总和中。当总和超过1000或输入为 0时则停止输入,并打印出总和。 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2if (N=0) then if (N能被能被2整除)整除)then print “正偶数正偶数” else print “负数负数” 导致二义性的 then-if 结构(2)、避免使用模糊或费解的结构 if (N0 while (C10) S1=S1+C1; S1=S1+C1; if (S11000) if (S11000) goto goto labellabel; ; labellabel: S2=a+b;: S2=a+b; 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 goto的目的地最好在同一控制结构内部,或者离本结构出口相近的地方。 1010 IF(.NOT. C) GOTO 20 IF(.NOT. C) GOTO 20 S S GOTO 10 GOTO 10 2020 CONTINUE CONTINUE while(C1) dowhile(C1) do Begin Begin S1 S1 if C2 then goto 10 if C2 then goto 10 End End 10 Sn10 Sn 1 12 2 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2C1C1C2C2C3C3TTTFe1e1e2e2e3e3 2、GOTO 语句的常见用法 请将右侧的具有多个循环出口的结构改写为单出口结构 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2C1C1C2C2C3C3TTTFe1e1e2e2e3e3(用GOTO语句提前退出循环) 方法一:EXIT2=false; EXIT3=false; while(C1) and (not (EXIT2) and (not( EXIT3) do begin if C2 then EXIT2:=true; if C3 then TXIT3:=true; end if(EXIT2) then goto 20; if(EXIT3) then goto 30; goto 40; 20: C2为真时执行的语句 gotot 40; 30: C3为真时的语句 40: Sn 后续语句标志变量 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 while C1 do begin if C2 then goto 20; if C3 then goto 30; end goto 40; 20: 从e2退出前执行的语句 gotot 40; 30: e3 退出前执行的语句 40: Sn 后续语句 (用GOTO语句提前退出循环) 方法二: 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2IF (X .LT. Y) GOTO 30IF (Y .LT. Z) GOTO 50SMALL=Z GOTO 70 30 IF (X .LT. Z ) GOTO 60 SMALL=Z GOTO 70 50 SMALL=Y GOTO 70 60 SMALL=X 70 CONTINUE 请将右侧用FORTRAN语言编写的源程序改用C语言编写,要求程序的清晰度要好small=x; if (ysmall) small=y; if (z1) (B=0)X=X/ATF(A=2) V (X1)X=X+1TF输入的: A,B,X2,0,42,0,3满足语句覆盖的测试用例如下a ac ce e-ace (L1)ace (L1)abd (L2)abd (L2)abe (L3)abe (L3)acd (L4)acd (L4)L1L1 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2判定覆盖(分支覆盖) 所谓的判定覆盖就是设计若干个测试用 例,运行被测程序,使得程序中每个判断的 取真真分支和取假假分支至少经历一次。 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2b bd da ac ce e(A1) (B=0)X=X/ATF(A=2) V (X1)X=X+1TF2,0,42,0,3取“真”分支测试用例如下a ac ce e-a ab bd d-1,1,11,1,1取“假”分支测试用例如下L1L1L2L2 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/22,1,12,1,2取“真假”分支测试用例如下a ab be e-b bd da ac ce e(A1) (B=0)X=X/ATF(A=2) V (X1)X=X+1TFL3L3 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/23,0,33,0,1取“真假”分支测试用例如下b bd da ac ce e(A1) (B=0)X=X/ATF(A=2) V (X1)X=X+1TFa ac cd d-L4L4 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2条件覆盖所谓的条件覆盖就是设计若干个测试用例,运行被测程序,使得程序中每个判断的每个条件的可能取值至少执行一次。 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2b bd da ac ce e(A1) (B=0)X=X/ATF(A=2) V (X1)X=X+1TF判断条件取真值取假值判断(一)A1T1T1B=0T2T2判断(二)A=2T3T3X1T4T4设条件的取值标记 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2b bd da ac ce e(A1) (B=0)X=X/ATF(A=2) V (X1)X=X+1TF判断判断条件条件取真值取真值取假值取假值判断判断( (一一) )A1T1T1B=0T2T2判断判断( (二二) )A=2T3T3X1T4T4设条件的取值标记 条件覆盖可选取的 (第一组测试用例)如下表 测试用例通过路径条件取值覆盖分支 (2,0,4),(2,0,3)(2,0,4),(2,0,3)ace(L1)ace(L1)T2T2 T3T3 T4T4c,ec,e(1,0,1),(1,0,1)(1,0,1),(1,0,1)abd(L2)abd(L2)T1T1b,db,dT1T1 T2T2 T3T3 T4T4 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2b bd da ac ce e(A1) (B=0)X=X/ATF(A=2) V (X1)X=X+1TF判断判断条件条件取真值取真值取假值取假值判断判断( (一一) )A1T1T1B=0T2T2判断判断( (二二) )A=2T3T3X1T4T4设条件的取值标记 条件覆盖可选取的 (第二组测试用例)如下表 测试用例通过路径条件取值覆盖分支 (1,0,3),(1,0,4)(1,0,3),(1,0,4)abe(L3)abe(L3)T1 T2 T3 T4T1 T2 T3 T4b,eb,e(2,1,1),(2,1,2)(2,1,1),(2,1,2)abe(L3)abe(L3)b,eb,eT1 T2 T3 T4T1 T2 T3 T4 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2判定/条件覆盖 所谓的判定/条件覆盖就是设计足够的测试用 例,使得 判断中每个条件的所有可能取值至少执 行一次, 同时每个判断本身的所有可能判断结果 至少执行一次。 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2b bd da ac ce e(A1) (B=0)X=X/ATF(A=2) V (X1)X=X+1TF判断判断条件条件取真值取真值取假值取假值判断判断( (一一) )A1T1T1B=0T2T2判断判断( (二二) )A=2T3T3X1T4T4设条件的取值标记 判定/ /条件覆盖可选取的 测试用例 如下表 测试用例通过路径条件取值覆盖分支 (2,0,4),(2,0,3)(2,0,4),(2,0,3)ace(L1)ace(L1)T1 T2 T3 T4T1 T2 T3 T4c,ec,e(1,1,1),(1,1,1)(1,1,1),(1,1,1)abd(L2)abd(L2)b,db,dT1 T2 T3 T4T1 T2 T3 T4 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2条件组合覆盖 所谓的 条件组合覆盖就是设计足够的测试用 例,运行被测程序,使得 每个判断的所有可能的 条件取值组合至少执行一次。 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2条件标记第一个判断取真假分支 b bd da ac ce e(A1) (B=0)X=X/ATF(A=2) V (X1)X=X+1TFA1B=0A1B 0A 1B = 0A 1B 0判断判断条件条件取真值取真值取假值取假值判断判断( (一一) )A1T1T1B=0T2T2判断判断( (二二) )A=2T3T3X1T4T4设条件的取值标记T1 T2T1 T2 取真分支T1 T2T1 T2T1 T2T1 T2 取假分支 取假分支 取假分支T1 T2T1 T2 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2条件标记第二个判断取真假分支 b bd da ac ce e(A1) (B=0)X=X/ATF(A=2) V (X1)X=X+1TFA=2X1A=2X 1A 2X 1A 2X 1判断判断条件条件取真值取真值取假值取假值判断判断( (一一) )A1T1T1B=0T2T2判断判断( (二二) )A=2T3T3X1T4T4设条件的取值标记T3 T4T3 T4 取真分支T3 T4T3 T4T3 T4T3 T4 取真分支 取真分支 取假分支T3 T4T3 T4 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2b bd da ac ce e(A1) (B=0)(A1) (B=0)X=X/AX=X/AT TF F(A=2) V (X1)(A=2) V (X1)X=X+1X=X+1T TF F设条件的取值标记测试用例通过路径条件取值覆盖组合号 条件标记第一个判断取第一个判断取真假真假分支分支A1 B=0 A1 B=0 T1 T2 T1 T2 取真分支A1 BA1 B00 T1 T2T1 T2 取假分支A A 1 B=01 B=0 T1 T2 T1 T2 取假分支A A 1 1 B B00 T1 T2 T1 T2 取假分支(2,0,4),(2,0,3)ace L1L1T1 T2 T3 T4,(2,1,1),(2,1,2)abe L3L3T1 T2 T3 T4, , , ,(1,0,3),(1,0,4)abe L3L3T1 T2 T3 T4, , , ,(1,1,1),(1,1,1)abd L2L2T1 T2 T3 T4, , , , 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 路径测试就是设计足够的测试用例,覆盖程序中每一条可能的程序执行路径至少测试一次,如果程序中含有循环(在程序图中表现为环)则每个循环至少执行一次。 二、路径测试法 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2abcdea-c-e L1a-c-e L1a-b-d L2a-b-d L2a-b-e L3a-b-e L3a-c-d L4a-c-d L4b bd da ac ce e(A1) (B=0)X=X/ATF(A=2) V (X1)X=X+1TF点覆盖边覆盖 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2b bd da ac ce e(A1) (B=0)(A1) (B=0)X=X/AX=X/AT TF F(A=2) V (X1)(A=2) V (X1)X=X+1X=X+1T TF F判断判断条件条件取真值取真值取假值取假值判断判断( (一一) )A1T1T1B=0T2T2判断判断( (二二) )A=2T3T3X1T4T4 路径测试可选取的 测试用例 如下表 测试用例通过路径条件取值 ace L1L1 abd L2L2 abe L3L3 acd L4L4 (2,0,4),(2,0,3)T1 T2 T3 T4(1,1,1),(1,1,1)(1,1,2),(1,1,3)(3,0,3),(3,0,1)T1 T2 T3 T4T1 T2 T3 T4T1 T2 T3 T4 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2测试路径覆盖结点/边覆盖标准 点覆盖 边覆盖 路径覆盖 根据左侧给出的程序图,请填写下列表1 1a ab bc cd de e2 23 34 4a-c-da-c-da-c-d, b-ea-c-d, b-ea,b,c,d,ea,b,c,d,ea-e-d,b-e a-e-d,b-e a-e,b-c-da-e,b-c-da,b,c,d,ea,b,c,d,e 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/28.4 黑盒测试用例的设计 黑盒测试法是根据被测程序功能来进行测试,所以通常也称为功能测试。用黑盒测试法设计测试用例,有4 种常用技术: 等价分类法 边界值分析 错误猜测法 因果图法 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2一、等价分类法 所谓等价分类,就是把输入数据的可能值划分为 若干等价类(等价类是指某个输入域的子集合。 在该 集合中,各个输入数据对于揭露程序中的错误都是等 价的)。 因此,可以把全部输入数据合理地划分为若 干等价类,在每一个等价类中取一个数据作为测试的 输入条件,这样就可以少量的代表性测试数据,来取 得较好的测试结果。 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 是指对于程序的规格说明来说,是合理的 有意义的输入数据构成的集合。利用它可以检 验程序是否实现预先规定的功能和性能。 有效等价类 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 是指对于程序的规格说明来说,是不合理 的,是无意义的输入数据构成的集合。程序员 主要利用这一类测试用例来检查程序中功能和 性能的实现是否不符合规格说明要求。 无效等价类 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 1、如果输入条件规定了取值范围,或者是值 的个数,则可以确立一个有效等价类和两个无效 等价类。确定等价类的原则:例如: 序号值可以从 1到999 一个有效等价类: 1 序号值 999 两个无效等价类: 序号值 999 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 2、如果输入条件规定了输入值的集合,或 者是规定了“必须如何”的条件,这时 可确立一 个有效等价类和一个无效等价类。例如:在 C 语言中对变量标识符规定为 “以字母打头的 串”。 所有以字母打头的构成为有效等价 类; 而不在此集合内(不以字母打头)归于无价等 价。 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 3、如果输入条件是一个布尔量,则可以确 定一个有效等价类和一个无效等价类。 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 4、如果规定了输入数据是一组值, 而且程 序要对每个输入值分别进行处理。这时可为每一 个输入值确立一个有效等价类此外再针对这组确 立一个无效等价类,它应是所有不允许输入值的 集合。例如:在教师分房方案中规定对教授、副教授、讲师 和助教分别计算分数,做相应的处理。因此可 以确定4 4个有效等价类为教授、 副教授、讲师 和助教,以及 1 1个无效等价类它应是所有不符 合以上身份的人员的输入值的集合。 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 5、如果规定了输入数据必须遵守的规 则,则可以确定一个有效等价类(符合规则) ,和若干个无效等价类(从不同角度违反则)。 例如:在C C 语言中规定了“一个语句必须以分号; 作为结束”,这时,可以确定一个有效等价 类,以 “;”结束,而若干个无效等价类应 以“:,、:,、:,、:,、” 等。 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 6、如果确知,已划分的等价类中各元素 在程序中的处理方式不同, 则应将此等价类 进一步划分成更小的等价类。 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 1、划分等价类不仅要要考虑代表“有效”输 入值的有效等价类,还需考虑代表 “无效”输入 值的无效等价类。采用这一技术要注意以下两点: 2、每一无效等价类至少要用一个测试用例 ,不然就可能漏掉某一类错误,但允许若干有 效等价类合用同一个测试用例,以便进一步减 少测试的次数。 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2二、确立测试用例输入条件有效等价类无效等价类 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2确立测试用例原则 为每一个等价类规定一个唯一的编号。 设计一个新的测试用例,使其尽可能地覆盖尚未被覆盖的有效等价类,重复这一步,直到所有的有效等价类都被覆盖为止。 设计一个新的测试用例,使其仅覆盖尚未被覆盖的无效等价类,重复这一步,直到所有的无效等价类都被覆盖为止。 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 在某一个PASCAL 语言版本中规定 1、标识符是由字母开头,后跟字母或数字 的任意组合构成。有效字符数为8个,最大 字符数为80 个; 2、标识符必须先说明,后使用; 3、在同一个说明语句中,标识符至少必须 有一个。 请利用等价分类法为以下提供的内容设计测试用例 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2输入条件有效等价类无效等价类标识符个数标识符字符数标识符组成第一个字符标识符使用1个(1)(1)(1)(1),多个(2)(2)(2)(2)0个 (3)(3)(3)(3) 1个(4)(4)(4)(4)0个(5)(5)(5)(5),8 8 8 8个个个个(6) (6) (6) (6) ,80808080个个个个(7)(7)(7)(7)字母(8)(8)(8)(8),数字(9)(9)(9)(9)非字母数字字符(10)(10)(10)(10),数字(11)(11)(11)(11)字母(12)(12)(12)(12) 非字母(13)(13)(13)(13) 先说明后使用(14)(14)(14)(14) 未说明已使用(15)(15)(15)(15) 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2输入条件有效等价类无效等价类标识符个数1个(1)(1)(1)(1),多个(2)(2)(2)(2)0个 (3)(3)(3)(3)标识符字符数1个(4)(4)(4)(4)0个(5)(5)(5)(5),8 8 8 8个个个个(6) (6) (6) (6) ,80808080个个个个(7)(7)(7)(7)标识符组成字母(8)(8)(8)(8),数字(9)(9)(9)(9)非字母数字字符(10)(10)(10)(10),保留字(11)(11)(11)(11)第一个字符字母(12)(12)(12)(12)非字母(13)(13)(13)(13) 标识符使用先说明后使用(14)(14)(14)(14)未说明已使用(15)(15)(15)(15) VAR x, T1234567: REAL; BEGIN x:=3.414; T1234567:=2.732; 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2输入条件有效等价类无效等价类标识符个数1个(1)(1)(1)(1),多个(2)(2)(2)(2)0个 (3)(3)(3)(3)标识符字符数1个(4)(4)(4)(4)0个(5)(5)(5)(5),8 8 8 8个个个个(6) (6) (6) (6) ,80808080个个个个(7)(7)(7)(7)标识符组成字母(8)(8)(8)(8),数字(9)(9)(9)(9)非字母数字字符(10)(10)(10)(10),保留字(11)(11)(11)(11)第一个字符字母(12)(12)(12)(12)非字母(13)(13)(13)(13) 标识符使用先说明后使用(14)(14)(14)(14)未说明已使用(15)(15)(15)(15) VAR : REAL; VAR T12345678: REAL; VAR T$: CHAR; VAR GOTO: INTEGER; (11) 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2输入条件有效等价类无效等价类标识符个数1个(1)(1)(1)(1),多个(2)(2)(2)(2)0个 (3)(3)(3)(3)标识符字符数1个(4)(4)(4)(4)0个(5)(5)(5)(5),8 8 8 8个个个个(6) (6) (6) (6) ,80808080个个个个(7)(7)(7)(7)标识符组成字母(8)(8)(8)(8),数字(9)(9)(9)(9)非字母数字字符(10)(10)(10)(10),保留字(11)(11)(11)(11)第一个字符字母(12)(12)(12)(12)非字母(13)(13)(13)(13) 标识符使用先说明后使用(14)(14)(14)(14)未说明已使用(15)(15)(15)(15) VAR 2T: REAL; (13) VAR PAR: REAL; BEGIN PAP:=SIN(3.14*0.8)/6; (15) 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 某工厂公开招工,规定报名者年龄应在161635 35 周岁之间(到1995年6月30日为止),即出生年月不早于1960年7月,不晚于1979年6月。 报名程序具有自动检验输入数据的功能。如出生年月不在上述范围内, 将拒绝接受,并显示“年龄不合格”等出错信息。 请试用等价分类法, 设计出生年月的等价分类表 。二、请利用等价分类法为以下提供的内容设计测试用例 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 假定已知出生年月是由 6 位数字字符表示,前4 位代表年,后2 位代表月,则可以划分为 3 个有效等价类和 7 个无效等价类。1、划分出生年月等价分类表输入数据有效等价类无效等价类出生年月 6位有效数字字符 有非数字字符 少于6个数字字符 多于6个数字字符 对应数值 196007-197906196007-197906 196007 197906 197906月份对应数值 在1-12之间 等于 “0” 12 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/22、设计有效等价类需要的测试用例输入数据有效等价类无效等价类出生年月 6位有效数字字符 有非数字字符 少于6个数字字符 多于6个数字字符 对应数值 196007-197906196007-197906 196007 197906 197906月份对应数值 在1-12之间 等于 “0” 12测试数据期望结果测试范围 197011输入有效、 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2输入数据有效等价类无效等价类出生年月 6位有效数字字符 有非数字字符 少于6个数字字符多于6个数字字符 对应数值 196007-197906196007-197906196007-197906196007-197906 196007 196007 196007 197906 197906 197906 197906月份对应数值 在1-12之间 等于 “0” 12测试数据期望结果测试范围 MAY,70MAY,70输入无效 有非数字字符1970519705输入无效输入无效 少于6个数字字符19680111968011196008196008195512195512196200196200197222197222年龄不合格年龄不合格输入无效输入无效 多于6个数字字符 197906 等于 “0” 123、为每一个无效等价类至少设计一个测试用例 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2二、边界值分析法 采用边界值分析法来选择测试用例,可使 得被测程序能在边界值及其附近运行,从而更 有效地暴露程序中潜藏的错误。 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 If (196007 = value(birthdate) = 197906) Then read(birthday) Else write “invalid age!” 35 周岁周岁 16周岁周岁196006197907不合格年龄月份对应数值月份值为 1 月月份值为 12 月 196701 197412输入有效月份值 12 196700 197413 输入无效 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/21、等价分类法的测试数据是在各个等价类允许的值域内 任意选取的,而边界值分析法的测试数据必须在边界 值附近选取。2、在公开招工的例子中,采用等价分类法设计了 8 8 8 8个测试 用例而边界值分析法则设计了13 13 13 13 个, 所以,一般来说 ,用边界值分析法设计的测试用例要比等价分类法的代 表性更广,发现错误的能力也更强。但是对边界的分析 与确定比较复杂,它要求测试人员具有更多的经验和长 找性。等价分类法与边界值分析法的比较 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2三、错误猜测法 所谓猜测,就是猜测被测程序在哪些地方容易 出错,然后针对可能的薄弱环节来设计测试用例。 显然它比前两种方法更多地依靠测试人员的直觉与 经验。所以一般都先用前两方法设计测试用例然后 再用猜测法去补充一些例子作为辅助的手段。 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2四、因果图法 因果图是借助图形来设计测试用例的一种系 统方法。它适用于被测程序具有多种输入条件, 程序的输出又依赖于输入条件的各种组合的情况 因果图是一种简化了的逻辑图,它能直观地 表明程序输入条件(原因)和输出动作(结果) 之间的相互关系。 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 测试方法的选用测试策略 1、在任何情况下都应该使用边界值 分析的方法。 2、必要时用等价类划分法补充测试 方案。 3、必要时再用错误猜测法补充测试 方案。 4、对照程序逻辑,检查已经设计出 出的测试方案。可以根据对程序 可靠性的要求采用不同的逻辑覆 盖标准,如果现有测试方案的逻 辑程度没有达到要求的覆盖标准 则应再补充一些测试方案。 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 本章总结 策略种类黑盒测试白盒测试测试对象程序的功能程序的结构 测试要求逐一验证程序的功能程序的每一组成部分至少被测试一次 采用技术等价分类法 边界分析法错误猜测法 因果图法 逻辑覆盖法 路径测试法 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2微软的软件产品开发过程微软的软件产品开发过程一、微软的组织结构一、微软的组织结构市场营销部市场营销部内部营运部内部营运部产品开发部产品开发部研究部门研究部门 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2二、新产品的产生过程二、新产品的产生过程新产品项目的提议新产品项目的提议市场分析与预测市场分析与预测技术可行性分析技术可行性分析产品研发实施步骤产品研发实施步骤高层论证和审批高层论证和审批项目确立和执行项目确立和执行产品开发产品开发 我最大的心得是,一个产品一定要找到能 够真正适用的场合,不能只是为了技术而从事 技术,为了研究而从事研究,却不管用户对你 所研究的技术和产品有没有需求。否则,无论 你的技术是多么优秀、多么先进,恐怕你的产 品在市场上都无法获得成功。 - 微软张益肇 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2陈宏刚微软亚洲研究院商务高级经理1982年兰州大学 计算机学士1987年西安交通大学 计算数学硕士1987年赴美留学,并获华盛顿大学 应用数学博士学位 后又在该校做博士后研究1995年加盟微软公司 在微软总部先后做过 测试工程师(Software Test Engineer ) 测试 组长(Software Test Lead) 测试 经理(Test Manager ) 参加过微软产品 Windows 95, Exchange Server 4.0 和和 4.5 , Internet Explorer 4.0 和和 4.5, SQL Server 2000的开发和测试 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2三、微软的产品团队三、微软的产品团队软件开发项目管理软件测试产品管理后勤管理用户培训- 微软产品团队的组成微软产品团队的组成互相沟通互相沟通 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 各个团队的角色及主要目标团队名称分担的任务产品管理项目管理软件开发软件测试用户培训后勤管理 确定产品的运景,获取并确定用户的需求,开发并维护商业安全,满足用户的需求制定开发功能规范,在团队内进行沟通和协商,维持产品进度并报告产品状态,保证能够尽快尽好地在产品约束条件下发布产品开发出满足设计规范和用户要求的产品开发测试策略和计划,保证在解决了所有已知问题后再发布产品保证使用文档要全部很清楚地写出来,提高用户使用产品的技能,保证大多数用户都能够充分利用产品的功能保证产品能够平稳地发展 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2产品管理团队的组织机构Product Management Team产品单元经理(PUM)产品管理团队(产品总经理GM)产品计划( 负责人)市场分析和研究(负责人)产品推销(负责人)公共关系(负责人)产品单元经理(PUM) 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2项目管理团队的组织机构Program Management Team项目团队的管理(GPM)产品按时发布项目协调产品结构设计 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2软件开发团队的组织机构Software Development Team软件开发团队 (SDT)数据库(Database)系统服务(System service)用户界面(User Interface)开发管理(Development Management) 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2软件测试团队的组织机构Software Testing Team软件测试 团队 (STT) 测试管 理 配置测试(Configuration Testing)一致性测试(Compliance Testing)集成测试(Integration Testing)强力测试(Stress Testing)Bug 团队 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 Exchange 2000Windows 2000项目经理25人约 250人开发人员140人约1700人测试人员350人约3200人测试人员/开发人员2.5 1.9 Exchange 2000 和Windows 2000中的人员结构 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2- 微软现代软件开发的典型体系软件研究院产品部产品规划人员产品管理团队软件开发团队软件测试团队技术部 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2四、微软的软件开发特点四、微软的软件开发特点(1) 文档齐全,项目规范清楚(2) 开发人员相互阅读其他人新编写代码(3) 所有代码都有清楚的注释产品版本调试版本 (Dev)发布版本 (Ship) 管理上管理上 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 软件开发第一一阶段各团队分担的任务团队名称分担的任务产品管理项目管理软件开发软件测试用户培训后勤管理 分析是否应该做这个新产品,尽量证明该产品是值得做设计新产品的目标,以及具体的实现方法开发一些技术原型,检验新产品是否有意义,并向大家展示新产品未来的样子。另外还要对开发过程中一些大的结论提出意见判断该新产品是否有用、是否可接受分析用户的需求 对长期的支持管理提出建议 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 软件开发第二二阶段各团队分担的任务团队名称分担的任务产品管理项目管理软件开发软件测试用户培训后勤管理概念设计和市场推销计划 / 进度表逻辑设计、功能规范,以及总体计划 / 进度表物理设计和开发计划 / 进度表设计评估和测试计划 / 进度表用户性能支持设计和用户培训计划 / 进度表 对长期的支持管理提出建议 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2微软亚洲研究院 Microsoft Research Asia1998 年11月5日,微软公司在北京设立 微软中国研究院2001 年11月1日,正式更名为 微软亚洲研究院 目前研究技术 数字多媒体多通道用户界面无线及网络亚洲信息处理技术科研技术人员120多位国际一流学术刊物和会议上发表论文400余篇 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 潘云鹤校长迟惠生校长张钹 教授Victor Zue刘明雷先生郑南宁副校长国际专利微软专家顾问委员会百余项现任院长兼首席科学家张亚勤博士Windows XPWindows XPOffice XPOffice XP现任副院长:张宏江博士沈向洋博士 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 微软研究院的科研方向微软研究院的研究方向微软研究院的神圣使命使未来的计算机能够达到: 看、听、学,能用自然语言与人类进行交流。新一代用户界面新一代多媒体技术1、多通道用户界面组2、语音技术组1、网络多媒体组2、多媒体计算机组3、多媒体管理组4、形象计算组5、网络图形组新一代信息处理技术1、自然语言组 新一代无线互联技术 2、无线网络组 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 现代软件开发对我们的要求是方方面面的,微软在这 些方面积累的经验和遵循的规则非常全面,在软件开发的 整体过程中,从某意义上其 “艺术” 性高于“科学” 性,因 为融入了艺术的产品有着超群的竞争力,而这一切又都归 功于软件产品的主体-人。人的最大浅能的挖掘和团队 最大可能的互助必将创造成功的产品。 - 微软 凌小宁博士 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/21、利用因果图产生测试用例的基本步骤 1、分析软件规格说明书中,哪些是原因(即输 入条件或输入条件的等价类),哪些是结果(即 输出条件)并给每个原因和结果赋予一个标识。 2、分析软件规格说明书中所描述的语义,找出 原因与结果之间、原因与原因之间对应的是什么 关系?根据这些关系画出因果图。 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2 3、由于语法或环境的限制,有些原因与原因 之间、原因与结果之间的组合情况不可能出现 。为表明这些特殊情况,在因果图上用一些记 号标明约束或限制条件。 4、把因果图转换为判断表 5、把判断表的每一列拿出来作为依据,设计 测试用例。 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/22、在因果图中出现的基本符号C1E1恒等: 表示原因与结果之间是一对一的 对应关系。若原因出现,则结果 出现。若原因不出现,则结果也 不出现。 C1E1非: 表示原因与结果之间的一种否定关 系。若原因出现,则结果不出现。 若原因不出现,反而结果出现。通常在因果图中用通常在因果图中用 CiCi 来表示原因,用来表示原因,用EiEi表示结果表示结果其基本符号如下图所示。其中各其基本符号如下图所示。其中各结点结点表示表示状态状态,可取,可取值为值为“0 0”或或“1 1”。“0 0”表示表示某状态不出现某状态不出现,“1 1”表示表示某某状态出现状态出现。主要的原因和结果之间的关系如下。主要的原因和结果之间的关系如下: : 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2或或或或() ) ) ): 表示若几个原因中有一个出 现,则结果出现,而当这几 个原因都不出现时,结果才 不出现。C1C1E1E1C2C2C1C1E1E1C2C2与与与与():):):): 表示若几个原因都出现,则结果 才出现若几个原因中有一个不出 现,结果就不出现。 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2第第9章章 软件测试软件测试4、把因果图转换为判断表把因果图转换为判断表5、把判断表的每一列拿出来作为依据,设计测试用例把判断表的每一列拿出来作为依据,设计测试用例一、在一、在 因果图中出现的基本符号因果图中出现的基本符号通常在因果图中用通常在因果图中用 CiCi 来表示原因,用来表示原因,用EiEi表示结果表示结果其基本符号如下图所示。其中各其基本符号如下图所示。其中各结点结点表示表示状态状态,可取,可取值为值为“0 0”或或“1 1”。“0 0”表示表示某状态不出现某状态不出现,“1 1”表示表示某某状态出现状态出现。主要的原因和结果之间的关系如下。主要的原因和结果之间的关系如下: : 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2第第9章章 软件测试软件测试举例举例 设有一个处理单价为设有一个处理单价为5 5角钱饮料自动售货机角钱饮料自动售货机其规格说明为,若投入其规格说明为,若投入5 5角钱角钱或或1 1元钱元钱的硬币的硬币 ,再按下,再按下橙汁橙汁或或啤酒按钮啤酒按钮,则相应的饮料就送出来;若售货机,则相应的饮料就送出来;若售货机 没有另钱没有另钱找找,则一个显示,则一个显示另钱已找完另钱已找完的的红灯亮红灯亮,这时在投入,这时在投入1 1元硬币元硬币并按下按钮后,饮料不送出来而且并按下按钮后,饮料不送出来而且1 1元硬币也退出来元硬币也退出来; ;若有另钱若有另钱找,则应显示找,则应显示零钱找完零钱找完的红灯灭的红灯灭, 在送出饮料的同时退还在送出饮料的同时退还5 5角硬币。角硬币。 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2第第9章章 软件测试软件测试利用因果图设计测试用例的步骤利用因果图设计测试用例的步骤1 1、分析这一段说明,列出原因和结果、分析这一段说明,列出原因和结果序号序号原原 因因序号序号结结 果果1.售货机有零钱找售货机有零钱找2.1售货机售货机 零钱找完零钱找完灯亮灯亮2.投入投入1元硬币元硬币2.2退还退还1元硬币元硬币3.投入投入5角硬币角硬币2.3退还退还5角硬币角硬币4.按下橙汁按钮按下橙汁按钮2.4送出橙汁饮料送出橙汁饮料5.按下啤酒按钮按下啤酒按钮2.5送出啤酒饮料送出啤酒饮料 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2第第9章章 软件测试软件测试2 2、画出因果图、画出因果图序号序号中间结点中间结点11投入投入1元硬币且按下饮料按钮元硬币且按下饮料按钮12按下橙汁或啤酒的按钮按下橙汁或啤酒的按钮13应当找应当找5角零钱并且售货机有零钱找角零钱并且售货机有零钱找14钱已付请钱已付请21 1.22 2.13231112143.24254.5.按下按钮按下按钮该找该找5角角钱已付清钱已付清可找可找5角角售货机有售货机有零钱找零钱找投入投入1元元硬币硬币投入投入5 角角硬币硬币按下橙汁按下橙汁按钮按钮按下啤酒按下啤酒按钮按钮售货机售货机“零钱零钱找完找完”灯亮灯亮退还退还1元元硬币硬币退还退还5角角硬币硬币送出橙汁送出橙汁饮料饮料送出啤酒送出啤酒饮料饮料 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2第第9章章 软件测试软件测试3 3、将因果图转换成判定表、将因果图转换成判定表1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 01 1 1 1 0 0 0 0 11 1 0 0 1 1 0 0 11 0 1 0 1 0 1 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 1 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 0 1 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 2 3 4 5 6 7 8 910 1 2 3 4 5 6 7 8 920 1 2 3 4 5 6 7 8 930 1 2 1 2345 条条件件 中间中间结果结果 11 121314 1 1 01 1 01 1 01 1 01 1 01 1 01 1 0 1 1 0 0 0 01 1 00 0 01 1 1 0 0 01 1 00 0 00 0 0 1 1 01 1 00 0 00 0 0 0 0 01 1 00 0 01 1 1 0 0 01 1 00 0 00 0 0 21 22232425 结结果果 测试用例测试用例 y y y y y y y y y y y y y y y y 0 0 00 0 01 1 01 0 00 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 00 0 00 0 00 0 00 0 00 0 01 1 11 1 00 0 00 0 00 0 01 1 11 1 10 0 01 0 00 1 0 1 1 1 0 0 00 0 00 0 00 0 0 序序 号号通常在因果图中用通常在因果图中用 CiCi 来表示原因,用来表示原因,用EiEi表示结果表示结果其基本符号如下图所示。其中各其基本符号如下图所示。其中各结点结点表示表示状态状态,可取,可取值为值为“0 0”或或“1 1”。“0 0”表示表示某状态不出现某状态不出现,“1 1”表示表示某某状态出现状态出现。主要的原因和结果之间的关系如下。主要的原因和结果之间的关系如下: :序号序号中间结点中间结点11投入投入1元硬币且按下饮料按钮元硬币且按下饮料按钮12按下橙汁或啤酒的按钮按下橙汁或啤酒的按钮13应当找应当找5角零钱并且售货机有零钱找角零钱并且售货机有零钱找14钱已付请钱已付请 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2三、实体-关系图 - DD(Data Dictionary) 在数据密集型应用问题中,对复杂数据及数据之间复杂关系和建模将成为需求分析的重要任务。显然,这项任务是简单的数据字典机制是无法胜任的。 为此,在下面的内容将介绍适合于复杂数据建模的图形工具- 实体-关系图。 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2(1) 数据对象、属性与关系数据(data) - 是信息的载体,它能够被计算机识别、存储和 加工处理。它是计算机程序加工的“原料” 对象(Object) - 是一个包含数据以及这些数据有关的操作的 集合属性(Property) - 是用于描述数据对象特征的标识码型号制造商车体类型颜色买主关于汽车属性描述表 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2(2) 实体-关系图0:11:10:多1:多- 实体-关系图中数量对应关系的表示符号制造商制造车- 一个简单的实体-关系图和数据对象 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2制造商许可证经销商车货主储存制造合同制造 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2汽车欧洲市场 美国市场国内市场 上海广州法国德国瑞典意大利 汽车销售管理问题中 “汽车”的层次实体-关系图 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2第六章 Visual Basic 中的常用事件P79 哈哈尔尔滨滨工工业业大大学学 韩静萍2024/9/2第第1章章 软件工程概述软件工程概述 以以990.net免费信箱免费信箱为例为例
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号