(完整版)哈工大《软件工程》全套课件完整版(全)_第1页
(完整版)哈工大《软件工程》全套课件完整版(全)_第2页
(完整版)哈工大《软件工程》全套课件完整版(全)_第3页
(完整版)哈工大《软件工程》全套课件完整版(全)_第4页
(完整版)哈工大《软件工程》全套课件完整版(全)_第5页
已阅读5页,还剩411页未读 继续免费阅读

下载本文档

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

文档简介

1、2022/7/22软件工程 哈尔滨工业大学 韩静萍Software Engineering 2022/7/22 在一些人眼里,今天的软件开发似乎已 成为简单的事情,已有不少很好的开发工 具和软件库,软件开发人员训练有素,都强 烈渴望去编写很酷的软件,可以在几天的时 间里编写出一个相当复杂的软件。但是为什么 有一些软件能够得到用户的喜欢,而另一些 则不能?为什么有些软件能够在市场上成功 ,而有些则受到冷落?由此可见,开发软件 并不一定难,难就难在如何开发有用的软件。微软凌小宁博士2022/7/22 我最大的心得是,一个产品一定要找到能够真正适用的场合,不能只是为了技术而从事技术为了研究而进行研究

2、,却不管用户对你所研究的技术和产品有没有需求。否则,无论你的技术是多么优秀,多么先进,恐怕你的产品在市场上都无法获得成功。微软张益肇博士2022/7/22 软件工程是计算机科学与技术专业的一门专业核心课程。通过本课程的学习,使学生掌握系统的软件开发理论、技术和方法,使用正确的工程方法开发出成本低、可靠性好并在机器上能高效运行的软件,为今后从事软件开发和维护打下坚实的基础。课程的性质、目的与任务2022/7/22 本课程比较全面、系统地介绍软件工程的概念、技术与方法。 主要内容包括:软件工程概述、软件生存周期及软件需求分析、软件设计方法、软件测试技术等。 通过本课程的学习,使学生能真正的从中了解

3、软件开发的整个过程。为了让学生真正得以实践,结合实际软件开发项目,让学生从问题定义开始,经过可行性研究、需求分析、概要设计、详细设计、编码直到最后要对自己开发的软件还要进行测试,这样一个软件开发过程,从而使学生掌握软件开发的基本技能。课程主要内容2022/7/22学习本课程的基本要求 本课程是继程序设计课程之后,对提高学生软件开发能力有重要作用的一门课程。要求学生在学习本课程前应掌握信息管理系统、数据结构、结构化程序设计、面向对象程序设计以及程序设计方法论。 通过本课程的学习,为学生后期的毕业设计环节奠定了良好的基础。2022/7/22章学时章学时章学时章学时123494132补充242102

4、1442284122总学时 46=38(讲授)+8(课程设计)各 章 学 时 安 排2022/7/22第一章 软件工程概述水利工程建筑工程机械工程 软件工程 本章将对软件的地位和作用、软件的特点、软件 的发展、软件的危机以及软件工程学科的形成、软件 生期等方面的问题和基本概念传统工程新兴工程气象工程生物工程2022/7/221.1 软件的概念与特点1、软件softwaresoft+ware软制品(软体) 软件是计算机系统中与硬件相互依存的另一部分。 它包括程序、数据及其相关文档的完整集合。2022/7/222、软件特点. 软件是一种逻辑实体,而不是具体的物理实体. 软件的生产与硬件不同 . 在

5、软件的运行和使用期间,没有硬件那样的机械 磨损,老化问题磨合调整磨损用坏修改点实际曲线理想曲线硬件失效率曲线时间失效率时间失效率软件失效率曲线2022/7/22. 软件的成本相当昂贵软件技术的发展落后于需求时间软件复杂性软件需求差距软件技术硬、软件成本比例的变化年份成本%软件1950197019851995硬件2022/7/223、软件的分类1、按软件的功能进行划分系统软件支撑软件应用软件2022/7/22支撑软件一般类型: 文本编辑程序 文本格式化程序支持需求分析: PSL/PSA问题描述语言 关系数据库管理系统支持设计: 图形软件包 结构化流程图绘图程序支持测试: 静态分析器 测试覆盖检验

6、程序支持实现: 编辑程序 连接编辑程序支持管理: 标准检验程序 库管理程序2022/7/222、按软件的规模进行划分 按开发软件所需的 人力、时间以及完成的 源代码行数。类别参加人数研制期限产品规模(源代码行数)微型小型中型大型甚大型极大型112-55-20100-10002000-50001-4周1-6周1-2年2-3年4-5年5-10年约500行 约2000行 5000-50000行5万-10万行100万行1000万行2022/7/22 3、按软件开发划分软件项目开发软件产品开发2022/7/221.2 软件工程的概念及范畴 1、“软件工程”-Software Engineering 于1

7、968年 NATO 组织在德国召开的一次会议上提出 是把软件当作一种工业产品,要求 “采用工程化的 原理与方法对软件进行计划、开发和维护 ”。2022/7/22 软件工程学 软件开发技术 软件工程管理 软件开发方法学 软件工具 软件工程环境 软件工程管理学 软件经济学 - 软件工程学的范畴 2、 软件工程学 2022/7/22 Wake up every day with a feeling of passion for the different technology will make in peoples Life.微软企业文化宗旨部分内容 每天醒来的时候,要对技术给生活造成的改变 始终

8、拥有一份 激情。2022/7/22程序 3、软件的演变(即从传统软件开发到现代软件开发) 软件软件产品传统软件开发现代软件开发 1975 1989 2000 0.00016240营业额增长曲线 802022/7/221.3 软件生存周期把软件从产生、发展到成熟、直至衰亡为止(SW life cycle)2022/7/22特点: 上一阶段的变换结果 是下一阶段的变换的 输入,相邻两个阶段 具有因果关系,紧密 相联。需求分析问题定义可性行研究计划时期概要设计详细设计编 码 测 试开发时期运行与维护运 行时 期软件生存周期模型(瀑布模型 Waterfall Model)2022/7/22原型模型(P

9、rototype Model)加工原型原型原型:是指模拟某种产品的原始模型快速分析和设计建造原型客户评价原型1、原型系统仅包括未来系统的 主要功能,以及系统的重要 接口。2、为了尽快向用户提供原型, 开发原型系统时应尽量使用 能缩短开发周期的语言和工 具。 2022/7/22 第二章 问题的定义与可性行研究 当我们在着手做任何一件工作以前,必须明确工作的性质、任务,制定完成任务的计划,这是非常必要的。同样对于软件产品的开发 ,显然也应该解决好这样类似的问题,明确该软件产品开发的任务,以及完成任务的价值从而制定出完成任务的计划。那么问题的定义和可性行研究就是制定软件系统的计划的第一步。 所以在软

10、件工程中把这一步称为 计划时期2022/7/22开始问题定义可性行研究 可行否?项目实施计划终止项目的建议结束Y计划时期的工作流程图N2022/7/22Who 为谁设计,用户是谁?What 要解决哪些问题?Why 为什么要解决这些问题 3W Win CE1.0 有用的软件2022/7/222.1 现状调查和问题的定义 目的:弄清楚用户要求计算机解决什么问题任务:编写系统目标与规范说明书 系统目标与规范说明书1、项目:教材销售系统2、问题:人工销售教材手续繁琐,容易出错3、项目目标:建立一个高效率、无差错的计算机教材销售系统4、项目范围:利用现有的计算机,软件开发费用不得超过2000元5、初步想

11、法:建议在系统中增加对缺书的统计与采购功能6、可性行研究:建议进行大约10天的可性行研究,且研究费用不超过500元2022/7/222.2 可行性研究与论证 1、经济可行性:进行成本效益分析,评估项目的开发成本。基于计算机系统的成本由四部分组成1、购置软、硬件及有关设备费用2、系统开发费用3、系统安装和维护费用4、人员培训费用费用其论证的焦点是:围绕着对系统开发的价值进行论证2022/7/22举例:关于开发CAD系统的软件开发成本及效益分析 1 2 3 4 5 年604020 0成本-效益(万元)该系统节省经费该系统成本盈亏平衡点投资回收期 -成本及效益分析图2022/7/222、技术可行性:

12、对系统的性能、可靠性、可维护性以及生产率等方面的信息进行评价。 通过技术可行性的分析,将为新系统提交技术可行性评估。以指明为完成系统的功能和性能需要什么技术?需要哪些材料、方法、算法、或者过程等 技术可行性分析方法- 数学模型和优化技术、概率和统计、排队论、控制论等方法。2022/7/22可行性论证报告1、系统概述2、可行性分析3、拟订开发计划4、结论意见2022/7/222.3 可行性分析所需工具 (系流程图与系统结构图)1、系统流程图:是用来描述系统物理模型的一种传统工具。流程符号含 义流程符号含 义数据加工符号换页连接 输入/输出符号磁带符号连接点符号文档符号人工操作多文档符号2022/

13、7/22流程符号含 义流程符号含 义显示器或终端机控制流符号磁盘机或数据库流程开始与结束2022/7/22 举例库存清单系统流程图库存清单程序定货报告事务定货信息结束报告生成程序零件库2022/7/22人工销售教材 流程图结束学生申请购书 购书证明检索教材帐本是否有该教材购书单开购书发票和购书单购书发票到书库领书 2022/7/22计算机售书系统流程图结束学生购书发票到书库领书 购书单终端审查并开发票11-学生各学期用书数据库购书单2 2-教材存量数据库2022/7/22练习 设某城市招干考试成绩统计系统。 考生分三个专业,不同专业考试科目不同: 法律专业-考政治、语文、法律 行政专业-考政治

14、、语文、行政 财经专业-考政治、语文、财经学 每个考生在报名时登记姓名、地址、年龄和报考专业。报 名后招干办公室根据专业考生专业及地址在市区或郊区来编排 准考证号码和考场。考生参加考试后,输入每个考生的各门课 程的成绩,并统计出每个考生三门课程的总成绩。按准考证号 的顺序打印出考生考试成绩单,分发给每个考生。各专业分别 将考生按成绩总分从高到低的次序排序,以便决定录取名单。 请画出由下列文字描述的系统流程图2022/7/222、系统结构图:系统工程师用结构摸板开发的系统模型用户界面处理输入处理维护和自测试处理和控制功能输出处理 - 结构摸板 - 2022/7/22- 传输线的分类系统 3、系统

15、结构环境图(ACD-Architecture Context Diagram) : ACD 可用于描述实现系统与系统运行环境之间的信息边界。2022/7/22传输线分类系统条形码阅读器传输线分配站操作员分配站操作员分类机构主 机条形码线速指示器分路命令格式化报告数据查询查询及报告诊断数据- 传输线分类系统的 ACD 图处理与控制功能区外部实体2022/7/22 ACD 的层次结构ABC2022/7/22作请画出学生成绩管理系统的 ACD 图 业2022/7/22 第3 章 软件需求分析 软件需求分析是软件开发早期的一个重要阶段。它在问题定义和可行性研究阶段之后进行。需求分析的基本任务是软件人员

16、和用户一起完全弄清用户对系统的确切要求。这是关系到软件开发成败的关键步骤,也是整个系统开发的基础。 软件需求分析阶段要求用 需求规格说明书(SRS) 来表达用户对系统的要求。规格说明书可用文字方式表示,也可用图形表示。 本章将介绍需求分析的任务、步骤、需求分析方法(面向数据流图分析方法、面向对象的分析方法)。2022/7/22一、确定目标系统的具体要求1、确定系统的运行环境要求2、系统的性能要求 3、系统功能 3.1 需求分析的任务 硬件环境和软件环境 确定目标系统具备的所有功能2022/7/22举例数据库中存放的是职工的某学校医疗费管理系统所属部门、职工号、姓名职工报销时应填写: 所属部门、

17、职工号、姓名、日期 校内门诊、校外门诊、住院费、子女医疗费 医疗费分类: 该校规定,每年每个职工的医疗费有一个限额(如 80元),限 额在年初确定,其限额规则如下: 1、每个职工一年内报销的医疗费不超过限额时,全部报销 2、超额,则超出部分只可报销90%,其余10%由职工个人负担 3、职工子女的医疗费也有限额(如 40元) 2022/7/22 1、医疗费管理系统每天记录当天报销的若干职工或职工子女的医 疗费的类别、金额。 2、在当天下班前让系统自动结帐、统计当天报销的医疗费总额,供 出纳员核对。 3、每笔帐要保存备查,每天所报销的费用要和各个职工已报销的金 额累计起来,以便检查哪些职工已超额。

18、 4、系统还要配有适当的查询功能。 5、年终结算后,下一年度开始时要对数据库文件进行初始化。 6、当职工调离本单位,职工调如本单位或在本单位内部门间调动, 数据库文件应能及时得到修改。 请完成对上述系统的 需求分析用户对系统的要求2022/7/22 该系统规模不太大,可以和用户单位的其他管理系统使用相同的计算机硬件设备、相同的操作系统和相同的关 系数据库管理系统。 如果,可以使用汉化了的数据库管理系统,但在建立数据库结构时,凡是用英文名称来代表字段名时,则必须在数据字典中予以说明。 1、确定系统的环境要求2022/7/223、系统的功能 (1)具有表格形式屏幕的输入格式 (2)具有重复录入数据

19、的功能 (3)具有查询和统计汇总的功能 (4)职工的调入和调出以及对数据库的初始化2022/7/222、系统性能要求 (1)数据不能随意更改 2)保证数据的准确性 由于医疗费管理系统涉及到会计经费问题,数据不能随意更改但数据输入又难免会出错。因而在每输入一个职工的医疗费后,屏幕提示“数据有误吗?”。若是在核对时 有误,可及时更改,避免输入错误。一天报销结束时,在 数据存档前,再让出纳员核对一下经费总额,若出纳员支 出的金额总数有误时,应让计算机显示每笔帐目,供一一 仔细核对,此时在允许修改一次。当正式登帐后,数据就 绝对不允许在修改了,由此保证财务制度的严格性,保证 数据的安全性。 2022/

20、7/22二、建立目标系统的逻辑模型 通常软件软件开发项目是要实现目标系统的物理模型,即 确定待开发软件系统的系统元素,并将功能和数据结构分配到 这些系统元素中。它是软件实现的基础。 但是目标系统的物理模型是由它的逻辑模型经实例化,即 具体到某个业务领域而得到的。与物理模型不同,逻辑模型忽 视机制和细节,只描述系统要完成的功能和要处理的数据。 为此,该阶段的主要任务是,借助于当前系统的逻辑模型 导出目标系统的逻辑模型,也就是解决目标系统“做什么”的问 题。2022/7/22用户调查具体模型建立系统模型的工作流程逻辑抽象当前系统逻辑模型当前系统计算机化评审修改正式模型完善细节目标系统目标系统初始模

21、型经认可的问题需求系统模型用户 1、建立目标系统逻辑模型的步骤2022/7/22图形工具 数据流图 数据字典 2、建立目标系统逻辑模型的图形工具2022/7/22 - 学生购买教材的具体模型 举例请建立计算机售书系统的逻辑模型张秘书学生购书 购书 王会计发票李出纳领书赵保管单申请证明书 -学生购买教材的 逻辑模型 审查有效性学生有效购书单 开发票发票开领书单领书单发书购书单书2022/7/22 -学生购买教材的 逻辑模型 审查并开发票学生发票购书单 各班学生用书表教材存量表无效书单开领书单领书单学生 完善目标系统并补充细节,的出目标系统的正式逻辑模型2022/7/22三、需求规格说明书与评审

22、软件需求说明书 - SRS(Software Requirement Specification) 主要包括以下的内容: SRS 引言 数据描述 数据流图 数据字典 功能描述 性能描述 特殊需求2022/7/22一、数据流图 3.2 面向数据流的方法 - DFD(Data Flow Diagram) 是用来描述系统逻辑模型的一种图形工具。 数据流图从数据传递和加工的角度,以图形的方式刻画数据流从输入到输出的移动变换过程。 DFD2022/7/22储户检验付款登录存折帐卡取款信息办理取款手续的 DFD 图检验不合格现款付款信息取款单存折2022/7/221、数据流图中的主要图形元素 - 转换数据

23、流的处理过程 - 可以是数据库文件或任何形式的数 据组织。箭头向内则表示写入文件 或查询文件,箭头向外则表示从文 件中读取数据或得到查询结果 数据转换外部实体 - 位于软件系统边界之外的信息生产者 或 消费者数据流 - 在转换之间有向流动的数据项或数据 集合数据存储文件2022/7/22- 系统逻辑模型数据的加工或变换输入输出软件系统外部实体外部实体 外部实体外部实体 输入数据流输入数据流输出数据流输出数据流2022/7/22 -学生购买教材的 逻辑模型 审查并开发票学生发票购书单 各班学生用书表教材存量表无效书单开领书单领书单学生外部实体数据的加工2022/7/222、数据流图中的其它图形元

24、素ABC - 有 A 则 B 或者 C,或者两者都有*ABC+ABC - 有 A 则 B 与 C,或者两者同时有 - 有 A 则 B 或 C,但不会同时有B与C2022/7/22- 标识多个数据流与加工之间关系的符号 - 当 A 或 B 有一个存在就有 CABC*ABC - 只有当 A 与 B 都存在,则有 C2022/7/223、分层的数据流图 F0A0B0F11A0B0F12F13F14F15p1C1D1M1N1F21M1F22N1F23K2F24W2F25p1Y2X2第 n 层第 n+1 层第 n+2 层2022/7/22人工销售教材 系统流程图学生开购书证明购书证明开购书发票 发 票收

25、书费 领书单发书学生举例2022/7/22学生教材购销系统购书单领书单缺书单进书通知进书通知保管员1销售购书单领书单学生缺书单进书通知2采购保管员第 1 层第 2 层 教材存量表 F1 缺书登记表 F2外部实体外部实体2022/7/22 教材销售子系统 无效书单购书单1.3登记并开领书单1.2开发票1.1审查有效性1.4登记缺书1.5补售教材采购学生学生进书通知有效书单发票领书单暂缺书单1销售购书单领书单缺书单进书通知2采购进书通知缺书登记表教材存量表学生保管员第 2 层补售书单第 3 层 教材存量表 F1 缺书登记表 F2 F1书号单价数量 各班用书表 F3 售书登记表 F4外部项2022/

26、7/221销售购书单领书单缺书单进书通知2采购进书通知缺书登记表教材存量表学生保管员采购 子系统 第 2 层第 3 层缺书单2.3修改教材库存和待购量销售进书通知进书通知2.1按书号汇总缺书2.2按出版社统计缺书保管员 教材存量表 F1 待购教材表 F5 教材一览表 F6 缺书登记表 F22022/7/22 . 便于实现. 便于使用 - 采用逐步细化的扩展方法,可避免一 次引入过多的细节,有利于控制问题 的复杂度; - 用一组图代替一张总图,方便用户及 软件开发人员阅读。4、分层 DFD 图的优点2022/7/22 . 注意父图和子图的平衡5、画分层 DFD 的指导原则发票1.3开领书单领书单

27、(a) 父图 1.3.1学生领书单1.3.21.3.3教材(a)子图 2022/7/22 . 区分局部文件和局部外部项 . 掌握分解的速度 一般来说,每一个加工每次可分为 2-4个子加工,最 多不得超过 7 个。. 遵守加工编号规则 顶层加工不编号。第二层的加工编号为1,2,3,n号。第三层编号为1.1,1.2,1.3n.1,n.2等号,依此类推。2022/7/221销售购书单领书单缺书单进书通知2采购进书通知缺书登记表教材存量表学生保管员采购 子系统 第 2 层第 3 层缺书单2.3修改教材库存和待购量销售进书通知进书通知2.1按书号汇总缺书2.2按出版社统计缺书保管员 教材存量表 F1 待

28、购教材表 F5 教材一览表 F6 缺书登记表 F2局部外部项局部文件2022/7/22练请画出学生成绩管理系统的 DFD 图 习2022/7/22二、数据字典 - DD(Data Dictionary) 数据字典的任务是: 对于数据流图中出现的所有被命名的图形元素在字典中作为一个词条加以定义,使得每一个图形元素的名字都有一个确切的解释。DD2022/7/221、数据字典的定义数据流名: 说明:简要介绍作用即它产生的原因和结果。 数据流来源:即该数据流来自何方。 数据流去向:去向何处。 数据流组成:数据结构。 每个数据量流通量:数据量、流通量。(1) 数据流词条的描述 数据流名:发票 说明:用作

29、学生已付书款的依据 数据流来源:来自加工“审查并开发票” 数据流去向:流向加工“开领书单”。 数据流组成:学号+姓名+书号+单价总价+书费合计审查并开发票发票购书单 2022/7/22数据元素名: 类型:数字(离散值、连续值),文字(编码类型) 长度: 取值范围: 相关的数据元素及数据结构 (2) 数据元素词条的描述 年 = “1900”.“3000” 月 = “01”.“12” 日 = “01”.“31” 摘要 = 1字母4 金额 = “00000000.01”.“999999999.99” 2022/7/22(3) 数据文件词条的描述 数据文件名: 简述:存放的是什么数据。 输入数据: 输

30、出数据: 数据文件组成:数据结构。 存储方式:顺序,直接,关键码。 存取频率: 审查并开发票学生发票购书单 各班学生用书表教材存量表2022/7/22 加工名: 加工编号:反映该加工的层次 简要描述:加工逻辑及功能简述 输入数据流: 取值范围: 相关的数据元素及数据结构 (4) 加工逻辑词条的描述 1.3审查并开发票学生发票购书单 各班学生用书表教材存量表2022/7/22 名称:外部实体名 简要描述:什么外部实体 有关数据流: 数目:(5) 外部实体词条描述 1销售购书单领书单缺书单进书通知2采购进书通知缺书登记表教材存量表学生保管员2022/7/222、数据字典定义符号 符号含 义例 子

31、=被定义为+与 x=a+b,则表示 x 由 a 和 b 组成x=a,b,则表示 x 由 a 或由 b 组成 或重复x=a,则表示 x 由 0个或多个 a 组成( )可选 表示在两个 * 之间的内容为词条的注释m n重复x=3a8,则表示x中至少出现3次a ,最多出现8次*注释符x=(a),则表示 a 在 x 中出现, 也可不出现2022/7/22储户检验付款登录存折帐卡取款信息- 办理取款手续的 DFD 图检验不合格现款付款信息取款单存折练习请为下列给出的 DFD 图编写 DD2022/7/22日期年月日摘要支出存入余额操作复核户名:储蓄网点名称:帐号:开户日:性质:印密:- 存折格式2022

32、/7/22日期 (年月日)摘要支出存入余额操作复核户名:储蓄网点名称:帐号:开户日:性质:印密:存折 = 户名+所号+帐号+开户日+性质+(印密)+1存取行20户名 = 2字母24所号 = “001”.“999”帐号 = “00000001”.“99999999”开户日 = 年+月+日性质 = “1”.“6”印密 = “0”存取行 = 日期+(摘要)+支出+存入+余额+操作+复核日期 =年+月+日年 = “1900”.“3000” 月 = “01”.“12” 日 = “01”.“31”摘要 = 1字母4支出 = 金额金额 = “00000000.01”.“999999999.99” 2022/

33、7/223、数据字典的实现数据字典的实现 人工方法 自动方法将每一字典中的词条写在一张卡片上,由专人管理和维护利用 “字典管理程序”在计算机中对字典进行管理和维护。2022/7/22三、加工说明 -(Process Specification) 加工说明是:对 DFD 中每个加工给予说明。它是从系统功能的角度对 DFD 作出了注解,与 DD 一样是DFD 必不可缺少的辅助资料。PS2022/7/22加工说明组成输入数据加工逻辑输出数据加工说明描述工具结构化语言判定表判定树 描述把输入数据流变 换为输出数据流的加工过 程,是加工说明的主体。2022/7/22 -学生购买教材的 逻辑模型 审查并开

34、发票学生发票购书单 各班学生用书表教材存量表无效书单开领书单领书单学生2022/7/22自然语言+结构化形式结构化语言选择结构如果 If 如果 则 否则 情况1 情况n If then Otherwise case 1 case n 循环结构对 , 重复以下 直至 For each , Repeat the following: Until 2022/7/22 例1: 请写出下列在 DFD 图中给出的 “统计晚婚职工” 的加工说明 Count Late-MarriageEmployeesLate-Marriage -Count Request职工名册文件Late-Marriage-List=L

35、ist-Count+Name-ListName-List=Name2022/7/22 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-Cou

36、nt. Until there are no more Staff-Records. Combine List-Count and Name-List. Write Up Late-Marriage-List. 2022/7/22 -学生购买教材的 系统逻辑模型 审查并开发票学生发票购书单 各班学生用书表教材存量表无效书单开领书单领书单学生 例2: 请为下列DFD中的“审查并开发票”加工点写 加工说明 2022/7/22把学生学号和姓名写到发票上按购书单上学生的年级和系、专业与班号 检索“各班学生用书表”文件,获得该生当年的书单 对 购书单上的每一书号 如果 书单上无此书号 则 把书号写到出错

37、通知单上 否则 按书号检索 “教材存量表”文件, 从而获得该书的单价与库存量 如果 库存量 购书单的数量 则 将书号写到出错通知单上 否则 将书号、单价、数量、总价等项写入到发票上; 更新存书量,并写回“教材存量表” 文件; 累计书费合计 把书费合计写到发票上对每张购书单2022/7/22分房加工婚龄中级职称晚婚正常分房优先分房不分房分房加工逻辑判断表采用表格的形式来表达具复杂判断的加工逻辑1、一般职工婚后5年可参加分房 2、中级以上职称的职工婚后3年 可参加分房 3、符合正常分房条件的职工, 若再符合晚婚条件可优先分房2022/7/22分房加工婚龄中级职称晚婚正常分房优先分房不分房12345

38、6说 明条件婚 龄5年3-5年 5年3-5 年$500$500=$50060天60天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,人类信息处理能力的限度2022/7/2

39、2C(P1+P2)C(P1)+C(P2)E(P1+P2)E(P1)+E(P2)软件工程基本定理最小成本区M模块成本接口成本总成本软件开发工作量 模块数 2022/7/22 每个模块的实现细节对于其他模块来说是隐藏的。 也就是说,模块中所包含的信息是不允许其他不需要 这些信息的模块使用的。 2、信息隐藏(information hiding)栈stack置空栈 makenull进栈 push退栈 pop2022/7/223、模块的独立性(module independence) 模块的独立性是指软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中其他模块的接口是简单的。耦合 模块之间的

40、相对独立性的度量。 内聚 模块功能强度的度量。 2022/7/22(1)、内聚(Cohesion)低功能内聚信息内聚通信内聚过程内聚时间内聚逻辑内聚巧合性内聚 高强弱 内聚性模块独立性2022/7/22 偶然性内聚 M STORE RECN() TO N READ MASTRE FILE ADD 1 TO X 。 。 ABC 当模块内各部之间没有联系,或者即使有联系,这种联系也很松散。则称这种模块为巧合内聚模块。 2022/7/22 逻辑性内聚 这种模块是把几种功能组合在一起,每次调用时,则由传递给模块的判定参数来确定该模块应执行哪一种功能。 调用模块判定读一个记录写一个记录被调用模块2022

41、/7/22SXYZWABCDSXYZW ABCD2022/7/22 信息性内聚 这种模块能完成多个功能,各个功能都在同一数据结构上操作,每一项功能有一个唯一的入口点。 符 号 表 查找登录删除修改2022/7/22 功能性内聚 如果一个模块内所有成分都完成一个功能则称这样的模块为功能模块。 主控模块录入查询打印低功能内聚信息内聚通信内聚过程内聚时间内聚逻辑内聚巧合性内聚 高强弱 内聚性模块独立性2022/7/22(2)、耦合 耦合性是程序结构中各个模块之间相互关联的度量它取决于各个模块之间接口的复杂程度、调用模块的方式以及那些信息通过接口。低非直接耦合数据耦合标记耦合控制耦合外部耦合公共耦合内

42、容耦合 高弱 强耦合性模块独立性2022/7/22 公共耦合 允许一组模块访问同一全局性的数据结构。全局数据区ABCDEFB、C、E 为公共耦合2022/7/22 控制耦合 如果一个模块通过传送开关、标志、名字 等控制信息,明显地控制选择另一模块的功能 就是控制耦合。A 模块flagf1Bf2fn 2022/7/22 以上给出了 7种耦合类型,这只是从耦合 的机制上所做的分类,按耦合的强弱程度的排 列只是相对的关系。但它给设计人员在设计程 序结构时提供了一决策准则。实际上,开始时 两个模块之间的耦合不只是一种类型,而是多 种类型的混合。这就要求设计人员按照实际情 况进行分析、比较和分析,逐步加

43、以改进,以 提高模块的独立性。2022/7/224.5 结构化设计方法(SD- Structured Design) 结构化设计方法是基于模块化、自顶向下细化、结构化程序设计等程序设计技术基础发展起来的。 它所提供的方法和原则,主要是用来指导软件的概要设计。它还提供了一种 “结构图” 的描述工具,是专门用来描述软件的总体结构的。 2022/7/22 结构化设计属于面向数据流 的设计方法。 在软件的需求分析阶段,数据流是软件开发人员考虑问题的出发点和基础。数据流从系统的输入端向输出端,则要经历一系列的变换或处理。用来表现这个过程的数据流(DFD),实际上就是软件系统的逻辑模型。 面向数据流的设计

44、要解决的任务,就是在上述需求分析的基础上,将DFD图 映射(Mapping)- 软件系统的结构。 换句话说,这类设计方法,允许把用 DFD图表示的系统逻辑模型,很方便地转换成对于软件结构的初始设计描述。 结构化设计方法中,软件的结构一律用 SC 图来描述。2022/7/22结构化设计的目的 使程序的结构尽可能反映要解决的问题的结构结构化设计的任务 完成目标系统的系统结构图(SC)2022/7/22目标系统的DFDSC 图 - Structured Chart 该图常用来表示系统的软件结构。利用它可以清楚地表达软件结构中模块间的层次调用关系和模块之间的联系。 SD目标系统的SC2022/7/22

45、ASC 图中的主要内容1、模块-在SC图中用矩形框表示,并用名字来标记它- 模块调用关系2、模块的调用关系和接口B调用模块调用模块A(查询学生)B(查找学生记录)数据信号控制信号学号查找成功信号- 模块间接口的表示2022/7/22产生最佳解得到好的输入计算最佳解输出结果读输入编辑输入好输入好输入解解原始输入原始输入编辑结果结果格式化显示结果解格式化的解SC 图的一般格式2022/7/221、在系统结构图中的模块一、典型的系统结构形式原子模块: 在系统结构图中通常是指不能再分割的底层模块 完全因子分解系统 如果一个软件系统,它的全部实际加工 (即数据计算或处理)都是由底层的原子模块来 完成,而

46、其它所有非原子模块仅仅执行控制或 协调功能。2022/7/22传入模块AA传入模块 从下属模块取得数据,进行某些处理,再将其结果 传给上级模块。在此,将它传送的数据流称为逻辑输入 数据流。 在系统结构图中有四种类型的模块:逻辑输入数据流成绩处理成绩录入 2022/7/22传出模块 从上级模块获得数据,进行某些处理,再将其结果 传给下属模块。在此,将它传送的数据流称为逻辑输出 数据流。 传出模块DD逻辑输出数据流成绩处理成绩输出 2022/7/22变换模块 也叫加工模块。它是从上级模块获得数据,进行 特定的处理,将其转换为其他形式,再传回上级模块 它所加工的数据流叫做变换数据流。 变换模块CB变

47、换数据流审查并开发票发票购书单 2022/7/22协调模块 对所有下属模块进行协调和管理的模块。在一个 好的系统结构图中,协调模块应在较高层出现。协调模块YXYX2022/7/222、典型的系统结构形式之一(变换型系统结构图)取得数据iaeo变换数据给出数据传入部分变换中心传出部分- 具有变换型数据流图2022/7/22主模块C变换成D取得C给出D取得BB变换成CD变换成E给出E取得AA变换成BAABBBCCDCDED取得数据CD变换数据给出数据协调模块变换模块传出模块- 具有变换型系统结构图DFD-SC2022/7/223、典型的系统结构形式之二(事务型系统结构图)“事务” 引起、触发或启动

48、某一动作或一串动作的任何数据、控制信号、事件或状态的变化。 由它接受一项事务,根据事务处理的特点和性质 选择分配一个适当的处理单元,然后给出结果。2022/7/22输入- 事务型 数据流图1ABC3DEFGH24567中心变换输出逻辑输入物理输入逻辑输出物理输出2022/7/221ABC3DEFGH24567MT3逻辑输入逻辑输出CDCD,E,F456- 事务型 数据流图(DFD)- 事务型 系统结构图(SC)2022/7/22事务中心输入已分析的作业内部表示的作业结果- 事务型系统结构(层次)图输出结果调度作业信息读入作业分析作业事务1事务2事务3事务4操作2操作3 操作4 操作5操作6操作

49、1细节2细节3 细节4 细节5细节6细节1细节7结果2022/7/22-简化的事务型系统结构图事务中心得到作业 作业结果输出结果分析调度事务1事务2事务32022/7/22二、从 DFD 图导出 SC图的步骤开 始细化修改SRS中的DFD图判断DFD图的结构类型 是变换型吗?F事务分析变换分析完善SC 图T对最终的SC 图进行评审结束2022/7/221、变换分析-是将具有变换型的DFD图导出SC图变换分析 从物理输入、物理输出及变换中心进行由顶向下的分解得出各个分支的所有组成模块 在数据流图上区分系统的逻辑输入、逻辑输出和变换中心部分,并标出它们的分界。 进行一级分解,设计系统模块结构的顶层

50、和第一层。 进行二级分解,设计中、下层模块。2022/7/22(1)在 DFD 图上标出逻辑输入、逻辑输出和变换中心的分界AeBaCbDcEdPQRwuvwuvrp变换中心c,e 逻辑输入w,u 逻辑输出- 具有变换型数据流图2022/7/22(2) 完成第第一级分解AabcPwuvrpBCDdeEQRWUVMcMAMTMEC,eC,eU,wU,w变换中心顶层第一层第一级分解后的 SC 图协调模块YXYX2022/7/22AabcPwuvrpBCDdeEQRWUV第一级分解后的 SC 图(另一种画法)McMA1ME1C eU MA2QPRME2e c,p pr r w,uw2022/7/22(

51、3) 完成第第二级分解AabcPwuvrpBCDdeEQRWUVMA变换中心对逻辑输入的分解CEBADabdeccbaABCMAEDde 逻辑输入模块的调用与执行过程2022/7/22MACEBADabdecMAGet CGet EBtoCAtoBDtoEaecReadDGet BRead Ac,eabbbcde2022/7/22AabcPwuvrpBCDdeEQRWUVME变换中心对输出的分解WUVvuwMTQPR eC,prU,w对变换中心加工的分解 prw,u2022/7/22MACBAEDMTQPR从变换分析导出的初始 SC 图MEWUVMCc, eW,uW,uC,e(4) 获得完整的

52、 SC 图2022/7/22运用变换分析方法建立系统的SC时需注意以下几点: 模块设计的次序时,应遵循对一个模块的全部直接下属模块都设计完成后,再转向另一个模块的下层模块的设计。 在设计下层模块时,应考虑模块的耦合和内聚问题,以提高设计初始SC图的质量。 注意“黑盒”技术的使用。2022/7/22主模块ABCA1A2A3A11A12A132022/7/22低功能内聚信息内聚通信内聚过程内聚时间内聚逻辑内聚巧合性内聚 高强弱 内聚性模块独立性低非直接耦合数据耦合标记耦合控制耦合外部耦合公共耦合内容耦合 高弱 强耦合性模块独立性 具有高内聚低耦合的模块才是模块独立性比较强的模块。2022/7/22

53、 具有高内聚低耦合的模块才是模块独立性比较强的模块。模块A模块D模块C模块B非直接耦合通过参数表传递数据(数据耦合)通过参数表传递数据结构(数据耦合) 具有松散型 的耦合类型 2022/7/22请将上列给出的具有变换型的DFD图导出它的SC图练习A1A2a1a2P B b1C1c1C2c1p1P2 2022/7/222、事务分析-是将具有事务型的DFD图导出SC图IALMNOBCDEFGH事务中心事务源2022/7/22IALMNOBCDEFGH主模块给出H取得ALMNA GHBECF D2022/7/22发送部分请将下列给出的采购子系统 DFD 图转换成SC图练习2.12.22.3书库保管员

54、F2F1F5F6F7加工名称:2.1 按书号汇总缺书2.2 按出版社汇总缺书2.3 修改教材库存和待 购量文件名称:F1 教材存量表F2 缺书登记表F5 待购教材表F6 教材一览表F7 进书登记表2022/7/22发送部分采 购按书号汇总缺书登记表统计缺书登记进书按出版社汇总打印缺书单修改教材存量表修改教材待购量统计命令登记命令待购教材表暂缺书单暂缺书单进书通知进书通知- 采购子系统的 SC 图 -缺书登记表=班号+姓名+书号+数量2022/7/22三、软件模块结构的改进一、模块功能的完善化执行指定的功能部分出错处理的部分。2022/7/22 二、消除重复功能,改善软件结构。完全相似局部相似2

55、022/7/22XYR1R2 物理输入相似部分XYR1 R2RX+R1 Y+R2R相似模块的各种合并方案的示意图2022/7/22 三、模块的作用范围应在控制范围之内。作用范围:是一个与条件判定 相关联的所有模块。控制范围:包括模块本身及其所有的从属模块(即供它调用的模块)。2022/7/22模块的控制范围:包括模块本身及其所有的从 属模块(即供它调用的模块)。ABDCEFG关于模块的控制范围示意图 2022/7/22 一个模块的作用范围,是指受这个模块中的判定所影响的模块 。 关于模块的作用范围/控制范围的关系示意图 TopABCDEGG DBC控制耦合2022/7/22TopCDEB2BD

56、G C 理想的情况,应该使判定的作用范围和判定所在模块的控制范围尽可能地吻合(即应使模块的作用范围尽可能地在控制范围之内)。符合作用范围/控制范围的理想判定位置 DCGBA对于一个理想 SC图中的模块设计, 所有受到一个判定影响的模块应该都从属该判定所在的模块,最好位于作出判定的那个模块本身及它的直接下属模块。2022/7/22计算实发工资取得工资数据计时工人实发工资计薪工人实发工资编外人员实发工资计时制工资额税收扣款薪金制工资额常规扣款编外人员 工资编外人员税款编外人员扣款2022/7/22 四、尽可能地减少高扇出结构,随着深度增大扇入。扇入:指模块的上级模块数。 (即共有多少个模块需要 调

57、用这个模块)扇出:指模块调用其下属模块 数目。调用的下属模块数应控制在小于3-4个模块。MM2022/7/22PPP1P2QQ1Q2Q3Q2022/7/22 五、模块的大小要适中。50-100 模块的大小,可以用模块中所含语句的数量的多少来衡量。2022/7/22 六、应设计出功能可预测的模块,但要避免过分受限制的模块。 A2022/7/22发送部分ABABBCT3T2T1CDDEEHFJHKKLLMB1B2B3C1C2C3DEFGHJKLM请将下列给出的 DFD 图转换成SC图作业2022/7/22发送部分请完成下列描述的DFD图,导出它的SC图练习 美国某大学共有200名教师,校方与工会刚

58、刚签定一 项协议按照协议,所有年工资=$26,000的教师工资将保 持不变,年工资100i=i+1 F T循环体 - 循环流程符号的使用 2022/7/22 2、判断有一个入口,但也允许有多个可选出口A:B A=B ABX=? x=1 x=2 x=3 x=4X=? =1 =2 =3 =4 =5 - 多出口判断流程符号的使用 2022/7/22 请利用程序流程图描述下列问题的程序结构 练习 某汽车修配厂,有一个存有汽车零件的仓库,其中存有若干种零件,请编写一个查询程序,用于查询该库中某零件的库存量为多少。 设该模块为 查询模块。请设计该模块的 程序结构。具体要求: 1、应具有重复查询功能; 2、

59、应具有数据检测功能; 3、请利用程序流程图描述该模块的算法。 2022/7/22 顺序型二、N-S 图A B 选择型- Nassi and Shneideman BpFTA ApFT p=1=2=n A1 A2 An do while(p) S do until (p) S 当型循环型 直到型循环型 多分支选择型 2022/7/22零件号100011000210003100041000510006库存量100012508866920203450建立零件库 (s数组), i=0 输入零件号 x do while(x!=s0i)i+i+x=s0i) Y N s0i输出 s1i 输入错误! 继续查询

60、? Y N 跳出循环 2022/7/22三、PAD 图 直到型循环型A BAB pA pWhile P SUntil P S 当型循环型 顺序型 选择型A1 pA2An =1 =2 =n 多分支选择型循环型- Problem Analysis Diagram2022/7/22s17s22=0while num(1-1000) 输入 age age =17 s17+ s18+ =18 s19+ =19 s20+ =20 s21+ =21 s22+ =22while i(17-22) 输出 sibeginend举例2022/7/22练习 请为学生成绩管理系统中的学生成绩统计模块设计程序结构。 要求

温馨提示

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

评论

0/150

提交评论