




已阅读5页,还剩414页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2019/9/28,软件工程,哈尔滨工业大学 韩静萍,Software Engineering,2019/9/28,在一些人眼里,今天的软件开发似乎已 成为简单的事情,已有了不少很好的开发工 具和软件库,软件开发人员训练有素,都强 烈渴望去编写很酷的软件,可以在几天的时 间里编写出一个相当复杂的软件。但为什么 有一些软件能够得到用户的喜欢,而另一些 则不能?为什么有些软件能够在市场上成功 ,而有些则受到冷落?由此可见,开发软件 并不一定难,难就难在如何开发有用的软件。,微软凌小宁博士,2019/9/28,我最大的心得是,一个产品一定要找到能够 真正适用的场合,不能只是为了技术而从事技术 为了研究而进行研究,却不管用户对你所研究的 技术和产品有没有需求。否则,无论你的技术是 多么优秀,多么先进,恐怕你的产品在市场上都 无法获得成功。,微软张益肇博士,2019/9/28,2019/9/28,本课程比较全面、系统地介绍软件工程的概念、技术 与方法。 主要内容包括:软件工程概述、软件生存周期及软件 需求分析、软件设计方法、软件测试技术等。 通过本课程的学习,使学生能真正的从中了解软件开 发的整个过程。为了让学生真正得以实践,结合实际软件 开发项目,让学生从问题定义开始,经过可行性研究、需 求分析、概要设计、详细设计、编码直到最后要对自己开 发的软件还要进行测试,这样一个软件开发过程,从而使 学生掌握软件开发的基本技能。,课程主要内容,2019/9/28,2019/9/28,各 章 学 时 安 排,2019/9/28,第一章 软件工程概述,水利工程,建筑工程,机械工程, ,软件工程,本章将对软件的地位和作用、软件的特点、软件 的发展、软件的危机以及软件工程学科的形成、软件 生期等方面的问题和基本概念,传统工程,新兴工程,气象工程,生物工程,2019/9/28,1.1 软件的概念与特点,1、软件,software,soft+ware,软制品 (软体),软件是计算机系统中与硬件相互依存的另一部分。 它包括程序、数据及其相关文档的完整集合。,2019/9/28,2、软件特点,. 软件是一种逻辑实体,而不是具体的物理实体,. 软件的生产与硬件不同,. 在软件的运行和使用期间,没有硬件那样的机械 磨损,老化问题,磨合调整,磨损用坏,修改点,实际曲线,理想曲线,2019/9/28,. 软件的成本相当昂贵,软件技术的发展落后于需求,硬、软件成本比例的变化,年份,成本%,软件,硬件,2019/9/28,3、软件的分类,1、按软件的功能进行划分,2019/9/28,支撑软件,2019/9/28,2、按软件的规模进行划分,2019/9/28,3、按软件开发划分,2019/9/28,1.2 软件工程的概念及范畴,1、“软件工程”,-Software Engineering,于1968年 NATO 组织在 德国召开的一次会议上提出,是把软件当作一种工业产品,要求 “采用工程化的 原理与方法对软件进行计划、开发和维护 ”。,2019/9/28,软件工程学,软件开发技术,软件工程管理,软件开发方法学,软件工具,软件工程环境,软件工程管理学,软件经济学,- 软件工程学的范畴,2、 软件工程学,2019/9/28,Wake up every day with a feeling of passion for the different technology will make in peoples Life.,微软企业文化宗旨部分内容,每天醒来的时候,要对技术给生活造成的改变 始终拥有一份 激情。,2019/9/28,程序,3、软件的演变(即从传统软件开发到现代软件开发),软件,软件产品,传统软件开发,现代软件开发,2019/9/28,1.3 软件生存周期,把软件从产生、发展到成熟、直至衰亡为止,(SW life cycle),2019/9/28,特点: 上一阶段的变换结果 是下一阶段的变换的 输入,相邻两个阶段 具有因果关系,紧密 相联。,需求分析,问题定义,可性行研究,计划 时期,概要设计,详细设计,编 码,测 试,开发 时期,运行与维护,运 行 时 期,软件生存周期模型(瀑布模型 Waterfall Model),2019/9/28,原型模型(Prototype Model),加工 原型,原型:是指模拟某种产品的原始模型,快速分析 和设计,建造 原型,客户 评价原型,1、原型系统仅包括未来系统的 主要功能,以及系统的重要 接口。,2、为了尽快向用户提供原型, 开发原型系统时应尽量使用 能缩短开发周期的语言和工 具。,2019/9/28,第二章 问题的定义与可性行研究,当我们在着手做任何一件工作以前,必须明确工作的性质、任务,制定完成任务的计划,这是非常必要的。同样对于软件产品的开发 ,显然也应该解决好这样类似的问题,明确该软件产品开发的任务,以及完成任务的价值从而制定出完成任务的计划。那么问题的定义和可性行研究就是制定软件系统的计划的第一步。 所以在软件工程中把这一步称为 计划时期,2019/9/28,开始,问题定义,可性行研究,可行否?,项目实施计划,终止项目的建议,结束,Y,计划时期的工作流程图,N,2019/9/28,Who,What,Why,3W,Win CE1.0,有用的软件,2019/9/28,2.1 现状调查和问题的定义,目的:弄清楚用户要求计算机解决什么问题,任务:编写系统目标与规范说明书,系统目标与规范说明书 1、项目:教材销售系统 2、问题:人工销售教材手续繁琐,容易出错 3、项目目标:建立一个高效率、无差错的计算机教材销售系统 4、项目范围:利用现有的计算机,软件开发费用不得超过2000元 5、初步想法:建议在系统中增加对缺书的统计与采购功能 6、可性行研究:建议进行大约10天的可性行研究,且研究费用不超过500元,2019/9/28,2.2 可行性研究与论证,1、经济可行性:,进行成本效益分析,评估项目的开发成本。,基于计算 机系统的 成本由四 部分组成,其论证的焦点是:围绕着对系统开发的价值进行论证,2019/9/28,举例:关于开发CAD系统的软件开发成本及效益分析,该系统节省经费,该系统成本,盈亏平衡点,投资回收期,-成本及效益分析图,2019/9/28,2、技术可行性:,对系统的性能、可靠性、可维护性以及生产率 等方面的信息进行评价。,通过技术可行性的分析,将为新系统提交技术可 行性评估。以指明为完成系统的功能和性能需要什么 技术?需要哪些材料、方法、算法、或者过程等,2019/9/28,可行性 论证报告,2019/9/28,2.3 可行性分析所需工具 (系流程图与系统结构图),1、系统流程图:,是用来描述系统物理模型的一种传统工具。,2019/9/28,2019/9/28,举例,库存清单系统流程图,2019/9/28,人工销售教材 流程图,2019/9/28,计算机售书系统流程图,结束,学生,购书发票,到书库 领书,购书单,终端,审查并 开发票,1,1-学生各学期用书数据库,购书单,2,2-教材存量数据库,2019/9/28,练,习,请画出由下列文字描述的系统流程图,2019/9/28,2、系统结构图:,系统工程师用结构摸板开发的系统模型,用户界面处理,输 入 处 理,维护和自测试,处理和控制功能,输 出 处 理,- 结构摸板 -,2019/9/28,- 传输线的分类系统,3、系统结构环境图(ACD-Architecture Context Diagram),: ACD 可用于描述实现系统与系统运行环境之间的信息边界。,2019/9/28,- 传输线分类系统的 ACD 图,处理与控制功能区,外部实体,2019/9/28,ACD 的层次结构,2019/9/28,作,请画出学生成绩管理系统的 ACD 图,业,2019/9/28,第3 章 软件需求分析,软件需求分析是软件开发早期的一个重要阶段。它 在问题定义和可行性研究阶段之后进行。需求分析的基 本任务是软件人员和用户一起完全弄清用户对系统的确 切要求。这是关系到软件开发成败的关键步骤,也是整 个系统开发的基础。 软件需求分析阶段要求用 需求规格说明书(SRS) 来表达用户对系统的要求。规格说明书可用文字方式表 示,也可用图形表示。 本章将介绍需求分析的任务、步骤、需求分析方法 (面向数据流图分析方法、面向对象的分析方法)。,2019/9/28,一、确定目标系统的具体要求,1、确定系统的运行环境要求,2、系统的性能要求,3、系统功能,3.1 需求分析的任务,硬件环境和软件环境,确定目标系统具备的所有功能,2019/9/28,数据库中存放的是职工的,某学校医疗费管理系统,所属部门、职工号、姓名,职工报销时应填写:,所属部门、职工号、姓名、日期,校内门诊、校外门诊、住院费、子女医疗费,医疗费分类:,该校规定,每年每个职工的医疗费有一个限额(如 80元),限 额在年初确定,其限额规则如下:,1、每个职工一年内报销的医疗费不超过限额时,全部报销 2、超额,则超出部分只可报销90%,其余10%由职工个人负担 3、职工子女的医疗费也有限额(如 40元),2019/9/28,1、医疗费管理系统每天记录当天报销的若干职工或职工子女的医 疗费的类别、金额。 2、在当天下班前让系统自动结帐、统计当天报销的医疗费总额,供 出纳员核对。 3、每笔帐要保存备查,每天所报销的费用要和各个职工已报销的金 额累计起来,以便检查哪些职工已超额。 4、系统还要配有适当的查询功能。 5、年终结算后,下一年度开始时要对数据库文件进行初始化。 6、当职工调离本单位,职工调如本单位或在本单位内部门间调动, 数据库文件应能及时得到修改。,请完成对上述系统的 需求分析,用户对系统的要求,2019/9/28,该系统规模不太大,可以和用户单位的其他管理系统 使用相同的计算机硬件设备、相同的操作系统和相同的关 系数据库管理系统。 如果,可以使用汉化了的数据库管理系统,但在建立 数据库结构时,凡是用英文名称来代表字段名时,则必须 在数据字典中予以说明。,1、确定系统的环境要求,2019/9/28,3、系统的功能,(1)具有表格形式屏幕的输入格式 (2)具有重复录入数据的功能 (3)具有查询和统计汇总的功能 (4)职工的调入和调出以及对数据库的初始化,2019/9/28,2、系统性能要求,(1)数据不能随意更改 2)保证数据的准确性 由于医疗费管理系统涉及到会计经费问题,数据不能 随意更改但数据输入又难免会出错。因而在每输入一个职 工的医疗费后,屏幕提示“数据有误吗?”。若是在核对时 有误,可及时更改,避免输入错误。一天报销结束时,在 数据存档前,再让出纳员核对一下经费总额,若出纳员支 出的金额总数有误时,应让计算机显示每笔帐目,供一一 仔细核对,此时在允许修改一次。当正式登帐后,数据就 绝对不允许在修改了,由此保证财务制度的严格性,保证 数据的安全性。,2019/9/28,二、建立目标系统的逻辑模型,通常软件软件开发项目是要实现目标系统的物理模型,即 确定待开发软件系统的系统元素,并将功能和数据结构分配到 这些系统元素中。它是软件实现的基础。 但是目标系统的物理模型是由它的逻辑模型经实例化,即 具体到某个业务领域而得到的。与物理模型不同,逻辑模型忽 视机制和细节,只描述系统要完成的功能和要处理的数据。 为此,该阶段的主要任务是,借助于当前系统的逻辑模型 导出目标系统的逻辑模型,也就是解决目标系统“做什么”的问 题。,2019/9/28,用户 调查,具体模型,建立系统模型的工作流程,逻辑 抽象,当前系统,逻辑模型,当前系统,计算 机化,评审 修改,正式模型,完善 细节,目标系统,目标系统 初始模型,经认可的,问题需求,系统模型,用户,1、建立目标系统逻辑模型的步骤,2019/9/28,图形工具,2、建立目标系统逻辑模型的图形工具,2019/9/28,- 学生购买教材的具体模型,请建立计算机 售书系统的逻辑模型,-学生购买教材的 逻辑模型,2019/9/28,-学生购买教材的 逻辑模型,完善目标系统并补充细节,的出目标系统的正式逻辑模型,2019/9/28,三、需求规格说明书与评审,软件需求说明书,- SRS(Software Requirement Specification),主要包括以下的内容:,SRS,数据流图,数据字典,2019/9/28,一、数据流图,3.2 面向数据流的方法,- DFD(Data Flow Diagram),2019/9/28,储 户,检验,付款,登录,存折,帐卡,取款 信息,办理取款手续的 DFD 图,检验不合格,现款,付款信息,取款单,存折,2019/9/28,1、数据流图中的主要图形元素,- 转换数据流的处理过程,- 可以是数据库文件或任何形式的数 据组织。箭头向内则表示写入文件 或查询文件,箭头向外则表示从文 件中读取数据或得到查询结果,数据转换,外部实体,- 位于软件系统边界之外的信息生产者 或 消费者,数据流,- 在转换之间有向流动的数据项或数据 集合,数据存储文件,2019/9/28,- 系统逻辑模型,2019/9/28,-学生购买教材的 逻辑模型,2019/9/28,2、数据流图中的其它图形元素,- 有 A 则 B 或者 C,或者两者都有,- 有 A 则 B 与 C,或者两者同时有,- 有 A 则 B 或 C,但不会同时有B与C,2019/9/28,- 标识多个数据流与加工之间关系的符号,- 当 A 或 B 有一个存在就有 C,- 只有当 A 与 B 都存在,则有 C,2019/9/28,3、分层的数据流图,第 n+2 层,2019/9/28,人工销售教材 系统流程图,2019/9/28,学 生,教材 购销 系统,保 管员,外部实体,外部实体,2019/9/28,教材销售子系统,1.3 登记并开 领书单,1.2 开发票,1.1 审查 有效性,1.4 登记 缺书,1.5 补售 教材,采 购,学 生,学 生,暂缺书单,补售 书单,第 3 层,F1 书号 单价 数量,外部 项,2019/9/28,采购 子系统,第 2 层,缺书单,2.3 修改教材库 存和待 购量,销 售,2.1 按书号汇 总缺书,2.2 按出版社统 计缺书,保 管员,2019/9/28,. 便于实现,. 便于使用,- 采用逐步细化的扩展方法,可避免一 次引入过多的细节,有利于控制问题 的复杂度;,- 用一组图代替一张总图,方便用户及 软件开发人员阅读。,4、分层 DFD 图的优点,2019/9/28,. 注意父图和子图的平衡,5、画分层 DFD 的指导原则,2019/9/28,. 区分局部文件和局部外部项,. 掌握分解的速度,一般来说,每一个加工每次可分为 2-4个子加工,最 多不得超过 7 个。,. 遵守加工编号规则,顶层加工不编号。第二层的加工编号为1,2,3,n号。 第三层编号为1.1,1.2,1.3n.1,n.2等号,依此类推。,2019/9/28,局部 外部项,局部 文件,2019/9/28,练,请画出学生成绩管理系统的 DFD 图,习,2019/9/28,二、数据字典,- DD(Data Dictionary),2019/9/28,1、数据字典的定义,数据流名: 说明:简要介绍作用即它产生的原因和结果。 数据流来源:即该数据流来自何方。 数据流去向:去向何处。 数据流组成:数据结构。 每个数据量流通量:数据量、流通量。,(1) 数据流词条的描述,数据流名:发票 说明:用作学生已付书款的依据 数据流来源:来自加工“审查并开发票” 数据流去向:流向加工“开领书单”。 数据流组成:学号+姓名+书号+单价总价+书费合计,2019/9/28,数据元素名: 类型:数字(离散值、连续值),文字(编码类型) 长度: 取值范围: 相关的数据元素及数据结构,(2) 数据元素词条的描述,2019/9/28,(3) 数据文件词条的描述,数据文件名: 简述:存放的是什么数据。 输入数据: 输出数据: 数据文件组成:数据结构。 存储方式:顺序,直接,关键码。 存取频率: ,2019/9/28,加工名: 加工编号:反映该加工的层次 简要描述:加工逻辑及功能简述 输入数据流: 取值范围: 相关的数据元素及数据结构 ,(4) 加工逻辑词条的描述,2019/9/28,名称:外部实体名 简要描述:什么外部实体 有关数据流: 数目:,(5) 外部实体词条描述,2019/9/28,2、数据字典定义符号,=,被定义为,+,与, ,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 中出现, 也可不出现,2019/9/28,请为下列给出的 DFD 图编写 DD,2019/9/28,2019/9/28,2019/9/28,3、数据字典的实现,数据字典的实现,2019/9/28,三、加工说明,-(Process Specification),2019/9/28,加工说明组成,加工说明 描述工具,描述把输入数据流变 换为输出数据流的加工过 程,是加工说明的主体。,2019/9/28,2019/9/28,自然语言+结构化形式,结构化语言,2019/9/28,例1: 请写出下列在 DFD 图中给出的 “统计晚婚职工” 的加工说明,Count Late -Marriage Employees,Late-Marriage -Count Request,职工名册文件,Late-Marriage-List =List-Count+Name-List,Name-List=Name,2019/9/28,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.,2019/9/28,例2: 请为下列DFD中的“审查并开发票”加工点写 加工说明,2019/9/28,把学生学号和姓名写到发票上 按购书单上学生的年级和系、专业与班号 检索“各班学生用书表”文件,获得该生当年的书单 对 购书单上的每一书号 如果 书单上无此书号 则 把书号写到出错通知单上 否则 按书号检索 “教材存量表”文件, 从而获得该书的单价与库存量 如果 库存量 购书单的数量 则 将书号写到出错通知单上 否则 将书号、单价、数量、总价等项写入到发票上; 更新存书量,并写回“教材存量表” 文件; 累计书费合计 把书费合计写到发票上,对每张购书单,2019/9/28,分房加工逻辑,判断表,1、一般职工婚后5年可参加分房 2、中级以上职称的职工婚后3年 可参加分房 3、符合正常分房条件的职工, 若再符合晚婚条件可优先分房,2019/9/28,2019/9/28,判断树,2019/9/28,“检查发货单” 的判断表,2019/9/28,工资管理系统,一、对工资管理系统进行需求分析,二、阅读教课书的 P27 页,2019/9/28,三、把下列用文字叙述的内容请采判断表和判断树描述出来,设某旅游票预定系统中,在旅游旺季 7- 9、12月 份,如果订票超过 50张,则优惠票价的 15% ; 50张以 下,优惠5%。在旅游淡季1-6,10、11月份,若订票超 过 50张,则优惠30%;50张以下,优惠 20%。,2019/9/28,面向对象,3.3 面向对象的需求分析,一、面向对象的概念,2019/9/28,对象,数 据,操作代码,2019/9/28,类,是一组具有相同数据结构和相同操作的对象 集合。类的定义包括一组数据属性和在数据上的 一组合法操作。类定义可视为一个具有类似特性 与共同行为的对象摸板,可用来产生对象。 可以说,类是对象的抽象,而对象是类的具 体实例。,2019/9/28,继承,是在一个已存有的类的基础上建立一个新 的类。并将已存在的类称为-基类或父类; 新建立的类称为派生类或子类。,基 类,派 生 类,2019/9/28,对象继承了类所有属性,- 从类到对象的继承,对象、类、继承,2019/9/28,对象 继承类的所有属性和操作,Buy Sell Weight move,2019/9/28,- 面向对象类的表示模式,2019/9/28,识别对象,1、标识潜在对象,找出通过分析过程中的所有名词或名词短语并合并 同义词。除去有动作含义的名词,使它们将被描述为对 象的操作。 标识规则如下:,(1)、外部实体,(2)、事物,(3)、位置,(7)、聚焦对象,(5)、事件,(6)、角色,(4)、组织机构,2019/9/28,二、面向对象的分析方法(OOA),Object Oriented Analysis,OOA 的核心思想是利用OO的概念 和方法对软件需求建造模型,以使用户 需求逐步精确化、一致化、完全化。 为此, OOA的方法步骤为:,识别对象,属性及外部服务,识别类及其结构,定义对象之 间的消息传递,2019/9/28,例如:,2019/9/28,2、筛选对象,筛选对象规则如下:,(1)、具有记忆自身状态的能力,(2)、有意义的操作,(3)、多个属性,(5)、公共操作,(6)、必须的需求,(4)、公共属性,2019/9/28,第四章 软件设计基础,2019/9/28,4.1 软件设计过程,编码,测试,设计,- 软件开发阶段的信息流,2019/9/28,软件设计任务,4.2 软件设计的任务和步骤,2019/9/28,软件设计方法,4.3 软件设计的方法,2019/9/28,一、模块化设计与信息隐藏,- “模块“又称”构件”一般指用一个名字调用的一段程序,4.4 软件设计基础,模块(module),模块化设计 (modular design) 按适当的原则把软件划分为一个个较小的、相关而又相对独立的模块。,2019/9/28,1、分解(decomposition),E(P1+P2)E(P1)+E(P2),设: C(x) 为复杂程度函数 E(x) 为决定解决问题x所需的工作量(时间)函数,C(P1)C(P2),E(P1)E(P2),C(P1+P2)C(P1)+C(P2),奇妙的数字 7+2,人类信息处理能力的限度,2019/9/28,C(P1+P2)C(P1)+C(P2) E(P1+P2)E(P1)+E(P2),软件工程基本定理,2019/9/28,每个模块的实现细节对于其他模块来说是隐藏的。 也就是说,模块中所包含的信息是不允许其他不需要 这些信息的模块使用的。,2、信息隐藏(information hiding),栈stack,2019/9/28,3、模块的独立性(module independence),模块的独立性是指软件系统中每个模块只 涉及软件要求的具体的子功能,而和软件系统 中其他模块的接口是简单的。,模块之间的 相对独立性 的度量。,模块功能强 度的度量。,2019/9/28,(1)、内聚(Cohesion),低,高,强,弱,内聚性,模块独立性,2019/9/28,偶然性内聚,当模块内各部之间没有联系,或者即使有联 系,这种联系也很松散。则称这种模块为巧合内 聚模块。,2019/9/28,逻辑性内聚,这种模块是把几种功能组合在一起,每次 调用时,则由传递给模块的判定参数来确定该 模块应执行哪一种功能。,被调用模块,2019/9/28,2019/9/28,信息性内聚,这种模块能完成多个功能,各个功能都在同 一数据结构上操作,每一项功能有一个唯一的入 口点。,符 号 表,2019/9/28,功能性内聚,如果一个模块内所有成分都完成一个功能 则称这样的模块为功能模块。,低,高,强,弱,内聚性,模块独立性,2019/9/28,(2)、耦合,耦合性是程序结构中各个模块之间相互关联的度量 它取决于各个模块之间接口的复杂程度、调用模块的方 式以及那些信息通过接口。,低,高,弱,强,耦合性,模块独立性,2019/9/28,公共耦合,允许一组模块访问同一全局性的数据结构。,2019/9/28,控制耦合,如果一个模块通过传送开关、标志、名字 等控制信息,明显地控制选择另一模块的功能 就是控制耦合。,2019/9/28,以上给出了 7种耦合类型,这只是从耦合 的机制上所做的分类,按耦合的强弱程度的排 列只是相对的关系。但它给设计人员在设计程 序结构时提供了一决策准则。实际上,开始时 两个模块之间的耦合不只是一种类型,而是多 种类型的混合。这就要求设计人员按照实际情 况进行分析、比较和分析,逐步加以改进,以 提高模块的独立性。,2019/9/28,4.5 结构化设计方法(SD- Structured Design),结构化设计方法是基于模块化、自顶向 下细化、结构化程序设计等程序设计技术基 础发展起来的。 它所提供的方法和原则,主要是用来指 导软件的概要设计。它还提供了一种 “结构 图” 的描述工具,是专门用来描述软件的总 体结构的。,2019/9/28,结构化设计属于面向数据流 的设计方法。 在软件的需求分析阶段,数据流是软件开发人员考虑问题的出 发点和基础。数据流从系统的输入端向输出端,则要经历一系列的 变换或处理。用来表现这个过程的数据流(DFD),实际上就是软件 系统的逻辑模型。 面向数据流的设计要解决的任务,就是在上述需求分析的基础 上,将DFD图 映射(Mapping)- 软件系统的结构。 换句话说,这类设计方法,允许把用 DFD图表示的系统逻辑模 型,很方便地转换成对于软件结构的初始设计描述。 结构化设计方法中,软件的结构一律用 SC 图来描述。,2019/9/28,2019/9/28,目标系统的DFD,SC 图 - Structured Chart,该图常用来表示系统的软件结构。利用它可以清楚地表达软件结构中模块间的层次调用关系和模块之间的联系。,SD,目标系统的SC,2019/9/28,A,SC 图中的主要内容,1、模块-在SC图中用矩形框表示,并用名字来标记它,- 模块调用关系,2、模块的调用关系和接口,B,调用模块,调用模块,A(查询学生),B(查找学生记录),数据信号,控制信号,学 号,查找成功信号,- 模块间接口的表示,2019/9/28,SC 图的一般格式,2019/9/28,1、在系统结构图中的模块,一、典型的系统结构形式,原子模块: 在系统结构图中通常是指不能再分割的 底层模块,完全因子分解系统,如果一个软件系统,它的全部实际加工 (即数据计算或处理)都是由底层的原子模块来 完成,而其它所有非原子模块仅仅执行控制或 协调功能。,2019/9/28,从下属模块取得数据,进行某些处理,再将其结果 传给上级模块。在此,将它传送的数据流称为逻辑输入 数据流。,在系统结构图中有四种类型的模块:,逻辑输 入数据流,2019/9/28,从上级模块获得数据,进行某些处理,再将其结果 传给下属模块。在此,将它传送的数据流称为逻辑输出 数据流。,逻辑输 出数据流,2019/9/28,也叫加工模块。它是从上级模块获得数据,进行 特定的处理,将其转换为其他形式,再传回上级模块 它所加工的数据流叫做变换数据流。,C,B,变换 数据流,2019/9/28,对所有下属模块进行协调和管理的模块。在一个 好的系统结构图中,协调模块应在较高层出现。,Y,X,Y,X,2019/9/28,2、典型的系统结构形式之一(变换型系统结构图),i,a,e,o,变换 数据,传入部分,变换中心,传出部分,- 具有变换型数据流图,2019/9/28,主模块,C变换成D,取得C,给出D,取得B,B变换成C,D变换成E,给出E,取得A,A变换成B,A,A,B,B,B,C,C,D,C,D,E,D,协调模块,变换模块,传出模块,- 具有变换型系统结构图,2019/9/28,3、典型的系统结构形式之二(事务型系统结构图),“事务”,由它接受一项事务,根据事务处理的特点和性质 选择分配一个适当的处理单元,然后给出结果。,2019/9/28,输入,- 事务型 数据流图,1,A,B,C,3,D,E,F,G,H,2,4,5,6,7,中心变换,输出,逻辑 输入,物理 输入,逻辑 输出,物理 输出,2019/9/28,- 事务型 数据流图(DFD),- 事务型 系统结构图(SC),2019/9/28,2019/9/28,-简化的事务型系统结构图,2019/9/28,二、从 DFD 图导出 SC图的步骤,开 始,事务分析,变换分析,完善SC 图,2019/9/28,1、变换分析,-是将具有变换型的DFD图导出SC图,变换 分析,2019/9/28,(1)在 DFD 图上标出逻辑输入、逻辑输出和变换中心的分界,变换中心,c,e 逻 辑输入,w,u 逻 辑输出,- 具有变换型数据流图,2019/9/28,(2) 完成第第一级分解,Mc,MA,MT,ME,C,e,C,e,U,w,U,w,变换中心,顶层,第一层,第一级分解后的 SC 图,2019/9/28,第一级分解后的 SC 图(另一种画法),2019/9/28,(3) 完成第第二级分解,MA,变换中心,对逻辑输入的分解,C,E,B,A,D,逻辑输入模块的调用与执行过程,2019/9/28,2019/9/28,ME,变换中心,对输出的分解,W,U,V,MT,Q,P,R,e,C,p,r,U,w,对变换中心加工的分解,p,r,w,u,2019/9/28,(4) 获得完整的 SC 图,2019/9/28,运用变换分析方法建立系统的SC时需注意以下几点:,模块设计的次序时,应遵循对一个模块 的全部直接下属模块都设计完成后,再转向 另一个模块的下层模块的设计。,在设计下层模块时,应考虑模块的耦合 和内聚问题,以提高设计初始SC图的质量。,注意“黑盒”技术的使用。,2019/9/28,主模块,A,B,C,A1,A2,A3,A11,A12,A13,2019/9/28,低,高,强,弱,内聚性,模块独立性,低,高,弱,强,耦合性,模块独立性,具有高内聚低耦合的模块 才是模块独立性比较强的模块。,2019/9/28,具有高内聚低耦合的模块 才是模块独立性比较强的模块。,模块A,模块D,模块C,模块B,非直接 耦合,通过参数表 传递数据 (数据耦合),通过参数表 传递数据结构 (数据耦合),具有松散型 的耦合类型,2019/9/28,请将上列给出的具有变换型的DFD图导出它的SC图,练习,2019/9/28,2、事务分析,-是将具有事务型的DFD图导出SC图,事务中心,事务源,2019/9/28,主模块,给出H,取得A,L,M,N,A,G,H,B,E,C,F,D,2019/9/28,发送部分,请将下列给出的采购子系统 DFD 图转换成SC图,练习,加工名称: 2.1 按书号汇总缺书 2.2 按出版社汇总缺书 2.3 修改教材库存和待 购量,文件名称: F1 教材存量表 F2 缺书登记表 F5 待购教材表 F6 教材一览表 F7 进书登记表,2019/9/28,发送部分,采 购,按书号 汇总,缺书 登记表,统计缺书,登记进书,按出版社 汇总,打印 缺书单,修改 教材存量表,修改 教材待购量,统计 命令,登记 命令,待购 教材表,暂缺 书单,暂缺 书单,进书 通知,进书 通知,- 采购子系统的 SC 图 -,缺书登记表=班号+姓名+书号+数量,2019/9/28,三、软件模块结构的改进,一、 模块功能的完善化,2019/9/28,二、 消除重复功能,改善软件结构。,完全相似,局部相似,2019/9/28,X,Y,R1,R2,X,Y,R,R,相似模块的各种合并方案的示意图,2019/9/28,三、 模块的作用范围应在控制范围之内。,作用范围:是一个与条件判定 相关联的所有模块。,控制范围:包括模块本身及其 所有的从属模块(即供它调用 的模块)。,2019/9/28,模块的控制范围:包括模块本身及其所有的从 属模块(即供它调用的模块)。,2019/9/28,一个模块的作用范围,是指受这个模块中的 判定所影响的模块 。,关于模块的作用范围/控制范围的关系示意图,G,D,B,C,控制 耦合,2019/9/28,Top,C,D,E,B2,B,D,G,C,理想的情况,应该使判定的作用范围和判定所在模块的控制范围 尽可能地吻合(即应使模块的作用范围尽可能地在控制范围之内)。,符合作用范围/控制范围的理想判定位置,D,C,G,B,A,对于一个理想 SC图 中的模块设计, 所有受到 一个判定影响的模块应该 都从属该判定所在的模块 ,最好位于作出判定的那 个模块本身及它的直接下 属模块。,2019/9/28,计算 实发工资,取得 工资数据,计时工人 实发工资,计薪工人 实发工资,编外人员 实发工资,计时制 工资额,税收 扣款,薪金制 工资额,常规 扣款,编外人员 工资,编外人员 税款,编外人员 扣款,2019/9/28,四、 尽可能地减少高扇出结构,随着深度增大扇入。,2019/9/28,P,Q,2019/9/28,五、 模块的大小要适中。,50-100,2019/9/28,六、应设计出功能可预测的模块,但要避免过分受限制的模块。,A,2019/9/28,发送部分,请将下列给出的 DFD 图转换成SC图,作业,2019/9/28,发送部分,请完成下列描述的DFD图,导出它的SC图,练习,美国某大学共有200名教师,校方与工会刚刚签定一 项协议按照协议,所有年工资=$26,000的教师工资将保 持不变,年工资$26,000的教师将增加工资, 所增加的 工资数按下述方法计算: 给每个由此教师所赡养的人(包括教师本人) 每年补 助$100,此外,教师满一年工龄的再多补助$50,但是增 加后的年工资总额不能多于$26,000。 教师的工资档案储存在行政办公室的磁带上, 档案 中有目前的年工资、赡养人数、雇用日期等信息。,2019/9/28,发送部分,请将上列给出的 DFD图导出它的SC图,作业,2019/9/28,第五章 详细设计描述的工具,5.1 详细设计阶段的目的与任务,详细设计的目的: 为软件结构图 (SC) 中的每一个模块确定采用的算法和模块内 数据结构,用某种选定的表达工具给出清 晰的描述。,详细设计阶段的主要任务: 编写软件 的 “详细设计说明书”,c,2019/9/28,2019/9/28,详细设计阶段的主要任务,2019/9/28,描述工具,5.2 详细设计阶段的描述工具,2019/9/28,A,1、顺序型,一、程序流程图,B,几个连续的加工依次序排列,exp,A,B,2、选择型,由某个判断式的取值 决定选择两个加工中的一 个。,2019/9/28,3、当型循环型,当循环控制条件成立时,重复执行特定的加工。,4、直到型循环型,重复执行特定的加工,直到循环控制条件成立时。,2019/9/28,5、多情况选择型,列出多种加工 情况,根据控制变 量的取值,选择执 行其一。,2019/9/28,2019/9/28,标准化程序流程图规定符号,2019/9/28,流程符号的使用规则,1、循环符号的使用,循环体,- 循环流程符号的使用,2019/9/28,2、判断有一个入口,但也允许有多个可选出口,- 多出口判断流程符号的使用,2019/9/28,请利用程序流程图描述下列问题的程序结构,练习,某汽车修配厂,有一个存有汽车零件的 仓库,其中存有若干种零件,请编写一个查 询程序,用于查询该库中某零件的库存量为 多少。,2019/9/28,顺序型,二、N-S 图,选择型,- Nassi and Shneideman,当型循环型,直到型循环型,多分支选择型,2019/9/28,2019/9/28,三、PAD 图,直到型循环型,当型循环型,顺序型,选择型,多分支选择型循环型,- Problem Analysis Diagram,2019/9/28,举例,2019/9/28,练习,请为学生成绩管理系统中的学生成绩统计模块 设计程序结构。,2019/9/28,四、PDL,- Program Ddesign Language,PDL 是一种用于描述功能模块的算法设计和加工细节的语言。称为设计程序用语言。它是一种伪代码(Pseudo code),PDL,-关键词+自然语言,2019/9/28,(1)、数据说明:,格式: TYPE AS ,其功能是定义数据的类型和作用域,说明: 1. 变量名:是一个模块内部使用的变量或模块间共用 的全局变量名。,2. 限定词1 :标明数据类型,3. 限定词2 :标明该变量的作用域,TYPE number AS STRING LENGTH (12),2019/9/28,(2)、程序块:,PDL的过程成分是由块结构构成的,而块将作为 一个单个的实体来执行。,BEGIN END,2019/9/28,(3)、子程序结构:,把 PDL 中的过程称为子程序。,PROCEDURE INTERFACE END,2019/9/28,(4)、基本控制结构:,IF THEN ; ELSE ; ENDIF,- 选择型结构,2019/9/28,DO WHILE ; ENDDO,REPEAT UNTIL ; ENDREP,- 重复型结构,2019/9/28,DO LOOP ; EXIT WHEN ENDLOOP,DO FOR ; ENDFOR,- 重复型结构,2019/9/28,- 多路选择结构,CASE OF ; WHEN SELECT ; WHEN SELECT ; DEFAULT: ; ENDCASE,2019/9/28,READ/WRITE TO ,- 输入/输出结构,2019/9/28,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 value,2019/9/28,设某模块的功能是:读入任意长的 一段英文课文,将其分解为单字。然后 输出一个单词表,并指出每个单词在课 文中所出现的次数。,练习,请按下列给出的文字要求,用 PDL 描述其该模块的算法,2019/9/28, 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 图表示,2019/9/28,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,2019/9/28,第六章 程序编码,编码的目的: 是使用选定的程序设计 语言,把模块的过程性描述翻译为用该语 言书写的源程序(源代码),模块的过程性描述 (不可执行的),源程序 (可执行的),编码,6.1 编码的目的,2019/9/28,Winberg 的程序实验结果,2019/9/28,结构化程序设计是一种设计程序的技术,它采用 自顶向下逐步细化的设计方法和单入口(Single entry) 单出口(Single exit)的控制结构。 这种控制结构包 括有: 顺序、选择和循环。,6.2 结构化程序设计 (Structured Programming),2019
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 项目成功因素研究试题及答案
- 公共服务政策的公平性与效率分析试题及答案
- 软件设计师考试定制化复习试题及答案
- 计算机软件测试在环境政策评估中的应用试题及答案
- 计算机软件测试中的常见问题试题及答案
- 公共政策的全球视野与本土化探讨试题及答案
- 软件设计师考试技能提升路线试题及答案
- 现代公共政策理论框架试题及答案
- 如何建立健全公共政策的决策制度试题及答案
- 项目团队冲突处理技巧试题及答案
- 机械设计制造及其自动化毕业论文-温室用小型电动旋拼机设计
- 2025人教版七年级下册生物期末学业质量检测试卷(含答案)
- 教师职业道德与专业发展知到智慧树章节测试课后答案2024年秋鲁东大学
- 品质管理品质部管理制度
- 非标机械设备工厂项目绩效奖激励方案2023年
- 养老护理员职业道德及行为规范
- 贵州省遵义市(2024年-2025年小学六年级语文)部编版质量测试((上下)学期)试卷及答案
- 《绿色建筑咨询服务》课件
- T∕CEC 208-2019 电动汽车充电设施信息安全技术规范
- 《轮胎湿地操纵稳定性主观评价方法》
- 新就业形态下劳动关系认定与权益保障研究
评论
0/150
提交评论