




已阅读5页,还剩382页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2,软件工程,SoftwareEngineering,2020/5/19,陈宏刚,微软亚洲研究院商务高级经理,1982年兰州大学计算机学士1987年西安交通大学计算数学硕士1987年赴美留学,并获华盛顿大学应用数学博士学位后又在该校做博士后研究1995年加盟微软公司,在微软总部先后做过测试工程师(SoftwareTestEngineer)测试组长(SoftwareTestLead)测试经理(TestManager)参加过微软产品Windows95,ExchangeServer4.0和4.5,InternetExplorer4.0和4.5,SQLServer2000的开发和测试,2,2,2,本课程比较全面、系统地介绍软件工程的概念、技术与方法。主要内容包括:软件工程概述、软件生存周期及软件需求分析、软件设计方法、软件测试技术等。通过本课程的学习,使学生能真正的从中了解软件开发的整个过程。为了让学生真正得以实践,结合实际软件开发项目,让学生从问题定义开始,经过可行性研究、需求分析、概要设计、详细设计、编码直到最后要对自己开发的软件还要进行测试,这样一个软件开发过程,从而使学生掌握软件开发的基本技能。,课程主要内容,2,2,各章学时安排,2,第一章软件工程概述,水利工程,建筑工程,机械工程,软件工程,本章将对软件的地位和作用、软件的特点、软件的发展、软件的危机以及软件工程学科的形成、软件生期等方面的问题和基本概念,传统工程,新兴工程,气象工程,生物工程,2,1.1软件的概念与特点,1、软件,software,soft+ware,软制品(软体),软件是计算机系统中与硬件相互依存的另一部分。它包括程序、数据及其相关文档的完整集合。,2,2、软件特点,.软件是一种逻辑实体,而不是具体的物理实体,.软件的生产与硬件不同,.在软件的运行和使用期间,没有硬件那样的机械磨损,老化问题,磨合调整,磨损用坏,修改点,实际曲线,理想曲线,2,.软件的成本相当昂贵,软件技术的发展落后于需求,硬、软件成本比例的变化,年份,成本%,软件,硬件,2,3、软件的分类,1、按软件的功能进行划分,2,支撑软件,2,2、按软件的规模进行划分,2,3、按软件开发划分,2,1.2软件工程的概念及范畴,1、“软件工程”,-SoftwareEngineering,于1968年NATO组织在德国召开的一次会议上提出,是把软件当作一种工业产品,要求“采用工程化的原理与方法对软件进行计划、开发和维护”。,2,软件工程学,软件开发技术,软件工程管理,软件开发方法学,软件工具,软件工程环境,软件工程管理学,软件经济学,-软件工程学的范畴,2、软件工程学,2,WakeupeverydaywithafeelingofpassionforthedifferenttechnologywillmakeinpeoplesLife.,微软企业文化宗旨部分内容,每天醒来的时候,要对技术给生活造成的改变始终拥有一份激情。,2,程序,3、软件的演变(即从传统软件开发到现代软件开发),软件,软件产品,传统软件开发,现代软件开发,2,1.3软件生存周期,把软件从产生、发展到成熟、直至衰亡为止,(SWlifecycle),2,特点:上一阶段的变换结果是下一阶段的变换的输入,相邻两个阶段具有因果关系,紧密相联。,需求分析,问题定义,可性行研究,计划时期,概要设计,详细设计,编码,测试,开发时期,运行与维护,运行时期,软件生存周期模型(瀑布模型WaterfallModel),2,原型模型(PrototypeModel),加工原型,原型:是指模拟某种产品的原始模型,快速分析和设计,建造原型,客户评价原型,1、原型系统仅包括未来系统的主要功能,以及系统的重要接口。,2、为了尽快向用户提供原型,开发原型系统时应尽量使用能缩短开发周期的语言和工具。,2,第二章问题的定义与可性行研究,当我们在着手做任何一件工作以前,必须明确工作的性质、任务,制定完成任务的计划,这是非常必要的。同样对于软件产品的开发,显然也应该解决好这样类似的问题,明确该软件产品开发的任务,以及完成任务的价值从而制定出完成任务的计划。那么问题的定义和可性行研究就是制定软件系统的计划的第一步。所以在软件工程中把这一步称为计划时期,2,开始,问题定义,可性行研究,可行否?,项目实施计划,终止项目的建议,结束,Y,计划时期的工作流程图,N,2,Who,What,Why,3W,WinCE1.0,有用的软件,2,2.1现状调查和问题的定义,目的:弄清楚用户要求计算机解决什么问题,任务:编写系统目标与规范说明书,系统目标与规范说明书1、项目:教材销售系统2、问题:人工销售教材手续繁琐,容易出错3、项目目标:建立一个高效率、无差错的计算机教材销售系统4、项目范围:利用现有的计算机,软件开发费用不得超过2000元5、初步想法:建议在系统中增加对缺书的统计与采购功能6、可性行研究:建议进行大约10天的可性行研究,且研究费用不超过500元,2,2.2可行性研究与论证,1、经济可行性:,进行成本效益分析,评估项目的开发成本。,基于计算机系统的成本由四部分组成,其论证的焦点是:围绕着对系统开发的价值进行论证,2,举例:关于开发CAD系统的软件开发成本及效益分析,该系统节省经费,该系统成本,盈亏平衡点,投资回收期,-成本及效益分析图,2,2、技术可行性:,对系统的性能、可靠性、可维护性以及生产率等方面的信息进行评价。,通过技术可行性的分析,将为新系统提交技术可行性评估。以指明为完成系统的功能和性能需要什么技术?需要哪些材料、方法、算法、或者过程等,2,可行性论证报告,2,2.3可行性分析所需工具(系流程图与系统结构图),1、系统流程图:,是用来描述系统物理模型的一种传统工具。,2,2,举例,库存清单系统流程图,2,人工销售教材流程图,2,计算机售书系统流程图,结束,学生,购书发票,到书库领书,购书单,终端,审查并开发票,1,1-学生各学期用书数据库,购书单,2,2-教材存量数据库,2,练,习,请画出由下列文字描述的系统流程图,2,2、系统结构图:,系统工程师用结构摸板开发的系统模型,用户界面处理,输入处理,维护和自测试,处理和控制功能,输出处理,-结构摸板-,2,-传输线的分类系统,3、系统结构环境图(ACD-ArchitectureContextDiagram),:ACD可用于描述实现系统与系统运行环境之间的信息边界。,2,-传输线分类系统的ACD图,处理与控制功能区,外部实体,2,ACD的层次结构,2,作,请画出学生成绩管理系统的ACD图,业,2,第3章软件需求分析,软件需求分析是软件开发早期的一个重要阶段。它在问题定义和可行性研究阶段之后进行。需求分析的基本任务是软件人员和用户一起完全弄清用户对系统的确切要求。这是关系到软件开发成败的关键步骤,也是整个系统开发的基础。软件需求分析阶段要求用需求规格说明书(SRS)来表达用户对系统的要求。规格说明书可用文字方式表示,也可用图形表示。本章将介绍需求分析的任务、步骤、需求分析方法(面向数据流图分析方法、面向对象的分析方法)。,2,一、确定目标系统的具体要求,1、确定系统的运行环境要求,2、系统的性能要求,3、系统功能,3.1需求分析的任务,硬件环境和软件环境,确定目标系统具备的所有功能,2,数据库中存放的是职工的,某学校医疗费管理系统,所属部门、职工号、姓名,职工报销时应填写:,所属部门、职工号、姓名、日期,校内门诊、校外门诊、住院费、子女医疗费,医疗费分类:,该校规定,每年每个职工的医疗费有一个限额(如80元),限额在年初确定,其限额规则如下:,1、每个职工一年内报销的医疗费不超过限额时,全部报销2、超额,则超出部分只可报销90%,其余10%由职工个人负担3、职工子女的医疗费也有限额(如40元),2,1、医疗费管理系统每天记录当天报销的若干职工或职工子女的医疗费的类别、金额。2、在当天下班前让系统自动结帐、统计当天报销的医疗费总额,供出纳员核对。3、每笔帐要保存备查,每天所报销的费用要和各个职工已报销的金额累计起来,以便检查哪些职工已超额。4、系统还要配有适当的查询功能。5、年终结算后,下一年度开始时要对数据库文件进行初始化。6、当职工调离本单位,职工调如本单位或在本单位内部门间调动,数据库文件应能及时得到修改。,请完成对上述系统的需求分析,用户对系统的要求,2,该系统规模不太大,可以和用户单位的其他管理系统使用相同的计算机硬件设备、相同的操作系统和相同的关系数据库管理系统。如果,可以使用汉化了的数据库管理系统,但在建立数据库结构时,凡是用英文名称来代表字段名时,则必须在数据字典中予以说明。,1、确定系统的环境要求,2,3、系统的功能,(1)具有表格形式屏幕的输入格式(2)具有重复录入数据的功能(3)具有查询和统计汇总的功能(4)职工的调入和调出以及对数据库的初始化,2,2、系统性能要求,(1)数据不能随意更改2)保证数据的准确性由于医疗费管理系统涉及到会计经费问题,数据不能随意更改但数据输入又难免会出错。因而在每输入一个职工的医疗费后,屏幕提示“数据有误吗?”。若是在核对时有误,可及时更改,避免输入错误。一天报销结束时,在数据存档前,再让出纳员核对一下经费总额,若出纳员支出的金额总数有误时,应让计算机显示每笔帐目,供一一仔细核对,此时在允许修改一次。当正式登帐后,数据就绝对不允许在修改了,由此保证财务制度的严格性,保证数据的安全性。,2,二、建立目标系统的逻辑模型,通常软件软件开发项目是要实现目标系统的物理模型,即确定待开发软件系统的系统元素,并将功能和数据结构分配到这些系统元素中。它是软件实现的基础。但是目标系统的物理模型是由它的逻辑模型经实例化,即具体到某个业务领域而得到的。与物理模型不同,逻辑模型忽视机制和细节,只描述系统要完成的功能和要处理的数据。为此,该阶段的主要任务是,借助于当前系统的逻辑模型导出目标系统的逻辑模型,也就是解决目标系统“做什么”的问题。,2,用户调查,具体模型,建立系统模型的工作流程,逻辑抽象,当前系统,逻辑模型,当前系统,计算机化,评审修改,正式模型,完善细节,目标系统,目标系统初始模型,经认可的,问题需求,系统模型,用户,1、建立目标系统逻辑模型的步骤,2,图形工具,2、建立目标系统逻辑模型的图形工具,2,-学生购买教材的具体模型,请建立计算机售书系统的逻辑模型,-学生购买教材的逻辑模型,2,-学生购买教材的逻辑模型,完善目标系统并补充细节,的出目标系统的正式逻辑模型,2,三、需求规格说明书与评审,软件需求说明书,-SRS(SoftwareRequirementSpecification),主要包括以下的内容:,SRS,数据流图,数据字典,2,一、数据流图,3.2面向数据流的方法,-DFD(DataFlowDiagram),2,储户,检验,付款,登录,存折,帐卡,取款信息,办理取款手续的DFD图,检验不合格,现款,付款信息,取款单,存折,2,1、数据流图中的主要图形元素,-转换数据流的处理过程,-可以是数据库文件或任何形式的数据组织。箭头向内则表示写入文件或查询文件,箭头向外则表示从文件中读取数据或得到查询结果,数据转换,外部实体,-位于软件系统边界之外的信息生产者或消费者,数据流,-在转换之间有向流动的数据项或数据集合,数据存储文件,2,-系统逻辑模型,2,-学生购买教材的逻辑模型,2,2、数据流图中的其它图形元素,-有A则B或者C,或者两者都有,-有A则B与C,或者两者同时有,-有A则B或C,但不会同时有B与C,2,-标识多个数据流与加工之间关系的符号,-当A或B有一个存在就有C,-只有当A与B都存在,则有C,2,3、分层的数据流图,第n+2层,2,人工销售教材系统流程图,2,学生,教材购销系统,保管员,外部实体,外部实体,2,教材销售子系统,1.3登记并开领书单,1.2开发票,1.1审查有效性,1.4登记缺书,1.5补售教材,采购,学生,学生,暂缺书单,补售书单,第3层,F1书号单价数量,外部项,2,采购子系统,第2层,缺书单,2.3修改教材库存和待购量,销售,2.1按书号汇总缺书,2.2按出版社统计缺书,保管员,2,.便于实现,.便于使用,-采用逐步细化的扩展方法,可避免一次引入过多的细节,有利于控制问题的复杂度;,-用一组图代替一张总图,方便用户及软件开发人员阅读。,4、分层DFD图的优点,2,.注意父图和子图的平衡,5、画分层DFD的指导原则,2,.区分局部文件和局部外部项,.掌握分解的速度,一般来说,每一个加工每次可分为2-4个子加工,最多不得超过7个。,.遵守加工编号规则,顶层加工不编号。第二层的加工编号为1,2,3,n号。第三层编号为1.1,1.2,1.3n.1,n.2等号,依此类推。,2,局部外部项,局部文件,2,练,请画出学生成绩管理系统的DFD图,习,2,二、数据字典,-DD(DataDictionary),2,1、数据字典的定义,数据流名:说明:简要介绍作用即它产生的原因和结果。数据流来源:即该数据流来自何方。数据流去向:去向何处。数据流组成:数据结构。每个数据量流通量:数据量、流通量。,(1)数据流词条的描述,数据流名:发票说明:用作学生已付书款的依据数据流来源:来自加工“审查并开发票”数据流去向:流向加工“开领书单”。数据流组成:学号+姓名+书号+单价总价+书费合计,2,数据元素名:类型:数字(离散值、连续值),文字(编码类型)长度:取值范围:相关的数据元素及数据结构,(2)数据元素词条的描述,2,(3)数据文件词条的描述,数据文件名:简述:存放的是什么数据。输入数据:输出数据:数据文件组成:数据结构。存储方式:顺序,直接,关键码。存取频率:,2,加工名:加工编号:反映该加工的层次简要描述:加工逻辑及功能简述输入数据流:取值范围:相关的数据元素及数据结构,(4)加工逻辑词条的描述,2,名称:外部实体名简要描述:什么外部实体有关数据流:数目:,(5)外部实体词条描述,2,2、数据字典定义符号,=,被定义为,+,与,x=a+b,则表示x由a和b组成,x=a,b,则表示x由a或由b组成,或,重复,x=a,则表示x由0个或多个a组成,(),可选,表示在两个*之间的内容为词条的注释,mn,重复,x=3a8,则表示x中至少出现3次a,最多出现8次,*,注释符,x=(a),则表示a在x中出现,也可不出现,2,请为下列给出的DFD图编写DD,2,2,2,3、数据字典的实现,数据字典的实现,2,三、加工说明,-(ProcessSpecification),2,加工说明组成,加工说明描述工具,描述把输入数据流变换为输出数据流的加工过程,是加工说明的主体。,2,2,自然语言+结构化形式,结构化语言,2,例1:请写出下列在DFD图中给出的“统计晚婚职工”的加工说明,CountLate-MarriageEmployees,Late-Marriage-CountRequest,职工名册文件,Late-Marriage-List=List-Count+Name-List,Name-List=Name,2,CountLate-MarriageEmployeesPolicyForeachLate-Marriage-Countrequest:Repeatthefollowing;Accessthestaffs-Record.Ifstatusissingle,IfsexismaieandAgeisover30orsexisfemaleandAgeisover26WriteNametoName-List.IncrementList-Count.UntiltherearenomoreStaff-Records.CombineList-CountandName-List.WriteUpLate-Marriage-List.,2,例2:请为下列DFD中的“审查并开发票”加工点写加工说明,2,把学生学号和姓名写到发票上按购书单上学生的年级和系、专业与班号检索“各班学生用书表”文件,获得该生当年的书单对购书单上的每一书号如果书单上无此书号则把书号写到出错通知单上否则按书号检索“教材存量表”文件,从而获得该书的单价与库存量如果库存量购书单的数量则将书号写到出错通知单上否则将书号、单价、数量、总价等项写入到发票上;更新存书量,并写回“教材存量表”文件;累计书费合计把书费合计写到发票上,对每张购书单,2,分房加工逻辑,判断表,1、一般职工婚后5年可参加分房2、中级以上职称的职工婚后3年可参加分房3、符合正常分房条件的职工,若再符合晚婚条件可优先分房,2,2,判断树,2,“检查发货单”的判断表,2,工资管理系统,一、对工资管理系统进行需求分析,二、阅读教课书的P27页,2,三、把下列用文字叙述的内容请采判断表和判断树描述出来,设某旅游票预定系统中,在旅游旺季7-9、12月份,如果订票超过50张,则优惠票价的15%;50张以下,优惠5%。在旅游淡季1-6,10、11月份,若订票超过50张,则优惠30%;50张以下,优惠20%。,2,面向对象,3.3面向对象的需求分析,一、面向对象的概念,2,对象,数据,操作代码,2,类,是一组具有相同数据结构和相同操作的对象集合。类的定义包括一组数据属性和在数据上的一组合法操作。类定义可视为一个具有类似特性与共同行为的对象摸板,可用来产生对象。可以说,类是对象的抽象,而对象是类的具体实例。,2,继承,是在一个已存有的类的基础上建立一个新的类。并将已存在的类称为-基类或父类;新建立的类称为派生类或子类。,基类,派生类,2,对象继承了类所有属性,-从类到对象的继承,对象、类、继承,2,对象继承类的所有属性和操作,BuySellWeightmove,2,-面向对象类的表示模式,2,识别对象,1、标识潜在对象,找出通过分析过程中的所有名词或名词短语并合并同义词。除去有动作含义的名词,使它们将被描述为对象的操作。标识规则如下:,(1)、外部实体,(2)、事物,(3)、位置,(7)、聚焦对象,(5)、事件,(6)、角色,(4)、组织机构,2,二、面向对象的分析方法(OOA),ObjectOrientedAnalysis,OOA的核心思想是利用OO的概念和方法对软件需求建造模型,以使用户需求逐步精确化、一致化、完全化。为此,OOA的方法步骤为:,识别对象,属性及外部服务,识别类及其结构,定义对象之间的消息传递,2,例如:,2,2、筛选对象,筛选对象规则如下:,(1)、具有记忆自身状态的能力,(2)、有意义的操作,(3)、多个属性,(5)、公共操作,(6)、必须的需求,(4)、公共属性,2,第四章软件设计基础,2,4.1软件设计过程,编码,测试,设计,-软件开发阶段的信息流,2,软件设计任务,4.2软件设计的任务和步骤,2,软件设计方法,4.3软件设计的方法,2,一、模块化设计与信息隐藏,-“模块“又称”构件”一般指用一个名字调用的一段程序,4.4软件设计基础,模块(module),模块化设计(modulardesign)按适当的原则把软件划分为一个个较小的、相关而又相对独立的模块。,2,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,人类信息处理能力的限度,2,C(P1+P2)C(P1)+C(P2)E(P1+P2)E(P1)+E(P2),软件工程基本定理,2,每个模块的实现细节对于其他模块来说是隐藏的。也就是说,模块中所包含的信息是不允许其他不需要这些信息的模块使用的。,2、信息隐藏(informationhiding),栈stack,2,3、模块的独立性(moduleindependence),模块的独立性是指软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中其他模块的接口是简单的。,模块之间的相对独立性的度量。,模块功能强度的度量。,2,(1)、内聚(Cohesion),低,高,强,弱,内聚性,模块独立性,2,偶然性内聚,当模块内各部之间没有联系,或者即使有联系,这种联系也很松散。则称这种模块为巧合内聚模块。,2,逻辑性内聚,这种模块是把几种功能组合在一起,每次调用时,则由传递给模块的判定参数来确定该模块应执行哪一种功能。,被调用模块,2,2,信息性内聚,这种模块能完成多个功能,各个功能都在同一数据结构上操作,每一项功能有一个唯一的入口点。,符号表,2,功能性内聚,如果一个模块内所有成分都完成一个功能则称这样的模块为功能模块。,低,高,强,弱,内聚性,模块独立性,2,(2)、耦合,耦合性是程序结构中各个模块之间相互关联的度量它取决于各个模块之间接口的复杂程度、调用模块的方式以及那些信息通过接口。,低,高,弱,强,耦合性,模块独立性,2,公共耦合,允许一组模块访问同一全局性的数据结构。,2,控制耦合,如果一个模块通过传送开关、标志、名字等控制信息,明显地控制选择另一模块的功能就是控制耦合。,2,以上给出了7种耦合类型,这只是从耦合的机制上所做的分类,按耦合的强弱程度的排列只是相对的关系。但它给设计人员在设计程序结构时提供了一决策准则。实际上,开始时两个模块之间的耦合不只是一种类型,而是多种类型的混合。这就要求设计人员按照实际情况进行分析、比较和分析,逐步加以改进,以提高模块的独立性。,2,4.5结构化设计方法(SD-StructuredDesign),结构化设计方法是基于模块化、自顶向下细化、结构化程序设计等程序设计技术基础发展起来的。它所提供的方法和原则,主要是用来指导软件的概要设计。它还提供了一种“结构图”的描述工具,是专门用来描述软件的总体结构的。,2,结构化设计属于面向数据流的设计方法。在软件的需求分析阶段,数据流是软件开发人员考虑问题的出发点和基础。数据流从系统的输入端向输出端,则要经历一系列的变换或处理。用来表现这个过程的数据流(DFD),实际上就是软件系统的逻辑模型。面向数据流的设计要解决的任务,就是在上述需求分析的基础上,将DFD图映射(Mapping)-软件系统的结构。换句话说,这类设计方法,允许把用DFD图表示的系统逻辑模型,很方便地转换成对于软件结构的初始设计描述。结构化设计方法中,软件的结构一律用SC图来描述。,2,2,目标系统的DFD,SC图-StructuredChart,该图常用来表示系统的软件结构。利用它可以清楚地表达软件结构中模块间的层次调用关系和模块之间的联系。,SD,目标系统的SC,2,A,SC图中的主要内容,1、模块-在SC图中用矩形框表示,并用名字来标记它,-模块调用关系,2、模块的调用关系和接口,B,调用模块,调用模块,A(查询学生),B(查找学生记录),数据信号,控制信号,学号,查找成功信号,-模块间接口的表示,2,SC图的一般格式,2,1、在系统结构图中的模块,一、典型的系统结构形式,原子模块:在系统结构图中通常是指不能再分割的底层模块,完全因子分解系统,如果一个软件系统,它的全部实际加工(即数据计算或处理)都是由底层的原子模块来完成,而其它所有非原子模块仅仅执行控制或协调功能。,2,从下属模块取得数据,进行某些处理,再将其结果传给上级模块。在此,将它传送的数据流称为逻辑输入数据流。,在系统结构图中有四种类型的模块:,逻辑输入数据流,2,从上级模块获得数据,进行某些处理,再将其结果传给下属模块。在此,将它传送的数据流称为逻辑输出数据流。,逻辑输出数据流,2,也叫加工模块。它是从上级模块获得数据,进行特定的处理,将其转换为其他形式,再传回上级模块它所加工的数据流叫做变换数据流。,C,B,变换数据流,2,对所有下属模块进行协调和管理的模块。在一个好的系统结构图中,协调模块应在较高层出现。,Y,X,Y,X,2,2、典型的系统结构形式之一(变换型系统结构图),i,a,e,o,变换数据,传入部分,变换中心,传出部分,-具有变换型数据流图,2,主模块,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,协调模块,变换模块,传出模块,-具有变换型系统结构图,2,3、典型的系统结构形式之二(事务型系统结构图),“事务”,由它接受一项事务,根据事务处理的特点和性质选择分配一个适当的处理单元,然后给出结果。,2,输入,-事务型数据流图,1,A,B,C,3,D,E,F,G,H,2,4,5,6,7,中心变换,输出,逻辑输入,物理输入,逻辑输出,物理输出,2,-事务型数据流图(DFD),-事务型系统结构图(SC),2,2,-简化的事务型系统结构图,2,二、从DFD图导出SC图的步骤,开始,事务分析,变换分析,完善SC图,2,1、变换分析,-是将具有变换型的DFD图导出SC图,变换分析,2,(1)在DFD图上标出逻辑输入、逻辑输出和变换中心的分界,变换中心,c,e逻辑输入,w,u逻辑输出,-具有变换型数据流图,2,(2)完成第第一级分解,Mc,MA,MT,ME,C,e,C,e,U,w,U,w,变换中心,顶层,第一层,第一级分解后的SC图,2,第一级分解后的SC图(另一种画法),2,(3)完成第第二级分解,MA,变换中心,对逻辑输入的分解,C,E,B,A,D,逻辑输入模块的调用与执行过程,2,2,ME,变换中心,对输出的分解,W,U,V,MT,Q,P,R,e,C,p,r,U,w,对变换中心加工的分解,p,r,w,u,2,(4)获得完整的SC图,2,运用变换分析方法建立系统的SC时需注意以下几点:,模块设计的次序时,应遵循对一个模块的全部直接下属模块都设计完成后,再转向另一个模块的下层模块的设计。,在设计下层模块时,应考虑模块的耦合和内聚问题,以提高设计初始SC图的质量。,注意“黑盒”技术的使用。,2,主模块,A,B,C,A1,A2,A3,A11,A12,A13,2,低,高,强,弱,内聚性,模块独立性,低,高,弱,强,耦合性,模块独立性,具有高内聚低耦合的模块才是模块独立性比较强的模块。,2,具有高内聚低耦合的模块才是模块独立性比较强的模块。,模块A,模块D,模块C,模块B,非直接耦合,通过参数表传递数据(数据耦合),通过参数表传递数据结构(数据耦合),具有松散型的耦合类型,2,请将上列给出的具有变换型的DFD图导出它的SC图,练习,2,2、事务分析,-是将具有事务型的DFD图导出SC图,事务中心,事务源,2,主模块,给出H,取得A,L,M,N,A,G,H,B,E,C,F,D,2,发送部分,请将下列给出的采购子系统DFD图转换成SC图,练习,加工名称:2.1按书号汇总缺书2.2按出版社汇总缺书2.3修改教材库存和待购量,文件名称:F1教材存量表F2缺书登记表F5待购教材表F6教材一览表F7进书登记表,2,发送部分,采购,按书号汇总,缺书登记表,统计缺书,登记进书,按出版社汇总,打印缺书单,修改教材存量表,修改教材待购量,统计命令,登记命令,待购教材表,暂缺书单,暂缺书单,进书通知,进书通知,-采购子系统的SC图-,缺书登记表=班号+姓名+书号+数量,2,三、软件模块结构的改进,一、模块功能的完善化,2,二、消除重复功能,改善软件结构。,完全相似,局部相似,2,X,Y,R1,R2,X,Y,R,R,相似模块的各种合并方案的示意图,2,三、模块的作用范围应在控制范围之内。,作用范围:是一个与条件判定相关联的所有模块。,控制范围:包括模块本身及其所有的从属模块(即供它调用的模块)。,2,模块的控制范围:包括模块本身及其所有的从属模块(即供它调用的模块)。,2,一个模块的作用范围,是指受这个模块中的判定所影响的模块。,关于模块的作用范围/控制范围的关系示意图,G,D,B,C,控制耦合,2,Top,C,D,E,B2,B,D,G,C,理想的情况,应该使判定的作用范围和判定所在模块的控制范围尽可能地吻合(即应使模块的作用范围尽可能地在控制范围之内)。,符合作用范围/控制范围的理想判定位置,D,C,G,B,A,对于一个理想SC图中的模块设计,所有受到一个判定影响的模块应该都从属该判定所在的模块,最好位于作出判定的那个模块本身及它的直接下属模块。,2,计算实发工资,取得工资数据,计时工人实发工资,计薪工人实发工资,编外人员实发工资,计时制工资额,税收扣款,薪金制工资额,常规扣款,编外人员工资,编外人员税款,编外人员扣款,2,四、尽可能地减少高扇出结构,随着深度增大扇入。,2,P,Q,2,五、模块的大小要适中。,50-100,2,六、应设计出功能可预测的模块,但要避免过分受限制的模块。,A,2,发送部分,请将下列给出的DFD图转换成SC图,作业,2,发送部分,请完成下列描述的DFD图,导出它的SC图,练习,美国某大学共有200名教师,校方与工会刚刚签定一项协议按照协议,所有年工资=$26,000的教师工资将保持不变,年工资$26,000的教师将增加工资,所增加的工资数按下述方法计算:给每个由此教师所赡养的人(包括教师本人)每年补助$100,此外,教师满一年工龄的再多补助$50,但是增加后的年工资总额不能多于$26,000。教师的工资档案储存在行政办公室的磁带上,档案中有目前的年工资、赡养人数、雇用日期等信息。,2,发送部分,请将上列给出的DFD图导出它的SC图,作业,2,第五章详细设计描述的工具,5.1详细设计阶段的目的与任务,详细设计的目的:为软件结构图(SC)中的每一个模块确定采用的算法和模块内数据结构,用某种选定的表达工具给出清晰的描述。,详细设计阶段的主要任务:编写软件的“详细设计说明书”,c,2,2,详细设计阶段的主要任务,2,描述工具,5.2详细设计阶段的描述工具,2,A,1、顺序型,一、程序流程图,B,几个连续的加工依次序排列,exp,A,B,2、选择型,由某个判断式的取值决定选择两个加工中的一个。,2,3、当型循环型,当循环控制条件成立时,重复执行特定的加工。,4、直到型循环型,重复执行特定的加工,直到循环控制条件成立时。,2,5、多情况选择型,列出多种加工情况,根据控制变量的取值,选择执行其一。,2,2,标准化程序流程图规定符号,2,流程符号的使用规则,1、循环符号的使用,循环体,-循环流程符号的使用,2,2、判断有一个入口,但也允许有多个可选出口,-多出口判断流程符号的使用,2,请利用程序流程图描述下列问题的程序结构,练习,某汽车修配厂,有一个存有汽车零件的仓库,其中存有若干种零件,请编写一个查询程序,用于查询该库中某零件的库存量为多少。,2,顺序型,二、N-S图,选择型,-NassiandShneideman,当型循环型,直到型循环型,多分支选择型,2,2,三、PAD图,直到型循环型,当型循环型,顺序型,选择型,多分支选择型循环型,-ProblemAnalysisDiagram,2,举例,2,练习,请为学生成绩管理系统中的学生成绩统计模块设计程序结构。,2,四、PDL,-ProgramDdesignLanguage,PDL是一种用于描述功能模块的算法设计和加工细节的语言。称为设计程序用语言。它是一种伪代码(Pseudocode),PDL,-关键词+自然语言,2,(1)、数据说明:,格式:TYPEAS,其功能是定义数据的类型和作用域,说明:1.变量名:是一个模块内部使用的变量或模块间共用的全局变量名。,2.限定词1:标明数据类型,3.限定词2:标明该变量的作用域,TYPEnumberASSTRINGLENGTH(12),2,(2)、程序块:,PDL的过程成分是由块结构构成的,而块将作为一个单个的实体来执行。,BEGINEND,2,(3)、子程序结构:,把PDL中的过程称为子程序。,PROCEDUREINTERFACEEND,2,(4)、基本控制结构:,IFTHEN;ELSE;ENDIF,-选择型结构,2,DOWHILE;ENDDO,REPEATUNTIL;ENDREP,-重复型结构,2,DOLOOP;EXITWHENENDLOOP,DOFOR;ENDFOR,-重复型结构,2,-多路选择结构,CASEOF;WHENSELECT;WHENSELECT;DEFAULT:;ENDCASE,2,READ/WRITETO,-输入/输出结构,2,EnteravectorSetMaximumtothevalueofthefirstelementinthevectorDOforeachsecondonetothelastIFvalueofTHENelementisgreaterthantheMaximumvalueSetMaximumtovalueoftheelementENDDOPrinttheMaximumvalue,2,设某模块的功能是:读入任意长的一段英文课文,将其分解为单字。然后输出一个单词表,并指出每个单词在课文中所出现的次数。,练习,请按下列给出的文字要求,用PDL描述其该模块的算法,2,executeprocessaREPEATUNTILconditionX8executeprocessbIFconditionX1THENBEGINexecuteprocessfIFconditionX6THENREPEATUNTILconditionX7executeprocessiENDREPELSEBEGINexecuteprocessgexecuteprocesshENDENDIFEND,练习,请将下列的PDL表示的某模块的过程性描述,改为用:1、N-S图2、PAD图表示,2,ELSECASEOFXiWHENconditionX2SELECTDOWHILEconditionX5executeprocessCENDDOWHENconditionX3SELECTprocessdWHENconditionX4SELECTprocesseENDCASEENDIFENDREPexecuteprocessjEND,2,第六章程序编码,编码的目的:是使用选定的程序设计语言,把模块的过程性描述翻译为用该语言书写的源程序(源代码),模块的过程性描述(不可执行的),源程序(可执行的),编码,6.1编码的目的,2,Winberg的程序实验结果,2,结构化程序设计是一种设计程序的技术,它采用自顶向下逐步细化的设计方法和单入口(Singleentry)单出口(Singleexit)的控制结构。这种控制结构包括有:顺序、选择和循环。,6.2结构化程序设计(StructuredProgramming),2,for(a=1,b=1;a=20)break;if(b%3=1)b+=3;continue;b-=5;,单入口,单出口,2,If(A.LT.B)goto120If(B.LT.C)goto110100write(6,*)Cgoto140110write(6,*)Bgoto140120If(A.LT.C)goto130goto100130write(6,*)A140continue,-单入口多出口结构,2,无节制地使用了GOTO语句所产生的程序流程,2,一、结构化程序设计的原则,1、使用语言中的顺序、选择、重复等有限的基本控制结构表示程序2、选用的控制结构只准许有一个入口和一个出口3、程序语句组成容易识别的块(Block),每块只有一个入口和一个出口4、复杂结构应该用基本控制结构进行组合嵌套来实现5、严格控制GOTO语句,2,F0=F(a);F1=F(b);if(F0*F10)X0=Xm;F0=Fm;elseX1=Xm;finish:printf(“%dn”,Xm);,2,Begin,(F0*F1)0,X0=Xm,X1=Xm,F0=Fm,T,T,Xm,F,T,F,F,F0=F(a)F1=F(b),1,1,End,2,2,i=n,i,Q=abs(Fm)eps|abs(X1-X0)10THENX=AELSEY=ZENDIFIFY0THENPRINTGELSEPRINTKENDIFSTOP,2,四、程序效率,程序效率是指程序的执行速度及程序占用的存储空间。程序编码是最后提高运行速度和节省存储机会,因此在此阶段不能不考虑程序的效率。,2,1、算法对效率的影响,源程序的效率与详细设计阶段确定的算法的效率有着直接的关系。当我们把详细设计翻译并转换成源代码之后,那么算法效率就会反映为程序的执行速度和存储容量的要求,2,(1)在编程序前,尽可能化简有关的算术表达式和逻辑表达式,(2)仔细检查算法中的嵌套的循环,尽可能将某些语句或表达式移到循环外面,(3)尽量避免使用多维数组,(4)尽量避免使用指针和复杂的表,(5)不要混淆数据类型,避免在表达式中出现类型混杂,(6)尽量采用整数算术表达式和布尔表达式,(7)选用等效的高效率算法,转换过程中的指导原则是:,2,举例,请设计求解下列问题的算法,2,main()inti,j;floatsum;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=%dn”,sum);,内循环次数,20X4=80,外循环次数,21,总循环次数,101,2,main()inti,j;floatsum;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=%dn”,sum);,应把变化范围大的循环变量放在内层。,内循环次数,3X21=63,外循环次数,4,总循环次数,67,2,main()inti,j;floatsum;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=%dn”,sum);,j+2共计执行了,3X20=60次,2,main()inti,j;floatsum;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=%dn”,sum);,j+2共计执行了,3次,减少了57次,应尽量把与循环变量无关的运算移到循环外去。,2,main()inti,j;floatsum;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=%dn”,sum);,i+1共计执行了,60X60=120次,2,main()inti,j;floatsum;sum=0.0;for(j=1;j=3;j+)k=j+2;for(i=1;i=0)thenif(N能被2整除)thenprint“正偶数”elseprint“负数”,导致二义性的then-if结构,(2)、避免使用模糊或费解的结构,2,WhileC1IfC2thenWhileC3IfC4thenRepeatSUntilC5LoopLoop.,费解的深层嵌套结构,2,二、保持控制流的局部性,局部性是程序设计的一条准则。像应用甚广的模块化设计,可看成是局部化原理在总体设计中的具体体现。其实,在编码时也要遵守局部化的原则,这就是保持控制流的局部性,其目的不仅是为了提高程序的清晰度,也有利于防止错误的扩散,提高程序的可修改性。,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 执行信访工管理办法
- 发动机生产管理办法
- 吸烟点垃圾管理办法
- 江干区地名管理办法
- 升压站缺陷管理办法
- 新主播薪资管理办法
- 机场施工与管理办法
- 村小额资金管理办法
- 易损件工装管理办法
- 村池塘保护管理办法
- 卒中中心应知应会
- 山西省代县金升铁矿有限公司铁矿资源开发利用、地质环境保护与土地复垦方案
- 2021年新高考全国Ⅱ卷语文真题(含答案)
- 《天黑前的夏天》中水意象解析
- 院感知识PPT完整版
- JJF 1910-2021电化学工作站校准规范
- ks-s3002腔全自动刻蚀机规格书
- DB37-T 2401-2022危险化学品岗位安全生产操作规程编写导则
- 2023年小学科学教师招聘考试真题练习试题卷及参考答案
- 劳资专管员任命文件(样本)
- 电子教案与课件:制药过程安全与环保-第5章-制药过程“三废”防治技术
评论
0/150
提交评论