• 1. 2018/10/17
  • 2. 2018/10/17《软件工程》 哈尔滨工业大学 韩静萍Software Engineering
  • 3. 2018/10/17 在一些人眼里,今天的软件开发似乎已 成为简单的事情,已有了不少很好的开发工 具和软件库,软件开发人员训练有素,都强 烈渴望去编写很酷的软件,可以在几天的时 间里编写出一个相当复杂的软件。但为什么 有一些软件能够得到用户的喜欢,而另一些 则不能?为什么有些软件能够在市场上成功 ,而有些则受到冷落?由此可见,开发软件 并不一定难,难就难在如何开发有用的软件。微软凌小宁博士
  • 4. 2018/10/17 我最大的心得是,一个产品一定要找到能够 真正适用的场合,不能只是为了技术而从事技术 为了研究而进行研究,却不管用户对你所研究的 技术和产品有没有需求。否则,无论你的技术是 多么优秀,多么先进,恐怕你的产品在市场上都 无法获得成功。微软张益肇博士
  • 5. 2018/10/17 软件工程是计算机科学与技术专业的一门专 业核心课程。通过本课程的学习,使学生掌握系 统的软件开发理论、技术和方法,使用正确的工 程方法开发出成本低、可靠性好并在机器上能高 效运行的软件,为今后从事软件开发和维护打下 坚实的基础。课程的性质、目的与任务
  • 6. 2018/10/17 本课程比较全面、系统地介绍软件工程的概念、技术 与方法。 主要内容包括:软件工程概述、软件生存周期及软件 需求分析、软件设计方法、软件测试技术等。 通过本课程的学习,使学生能真正的从中了解软件开 发的整个过程。为了让学生真正得以实践,结合实际软件 开发项目,让学生从问题定义开始,经过可行性研究、需 求分析、概要设计、详细设计、编码直到最后要对自己开 发的软件还要进行测试,这样一个软件开发过程,从而使 学生掌握软件开发的基本技能。课程主要内容
  • 7. 2018/10/17学习本课程的基本要求 本课程是继程序设计课程之后,对提高学生软件 开发能力有重要作用的一门课程。要求学生在学习本 课程前应掌握信息管理系统、数据结构、结构化程序 设计、面向对象程序设计以及程序设计方法论。 通过本课程的学习,为学生后期的毕业设计环节 奠定了良好的基础。
  • 8. 2018/10/17章学时章学时章学时章学时123494132补充2421021442284122总学时 46=38(讲授)+8(课程设计)各 章 学 时 安 排
  • 9. 2018/10/17第一章 软件工程概述水利工程建筑工程机械工程… …软件工程 本章将对软件的地位和作用、软件的特点、软件 的发展、软件的危机以及软件工程学科的形成、软件 生期等方面的问题和基本概念传统工程新兴工程气象工程生物工程
  • 10. 2018/10/171.1 软件的概念与特点1、软件softwaresoft+ware软制品 (软体) 软件是计算机系统中与硬件相互依存的另一部分。 它包括程序、数据及其相关文档的完整集合。
  • 11. 2018/10/172、软件特点. 软件是一种逻辑实体,而不是具体的物理实体. 软件的生产与硬件不同 . 在软件的运行和使用期间,没有硬件那样的机械 磨损,老化问题磨合调整磨损用坏修改点实际曲线理想曲线硬件失效率曲线时间失效率时间失效率软件失效率曲线
  • 12. 2018/10/17. 软件的成本相当昂贵软件技术的发展落后于需求时间软件复杂性软件需求差距软件技术硬、软件成本比例的变化年份成本%软件1950197019851995硬件
  • 13. 2018/10/173、软件的分类1、按软件的功能进行划分系 统 软 件支 撑 软 件应 用 软 件
  • 14. 2018/10/17支撑软件一般类型: 文本编辑程序 文本格式化程序支持需求分析: PSL/PSA问题描述语言 关系数据库管理系统支持设计: 图形软件包 结构化流程图绘图程序支持测试: 静态分析器 测试覆盖检验程序支持实现: 编辑程序 连接编辑程序支持管理: 标准检验程序 库管理程序
  • 15. 2018/10/172、按软件的规模进行划分 按开发软件所需的 人力、时间以及完成的 源代码行数。类别参加人数研制期限产品规模(源代码行数)微型 小型 中型 大型 甚大型 极大型1 1 2-5 5-20 100-1000 2000-50001-4周 1-6周 1-2年 2-3年 4-5年 5-10年约500行 约2000行 5000-50000行 5万-10万行 100万行 1000万行
  • 16. 2018/10/173、按软件开发划分软 件 项 目 开 发软 件 产 品 开 发
  • 17. 2018/10/171.2 软件工程的概念及范畴 1、“软件工程”----Software Engineering 于1968年 NATO 组织在 德国召开的一次会议上提出 是把软件当作一种工业产品,要求 “采用工程化的 原理与方法对软件进行计划、开发和维护 ”。
  • 18. 2018/10/17 软件工程学 软件开发技术 软件工程管理 软件开发方法学 软件工具 软件工程环境 软件工程管理学 软件经济学 ---- 软件工程学的范畴 2、 软件工程学
  • 19. 2018/10/17 Wake up every day with a feeling of passion for the different technology will make in people’s Life.微软企业文化宗旨部分内容 每天醒来的时候,要对技术给生活造成的改变 始终拥有一份 激情。
  • 20. 2018/10/17程序 3、软件的演变(即从传统软件开发到现代软件开发) 软件软件产品传统软件开发现代软件开发 1975 1989 2000 0.00016240营业额 增长曲线 80
  • 21. 2018/10/171.3 软件生存周期把软件从产生、发展到成熟、直至衰亡为止(SW life cycle)
  • 22. 2018/10/17特点: 上一阶段的变换结果 是下一阶段的变换的 输入,相邻两个阶段 具有因果关系,紧密 相联。需求分析问题定义可性行研究计划 时期概要设计详细设计编 码 测 试开发 时期运行与维护运 行 时 期软件生存周期模型(瀑布模型 Waterfall Model)
  • 23. 2018/10/17原型模型(Prototype Model)加工 原型原型原型:是指模拟某种产品的原始模型快速分析 和设计建造 原型客户 评价原型1、原型系统仅包括未来系统的 主要功能,以及系统的重要 接口。2、为了尽快向用户提供原型, 开发原型系统时应尽量使用 能缩短开发周期的语言和工 具。
  • 24. 2018/10/17 第二章 问题的定义与可性行研究 当我们在着手做任何一件工作以前,必须明确工作的性质、任务,制定完成任务的计划,这是非常必要的。同样对于软件产品的开发 ,显然也应该解决好这样类似的问题,明确该软件产品开发的任务,以及完成任务的价值从而制定出完成任务的计划。那么问题的定义和可性行研究就是制定软件系统的计划的第一步。 所以在软件工程中把这一步称为 计划时期
  • 25. 2018/10/17开始问题定义可性行研究 可行否?项目实施计划终止项目的建议 结束 Y计划时期的工作流程图N
  • 26. 2018/10/17Who 为谁设计,用户是谁?What 要解决哪些问题?Why 为什么要解决这些问题 3W Win CE1.0 有用的软件
  • 27. 2018/10/172.1 现状调查和问题的定义 目的:弄清楚用户要求计算机解决什么问题任务:编写系统目标与规范说明书 系统目标与规范说明书 1、项目:教材销售系统 2、问题:人工销售教材手续繁琐,容易出错 3、项目目标:建立一个高效率、无差错的计算机教材销售系统 4、项目范围:利用现有的计算机,软件开发费用不得超过2000元 5、初步想法:建议在系统中增加对缺书的统计与采购功能 6、可性行研究:建议进行大约10天的可性行研究,且研究费用不超过500元
  • 28. 2018/10/172.2 可行性研究与论证 1、经济可行性:进行成本效益分析,评估项目的开发成本。基于计算 机系统的 成本由四 部分组成1、购置软、硬件及有关设备费用2、系统开发费用3、系统安装和维护费用4、人员培训费用费用其论证的焦点是:围绕着对系统开发的价值进行论证
  • 29. 2018/10/17举例:关于开发CAD系统的软件开发成本及效益分析 1 2 3 4 5 年60 40 20 0成本-效益(万元)该系统节省经费该系统成本盈亏平衡点投资回收期 ---------成本及效益分析图
  • 30. 2018/10/172、技术可行性:对系统的性能、可靠性、可维护性以及生产率 等方面的信息进行评价。 通过技术可行性的分析,将为新系统提交技术可 行性评估。以指明为完成系统的功能和性能需要什么 技术?需要哪些材料、方法、算法、或者过程等 技术可行性分析方法--- 数学模型和优化技术、 概率和统计、排队论、控制论等方法。
  • 31. 2018/10/17可行性 论证报告1、系统概述2、可行性分析3、拟订开发计划4、结论意见
  • 32. 2018/10/172.3 可行性分析所需工具 (系流程图与系统结构图)1、系统流程图:是用来描述系统物理模型的一种传统工具。流程符号含 义流程符号含 义数据加工符号换页连接 输入/输出符号磁带符号连接点符号文档符号人工操作多文档符号
  • 33. 2018/10/17流程符号含 义流程符号含 义显示器或终端机控制流符号磁盘机或数据库流程开始与结束
  • 34. 2018/10/17 举例库存清单系统流程图库存清单程序定货报告事务定货信息结束报告生成程序零件库
  • 35. 2018/10/17人工销售教材 流程图结束学生申请购 书 购书证明检索教材 帐本是 否有该 教材购书单开购书发 票和购 书单购书发票到书库 领书
  • 36. 2018/10/17计算机售书系统流程图结束学生购书发票到书库 领书 购书单终端审查并 开发票11---学生各学期用书数据库购书单2 2---教材存量数据库
  • 37. 2018/10/17练习 设某城市招干考试成绩统计系统。 考生分三个专业,不同专业考试科目不同: 法律专业---考政治、语文、法律 行政专业---考政治、语文、行政 财经专业---考政治、语文、财经学 每个考生在报名时登记姓名、地址、年龄和报考专业。报 名后招干办公室根据专业考生专业及地址在市区或郊区来编排 准考证号码和考场。考生参加考试后,输入每个考生的各门课 程的成绩,并统计出每个考生三门课程的总成绩。按准考证号 的顺序打印出考生考试成绩单,分发给每个考生。各专业分别 将考生按成绩总分从高到低的次序排序,以便决定录取名单。 请画出由下列文字描述的系统流程图
  • 38. 2018/10/172、系统结构图:系统工程师用结构摸板开发的系统模型用户界面处理输 入 处 理维护和自测试处理和控制功能输 出 处 理 ---- 结构摸板 ----
  • 39. 2018/10/17------- 传输线的分类系统 3、系统结构环境图(ACD-Architecture Context Diagram) : ACD 可用于描述实现系统与系统运行环境之间的信息边界。
  • 40. 2018/10/17传输线 分类系统条形码 阅读器传输线分配站 操作员分配站 操作员分类机构主 机条形码线速 指示器分路 命令格式化 报告数据查 询查询及 报告诊断 数据------- 传输线分类系统的 ACD 图处理与控制功能区外部实体
  • 41. 2018/10/17 ACD 的层次结构ABC
  • 42. 2018/10/17作请画出学生成绩管理系统的 ACD 图 业
  • 43. 2018/10/17 第3 章 软件需求分析 软件需求分析是软件开发早期的一个重要阶段。它 在问题定义和可行性研究阶段之后进行。需求分析的基 本任务是软件人员和用户一起完全弄清用户对系统的确 切要求。这是关系到软件开发成败的关键步骤,也是整 个系统开发的基础。 软件需求分析阶段要求用 需求规格说明书(SRS) 来表达用户对系统的要求。规格说明书可用文字方式表 示,也可用图形表示。 本章将介绍需求分析的任务、步骤、需求分析方法 (面向数据流图分析方法、面向对象的分析方法)。
  • 44. 2018/10/17一、确定目标系统的具体要求1、确定系统的运行环境要求2、系统的性能要求 3、系统功能 3.1 需求分析的任务 硬件环境和软件环境 确定目标系统具备的所有功能
  • 45. 2018/10/17举例数据库中存放的是职工的某学校医疗费管理系统所属部门、职工号、姓名职工报销时应填写: 所属部门、职工号、姓名、日期 校内门诊、校外门诊、住院费、子女医疗费 医疗费分类: 该校规定,每年每个职工的医疗费有一个限额(如 80元),限 额在年初确定,其限额规则如下: 1、每个职工一年内报销的医疗费不超过限额时,全部报销 2、超额,则超出部分只可报销90%,其余10%由职工个人负担 3、职工子女的医疗费也有限额(如 40元)
  • 46. 2018/10/17 1、医疗费管理系统每天记录当天报销的若干职工或职工子女的医 疗费的类别、金额。 2、在当天下班前让系统自动结帐、统计当天报销的医疗费总额,供 出纳员核对。 3、每笔帐要保存备查,每天所报销的费用要和各个职工已报销的金 额累计起来,以便检查哪些职工已超额。 4、系统还要配有适当的查询功能。 5、年终结算后,下一年度开始时要对数据库文件进行初始化。 6、当职工调离本单位,职工调如本单位或在本单位内部门间调动, 数据库文件应能及时得到修改。 请完成对上述系统的 需求分析用户对系统的要求
  • 47. 2018/10/17 该系统规模不太大,可以和用户单位的其他管理系统 使用相同的计算机硬件设备、相同的操作系统和相同的关 系数据库管理系统。 如果,可以使用汉化了的数据库管理系统,但在建立 数据库结构时,凡是用英文名称来代表字段名时,则必须 在数据字典中予以说明。 1、确定系统的环境要求
  • 48. 2018/10/173、系统的功能 (1)具有表格形式屏幕的输入格式 (2)具有重复录入数据的功能 (3)具有查询和统计汇总的功能 (4)职工的调入和调出以及对数据库的初始化
  • 49. 2018/10/172、系统性能要求 (1)数据不能随意更改 2)保证数据的准确性 由于医疗费管理系统涉及到会计经费问题,数据不能 随意更改但数据输入又难免会出错。因而在每输入一个职 工的医疗费后,屏幕提示“数据有误吗?”。若是在核对时 有误,可及时更改,避免输入错误。一天报销结束时,在 数据存档前,再让出纳员核对一下经费总额,若出纳员支 出的金额总数有误时,应让计算机显示每笔帐目,供一一 仔细核对,此时在允许修改一次。当正式登帐后,数据就 绝对不允许在修改了,由此保证财务制度的严格性,保证 数据的安全性。
  • 50. 2018/10/17二、建立目标系统的逻辑模型 通常软件软件开发项目是要实现目标系统的物理模型,即 确定待开发软件系统的系统元素,并将功能和数据结构分配到 这些系统元素中。它是软件实现的基础。 但是目标系统的物理模型是由它的逻辑模型经实例化,即 具体到某个业务领域而得到的。与物理模型不同,逻辑模型忽 视机制和细节,只描述系统要完成的功能和要处理的数据。 为此,该阶段的主要任务是,借助于当前系统的逻辑模型 导出目标系统的逻辑模型,也就是解决目标系统“做什么”的问 题。
  • 51. 2018/10/17用户 调查具体模型建立系统模型的工作流程逻辑 抽象当前系统逻辑模型当前系统计算 机化评审 修改正式模型完善 细节目标系统目标系统 初始模型经认可的问题需求系统模型用户 1、建立目标系统逻辑模型的步骤
  • 52. 2018/10/17图形工具 数据流图 数据字典 2、建立目标系统逻辑模型的图形工具
  • 53. 2018/10/17 ---- 学生购买教材的具体模型 举例请建立计算机 售书系统的逻辑模型张 秘书 学 生 购书 购书 王 会计发票李 出纳领书赵 保管单申请证明书 ----学生购买教材的 逻辑模型 审查 有效性 学 生 有效购书单 开发票发票开领 书单领书单发书购书单书
  • 54. 2018/10/17 ----学生购买教材的 逻辑模型 审查并 开发票 学 生 发票购书单 各班学生用书表教材存量表无效书单开领 书单领书单 学 生 完善目标系统并补充细节,的出目标系统的正式逻辑模型
  • 55. 2018/10/17三、需求规格说明书与评审 软件需求说明书 ---- SRS(Software Requirement Specification) 主要包括以下的内容: SRS 引言 数据描述 数据流图 数据字典 功能描述 性能描述 特殊需求
  • 56. 2018/10/17一、数据流图 3.2 面向数据流的方法 ---- DFD(Data Flow Diagram) 是用来描述系统逻辑模型的一种图形工具。 数据流图从数据传递和加工的角度,以图形的方式 刻画数据流从输入到输出的移动变换过程。 DFD
  • 57. 2018/10/17储 户检验付款登录存折帐卡取款 信息办理取款手续的 DFD 图检验不合格现款付款信息取款单存折
  • 58. 2018/10/171、数据流图中的主要图形元素 ------ 转换数据流的处理过程 ---- 可以是数据库文件或任何形式的数 据组织。箭头向内则表示写入文件 或查询文件,箭头向外则表示从文 件中读取数据或得到查询结果 数据转换外部实体 ------ 位于软件系统边界之外的信息生产者 或 消费者数据流 ------ 在转换之间有向流动的数据项或数据 集合数据存储文件
  • 59. 2018/10/17---- 系统逻辑模型数据的 加工或 变换输入输出软件 系统外部实体外部实体… …外部实体外部实体… …输入 数据流输入 数据流输出 数据流输出 数据流
  • 60. 2018/10/17 ----学生购买教材的 逻辑模型 审查并 开发票 学 生 发票购书单 各班学生用书表教材存量表无效书单开领 书单领书单 学 生 外部 实体数据的 加工
  • 61. 2018/10/172、数据流图中的其它图形元素ABC ------ 有 A 则 B 或者 C,或者两者都有*ABC+ABC ------ 有 A 则 B 与 C,或者两者同时有 ------ 有 A 则 B 或 C,但不会同时有B与C
  • 62. 2018/10/17----- 标识多个数据流与加工之间关系的符号 ------ 当 A 或 B 有一个存在就有 CABC*ABC ------ 只有当 A 与 B 都存在,则有 C
  • 63. 2018/10/173、分层的数据流图 F0A0B0F11A0B0F12F13F14F15p1C1D1M1N1F21M1F22N1F23K2F24W2F25p1Y2X2第 n 层第 n+1 层第 n+2 层
  • 64. 2018/10/17人工销售教材 系统流程图学生开购书 证明购书 证明开购书 发票 发 票收书费 领书单发书学生举例
  • 65. 2018/10/17学 生教材 购销 系统购书单领书单缺书单进书通知进书通知保 管员1 销售购书单领书单学 生缺书单进书通知2 采购保 管员第 1 层第 2 层 教材存量表 F1 缺书登记表 F2外部实体外部实体
  • 66. 2018/10/17 教材销售子系统 无效书单购书单1.3 登记并开 领书单1.2 开发票1.1 审查 有效性1.4 登记 缺书1.5 补售 教材采 购学 生学 生进书通知有效书单发票领书单暂缺书单1 销售购书单领书单缺书单进书通知2 采购进书通知缺书登记表教材存量表学 生保 管员第 2 层补售 书单第 3 层 教材存量表 F1 缺书登记表 F2 F1 书号 单价 数量 各班用书表 F3 售书登记表 F4外部 项
  • 67. 2018/10/171 销售购书单领书单缺书单进书通知2 采购进书通知缺书登记表教材存量表学 生保 管员采购 子系统 第 2 层第 3 层缺书单2.3 修改教材库 存和待 购量销 售进书通知进书通知2.1 按书号汇 总缺书2.2 按出版社统 计缺书保 管员 教材存量表 F1 待购教材表 F5 教材一览表 F6 缺书登记表 F2
  • 68. 2018/10/17 . 便于实现. 便于使用 --- 采用逐步细化的扩展方法,可避免一 次引入过多的细节,有利于控制问题 的复杂度; --- 用一组图代替一张总图,方便用户及 软件开发人员阅读。4、分层 DFD 图的优点
  • 69. 2018/10/17 . 注意父图和子图的平衡5、画分层 DFD 的指导原则发票1.3 开领书单领书单(a) 父图 1.3.1学生领书单1.3.21.3.3教材(a)子图
  • 70. 2018/10/17 . 区分局部文件和局部外部项 . 掌握分解的速度 一般来说,每一个加工每次可分为 2-4个子加工,最 多不得超过 7 个。. 遵守加工编号规则 顶层加工不编号。第二层的加工编号为1,2,3,…,n号。 第三层编号为1.1,1.2,1.3…n.1,n.2…等号,依此类推。
  • 71. 2018/10/171 销售购书单领书单缺书单进书通知2 采购进书通知缺书登记表教材存量表学 生保 管员采购 子系统 第 2 层第 3 层缺书单2.3 修改教材库 存和待 购量销 售进书通知进书通知2.1 按书号汇 总缺书2.2 按出版社统 计缺书保 管员 教材存量表 F1 待购教材表 F5 教材一览表 F6 缺书登记表 F2局部 外部项局部 文件
  • 72. 2018/10/17练请画出学生成绩管理系统的 DFD 图 习
  • 73. 2018/10/17二、数据字典 ---- DD(Data Dictionary) 数据字典的任务是: 对于数据流图中出现的所有被 命名的图形元素在字典中作为一个词条加以定义,使得 每一个图形元素的名字都有一个确切的解释。DD
  • 74. 2018/10/171、数据字典的定义数据流名: 说明:简要介绍作用即它产生的原因和结果。 数据流来源:即该数据流来自何方。 数据流去向:去向何处。 数据流组成:数据结构。 每个数据量流通量:数据量、流通量。(1) 数据流词条的描述 数据流名:发票 说明:用作学生已付书款的依据 数据流来源:来自加工“审查并开发票” 数据流去向:流向加工“开领书单”。 数据流组成:学号+姓名+书号+单价总价+书费合计审查并 开发票发票购书单
  • 75. 2018/10/17数据元素名: 类型:数字(离散值、连续值),文字(编码类型) 长度: 取值范围: 相关的数据元素及数据结构 (2) 数据元素词条的描述 年 = “1900”..“3000” 月 = “01”..“12” 日 = “01”..“31” 摘要 = 1{字母}4 金额 = “00000000.01”..“999999999.99” … …
  • 76. 2018/10/17(3) 数据文件词条的描述 数据文件名: 简述:存放的是什么数据。 输入数据: 输出数据: 数据文件组成:数据结构。 存储方式:顺序,直接,关键码。 存取频率: … …审查并 开发票 学 生 发票购书单 各班学生用书表教材存量表
  • 77. 2018/10/17 加工名: 加工编号:反映该加工的层次 简要描述:加工逻辑及功能简述 输入数据流: 取值范围: 相关的数据元素及数据结构 … …(4) 加工逻辑词条的描述 1.3 审查并 开发票 学 生 发票购书单 各班学生用书表教材存量表
  • 78. 2018/10/17 名称:外部实体名 简要描述:什么外部实体 有关数据流: 数目:(5) 外部实体词条描述 1 销售购书单领书单缺书单进书通知2 采购进书通知缺书登记表教材存量表学 生保 管员
  • 79. 2018/10/172、数据字典定义符号 符号含 义例 子=被定义为+与[ ]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 中出现, 也可不出现
  • 80. 2018/10/17储 户检验付款登录存折帐卡取款 信息-------- 办理取款手续的 DFD 图检验不合格现款付款信息取款单存折练习请为下列给出的 DFD 图编写 DD
  • 81. 2018/10/17日期 年月日摘要支出存入余额操作复核户名:储蓄网点名称:帐号:开户日:性质:印密:------- 存折格式
  • 82. 2018/10/17日期 (年月日)摘要支出存入余额操作复核户名:储蓄网点名称:帐号:开户日:性质:印密:存折 = 户名+所号+帐号+开户日+性质+(印密)+1{存取行}20 户名 = 2{字母}24 所号 = “001”..“999” 帐号 = “00000001”..“99999999” 开户日 = 年+月+日 性质 = “1”..“6” 印密 = “0” 存取行 = 日期+(摘要)+支出+存入+余额+操作+复核 日期 =年+月+日 年 = “1900”..“3000” 月 = “01”..“12” 日 = “01”..“31” 摘要 = 1{字母}4 支出 = 金额 金额 = “00000000.01”..“999999999.99” … …
  • 83. 2018/10/173、数据字典的实现数据字典的实现 人工方法 自动方法将每一字典中的词条 写在一张卡片上,由 专人管理和维护利用 “字典管理程序” 在计算机中对字典进 行管理和维护。
  • 84. 2018/10/17三、加工说明 ----(Process Specification) 加工说明是:对 DFD 中每个加工给予说明。它是从 系统功能的角度对 DFD 作出了注解,与 DD 一样是DFD 必不可缺少的辅助资料。PS
  • 85. 2018/10/17加工说明组成输入 数据加工 逻辑输出 数据加工说明 描述工具结构化 语言判定 表判定 树 描述把输入数据流变 换为输出数据流的加工过 程,是加工说明的主体。
  • 86. 2018/10/17 ----学生购买教材的 逻辑模型 审查并 开发票 学 生 发票购书单 各班学生用书表教材存量表无效书单开领 书单领书单 学 生
  • 87. 2018/10/17自然语言+结构化形式结构化语言选 择 结 构如果<条件> <策略> If 如果<条件> 则 <策略1> 否则 <策略2>情况1 <条件> <策略1> … … 情况n <条件> <策略n>If then Otherwise case 1 … … case n 循 环 结 构对 … , <策略>重复以下 <策略> 直至 <条件> For each … , Repeat the following: Until
  • 88. 2018/10/17 例1: 请写出下列在 DFD 图中给出的 “统计晚婚职工” 的加工说明 Count Late -Marriage EmployeesLate-Marriage -Count Request职工名册文件Late-Marriage-List =List-Count+Name-ListName-List={Name}
  • 89. 2018/10/17 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.
  • 90. 2018/10/17 ----学生购买教材的 系统逻辑模型 审查并 开发票 学 生 发票购书单 各班学生用书表教材存量表无效书单开领 书单领书单 学 生 例2: 请为下列DFD中的“审查并开发票”加工点写 加工说明
  • 91. 2018/10/17把学生学号和姓名写到发票上 按购书单上学生的年级和系、专业与班号 检索“各班学生用书表”文件,获得该生当年的书单 对 购书单上的每一书号 如果 书单上无此书号 则 把书号写到出错通知单上 否则 按书号检索 “教材存量表”文件, 从而获得该书的单价与库存量 如果 库存量〈 购书单的数量 则 将书号写到出错通知单上 否则 将书号、单价、数量、总价等项写入到发票上; 更新存书量,并写回“教材存量表” 文件; 累计书费合计 把书费合计写到发票上对每张购书单
  • 92. 2018/10/17分房 加工婚龄中级职称晚婚正常分房优先分房不分房分房加工逻辑判断表采用表格的形式来表达 具复杂判断的加工逻辑1、一般职工婚后5年可参加分房 2、中级以上职称的职工婚后3年 可参加分房 3、符合正常分房条件的职工, 若再符合晚婚条件可优先分房
  • 93. 2018/10/17分房 加工婚龄中级职称晚婚正常分房优先分房不分房123456说 明条 件婚 龄>5年3-5年<3年 (-) 表示任意 (Y) 条件满足 (N) 条件不满足 (*) 选中的决策 中级职称-----------YN-----晚 婚YNYN---------决 策优先分房**正常分房**不分房**
  • 94. 2018/10/17判断树判断树是判断表的图形形式 其适用场合与判断表相同中 级 职 称不 分 房初婚 分房决策> 5年3-5 年< 3年优先分房非中 级职称正常分房正常分房晚 婚非晚婚晚 婚非晚婚优先分房不 分 房
  • 95. 2018/10/17“检查发货单” 的判断表1234条 件发货单金额>$500>$500<=$500<=$500赊欠情况>60天<=60天>60天<=60天决 策不发出批准书V发出批准书VVV发出发货单VVV发出赊欠报告V
  • 96. 2018/10/17作业工资管理系统 系统流程图 系统软件模型 部分数据字典一、对工资管理系统进行需求分析二、阅读教课书的 P27 页
  • 97. 2018/10/17三、把下列用文字叙述的内容请采判断表和判断树描述出来 设某旅游票预定系统中,在旅游旺季 7- 9、12月 份,如果订票超过 50张,则优惠票价的 15% ; 50张以 下,优惠5%。在旅游淡季1-6,10、11月份,若订票超 过 50张,则优惠30%;50张以下,优惠 20%。
  • 98. 2018/10/17面向对象 继承类3.3 面向对象的需求分析一、面向对象的概念 对象 消息
  • 99. 2018/10/17对 象 对象就是一个包含数据以及与这些数据有关 的操作的集合。每个实体都是对象。 对象数 据操作代码
  • 100. 2018/10/17类 是一组具有相同数据结构和相同操作的对象 集合。类的定义包括一组数据属性和在数据上的 一组合法操作。类定义可视为一个具有类似特性 与共同行为的对象摸板,可用来产生对象。 可以说,类是对象的抽象,而对象是类的具 体实例。
  • 101. 2018/10/17继承 是在一个已存有的类的基础上建立一个新 的类。并将已存在的类称为--基类或父类; 新建立的类称为—派生类或子类。继 承基 类派 生 类
  • 102. 2018/10/17对象继承了类所有属性------ 从类到对象的继承cost dimension weight location color类: furniturecost dimension weight location color对象: chair 对象、类、继承
  • 103. 2018/10/17 对象 继承类的所有属性和操作cost dimension weight location color类: furnitureBuy Sell Weight movecost dimension weight location color对象: chableBuy Sell Weight movecost dimension weight location color对象: chairBuy Sell Weight move
  • 104. 2018/10/17------ 面向对象类的表示模式类名:操作:属性:
  • 105. 2018/10/17识别对象1、标识潜在对象 找出通过分析过程中的所有名词或名词短语并合并 同义词。除去有动作含义的名词,使它们将被描述为对 象的操作。 标识规则如下:(1)、外部实体(2)、事物(3)、位置(7)、聚焦对象(5)、事件(6)、角色(4)、组织机构
  • 106. 2018/10/17二、面向对象的分析方法(OOA) Object Oriented Analysis OOA 的核心思想是利用OO的概念 和方法对软件需求建造模型,以使用户 需求逐步精确化、一致化、完全化。 为此, OOA的方法步骤为: 识别对象属性及外部服务识别类及其结构定义对象之 间的消息传递
  • 107. 2018/10/17潜在对象理由用户 传感器 控制面板 系统(SafeHome System) 传感器编号 密码 电话号码 传感器事件 警报器角色或外部实体 外部实体 外部实体 聚焦对象 概念实体 概念实体 概念实体 事件 外部实体例如:
  • 108. 2018/10/172、筛选对象 筛选对象规则如下:(1)、具有记忆自身状态的能力(2)、有意义的操作(3)、多个属性(5)、公共操作(6)、必须的需求(4)、公共属性潜在对象理由用户 传感器 控制面板 系统 ) 传感器编号 密码 电话号码 传感器事件 警报器角色或外部实体 外部实体 外部实体 聚焦对象 概念实体 概念实体 概念实体 事件 外部实体
  • 109. 2018/10/17 第四章 软件设计基础 Who 为谁设计,用户是谁?What 要解决哪些问题?Why 为什么要解决这些问题 3W
  • 110. 2018/10/174.1 软件设计过程编码测试设计信息描述功能描述行为描述其他需求总体结构设计数据设计过程设计 程序模块集成并确 认的软件------ 软件开发阶段的信息流
  • 111. 2018/10/17软件设计任务 制定规范4.2 软件设计的任务和步骤 软件系统 结构的总体设计 处理方式设计 数据结构设计 可靠性设计
  • 112. 2018/10/17软件设计方法 结构化设计方法4.3 软件设计的方法面向对象的设计方法
  • 113. 2018/10/17一、模块化设计与信息隐藏----- “模块“又称”构件”一般指用一个名字调用的一段程序4.4 软件设计基础 模块(module) 模块化设计 (modular design) 按适当的原则把软件划分为一个个较小的、相关而又相对独立的模块。 逻辑 功能 状态
  • 114. 2018/10/171、分解(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) Magical Number Seven,Plus or Minus Two,Some Limits on Our Capacity for Processing Information The Psychological Review,1956 G.A. Miller奇妙的数字 7+2,人类信息处理能力的限度
  • 115. 2018/10/17C(P1+P2)>C(P1)+C(P2) E(P1+P2)>E(P1)+E(P2)软件工程基本定理最小成本区 M模块成本接口成本总成本软件 开发 工作 量 模块数
  • 116. 2018/10/17 每个模块的实现细节对于其他模块来说是隐藏的。 也就是说,模块中所包含的信息是不允许其他不需要 这些信息的模块使用的。 2、信息隐藏(information hiding)栈stack置空栈 makenull进栈 push退栈 pop
  • 117. 2018/10/173、模块的独立性(module independence) 模块的独立性是指软件系统中每个模块只 涉及软件要求的具体的子功能,而和软件系统 中其他模块的接口是简单的。耦合 模块之间的 相对独立性 的度量。 内聚 模块功能强 度的度量。
  • 118. 2018/10/17(1)、内聚(Cohesion)低功能 内聚信息 内聚通信 内聚过程 内聚时间 内聚逻辑 内聚巧合性内聚 高强弱 内聚性模块独立性
  • 119. 2018/10/17 偶然性内聚 M STORE RECN() TO N READ MASTRE FILE ADD 1 TO X 。。。 。。。 ABC 当模块内各部之间没有联系,或者即使有联 系,这种联系也很松散。则称这种模块为巧合内 聚模块。
  • 120. 2018/10/17 逻辑性内聚 这种模块是把几种功能组合在一起,每次 调用时,则由传递给模块的判定参数来确定该 模块应执行哪一种功能。 调用模块判定 读 一 个 记 录 写 一 个 记 录 被调用模块
  • 121. 2018/10/17SXYZWABCDSXYZW ABCD
  • 122. 2018/10/17 信息性内聚 这种模块能完成多个功能,各个功能都在同 一数据结构上操作,每一项功能有一个唯一的入 口点。 符 号 表查找登录删除修改
  • 123. 2018/10/17 功能性内聚 如果一个模块内所有成分都完成一个功能 则称这样的模块为功能模块。 主控模块录入查询打印低功能 内聚信息 内聚通信 内聚过程 内聚时间 内聚逻辑 内聚巧合性内聚 高强弱 内聚性模块独立性
  • 124. 2018/10/17(2)、耦合 耦合性是程序结构中各个模块之间相互关联的度量 它取决于各个模块之间接口的复杂程度、调用模块的方 式以及那些信息通过接口。低非直接 耦合数据 耦合标记 耦合控制 耦合外部 耦合公共 耦合内容 耦合 高弱 强耦合性模块独立性
  • 125. 2018/10/17 公共耦合 允许一组模块访问同一全局性的数据结构。全局 数据区 ABCDEFB、C、E 为公共耦合
  • 126. 2018/10/17 控制耦合 如果一个模块通过传送开关、标志、名字 等控制信息,明显地控制选择另一模块的功能 就是控制耦合。A 模块flagf1Bf2fn… …
  • 127. 2018/10/17 以上给出了 7种耦合类型,这只是从耦合 的机制上所做的分类,按耦合的强弱程度的排 列只是相对的关系。但它给设计人员在设计程 序结构时提供了一决策准则。实际上,开始时 两个模块之间的耦合不只是一种类型,而是多 种类型的混合。这就要求设计人员按照实际情 况进行分析、比较和分析,逐步加以改进,以 提高模块的独立性。
  • 128. 2018/10/174.5 结构化设计方法(SD-- Structured Design) 结构化设计方法是基于模块化、自顶向 下细化、结构化程序设计等程序设计技术基 础发展起来的。 它所提供的方法和原则,主要是用来指 导软件的概要设计。它还提供了一种 “结构 图” 的描述工具,是专门用来描述软件的总 体结构的。
  • 129. 2018/10/17 结构化设计属于面向数据流 的设计方法。 在软件的需求分析阶段,数据流是软件开发人员考虑问题的出 发点和基础。数据流从系统的输入端向输出端,则要经历一系列的 变换或处理。用来表现这个过程的数据流(DFD),实际上就是软件 系统的逻辑模型。 面向数据流的设计要解决的任务,就是在上述需求分析的基础 上,将DFD图 映射(Mapping)--- 软件系统的结构。 换句话说,这类设计方法,允许把用 DFD图表示的系统逻辑模 型,很方便地转换成对于软件结构的初始设计描述。 结构化设计方法中,软件的结构一律用 SC 图来描述。
  • 130. 2018/10/17结构化设 计的目的 使程序的结构尽可能反 映要解决的问题的结构结构化设 计的任务 完成目标系统的— 系统结构图(SC)
  • 131. 2018/10/17目标系统的DFDSC 图 --- Structured Chart 该图常用来表示系统的软件结构。利用它可以清楚地表达软件结构中模块间的层次调用关系和模块之间的联系。 SD目标系统的SC
  • 132. 2018/10/17ASC 图中的主要内容1、模块--在SC图中用矩形框表示,并用名字来标记它-- 模块调用关系2、模块的调用关系和接口B调用模块调用模块A(查询学生)B(查找学生记录)数据信号控制信号学 号查找成功信号-- 模块间接口的表示
  • 133. 2018/10/17产生最佳解得到好的输入计算最佳解输出结果读输入编辑输入好输入好 输 入解解原始 输入原始 输入编辑 结果结果格式化显示结果解格式化 的解SC 图的一般格式
  • 134. 2018/10/171、在系统结构图中的模块一、典型的系统结构形式原子模块: 在系统结构图中通常是指不能再分割的 底层模块 完全因子分解系统 如果一个软件系统,它的全部实际加工 (即数据计算或处理)都是由底层的原子模块来 完成,而其它所有非原子模块仅仅执行控制或 协调功能。
  • 135. 2018/10/17传入模块AA传入模块 从下属模块取得数据,进行某些处理,再将其结果 传给上级模块。在此,将它传送的数据流称为逻辑输入 数据流。 在系统结构图中有四种类型的模块:逻辑输 入数据流成绩 处理成绩录入
  • 136. 2018/10/17传出模块 从上级模块获得数据,进行某些处理,再将其结果 传给下属模块。在此,将它传送的数据流称为逻辑输出 数据流。 传出模块DD逻辑输 出数据流成绩 处理成绩输出
  • 137. 2018/10/17变换模块 也叫加工模块。它是从上级模块获得数据,进行 特定的处理,将其转换为其他形式,再传回上级模块 它所加工的数据流叫做变换数据流。 变换模块CB变换 数据流审查并 开发票发票购书单
  • 138. 2018/10/17协调模块 对所有下属模块进行协调和管理的模块。在一个 好的系统结构图中,协调模块应在较高层出现。协调模块YXYX
  • 139. 2018/10/172、典型的系统结构形式之一(变换型系统结构图)取得 数据iaeo变换 数据给出 数据传入部分变换中心传出部分-------- 具有变换型数据流图
  • 140. 2018/10/17主模块C变换成D取得C给出D取得BB变换成CD变换成E给出E取得AA变换成BAABBBCCDCDED取得 数据CD变换 数据给出 数据协调模块变换模块传出模块-------- 具有变换型系统结构图DFD--SC
  • 141. 2018/10/173、典型的系统结构形式之二(事务型系统结构图)“事务” 引起、触发或启动某一 动作或一串动作的任何数据 、控制信号、事件或状态的 变化。 由它接受一项事务,根据事务处理的特点和性质 选择分配一个适当的处理单元,然后给出结果。
  • 142. 2018/10/17输入------ 事务型 数据流图1ABC3DEFGH24567中心变换输出逻辑 输入物理 输入逻辑 输出物理 输出
  • 143. 2018/10/171ABC3DEFGH24567MT3逻辑输入逻辑输出CDCD,E,F456------ 事务型 数据流图(DFD)------ 事务型 系统结构图(SC)
  • 144. 2018/10/17事务中心输入已分 析的作业内部表示的作业结果------ 事务型系统结构(层次)图输出结果调度作业 信息读入作业分析作业事务1事务2事务3事务4操作2操作3 操作4 操作5操作6操作1细节2细节3 细节4 细节5细节6细节1细节7结果
  • 145. 2018/10/17------简化的事务型系统结构图事务中心得到作业 作业结果输出结果分析调度事务1事务2事务3
  • 146. 2018/10/17二、从 DFD 图导出 SC图的步骤开 始细化修改SRS中 的DFD图判断DFD图的结构类型 是变换型吗?F事务分析变换分析完善SC 图T对最终的SC 图进行评审结束
  • 147. 2018/10/171、变换分析----是将具有变换型的DFD图导出SC图变换 分析 从物理输入、物理输出及 变换中心进行由顶向下的分解 得出各个分支的所有组成模块 在数据流图上区分系统的 逻辑输入、逻辑输出和变换中 心部分,并标出它们的分界。 进行一级分解,设计系统 模块结构的顶层和第一层。 进行二级分解,设计中、 下层模块。
  • 148. 2018/10/17(1)在 DFD 图上标出逻辑输入、逻辑输出和变换中心的分界AeBaCbDcEdPQRwuvwuvrp变换中心c,e 逻 辑输入w,u 逻 辑输出-------- 具有变换型数据流图
  • 149. 2018/10/17(2) 完成第第一级分解AabcPwuvrpBCDdeEQRWUVMcMAMTMEC,eC,eU,wU,w变换中心顶层第一层第一级分解后的 SC 图协调模块YXYX
  • 150. 2018/10/17AabcPwuvrpBCDdeEQRWUV第一级分解后的 SC 图(另一种画法)McMA1ME1C eU MA2QPRME2e c,p pr r w,uw
  • 151. 2018/10/17(3) 完成第第二级分解AabcPwuvrpBCDdeEQRWUVMA变换中心对逻辑输入的分解CEBADabdeccbaABCMAEDde 逻辑输入模块的调用与执行过程
  • 152. 2018/10/17MACEBADabdecMAGet CGet EBtoCAtoBDtoEaecReadDGet BRead Ac,eabbbcde
  • 153. 2018/10/17AabcPwuvrpBCDdeEQRWUVME变换中心对输出的分解WUVvuwMTQPR eC,prU,w对变换中心加工的分解 prw,u
  • 154. 2018/10/17MACBAEDMTQPR从变换分析导出的初始 SC 图MEWUVMCc, eW,uW,uC,e(4) 获得完整的 SC 图
  • 155. 2018/10/17运用变换分析方法建立系统的SC时需注意以下几点: 模块设计的次序时,应遵循对一个模块 的全部直接下属模块都设计完成后,再转向 另一个模块的下层模块的设计。 在设计下层模块时,应考虑模块的耦合 和内聚问题,以提高设计初始SC图的质量。 注意“黑盒”技术的使用。
  • 156. 2018/10/17主模块ABCA1A2A3A11A12A13
  • 157. 2018/10/17低功能 内聚信息 内聚通信 内聚过程 内聚时间 内聚逻辑 内聚巧合性内聚 高强弱 内聚性模块独立性低非直接 耦合数据 耦合标记 耦合控制 耦合外部 耦合公共 耦合内容 耦合 高弱 强耦合性模块独立性 具有高内聚低耦合的模块 才是模块独立性比较强的模块。
  • 158. 2018/10/17 具有高内聚低耦合的模块 才是模块独立性比较强的模块。模块A模块D模块C模块B非直接 耦合通过参数表 传递数据 (数据耦合)通过参数表 传递数据结构 (数据耦合) 具有松散型 的耦合类型
  • 159. 2018/10/17请将上列给出的具有变换型的DFD图导出它的SC图练习A1A2a1a2P B b1C1c1C2c1p1P2
  • 160. 2018/10/172、事务分析----是将具有事务型的DFD图导出SC图IALMNOBCDEFGH事务中心事务源
  • 161. 2018/10/17IALMNOBCDEFGH主模块给出H取得ALMNA GHBECF D
  • 162. 2018/10/17发送部分请将下列给出的采购子系统 DFD 图转换成SC图练习2.12.22.3书库 保管员F2F1F5F6F7加工名称: 2.1 按书号汇总缺书 2.2 按出版社汇总缺书 2.3 修改教材库存和待 购量文件名称: F1 教材存量表 F2 缺书登记表 F5 待购教材表 F6 教材一览表 F7 进书登记表
  • 163. 2018/10/17发送部分采 购按书号 汇总缺书 登记表统计缺书登记进书按出版社 汇总打印 缺书单修改 教材存量表修改 教材待购量统计 命令登记 命令待购 教材表暂缺 书单暂缺 书单进书 通知进书 通知------ 采购子系统的 SC 图 -------缺书登记表={班号+姓名+书号+数量}
  • 164. 2018/10/17三、软件模块结构的改进一、 模块功能的完善化执行指定的功能部分出错处理的部分。
  • 165. 2018/10/17 二、 消除重复功能,改善软件结构。完全相似局部相似
  • 166. 2018/10/17XYR1R2物理 输入相似部分XYR1 R2RX+R1 Y+R2R相似模块的各种合并方案的示意图
  • 167. 2018/10/17 三、 模块的作用范围应在控制范围之内。作用范围:是一个与条件判定 相关联的所有模块。控制范围:包括模块本身及其 所有的从属模块(即供它调用 的模块)。
  • 168. 2018/10/17模块的控制范围:包括模块本身及其所有的从 属模块(即供它调用的模块)。ABDCEFG关于模块的控制范围示意图
  • 169. 2018/10/17 一个模块的作用范围,是指受这个模块中的 判定所影响的模块 。 关于模块的作用范围/控制范围的关系示意图 TopABCDEGG DBC控制 耦合
  • 170. 2018/10/17TopCDEB2BDG C 理想的情况,应该使判定的作用范围和判定所在模块的控制范围 尽可能地吻合(即应使模块的作用范围尽可能地在控制范围之内)。符合作用范围/控制范围的理想判定位置DCGBA  对于一个理想 SC图 中的模块设计, 所有受到 一个判定影响的模块应该 都从属该判定所在的模块 ,最好位于作出判定的那 个模块本身及它的直接下 属模块。
  • 171. 2018/10/17计算 实发工资取得 工资数据计时工人 实发工资计薪工人 实发工资编外人员 实发工资计时制 工资额税收 扣款薪金制 工资额常规 扣款编外人员 工资编外人员 税款编外人员 扣款
  • 172. 2018/10/17 四、 尽可能地减少高扇出结构,随着深度增大扇入。扇入:指模块的上级模块数。 (即共有多少个模块需要 调用这个模块)扇出:指模块调用其下属模块 数目。 调用的下属模块数应控制在 小于3-4个模块。MM
  • 173. 2018/10/17PPP1P2QQ1Q2Q3Q
  • 174. 2018/10/17 五、 模块的大小要适中。50-100 模块的大小,可以用模块 中所含语句的数量的多少来衡 量。
  • 175. 2018/10/17 六、应设计出功能可预测的模块,但要避免过分受限制的模块。 A
  • 176. 2018/10/17发送部分ABABBCT3T2T1CDDEEHFJHKKLLMB1B2B3C1C2C3DEFGHJKLM请将下列给出的 DFD 图转换成SC图作业
  • 177. 2018/10/17发送部分请完成下列描述的DFD图,导出它的SC图练习 美国某大学共有200名教师,校方与工会刚刚签定一 项协议按照协议,所有年工资>=$26,000的教师工资将保 持不变,年工资<$26,000的教师将增加工资, 所增加的 工资数按下述方法计算: 给每个由此教师所赡养的人(包括教师本人) 每年补 助$100,此外,教师满一年工龄的再多补助$50,但是增 加后的年工资总额不能多于$26,000。 教师的工资档案储存在行政办公室的磁带上, 档案 中有目前的年工资、赡养人数、雇用日期等信息。
  • 178. 2018/10/17发送部分12341656789101215141311abcdefghijklnopm**请将上列给出的 DFD图导出它的SC图作业
  • 179. 2018/10/17 第五章 详细设计描述的工具5.1 详细设计阶段的目的与任务 详细设计的目的: 为软件结构图 (SC) 中的每一个模块确定采用的算法和模块内 数据结构,用某种选定的表达工具给出清 晰的描述。 详细设计阶段的主要任务: 编写软件 的 “详细设计说明书” c
  • 180. 2018/10/17需求分析问题定义可性行研究计划 时期概要设计详细设计编 码 测 试开发 时期运行与维护运 行 时 期
  • 181. 2018/10/17详细设计阶段的主要任务为每一模块确定算法确定每一模块使用的数据结构确定模块的外部接口和用户界面为每一模块设计一组测试用例
  • 182. 2018/10/17描述工具程序流程图N-S 图PAD 图PDL 伪代码5.2 详细设计阶段的描述工具
  • 183. 2018/10/17A1、顺序型一、程序流程图 B几个连续的加工依次序排列expFTA B2、选择型 由某个判断式的取值 决定选择两个加工中的一 个。
  • 184. 2018/10/173、当型循环型 当循环控制条件成立时,重复执行特定的加工。expFTS4、直到型循环型 重复执行特定的加工,直到循环控制条件成立时。 expFTS
  • 185. 2018/10/175、多情况选择型 列出多种加工 情况,根据控制变 量的取值,选择执 行其一。exp=1FTS1exp=2exp=nS2TSnTFF
  • 186. 2018/10/17----- 具有嵌套形式的程序流程图X1FTaX4cTfTFF入口bX2X3deghiX5X6FTFT=1=2=3
  • 187. 2018/10/17 标准化程序流程图规定符号X1 起止端点 输入/输出 一般处理 准备或预处理 预定义处理 条件判断 循环上界 循环下界 文件或文档 外接 内接 流程线虚线 省略线 并行方式 注解或注释
  • 188. 2018/10/17 流程符号的使用规则 1、循环符号的使用 循环名 进入循环条件循环体 循环名 i=1,100 S=S+i i S=0S=S+iS=0,i=1i >100i=i+1 F T循环体 ----- 循环流程符号的使用
  • 189. 2018/10/17 2、判断有一个入口,但也允许有多个可选出口A:B A=B ABX=? x=1 x=2 x=3 x=4X=? =1 =2 =3 =4 =5 ----- 多出口判断流程符号的使用
  • 190. 2018/10/17 请利用程序流程图描述下列问题的程序结构 练习 某汽车修配厂,有一个存有汽车零件的 仓库,其中存有若干种零件,请编写一个查 询程序,用于查询该库中某零件的库存量为 多少。 设该模块为 查询模块。请设计该模块的 程序结构。具体要求: 1、应具有重复查询功能; 2、应具有数据检测功能; 3、请利用程序流程图描述该模块的算法。
  • 191. 2018/10/17 顺序型二、N-S 图A B 选择型------- Nassi and Shneideman BpFTA ApFTp=1=2…=n A1 A2 … An do while(p) S do until (p) S 当型循环型 直到型循环型 多分支选择型
  • 192. 2018/10/17零件号100011000210003100041000510006库存量100012508866920203450建立零件库 (s数组), i=0 输入零件号 x do while(x!=s[0][i])i++i++x==s[0][i]) Y N s[0][i] 输出 s[1][i] 输入错误!继续查询? Y N跳出循环
  • 193. 2018/10/17三、PAD 图 直到型循环型A BAB pA pWhile P SUntil P S 当型循环型 顺序型 选择型A1 pA2An =1 =2 =n 多分支选择型循环型------- Problem Analysis Diagram
  • 194. 2018/10/17s[17]~s[22]=0while num(1-1000) 输入 age age =17 s[17]++ s[18]++ =18 s[19]++ =19 s[20]++ =20 s[21]++ =21 s[22]++ =22while i(17-22) 输出 s[i]beginend举例
  • 195. 2018/10/17练习 请为学生成绩管理系统中的学生成绩统计模块 设计程序结构。 要求: 1、统计各专业、各班级的高等数学平均分; 2、并将统计结果输出; 3、按平均成绩以班级为单位由高到低排序; 4、请利用PAD图描述该模块的算法。
  • 196. 2018/10/17四、PDL------- Program Ddesign LanguagePDL 是一种用于描述功能模块的算法设计和加工细节的语言。称为设计程序用语言。它是一种伪代码(Pseudo code) PDL-----关键词+自然语言
  • 197. 2018/10/17(1)、数据说明:格式: TYPE <变量名> AS <限定词1> <限定词2>其功能是定义数据的类型和作用域说明: 1. 变量名:是一个模块内部使用的变量或模块间共用 的全局变量名。 2. 限定词1 :标明数据类型 3. 限定词2 :标明该变量的作用域 TYPE number AS STRING LENGTH (12)
  • 198. 2018/10/17(2)、程序块:PDL的过程成分是由块结构构成的,而块将作为 一个单个的实体来执行。 BEGIN <块名> < 一组伪代码语句> END
  • 199. 2018/10/17(3)、子程序结构:把 PDL 中的过程称为子程序。 PROCEDURE <子程序名> <一组属性> INTERFACE <参数表> < 程序块或一组伪代码语句> END
  • 200. 2018/10/17(4)、基本控制结构: IF <条件> THEN <程序块/伪代码语句组>; ELSE <程序块/伪代码语句组>; ENDIF --- 选择型结构
  • 201. 2018/10/17 DO WHILE <条件描述> <程序块/伪代码语句组>; ENDDO REPEAT UNTIL <条件描述> <程序块/伪代码语句组>; ENDREP --- 重复型结构
  • 202. 2018/10/17 DO LOOP <条件描述> <程序块/伪代码语句组>; EXIT WHEN ENDLOOP DO FOR <下标=下标表,表达式> <程序块/伪代码语句组>; ENDFOR --- 重复型结构
  • 203. 2018/10/17 ----- 多路选择结构 CASE OF ; WHEN < case 条件1> SELECT <程序块/伪代码语句组>; WHEN < case 条件2> SELECT <程序块/伪代码语句组>; … … DEFAULT: < 缺省或错误case: <程序块/伪代码语句组>; ENDCASE
  • 204. 2018/10/17 READ/WRITE TO <设备> --- 输入/输出结构
  • 205. 2018/10/17 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 A Max=A(1) DO for I=2 to N IF Max
  • 206. 2018/10/17 设某模块的功能是:读入任意长的 一段英文课文,将其分解为单字。然后 输出一个单词表,并指出每个单词在课 文中所出现的次数。 练习请按下列给出的文字要求,用 PDL 描述其该模块的算法
  • 207. 2018/10/17 … … execute process a REPEAT UNTIL condition X8 execute process b IF condition X1 THEN BEGIN execute process f IF condition X6 THEN REPEAT UNTIL condition X7 execute process i ENDREP ELSE BEGIN execute process g execute process h END ENDIF END 练习请将下列的 PDL 表示的某模块的过程性描述, 改为用:1、N-S 图 2、PAD 图表示
  • 208. 2018/10/17 ELSE CASE OF Xi WHEN condition X2 SELECT DO WHILE condition X5 execute process C ENDDO WHEN condition X3 SELECT process d WHEN condition X4 SELECT process e ENDCASE ENDIF ENDREP execute process j END
  • 209. 2018/10/17第六章 程序编码 编码的目的: 是使用选定的程序设计 语言,把模块的过程性描述翻译为用该语 言书写的源程序(源代码)模块的过程性描述 (不可执行的) 源程序 (可执行的)编码6.1 编码的目的
  • 210. 2018/10/17清晰性效率开发 时间程序输出内存数语句数程序可读性最佳 输出可读性最佳 占内存最小 语句数最少 开发时间最短1-2 1-2 4 5 32 1 4 3 33 5 1 2 43 5 2 1 44 2-3 5 2-3 1编码要求结果 名次评判 项目Winberg 的程序实验结果
  • 211. 2018/10/17 结构化程序设计是一种设计程序的技术,它采用 自顶向下逐步细化的设计方法和单入口(Single entry) 单出口(Single exit)的控制结构。 这种控制结构包 括有: 顺序、选择和循环。 6.2 结构化程序设计 (Structured Programming)
  • 212. 2018/10/17 … … for(a=1,b=1;a<=100,a++) { if (b>=20) break; if (b%3==1) { b+=3; continue; } b-=5; } … …a<=100FTb>=20b%3==1 b+=3 a++ b-=5TFFT a=0,b=1单入口M1单出口
  • 213. 2018/10/17A
  • 214. 2018/10/17无节制地使用了GOTO语句所产生的程序流程 M
  • 215. 2018/10/17 一、结构化程序设计的原则1、使用语言中的顺序、选择、重复等有限的基本控制结构表示程序 2、选用的控制结构只准许有一个入口和一个出口 3、程序语句组成容易识别的块(Block),每块只有一个入口和一个 出口 4、复杂结构应该用基本控制结构进行组合嵌套来实现 5、严格控制GOTO语句
  • 216. 2018/10/17 … … 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)0) { X0=Xm; F0=Fm;} else X1=Xm; } finish: printf(“%d\n”,Xm); }
  • 217. 2018/10/17Begin(F0*F1)<=0 X0=a X1=b i=1 Xm=(X0+X1)/2 Fm=F(m) Q(F0*Fm)>0 X0=Xm X1=Xm F0=Fm TTXmFTFF F0=F(a) F1=F(b)11End22 i<=n i Q=abs((Fm)
  • 218. 2018/10/17 … … 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)0) { X0=Xm; F0=Fm;} else X1=Xm; } printf(“%d\n”,Xm); }
  • 219. 2018/10/17 … … 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)0) { X0=Xm; F0=Fm;} else X1=Xm; i++; } printf(“%d\n”,Xm); }
  • 220. 2018/10/17二、程序设计自顶向下,逐步求精1、程序设计是一个由粗到细的 “渐进” 的过程 2、程序设计不仅包括对控制结构的设计,也包括对数据结构的设计。 二者都要一步一步地细化。 采用逐步细化方法设计程序的步骤列出问题的初步解分解主要问题 继续细化利用图形工具或伪代码 描述程序的详细逻辑
  • 221. 2018/10/17用逐步细化方法设计一个程序,其功能为 “从一组数中找出最大的数 ” 举例第一步:列出问题的初步解1:输入一组数2:找出其中最大的数3:输出最大的数
  • 222. 2018/10/17第二步:分解主要问题2.1:首先读入一个数并设其为最大的数2.2:将该数逐次与其它数进行比较2.3:若有大于该数的则将其保存
  • 223. 2018/10/17第三步:确定数据结构3.1:定义一数组 A3.2:max=A(1)3.3:从A(2)至A(n)开始比较3.4:若当前数大于max, 则令:max=A(I)
  • 224. 2018/10/17第四步:用PDL描述Input array A Set Max=A(1) DO for I=2 to N IF Max
  • 225. 2018/10/17练习 请用逐步细化方法设计一由下列描述 的程序结构 读入一段任意长度的英语课文,将其分解为单字,然后输出 一张单词表(list of words),并指出每种单词在课文中的出现次数。
  • 226. 2018/10/17三、程序复杂性的度量 程序复杂性主要是指模块内部程序的复杂性。它 直接关系到软件开发费用的多少,开发周期的长短和 软件和软件内部潜伏错误的多少。同时它也是软件可 理解性的另一种度量。
  • 227. 2018/10/17 它可以用来计算任何一个程序的复杂性; 对于不合理的程序,例如对于长度动态增长的程序, 或者对于原则上无法排错的程序,不应当使用它进行 复杂性计算; 如果程序中指令条数、附加存储量、计算时间增多, 不会减少程序的复杂性。为了度量程序复杂性,要求复杂性度量应满足以下假设:
  • 228. 2018/10/17 如果设每行代码的出错率为每100行源程序中可能的 错误数目。例如,每行代码的出错率为 1%,也就是说, 每 100 行源程序中就可能有一个错误。 1、代码行度量法:统计程序中的源代码的行数较小的程序 ---1.3%~1.8%/行较大的程序 ---2.7%~3.2%/行
  • 229. 2018/10/17 该方法是利用程序模块的程序图中环路的个数,来 计算程序的复杂性的。为此,该方法也称为环路复杂度 计算法。 2、McCabe 度量法:利用程序的控制流来度量程序的复杂性 它是一种退化了的程序流程图。即:把程序流程图中每个处理符号都退化成一个结点,而原来流程图中的流程线,则变成连接不同结点的有向弧。
  • 230. 2018/10/17(1)程序图符号
  • 231. 2018/10/17
  • 232. 2018/10/17TC1C2CABED(2)从流程图导出程序图 A开始C1BCED结束C2TF
  • 233. 2018/10/17(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=3McCabe 的环路复 杂性度量值为 3
  • 234. 2018/10/17练习请将右侧给出的 程序流程图转换 为程序图并计算 其环路值。a<=100FTb>=20b%3==1 b+=3 a++ b-=5TFFT a=0,b=1
  • 235. 2018/10/17 程序的环路复杂度则取决于程序控制流的复杂度,也就 是取决于程序结构的复杂程度。当程序内分支或循环个数增 加时,则相应地环域复杂度也随之增加。因此,它是对测试 难度的一种定量度量,也能对软件最终的可靠性给出某种预 测。(4)、环路复杂度的用途V(G)<=10
  • 236. 2018/10/17练习 请用程序流程图描述下列问题的算法,再将其转换为 程序图并计算其环路值。 请定义一个数组a,要求找出数组中最大数和最小 数,并把最大数和 a[0] 中的数对调、最小数和a[1] 中的数对调。
  • 237. 2018/10/17练习 请画出下列伪代码程序的流程图、程 序图并计算它的环路复杂度。 LOOP : Do While Z>0 A=A+1 IF A>10 THEN X=A ELSE Y=Z END IF IF Y<5 THEN PRINT X,Y ELSE IF Y=2 THEN GOTO LOOP ELSE C=3 END IF END IF G=H+R END DO IF F>0 THEN PRINT G E LSE PRINT K END IF STOP
  • 238. 2018/10/17四、程序效率 程序效率是指程序的执行速度及程序占用 的存储空间。程序编码是最后提高运行速度和 节省存储机会,因此在此阶段不能不考虑程序 的效率。
  • 239. 2018/10/171、算法对效率的影响源程序的效率与详细设计阶段确定的算法的效率 有着直接的关系。当我们把详细设计翻译并转换 成源代码之后,那么算法效率就会反映为程序的 执行速度和存储容量的要求
  • 240. 2018/10/17(1)在编程序前,尽可能化简有关的算术表达式和逻辑表达式(2)仔细检查算法中的嵌套的循环,尽可能将某些语句或表达 式移到循环外面(3)尽量避免使用多维数组(4)尽量避免使用指针和复杂的表(5)不要混淆数据类型,避免在表达式中出现类型混杂(6)尽量采用整数算术表达式和布尔表达式(7)选用等效的高效率算法转换过程中的指导原则是:
  • 241. 2018/10/17 ∑∑ (i+1)² (j+2) 20 3 i=1 j=1举例请设计求解下列问题的算法
  • 242. 2018/10/17main() { int i,j; float sum; sum=0.0; for(i=1;i<=20;i++) for(j=1;j<=3;j++) sum=sum+(i+1)*(i+1)*(j+2); printf(“sum=%d\n”,sum); } ∑∑(i+1)² (j+2) 20 3 i=1 j=1 内循环次数 20X4=80 外循环次数 21 总循环次数 101
  • 243. 2018/10/17main() { int i,j; float sum; sum=0.0; for (j=1;j<=3;j++) for (i=1;i<=20;i++) sum=sum+(i+1)*(i+1)*(j+2); printf(“sum=%d\n”,sum); }应把变化范围大的循环变量放在内层。 内循环次数 3X21=63 外循环次数 4 总循环次数 67
  • 244. 2018/10/17main() { int i,j; float sum; sum=0.0; for (j=1;j<=3;j++) for (i=1;i<=20;i++) sum=sum+(i+1)*(i+1)*(j+2); printf(“sum=%d\n”,sum); } j+2 共计执行了 3X20=60次
  • 245. 2018/10/17main() { int i,j; float sum; sum=0.0; for (j=1;j<=3;j++) { k=j+2; for (i=1;i<=20;i++) sum=sum+(i+1)*(i+1)*k; } printf(“sum=%d\n”,sum); } j+2 共计执行了 3次 减少了57次应尽量把与循环变量无关的运算移到循环外去。
  • 246. 2018/10/17main() { int i,j; float sum; sum=0.0; for (j=1;j<=3;j++) { k=j+2; for (i=1;i<=20;i++) sum=sum+(i+1)*(i+1)*k; printf(“sum=%d\n”,sum); } i+1 共计执行了 60X60=120次
  • 247. 2018/10/17main() { int i,j; float sum; sum=0.0; for (j=1;j<=3;j++) { k=j+2; for (i=1;i<=20;i++) { m=i+1; sum=sum+m*m*k; } printf(“sum=%d\n”,sum); } i+1 共计执行了 60次
  • 248. 2018/10/17练习 从键盘输入 10个整数,要求按有小到大 的顺序将它们输出。 请采用比较交换法和选择法对上述10条 数据进行排序,然后分别对这两种方法进行 比较,并从程序的运行了效率的角度对两个 程序进行比较。
  • 249. 2018/10/17 main() { int a[10],i,j,t; for(i=0;i<10;i++) scanf(“%d”,&a[i]); for(i=0;i<9;i++) for(j=i+1;j<10;j++) if(a[j]
  • 250. 2018/10/17 … … for(i=0;i<9;i++) { k=i ; for(j=i+1;j<10;j++) if(a[j]j) { t=a[j];a[j]=a[k];a[k]=t;} } … …
  • 251. 2018/10/17五、程序设计风格 Coding style 1、保持控制流的直线性 (1)、对多入口和多出口的控制结构 要作适当的处理 … … If C1 then goto 30 S2 20 If C2 then goto 40 goto 10 S1 goto 20 40 Sn C1S1S2C2SnTT多入口循环结构
  • 252. 2018/10/17 If C1 then S1 else S2 While (not C2) do S2 C1S1C2SnTTS2S2改进后的循环结构重复环节法
  • 253. 2018/10/17 10 if (not C1) then goto 20 if (not C2) then goto 30 S1 goto 10 20 S2 30 Sn 多出口循环结构C1S2TTC2S1Sn
  • 254. 2018/10/17 while (C1 and C2) do S1 If (not( C1) then S2 Sn 经过处理后的单出口循环结构C1 and C2S2TC1S1SnT逻辑分析法
  • 255. 2018/10/17 while (C1) do Begin S1 If C2 then goto 10 else S2 End 10 Sn EXIT:=false while (C1 and (not EXIT)) do Begin S1 If C2 then EXIT:=true else S2 End 10 Sn 标志变量法标志变量breakExit doExit for
  • 256. 2018/10/17 SUM=0 Do input x if x=0 then exit do SUM=SUM+x loop until SUM>1000 Print SUM 使用 Ture Basic 语言中的专用语句退出循环上面程序的功能是:从键盘输入一个数,并累加 到总和中。当总和超过1000或输入为 0时则停止 输入,并打印出总和。
  • 257. 2018/10/17if (N>=0) then if (N能被2整除)then print “正偶数” else print “负数” 导致二义性的 then-if 结构(2)、避免使用模糊或费解的结构 if (N<0) then print “负数” else if (N能被2整除) then print “正偶数”
  • 258. 2018/10/17 While C1 If C2 then While C3 If C4 then Repeat S Until C5 Loop Loop … …. 费解的 深层嵌套 结构嵌套层最好不要超过3层
  • 259. 2018/10/17 二、保持控制流的局部性 局部性是程序设计的一条准则。像应用甚广的 模块化设计,可看成是局部化原理在总体设计中的 具体体现。其实,在编码时也要遵守局部化的原则 ,这就是保持控制流的局部性,其目的不仅是为了 提高程序的清晰度,也有利于防止错误的扩散,提 高程序的可修改性。
  • 260. 2018/10/17 1、GOTO 语句的使用准则 向前不向后的规则 … … while (C1>0) { S1=S1+C1; if (S1>1000) goto label; … … } … … label: S2=a+b; … …
  • 261. 2018/10/17 goto的目的地最好在同一 控制结构内部,或者离本结构 出口相近的地方。 … … 10 IF(.NOT. C) GOTO 20 S GOTO 10 20 CONTINUE … … while(C1) do Begin S1 if C2 then goto 10 End 10 Sn 12
  • 262. 2018/10/17C1C2C3TTTFe1e2e3 2、GOTO 语句的常见用法 请将右侧的具有多个循 环出口的结构改写为单出口 结构
  • 263. 2018/10/17C1C2C3TTTFe1e2e3(用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 {后续语句}标志变量
  • 264. 2018/10/17 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语句提前退出循环) 方法二:
  • 265. 2018/10/17IF (X .LT. Y) GOTO 30 IF (Y .LT. Z) GOTO 50 SMALL=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 (y
  • 266. 2018/10/17MAXVAL=A(1) DO 40 I=2,10 IF (A(I) .GT. MAXVAL) GOTO 30 GOTO 40 30 MAXVAL=A(I) 40 CONTINUE 以下是一个GOTO语句交叉的 FORTRAN 语言源程 序,请去掉 GOTO语句 练习
  • 267. 2018/10/17MAXVAL=A(1) DO 40 I=2,10 IF (A(I) .GT. MAXVAL) MAXVAL=A(I) 40 CONTINUE 修正后的程序:
  • 268. 2018/10/17第七章 用户界面设计 在计算机应用中,用户与计算机都要以适当的形 式把消息传递给对方,称为人-- 机交互: (Human—Computer Interface) 交互是通过界面进行的。这种界面既存在于用户 与计算机硬件之间,也存在于用户与一切软件(包括 系统软件与应用软件)之间, 所以现在常把“用户界 面”简称为 “HCI”
  • 269. 2018/10/177.1 用户界面设计分析 用户特性分析用户工作分析
  • 270. 2018/10/17 外行型 用户特性分析 用户特性分析的目的是: 了解所有用户的技能和经验,以便能预测他们对不 同的界面设计会做出社么反映,并针对用户的能力来设 计或更改界面。用户类型 初学型 熟练型 专家型
  • 271. 2018/10/17 系统的功能分解,可以用数据流图和数据词典来描述。其 中,每一个加工相当于一个功能,也就是一个任务。任务可以 由一组动作构成,它规定了为实现该任务所必须的一系列活动 任务的 细节,可以使用结构化英语来表达。 它描述了动 作完成的序列以及在完成动作时的所有例外情况。用户工作分析用户工作分析,也称为任务分析。它是系统内部活动的 分解。用户工作分析与需求分析中结构化分析的方法类 似,是采用自顶向下,逐步进行功能分解。
  • 272. 2018/10/17 TASK: loan books DO WHILE borrowers request reader_ID check reader_ID IF reader_ID invalid pass to membership_check ELSE continue ENDIF DO WHILE book_requests enter book_mark on borroer_slip write reader_ID on borrwer_slip stamp book with returen_date remove book_in_library_tag END WHILE END WHILE关于图书馆借阅图书活动的描述
  • 273. 2018/10/17 任务和工作设计的目的在于创造用户的工作环境。通常,任务应组织得与人的能力相适应。既不能完全由非常复杂的步骤组成,也不能太过简单而使操作者感到厌烦。7.2 用户界面任务
  • 274. 2018/10/177.3 界面设计的基本类型 如果从用户与计算机交互的角度来看,用户 界面设计的类型主要有问题描述语言、数据表格 、图形与图表、菜单、对话以及窗口等。使用的难易程度学习的难易程度操作速度复杂程度控制开发的难易程度类型
  • 275. 2018/10/17 用户承担需要创造、判断和探索的任务。 重复检查、计算和数据处理的任务。 任务分配
  • 276. 2018/10/17 菜单也称选单,是由系统预先设置好的,显 示于屏幕上的一组或几组可供用户选用的命令。菜单(1)按照显示的形象或样式来分类正文菜单
  • 277. 2018/10/17 教务信息管理系统  0 -- 结束系统运行 1 -- 学籍管理子系统 2 -- 教学管理子系统 3 -- 教材管理子系统 4 -- 实验室管理子系统 请键入选择的功能序号(0~4): 3 3 -- 教学管理子系统 教务信息管理系统  A -- 结束系统运行 B -- 学籍管理子系统 C -- 教学管理子系统 D -- 教材管理子系统 E -- 实验室管理子系统 请选择功能字符(A~E):正文菜单举例
  • 278. 2018/10/17图标菜单
  • 279. 2018/10/17正文和图标混合菜单
  • 280. 2018/10/17(2)按屏幕位置和操作风格来分类固定位置菜单浮动位置菜单下拉式菜单嵌入式菜单
  • 281. 2018/10/17固定位置菜单
  • 282. 2018/10/17浮动位置菜单浮动式菜单
  • 283. 2018/10/17下拉式菜单
  • 284. 2018/10/17 在用户界面中,加入丰富多彩的,将能够 更形象地为用户提供有用的信息而达到可视化 的目的。其主要的处理有图象的隐蔽和再现、 屏幕滚动和图标显示等。图象图象的隐蔽和再现屏幕的滚动
  • 285. 2018/10/17图象的隐蔽和再现
  • 286. 2018/10/17内存缓冲区老缓冲区新缓冲区
  • 287. 2018/10/17屏幕的滚动垂直滚动条水平滚动条
  • 288. 2018/10/17 对话,也称为对话框,只系统必要时显示于 屏幕上一个矩形区域内的图形和正文信息。通过 对话可以实现用户和系统之间的通信。对话
  • 289. 2018/10/17必须问答式对话框
  • 290. 2018/10/17无须问答式对话框
  • 291. 2018/10/17警告式对话框
  • 292. 2018/10/17 设置一个或一批标准的对话以函数过程调用的 方式直接提供给用户来使用。这类对话框有的是一 问一答的,有的是多问多答的。它们的显示格式、 问题段和回答段的安排,以及用户回答的选择范围 都是系统实现设置好的,使用者不能随意改动的。 象这类对话称为标准对话。对话框的实现方式(1)
  • 293. 2018/10/17标准对话框
  • 294. 2018/10/17 系统为不同类型的对话设置一组数据结构和一 批 工具函数。 用户可以将根据他们的需要来自行 设计对话,象这类对话则称为“ 定做式对话 ”当然 这就需要事先设置好一批可以直接提供给用户使用 的工具函数。对话框的实现方式(2)
  • 295. 2018/10/17 窗口是指屏幕上的一个矩形区域,在图形 学中叫做视图区 (Viewport)。 用户可以通过 窗口显示、观察其工作领域内的全部或一部分 内容,并可以对所显示的内容进行各种系统预 先定好的正文和图形操作。窗口
  • 296. 2018/10/17 习惯上我们把窗口视为虚拟屏幕相对地,显示器就 称为物理屏幕。采用滚动条技术,通过窗口能够看到的 用户空间,比物理屏幕显示的内容要多得多而另一方面 ,在同一物理屏幕上又可以设置多个窗口各个窗口可以 由不同的系统或系统成分分别使用。如果在同一个屏幕 上有若干个窗口 这些窗口可以相重叠在一起, 也可以 在水平方向并列地排列。
  • 297. 2018/10/17代码编 辑窗口事件过程列表框对象列表窗口窗口界面示例之一
  • 298. 2018/10/17图标区窗口 控制区用户工作区垂直 滚动区窗口界面示例之二标题区标题区标题区水平 滚动区菜单区
  • 299. 2018/10/177.4 数据输入界面的设计 数据输入是指所有供计算机处理的数据的输入 。数据输入界面是系统的一个重要的组成部分,它 占用用户的极大部分使用时间。一个好的数据输入 界面应尽可能方便而有效地进行数据输入。
  • 300. 2018/10/17数据输入规则在软件设计的范围内,可以通过以下方法来减少用户输入的工作量。对共同的输入内容设置 默认值 (缺省值)。使用代码或缩写自动填入已输入过的内容 或需要重复输入的内容。如果输入内容是来自一个 有限的备选集,则可以采 用列表选择。
  • 301. 2018/10/17数据输入对话设计应遵循以下几项原则在软件设计的范围内,可以通过以下方法来减少用户输入的工作量。 1、确认输入 2、交互动作 3、确认删除 4、提供反馈 5、提示输入范围
  • 302. 2018/10/171、以表格形式对数据进行录入
  • 303. 2018/10/17请设计一个数据录入用户界面练习要求: 1、内容自选 2、应具有重复录入功能 3、具有数据检测功能 4、界面清晰
  • 304. 2018/10/172、以菜单形式对数据进行录入 如果数据从一个确定的可供选择的清单中选 取输入,则可用菜单方式其方法是把所有的选择 项都显示在屏幕上,用户只需要输入代表各项的 数字代码就可选择所需数据。
  • 305. 2018/10/17时令水果蔬菜销售 订单号码 1024 输入订单 日期 11/05/00 输入水果号码,选择所需数量或输入蔬菜号码,选择所需数量 1 ------ 苹果 2 ------ 香蕉 3 ------ 鸭梨 4 ------ 菠萝 5 ------ 橘子 6 ------ 葡萄 请您选择(1~10): 选择数量(可利用鼠标单击) 500克 1000克 1500克 2000克 本次订购: 500 克 油菜 1500 克 苹果 请输入另一项(若输入0为结束订购)500克菜单数据录入示例之一 7 ------ 土豆 10 ------ 菜花 8 ------ 韭菜 11 ------ 油菜 9 ------ 辣椒 12 ------ 白菜1500克11 1
  • 306. 2018/10/173、其它数据输入的方法关键词数据输入条形码 声音数据输入 光学标记/识别
  • 307. 2018/10/177.5 输出界面的设计 数据输出界面包括屏幕查询、文件浏览、图形 显示和报告等。
  • 308. 2018/10/17数据输出的规则只显示必需的数据,与用户需求无直接关 系的一律省略显示出的数据,应与用户所执行的任务有关同一时刻使用的数据应显示在一起每一屏所显示数据的数量,包括标题栏等, 最好不要超过整个屏幕面积的 30%
  • 309. 2018/10/17字符数据的显示 字符数据的画面显示主要是屏幕布局和数据 内容安排格式。显示的内容可以是单纯的正文, 也可以是表格和目录,而更多的是二者的综合
  • 310. 2018/10/17 若输出的是英文正文,应避免连续使用大写 字母,因为大写字母的阅读速度要低于大、小写 混合的文体。而且大写字母应使用印刷体,且一 般为强调而使用。纯正文的显示
  • 311. 2018/10/17列表和表格姓名数学物理英语化学总分夏丹89879899秋雨98769767冬雪78888787
  • 312. 2018/10/17 由于图形从数据集合中概括出来某些特性并且 具有“直观”的优点,因此对于识别和分析处理结果 更为有效,为了做好图形显示 必须仔细地选择图 形类型和进行布局设计 以图形方式显示
  • 313. 2018/10/17直方图
  • 314. 2018/10/17 饼图
  • 315. 2018/10/17 折线图
  • 316. 2018/10/17第八章 软件测试 在开发软件的过程中,我们使用了保证软件质量 的方法分析、设计和实现软件,但难免还会在工作中 犯错误。这样,在软件产品中就会隐藏着许多错误和 缺陷 。特别是对于规模大、 复杂性高的软件更是如 此。在这些错误中,有些是致命性的错误如果不排除 ,就会导致生命与财产的重大损失。DO 5 I =1, 3DO 5 I =1. 3
  • 317. 2018/10/178.1 软件测试的基础 软件测试是为了发现错误而执行程序的过程。或者 说,软件测试是根据软件开发各阶段的规格说明和程序 内部结构而精心设计的一批测试用例(即输入数据及预 期的输出结果),并利用这些测试用例去运行程序,以 发现程序错误的过程。什么是软件测试
  • 318. 2018/10/17 测试工具软件开发工程师 (Software Development Engineer in Test,简称SDE/T)软件测试人员 软件测试工程师 (Software Test Engineer ,简称STE)
  • 319. 2018/10/17SDE/T 负责写测试工具代码,并利用测试工具对软件进行测试;或者开发测试工具为软件测试工程师服务。
  • 320. 2018/10/17 负责理解产品的功能要求,然后对其进行测试,检查软件有没有错误(Bug),决定软件是否具有稳定性,并写出相应的测试规范和测试案例。STE
  • 321. 2018/10/17Exchange 2000Windows 2000项目经理25人约 250人开发人员140人约 1700人测试人员350人约 3200人测试人员/开发人员2: 51: 9Exchange 2000 和 Windows 2000 的人员结构 例如,
  • 322. 2018/10/17Exchange 2000Windows 2000项目经理25人约 250人开发人员140人约 1700人测试人员350人约 3200人测试人员/开发人员2: 51: 9
  • 323. 2018/10/17软件测试人员的任务很清楚,就是 站在使用者的角度上,通过不断地 使用和攻击刚开发出来的软件产品 尽量多地找出产品存在的问题,也 就是我们所称的 Bug 。
  • 324. 2018/10/17测试软件配置结果 分析测试结果排错改正的 软件预期结果可靠性 分析预测的 可靠性错误出错率 数据测试配置测试工具 软件测试信息流
  • 325. 2018/10/17 软件测试并不等于程序测试。软件测试应贯穿于软件 定义与开发的整个期间。因此,需求分析、概要设计、详 细设计以及程序编码等所得到的文档资料,包括需求规格 说明、概要设计说明、详细设计规格说明以及源程序,都 应成为软件测试的对象。 软件测试的对象
  • 326. 2018/10/17 软件开发过程是一个自顶向下、逐步细化的过 程,而测试则是依相反的顺序安排的,自底向上、 逐步集成的过程。低一级为上一级测试准备条件。 测试与软件开发阶段的关系
  • 327. 2018/10/17 需求分析 设 计 编 码 单元测试 集成测试 确认测试 ①②③①②③
  • 328. 2018/10/178.2 软件测试设计的方法 软件的测试设计与软件产品的设计一样,是一项需要 花费许多人力和时间的工作,我们希望以最少量的时间和 人力,最大可能地发现最多的错误。测试技术1、白盒测试 (White Box Testing)2、黑盒测试 (Black Box Testing)
  • 329. 2018/10/17 也叫玻璃盒测试(Glass Box Testing)。 对软件的过程性细节做细致的检查。这一方法是把测试对象 看作一个打开的盒子,它允许测试人员利用程序内部的逻辑 结构及有关信息,来设计或选择测试用例,对程序所有逻辑 路径进行测试。 白盒测试(White Box Testing)
  • 330. 2018/10/17白盒测试 的内容对程序模块的所有独立 执行路径至少测试一次对所有的逻辑判定,取 “真”与取“假”的两种情况 都能至少测试一次。 在循环的边界和运行边 界限内执行循环体 测试内部数据结构的有 效性。
  • 331. 2018/10/17 已知产品的功能设计规格,可以进行测试证明每个实现 了的功能是否符合要求。 黑盒测试(Black Box Testing)
  • 332. 2018/10/17黑盒测试 的内容 Alpha/Beta Testing菜单/帮助测试发行测试回归测试
  • 333. 2018/10/178.3 白盒测试用例的设计 逻辑覆盖测试方法通常采用流程图来设计测试用例,它 考察的重点是图中的判定框,因为这些判定通常是与选择结 构有关或是与循环结构有关,是决定程序结构的关键成分。 一、逻辑覆盖法
  • 334. 2018/10/17发现错误 的能力标 准含 义 1(弱)语句覆盖每条语句至少执行一次 2判定覆盖每一判定的每个分支至少执行一次 3条件覆盖每一判定中的每个条件,分别按“真”、 “假”至少各执行一次4 判定/条件覆盖同时满足判定覆盖和条件覆盖的要求5 (强) 条件组合覆盖求出判定中所有条件的各种可能组合 值,每一可能的条件组合至少执行一次 逻辑覆盖测试的5种标准
  • 335. 2018/10/17覆盖标准程序结构举例测试用例 应满足的条件语句覆盖A^B=.T.判定覆盖A^B=.T. A^B=.F.A^BTF示例A^BTF
  • 336. 2018/10/17覆盖标准程序结构举例测试用例应 满足的条件条件覆盖A=.T. A=.F. B=.T. B=.F.判定/条件 覆盖A^B=.T. , A^B=.F. A=.T. A=.F. B=.T. B=.F.条件组合 覆盖 A=.T. ^ B=.T. A=.T. ^ B=.F. A=.F. ^ B=.T A=.F. ^ B=.F.A^BTFA^BTFA^BTF
  • 337. 2018/10/17bda输出的: A,B,X语句覆盖ce(A>1) ^ (B=0)X=X/ATF(A=2) V (X>1)X=X+1TF输入的: A,B,X2,0,42,0,3满足语句覆盖的 测试用例如下ace----ace (L1)abd (L2)abe (L3)acd (L4)L1
  • 338. 2018/10/17判定覆盖(分支覆盖) 所谓的判定覆盖就是设计若干个测试用 例,运行被测程序,使得程序中每个判断的 取真分支和取假分支至少经历一次。
  • 339. 2018/10/17bdace(A>1) ^ (B=0)X=X/ATF(A=2) V (X>1)X=X+1TF2,0,4 2,0,3取“真”分支 测试用例如下ace----abd----1,1,1 1,1,1取“假”分支 测试用例如下L1L2
  • 340. 2018/10/172,1,1 2,1,2取“真假”分支 测试用例如下abe----bdace(A>1) ^ (B=0)X=X/ATF(A=2) V (X>1)X=X+1TFL3
  • 341. 2018/10/173,0,3 3,0,1取“真假”分支 测试用例如下bdace(A>1) ^ (B=0)X=X/ATF(A=2) V (X>1)X=X+1TFacd----L4
  • 342. 2018/10/17 条件覆盖   所谓的条件覆盖就是设计若干个测试用例 ,运行被测程序,使得程序中每个判断的每个 条件的可能取值至少执行一次。
  • 343. 2018/10/17bdace(A>1) ^ (B=0)X=X/ATF(A=2) V (X>1)X=X+1TF判断条件取真值取假值判断 (一)A>1T1T1B=0T2T2判断 (二)A=2T3T3X>1T4T4设条件的取值标记
  • 344. 2018/10/17bdace(A>1) ^ (B=0)X=X/ATF(A=2) V (X>1)X=X+1TF判断条件取真值取假值判断 (一)A>1T1T1B=0T2T2判断 (二)A=2T3T3X>1T4T4设条件的取值标记 条件覆盖可选取的 (第一组测试用例)如下表 测试用例通过路径条件取值覆盖分支(2,0,4),(2,0,3)ace(L1)T2T3T4c,e(1,0,1),(1,0,1)abd(L2)T1b,dT1T2T3T4
  • 345. 2018/10/17bdace(A>1) ^ (B=0)X=X/ATF(A=2) V (X>1)X=X+1TF判断条件取真值取假值判断 (一)A>1T1T1B=0T2T2判断 (二)A=2T3T3X>1T4T4设条件的取值标记 条件覆盖可选取的 (第二组测试用例)如下表 测试用例通过路径条件取值覆盖分支(1,0,3),(1,0,4)abe(L3)T1 T2 T3 T4b,e(2,1,1),(2,1,2)abe(L3)b,eT1 T2 T3 T4
  • 346. 2018/10/17 判定/条件覆盖    所谓的判定/条件覆盖就是设计足够的测试用 例,使得 判断中每个条件的所有可能取值至少执 行一次, 同时每个判断本身的所有可能判断结果 至少执行一次。
  • 347. 2018/10/17bdace(A>1) ^ (B=0)X=X/ATF(A=2) V (X>1)X=X+1TF判断条件取真值取假值判断 (一)A>1T1T1B=0T2T2判断 (二)A=2T3T3X>1T4T4设条件的取值标记 判定/条件覆盖可选取的 测试用例 如下表 测试用例通过路径条件取值覆盖分支(2,0,4),(2,0,3)ace(L1)T1 T2 T3 T4c,e(1,1,1),(1,1,1)abd(L2)b,dT1 T2 T3 T4
  • 348. 2018/10/17 条件组合覆盖    所谓的 条件组合覆盖就是设计足够的测试用 例,运行被测程序,使得 每个判断的所有可能的 条件取值组合至少执行一次。
  • 349. 2018/10/17条件标记第一个判断取 真假分支bdace(A>1) ^ (B=0)X=X/ATF(A=2) V (X>1)X=X+1TFA>1 B=0A>1 B ≠ 0A ≯ 1 B = 0A ≯ 1 B ≠ 0判断条件取真值取假值判断 (一)A>1T1T1B=0T2T2判断 (二)A=2T3T3X>1T4T4设条件的取值标记T1 T2① 取真分支T1 T2T1 T2② 取假分支③ 取假分支④ 取假分支T1 T2
  • 350. 2018/10/17条件标记第二个判断取 真假分支bdace(A>1) ^ (B=0)X=X/ATF(A=2) V (X>1)X=X+1TFA=2 X>1A=2 X≯1A≠2 X>1A≠2 X≯1判断条件取真值取假值判断 (一)A>1T1T1B=0T2T2判断 (二)A=2T3T3X>1T4T4设条件的取值标记T3 T4⑤ 取真分支T3 T4T3 T4⑥ 取真分支⑦ 取真分支⑧ 取假分支T3 T4
  • 351. 2018/10/17bdace(A>1) ^ (B=0)X=X/ATF(A=2) V (X>1)X=X+1TF设条件的取值标记测试用例通过路径条件取值覆盖组合号条件标记第一个判断取 真假分支A>1 B=0 T1 T2 ① 取真分支A>1 B≠0 T1 T2② 取假分支A≯1 B=0 T1 T2 ③ 取假分支A≯1 B≠0 T1 T2④ 取假分支(2,0,4),(2,0,3)ace L1T1 T2 T3 T4①,⑤(2,1,1),(2,1,2)abe L3T1 T2 T3 T4②,⑥(1,0,3),(1,0,4)abe L3T1 T2 T3 T4③,⑦(1,1,1),(1,1,1)abd L2T1 T2 T3 T4④,⑧
  • 352. 2018/10/17 路径测试就是设计足够的测试用例,覆盖程序中 每一条可能的程序执行路径至少测试一次,如果程序 中含有循环(在程序图中表现为环)则每个循环至少执 行一次。 二、路径测试法
  • 353. 2018/10/17abcdea-c-e L1 a-b-d L2 a-b-e L3 a-c-d L4bdace(A>1) ^ (B=0)X=X/ATF(A=2) V (X>1)X=X+1TF点覆盖边覆盖
  • 354. 2018/10/17bdace(A>1) ^ (B=0)X=X/ATF(A=2) V (X>1)X=X+1TF判断条件取真值取假值判断 (一)A>1T1T1B=0T2T2判断 (二)A=2T3T3X>1T4T4 路径测试可选取的 测试用例 如下表 测试用例通过路径条件取值ace L1 abd L2 abe L3 acd L4(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
  • 355. 2018/10/17测试路径覆盖结点/边覆盖标准点覆盖 边覆盖 路径覆盖 根据左侧给出的程序图,请填写下列表练习1abcde234a-c-d①②③④a-c-d, b-ea,b,c,d,ea-e-d,b-e a-e,b-c-d①②③④ a,b,c,d,e
  • 356. 2018/10/178.4 黑盒测试用例的设计 黑盒测试法是根据被测程序功能来进行测试,所以通常 也称为功能测试。用黑盒测试法设计测试用例,有4 种常用 技术: 等价分类法 边界值分析 错误猜测法 因果图法
  • 357. 2018/10/17一、等价分类法    所谓等价分类,就是把输入数据的可能值划分为 若干等价类(等价类是指某个输入域的子集合。 在该 集合中,各个输入数据对于揭露程序中的错误都是等 价的)。 因此,可以把全部输入数据合理地划分为若 干等价类,在每一个等价类中取一个数据作为测试的 输入条件,这样就可以少量的代表性测试数据,来取 得较好的测试结果。
  • 358. 2018/10/17    是指对于程序的规格说明来说,是合理的 有意义的输入数据构成的集合。利用它可以检 验程序是否实现预先规定的功能和性能。 有效等价类
  • 359. 2018/10/17    是指对于程序的规格说明来说,是不合理 的,是无意义的输入数据构成的集合。程序员 主要利用这一类测试用例来检查程序中功能和 性能的实现是否不符合规格说明要求。 无效等价类
  • 360. 2018/10/17    1、如果输入条件规定了取值范围,或者是值 的个数,则可以确立一个有效等价类和两个无效 等价类。确定等价类的原则:例如:… … 序号值可以从 1到999 … …一个有效等价类: 1≤ 序号值 ≤999 两个无效等价类: 序号值 <1 序号值 >999
  • 361. 2018/10/17    2、如果输入条件规定了输入值的集合,或 者是规定了“必须如何”的条件,这时 可确立一 个有效等价类和一个无效等价类。例如:在 C 语言中对变量标识符规定为 “以字母打头的 … … 串”。 所有以字母打头的构成为有效等价 类; 而不在此集合内(不以字母打头)归于无价等 价。
  • 362. 2018/10/17    3、如果输入条件是一个布尔量,则可以确 定一个有效等价类和一个无效等价类。
  • 363. 2018/10/17    4、如果规定了输入数据是一组值, 而且程 序要对每个输入值分别进行处理。这时可为每一 个输入值确立一个有效等价类此外再针对这组确 立一个无效等价类,它应是所有不允许输入值的 集合。例如:在教师分房方案中规定对教授、副教授、讲师 和助教分别计算分数,做相应的处理。因此可 以确定4个有效等价类为教授、 副教授、讲师 和助教,以及 1个无效等价类它应是所有不符 合以上身份的人员的输入值的集合。
  • 364. 2018/10/17    5、如果规定了输入数据必须遵守的规 则,则可以确定一个有效等价类(符合规则) ,和若干个无效等价类(从不同角度违反则)。 例如:在C 语言中规定了“一个语句必须以分号‘;’ 作为结束”,这时,可以确定一个有效等价 类,以 “;”结束,而若干个无效等价类应 以“:,、” 等。
  • 365. 2018/10/17    6、如果确知,已划分的等价类中各元素 在程序中的处理方式不同, 则应将此等价类 进一步划分成更小的等价类。
  • 366. 2018/10/17    1、划分等价类不仅要要考虑代表“有效”输 入值的有效等价类,还需考虑代表 “无效”输入 值的无效等价类。采用这一技术要注意以下两点:   2、每一无效等价类至少要用一个测试用例 ,不然就可能漏掉某一类错误,但允许若干有 效等价类合用同一个测试用例,以便进一步减 少测试的次数。
  • 367. 2018/10/17二、确立测试用例输入条件有效等价类无效等价类… …… …… …
  • 368. 2018/10/17确立测试 用例原则 为每一个等价类规定一个唯一的编号。 设计一个新的测试用例,使其尽可能 地覆盖尚未被覆盖的有效等价类,重 复这一步,直到所有的有效等价类都 被覆盖为止。 设计一个新的测试用例,使其仅覆盖 尚未被覆盖的无效等价类,重复这一 步,直到所有的无效等价类都被覆盖 为止。
  • 369. 2018/10/17举例 在某一个PASCAL 语言版本中规定 1、标识符是由字母开头,后跟字母或数字 的任意组合构成。有效字符数为8个,最大 字符数为80 个; 2、标识符必须先说明,后使用; 3、在同一个说明语句中,标识符至少必须 有一个。 请利用等价分类法为以下提供的内容设计测试用例
  • 370. 2018/10/17输入条件有效等价类无效等价类标识符个数标识符字符数标识符组成第一个字符标识符使用1个(1),多个(2)0个 (3) 1~8个(4)0个(5),》8个(6) ,》80个(7)字母(8),数字(9)非字母数字字符(10), 数字(11)字母(12) 非字母(13) 先说明后使用(14) 未说明已使用(15)
  • 371. 2018/10/17输入条件有效等价类无效等价类标识符个数1个(1),多个(2)0个 (3)标识符字符数1~8个(4)0个(5),》8个(6) ,》80个(7)标识符组成字母(8),数字(9)非字母数字字符(10),保留字(11)第一个字符字母(12)非字母(13) 标识符使用先说明后使用(14)未说明已使用(15) ① VAR x, T1234567: REAL;   BEGIN x:=3.414; T1234567:=2.732; … …⑴⑵ ⑷ ⑻ ⑼ ⑿ ⒁
  • 372. 2018/10/17输入条件有效等价类无效等价类标识符个数1个(1),多个(2)0个 (3)标识符字符数1~8个(4)0个(5),》8个(6) ,》80个(7)标识符组成字母(8),数字(9)非字母数字字符(10),保留字(11)第一个字符字母(12)非字母(13) 标识符使用先说明后使用(14)未说明已使用(15) ②VAR : REAL; ⑶③VAR T12345678: REAL; { ⑹ }⑹④ VAR T$: CHAR; ⑽⑤ VAR GOTO: INTEGER; (11)
  • 373. 2018/10/17输入条件有效等价类无效等价类标识符个数1个(1),多个(2)0个 (3)标识符字符数1~8个(4)0个(5),》8个(6) ,》80个(7)标识符组成字母(8),数字(9)非字母数字字符(10),保留字(11)第一个字符字母(12)非字母(13) 标识符使用先说明后使用(14)未说明已使用(15) ⑥ VAR 2T: REAL; (13)⑦ VAR PAR: REAL; BEGIN … … PAP:=SIN(3.14*0.8)/6; (15)
  • 374. 2018/10/17练习 某工厂公开招工,规定报名者年龄应在16~35 周 岁之间(到1995年6月30日为止),即出生年月不早于 1960年7月,不晚于1979年6月。 报名程序具有自动检 验输入数据的功能。如出生年月不在上述范围内, 将 拒绝接受,并显示“年龄不合格”等出错信息。 请试用等价分类法, 设计出生年月的等价分类表 。二、请利用等价分类法为以下提供的内容设计测试用例
  • 375. 2018/10/17 假定已知出生年月是由 6 位数字字符表示,前4 位 代表年,后2 位代表月,则可以划分为 3 个有效等价类 和 7 个无效等价类。1、划分出生年月等价分类表输入数据有效等价类无效等价类出生年月① 6位有效数字字符② 有非数字字符 ③ 少于6个数字字符④ 多于6个数字字符 对应数值 ⑤ 196007-197906 ⑥ < 196007 ⑦ > 197906月份对应数值⑧ 在1-12之间⑨ 等于 “0” ⑩ >12
  • 376. 2018/10/172、设计有效等价类需要的测试用例输入数据有效等价类无效等价类出生年月① 6位有效数字字符② 有非数字字符 ③ 少于6个数字字符④ 多于6个数字字符 对应数值 ⑤ 196007-197906 ⑥ < 196007 ⑦ > 197906月份对应数值⑧ 在1-12之间⑨ 等于 “0” ⑩ >12测试数据期望结果测试范围197011输入有效①、⑤、⑧
  • 377. 2018/10/17输入数据有效等价类无效等价类出生年月① 6位有效数字字符② 有非数字字符 ③ 少于6个数字字符④多于6个数字字符 对应数值 ⑤ 196007-197906 ⑥ < 196007 ⑦ > 197906月份对应数值⑧ 在1-12之间⑨ 等于 “0” ⑩ >12测试数据期望结果测试范围MAY,70输入无效② 有非数字字符19705输入无效输入无效③ 少于6个数字字符1968011196008195512196200197222年龄不合格年龄不合格输入无效输入无效④ 多于6个数字字符⑥ <196007⑦ >197906⑨ 等于 “0”⑩ >123、为每一个无效等价类至少设计一个测试用例
  • 378. 2018/10/17二、边界值分析法    采用边界值分析法来选择测试用例,可使 得被测程序能在边界值及其附近运行,从而更 有效地暴露程序中潜藏的错误。
  • 379. 2018/10/17    If (196007 <= value(birthdate) <= 197906) Then read(birthday) Else write “invalid age!”< 为了接受年龄合格的报名者则程序中 可能设有语句为:
  • 380. 2018/10/17输入 等价类测试用例说明测试数据期望结果出 生 年 月1 个数字字符 5 个数字字符 7 个数字字符 有1个非数字字符 全是非数字字符5 19705 1968011 19705 AUGUST 输入无效对应数值 35 周岁 16 周岁196007 197906合格年龄 >35 周岁 <16周岁196006 197907不合格年龄月份 对应数值月份值为 1 月 月份值为 12 月 196701 197412输入有效月份值 < 1 月份值 >12 196700 197413 输入无效
  • 381. 2018/10/171、等价分类法的测试数据是在各个等价类允许的值域内 任意选取的,而边界值分析法的测试数据必须在边界 值附近选取。2、在公开招工的例子中,采用等价分类法设计了 8个测试 用例而边界值分析法则设计了13 个, 所以,一般来说 ,用边界值分析法设计的测试用例要比等价分类法的代 表性更广,发现错误的能力也更强。但是对边界的分析 与确定比较复杂,它要求测试人员具有更多的经验和长 找性。等价分类法与边界值分析法的比较
  • 382. 2018/10/17三、错误猜测法   所谓猜测,就是猜测被测程序在哪些地方容易 出错,然后针对可能的薄弱环节来设计测试用例。 显然它比前两种方法更多地依靠测试人员的直觉与 经验。所以一般都先用前两方法设计测试用例然后 再用猜测法去补充一些例子作为辅助的手段。
  • 383. 2018/10/17四、因果图法   因果图是借助图形来设计测试用例的一种系 统方法。它适用于被测程序具有多种输入条件, 程序的输出又依赖于输入条件的各种组合的情况 因果图是一种简化了的逻辑图,它能直观地 表明程序输入条件(原因)和输出动作(结果) 之间的相互关系。
  • 384. 2018/10/17 测试方法的选用测试策略 1、在任何情况下都应该使用边界值 分析的方法。 2、必要时用等价类划分法补充测试 方案。 3、必要时再用错误猜测法补充测试 方案。 4、对照程序逻辑,检查已经设计出 出的测试方案。可以根据对程序 可靠性的要求采用不同的逻辑覆 盖标准,如果现有测试方案的逻 辑程度没有达到要求的覆盖标准 则应再补充一些测试方案。
  • 385. 2018/10/17 本章总结 策略种类黑盒测试白盒测试测试对象程序的功能程序的结构 测试要求逐一验证 程序的功能程序的每一组成部分 至少被测试一次 采用技术等价分类法 边界分析法 错误猜测法 因果图法 逻辑覆盖法 路径测试法
  • 386. 2018/10/17举例微软的软件产品开发过程一、微软的组织结构市场营销部内部营运部产品开发部研究部门
  • 387. 2018/10/17二、新产品的产生过程新产品项目的提议市场分析与预测技术可行性分析产品研发实施步骤高层论证和审批项目确立和执行产品开发 我最大的心得是,一个产品一定要找到能 够真正适用的场合,不能只是为了技术而从事 技术,为了研究而从事研究,却不管用户对你 所研究的技术和产品有没有需求。否则,无论 你的技术是多么优秀、多么先进,恐怕你的产 品在市场上都无法获得成功。 --------- 微软张益肇
  • 388. 2018/10/17陈宏刚微软亚洲研究院商务高级经理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 的开发和测试
  • 389. 2018/10/17三、微软的产品团队软件开发项目管理软件测试产品管理后勤管理用户培训------ 微软产品团队的组成互相沟通
  • 390. 2018/10/17 各个团队的角色及主要目标团队名称分担的任务产品管理 项目管理 软件开发 软件测试 用户培训 后勤管理确定产品的运景,获取并确定用户的需求,开发并维护 商业安全,满足用户的需求制定开发功能规范,在团队内进行沟通和协商,维持产 品进度并报告产品状态,保证能够尽快尽好地在产品约 束条件下发布产品开发出满足设计规范和用户要求的产品开发测试策略和计划,保证在解决了所有已知问题后再 发布产品保证使用文档要全部很清楚地写出来,提高用户使用产 品的技能,保证大多数用户都能够充分利用产品的功能保证产品能够平稳地发展
  • 391. 2018/10/17产品管理团队的组织机构 Product Management Team产品单元经理 (PUM)产品管理团队 (产品总经理GM)产品计划 ( 负责人)市场分析和研究 (负责人)产品推销 (负责人)公共关系 (负责人)产品单元经理 (PUM)
  • 392. 2018/10/17项目管理团队的组织机构 Program Management Team项目团队的管理 (GPM)产品 按时发布项目 协调产品 结构设计
  • 393. 2018/10/17软件开发团队的组织机构 Software Development Team软件开发团队 (SDT)数据库 (Database)系统服务 (System service)用户界面 (User Interface)开发管理 (Development Management)
  • 394. 2018/10/17软件测试团队的组织机构 Software Testing Team软件 测试 团队 (STT) 测 试 管 理 配置测试 (Configuration Testing)一致性测试 (Compliance Testing)集成测试 (Integration Testing)强力测试 (Stress Testing)Bug 团队
  • 395. 2018/10/17Exchange 2000Windows 2000项目经理25人约 250人开发人员140人约1700人测试人员350人约3200人测试人员/开发人员2.5 1.9 Exchange 2000 和Windows 2000中的人员结构
  • 396. 2018/10/17----- 微软现代软件开发的典型体系软件研究院产品部产品 规划人员产品 管理团队软件 开发团队软件 测试团队技术部
  • 397. 2018/10/17四、微软的软件开发特点(1) 文档齐全,项目规范清楚(2) 开发人员相互阅读其他人新编写代码(3) 所有代码都有清楚的注释产品版本调试版本 (Dev)发布版本 (Ship) 管理上
  • 398. 2018/10/17 软件开发第一阶段各团队分担的任务团队名称分担的任务产品管理 项目管理 软件开发 软件测试 用户培训 后勤管理分析是否应该做这个新产品,尽量证明该产品是值得做设计新产品的目标,以及具体的实现方法开发一些技术原型,检验新产品是否有意义,并向大家 展示新产品未来的样子。另外还要对开发过程中一些大 的结论提出意见判断该新产品是否有用、是否可接受分析用户的需求 对长期的支持管理提出建议
  • 399. 2018/10/17 软件开发第二阶段各团队分担的任务团队名称分担的任务产品管理 项目管理 软件开发 软件测试 用户培训 后勤管理概念设计和市场推销计划 / 进度表 逻辑设计、功能规范,以及总体计划 / 进度表 物理设计和开发计划 / 进度表 设计评估和测试计划 / 进度表 用户性能支持设计和用户培训计划 / 进度表 对长期的支持管理提出建议
  • 400. 2018/10/17微软亚洲研究院 Microsoft Research Asia1998 年11月5日,微软公司在北京设立 微软中国研究院2001 年11月1日,正式更名为 微软亚洲研究院目前研究技术 数字多媒体多通道用户界面无线及网络亚洲信息处理技术科研技术人员120多位国际一流学术刊物 和会议上发表论文400余篇
  • 401. 2018/10/17潘云鹤校长迟惠生校长张钹 教授Victor Zue刘明雷先生郑南宁副校长国际专利微软专家 顾问委员会百余项现任院长 兼首席科学家张亚勤博士Windows XP Office XP现任副院长:张宏江博士 沈向洋博士
  • 402. 2018/10/17微软研究院的科研方向微软研究院的研究方向微软研究院 的神圣使命使未来的计算机 能够达到: 看、听、学, 能用自然语言与 人类进行交流。新一代 用户界面新一代 多媒体技术1、多通道用户界面组 2、语音技术组1、网络多媒体组 2、多媒体计算机组 3、多媒体管理组 4、形象计算组 5、网络图形组新一代 信息处理技术1、自然语言组 新一代 无线互联技术 2、无线网络组
  • 403. 2018/10/17 现代软件开发对我们的要求是方方面面的,微软在这 些方面积累的经验和遵循的规则非常全面,在软件开发的 整体过程中,从某意义上其 “艺术” 性高于“科学” 性,因 为融入了艺术的产品有着超群的竞争力,而这一切又都归 功于软件产品的主体----人。人的最大浅能的挖掘和团队 最大可能的互助必将创造成功的产品。 ----- 微软 凌小宁博士
  • 404. 2018/10/171、利用因果图产生测试用例的基本步骤  1、分析软件规格说明书中,哪些是原因(即输 入条件或输入条件的等价类),哪些是结果(即 输出条件)并给每个原因和结果赋予一个标识。  2、分析软件规格说明书中所描述的语义,找出 原因与结果之间、原因与原因之间对应的是什么 关系?根据这些关系画出因果图。
  • 405. 2018/10/17  3、由于语法或环境的限制,有些原因与原因 之间、原因与结果之间的组合情况不可能出现 。为表明这些特殊情况,在因果图上用一些记 号标明约束或限制条件。  4、把因果图转换为判断表  5、把判断表的每一列拿出来作为依据,设计 测试用例。
  • 406. 2018/10/172、在因果图中出现的基本符号C1E1恒等: 表示原因与结果之间是一对一的 对应关系。若原因出现,则结果 出现。若原因不出现,则结果也 不出现。 C1E1非: 表示原因与结果之间的一种否定关 系。若原因出现,则结果不出现。 若原因不出现,反而结果出现。通常在因果图中用 Ci 来表示原因,用Ei表示结果 其基本符号如下图所示。其中各结点表示状态,可取 值为“0”或“1”。“0”表示某状态不出现,“1”表示某 状态出现。主要的原因和结果之间的关系如下:
  • 407. 2018/10/17或(∨): 表示若几个原因中有一个出 现,则结果出现,而当这几 个原因都不出现时,结果才 不出现。C1E1C2∨C1E1C2∧与(∧): 表示若几个原因都出现,则结果 才出现若几个原因中有一个不出 现,结果就不出现。
  • 408. 2018/10/17第9章 软件测试4、把因果图转换为判断表5、把判断表的每一列拿出来作为依据,设计测试用例一、在 因果图中出现的基本符号通常在因果图中用 Ci 来表示原因,用Ei表示结果 其基本符号如下图所示。其中各结点表示状态,可取 值为“0”或“1”。“0”表示某状态不出现,“1”表示某 状态出现。主要的原因和结果之间的关系如下:
  • 409. 2018/10/17第9章 软件测试举例 设有一个处理单价为5角钱饮料自动售货机 其规格说明为,若投入5角钱或1元钱的硬币 ,再按下橙汁 或啤酒按钮,则相应的饮料就送出来;若售货机 没有另钱 找,则一个显示另钱已找完的红灯亮,这时在投入1元硬币 并按下按钮后,饮料不送出来而且1元硬币也退出来;若有另钱 找,则应显示零钱找完的红灯灭, 在送出饮料的同时退还 5角硬币。
  • 410. 2018/10/17第9章 软件测试利用因果图设计测试用例的步骤1、分析这一段说明,列出原因和结果序号原 因序号结 果1.售货机有零钱找2.1售货机 零钱找完灯亮2.投入1元硬币2.2退还1元硬币3.投入5角硬币2.3退还5角硬币4.按下橙汁按钮2.4送出橙汁饮料5.按下啤酒按钮2.5送出啤酒饮料
  • 411. 2018/10/17第9章 软件测试2、画出因果图序号中间结点11投入1元硬币且按下饮料按钮12按下橙汁或啤酒的按钮13应当找5角零钱并且售货机有零钱找14钱已付请21 1.22 2.13231112143.24254.5.∧∨∧∧∧∨∧按下按钮该找5角钱已付清可找5角售货机有 零钱找投入1元硬币投入5 角硬币按下橙汁按钮按下啤酒按钮售货机“零钱找完”灯亮退还1元硬币退还5角硬币送出橙汁饮料送出啤酒饮料
  • 412. 2018/10/17第9章 软件测试3、将因果图转换成判定表1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 0 0 0 0 1 1 1 0 0 1 1 0 0 1 1 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 2 3 4 5 条 件 中间 结果 11 12 13 14 1 1 0 1 1 0 1 1 0 1 1 01 1 0 1 1 0 1 1 0 1 1 0 0 0 0 1 1 0 0 0 0 1 1 10 0 0 1 1 0 0 0 0 0 0 01 1 0 1 1 0 0 0 0 0 0 00 0 0 1 1 0 0 0 0 1 1 10 0 0 1 1 0 0 0 0 0 0 0 21 22 23 24 25 结 果 测试用例 y y y y y y y y y y y y y y y y 0 0 0 0 0 0 1 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 00 0 0 0 0 0 0 0 0 0 0 0 0 0 01 1 1 1 1 0 0 0 0 0 0 0 0 0 01 1 1 1 1 1 0 0 0 1 0 0 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 序 号通常在因果图中用 Ci 来表示原因,用Ei表示结果 其基本符号如下图所示。其中各结点表示状态,可取 值为“0”或“1”。“0”表示某状态不出现,“1”表示某 状态出现。主要的原因和结果之间的关系如下:序号中间结点11投入1元硬币且按下饮料按钮12按下橙汁或啤酒的按钮13应当找5角零钱并且售货机有零钱找14钱已付请
  • 413. 2018/10/17三、实体-关系图 ---- DD(Data Dictionary) 在数据密集型应用问题中,对复杂数据及数据之间 复杂关系和建模将成为需求分析的重要任务。显然,这 项任务是简单的数据字典机制是无法胜任的。 为此,在下面的内容将介绍适合于复杂数据建模的 图形工具---- 实体-关系图。
  • 414. 2018/10/17(1) 数据对象、属性与关系数据(data) --- 是信息的载体,它能够被计算机识别、存储和 加工处理。它是计算机程序加工的“原料” 对象(Object) --- 是一个包含数据以及这些数据有关的操作的 集合属性(Property) --- 是用于描述数据对象特征的标识码型号制造商车体类型颜色买主关于汽车属性描述表
  • 415. 2018/10/17(2) 实体-关系图0:11:10:多1:多----- 实体-关系图中数量对应关系的表示符号制造商制造车----- 一个简单的实体-关系图和数据对象
  • 416. 2018/10/17制造商许可证经销商车货主储存制造合同制造
  • 417. 2018/10/17汽车欧洲市场美国市场国内市场上海广州法国德国瑞典意大利 汽车销售管理问题中 “汽车”的层次实体-关系图
  • 418. 2018/10/17第六章 Visual Basic 中的常用事件 P79
  • 419. 2018/10/17第1章 软件工程概述以990.net 免费信箱 为例