软件工程期末复习资料.doc

上传人:jian****018 文档编号:9204167 上传时间:2020-04-03 格式:DOC 页数:17 大小:367.50KB
返回 下载 相关 举报
软件工程期末复习资料.doc_第1页
第1页 / 共17页
软件工程期末复习资料.doc_第2页
第2页 / 共17页
软件工程期末复习资料.doc_第3页
第3页 / 共17页
点击查看更多>>
资源描述
软件工程期末复习资料(2013)第一章: 软件工程学概述要求:1、掌握软件危机的含义,产生的原因2、了解消除软件危机的途径3、掌握软件工程的定义和基本原理4、掌握软件工程方法学的三个要素5、掌握软件生命周期的三个时期和和每个时期所对应的开发阶段6、掌握软件生命周期模型(瀑布模型,快速原型模型,增量模型,螺转模型)作业:T1 T3 T4附本章习题答案和新增复习题T1:什么是软件危机?它有哪些典型表现?为什么会出现软件危机?答:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。主要包含下述两方面的问题:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。典型表现:(1)对软件开发成本和进度的估计常常很不准确;(2)用户对“已完成的”软件系统不满意的现象经常发生;(3)软件产品的质量往往靠不住;(4)软件常常是不可维护的;(5)软件通常没有适当的文档资料;(6)软件成本在计算机系统;(7)软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。产生软件危机的原因:第一,客观原因:软件是计算机系统中的逻辑部件而不是物理部件,其显著特点是缺乏“可见性”,因此,管理和控制软件开发过程相当困难。此外,软件维护通常意味着改正或修改原有的设计,从而使得软件较难维护。软件的另一个突出特点是规模庞大,而程序复杂性将随着程序规模增加以指数速度上升。第二,主观原因:在计算机系统发展的早期阶段,开发软件的个体化特点使得许多软件工程师对软件开发和维护有不少糊涂认识, 在实际工作中或多或少地采用了错误的方法,主要表现为:忽视软件需求分析的重要性,认为软件开发就是写程序,轻视软件维护,这是使软件问题发展成软件危机的主要原因。另一方面还必须认识到,程序只是完整的软件产品的一个组成部分,一个软件产品必须由一个完整的配置组成,软件配置主要包括程序、文档和数据等成分。T3:什么是软件工程?它有哪些本质特性?怎样用软件工程消除软件危机?答:软件工程是指导计算机软件开发和维护的一门工程学科,该学科的目的是生产出能按期交付的、在预算范围内的、满足用户需求的、质量合格的软件产品。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效的维护它,这就是软件工程。软件工程有以下本质特性:(1)软件工程关注于大型程序的构造;(2)软件工程的中心课题是控制复杂性;(3)软件经常变化;(4)开发软件的效率非常重要;(5)和谐地合作是开发软件的关键;(6)软件必须有效地支持它的用户;(7)在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品。7条基本原理,消除软件危机:(1)用分阶段的生命周期计划严格管理;(2)坚持进行阶段评审;(3)实行严格的产品控制;(4)采用现代程序设计技术;(5)结果应能清楚地审查;(6)开发小组的人员应该少而精;(7)承认不断改进软件工程实践的必要性。T4:简述结构化范型和面向对象范型的要点,并分析它们的优缺点。答:传统方法学(结构化范型)要点:(1)采用结构化技术(结构化分析、结构化设计和结构化实现)完成软件开发的各项任务;(2)把软件生命周期划分成若干阶段,然后顺序完成各个阶段的任务;(3)每个阶段的开始和结束都有严格的标准,对于任何两个相邻的阶段而言,前一阶段的结束标准就是后一阶段的开始标准;(4)在每个阶段结束之前都必须正式地进行严格的技术审查和管理复审。面向对象方法学(面向对象范型)的要点:(1)把对象作为融合了数据及在数据上操作的软件构件。也就是说,用对象分解取代了传统方法的功能分解;(2)把所有对象都划分成类;(3)按照父类与子类的关系,把若干个相关类组织成一个层次结构的系统;(4)对象彼此间仅能通过发送消息互相联系。使用结构化范型开发出的软件,在本质上是一个单元,这是用结构化范型开发大型软件产品时不甚成功的一个重要原因。相反,当正确地使用面向对象范型时,开发出的软件产品是由许多小的、相对独立的单元(对象)组成的。因此,面向对象范型降低了软件产品的复杂度,从而简化了软件开发与维护工作。复习题:假设要求你开发一个软件,该软件的功能是把读入的浮点数开平方,所得到的结果应该精确到小数点后4位。一旦实现并测试完之后,该产品将被抛弃。你打算选用哪种软件生命周期模型?请说明你做出选择的理由。答案:对这个软件的需求很明确,实现开平方功能的算法也很成熟,因此,既无须通过原型来分析需求也无须用原型来验证设计方案。此外,一旦实现并测试完之后,该产品将被抛弃,因此也无须使用有助于提高软件可维护性的增量模型或螺旋模型来开发该软件。综上所述,为了开发这个简单的软件,使用大多数人所熟悉的瀑布模型就可以了。复习题2:假设你被任命为一家软件公司的项目负责人,你的工作是管理该公司已被广泛应用的字处理软件的新版本的开发。由于市场竞争激烈,公司规定了严格的完成期限并且已对外公布。你打算采用哪种软件生命周期模型?为什么?答案:对这个项目的一个重要要求是,严格按照已对外公布了的日期完成产品开发工作,因此,选择生命周期模型时应该着重考虑哪种模型有助于加快产品开发的速度。使用增量模型开发软件时可以并行完成开发工作,因此能够加快开发进度。这个项目是开发该公司已被广泛应用的字处理软件的新版本,从上述事实至少可以得出三点结论:第一,旧版本相当于一个原型,通过收集用户对旧版本的反映,较容易确定对新版本的需求,没必要再专门建立一个原型系统来分析用户的需求;第二,该公司的软件工程师对字处理软件很熟悉,有开发字处理软件的丰富经验,具有采用增量模型开发新版字处理软件所需要的技术水平;第三,该软件受到广大用户的喜爱,今后很可能还要开发更新版本,因此,应该把该软件的体系结构设计成开放式的,以利于今后的改进和扩充。综上所述,采用增量模型来完成这个项目比较恰当。第二章:可行性研究要求:1、掌握可行性研究的目的和最根本的任务2、掌握主要从哪几个方面进行可行性研究3、了解可行性研究的步骤4、掌握数据流图的概念和基本符号表示5、掌握数据流图的绘制6、掌握数据字典的定义,内容和实现作业题:T5附本章习题答案和新增复习题T1:在软件开发的早期阶段为什么要进行可行性研究?应该从哪些方面研究目标系统的可行性?答:可行性研究的目的是,用最小的代价在尽可能短的时间内研究并确定客户提出的问题是否有行得通的解决办法。必须分析几种主要的候选解法的利弊,从而判断原定的系统目标和规模是否现实,系统完成后所能带来的效益是否大到值得投资开发这个系统的程度。对每种可能的解决方案都应该仔细研究它的可行性,通常,至少从下述三个方面研究每种解决方案的可行性:(1)技术可行性:使用现有的技术能否实现这个系统;(2)经济可行性:这个系统的经济效益能否超过它的开发成本;(3)操作可行性:这个系统的操作方式在该客户组织内是否行得通。T5:北京某高校可用的电话号码有以下几类:校内电话号码由4位数字组成,第1位数字不是0;校外电话又分为本市电话和外地电话两类,拨校外电话需先拨0,若是本市电话刚再接着拨8位数字(第1位不是0),若是外地电话则拨3位区码再拨8位电话号码(第1位不是0)。用2.5.2小节讲述的定义数据的方法,定义上述的电话号码。答:电话号码校内电话号码 | 校外电话号码校内电话号码非零数字3位数字校外电话号码本市号码 | 外地号码本市号码数字零8位数字外地号码数字零3位数字8位数字非零数字 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 数字零03位数字3数字38位数字非零数字7位数字7位数字7数字7数字 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 复习题:习题2第4题目前住院病人主要由护士护理,这样做不仅需要大量护士,而且由于不能随时观察危重病人的病情变化,还可能会延误抢救时机。某医院打算开发一个以计算机为中心的患者监护系统,试写出问题定义,并给出数据流图。医院对患者监护系统的基本要求是随时接收每个病人的生理信号(脉搏、体温、血压、心电图等),定时记录病人情况以形成患者日志,当某个病人的生理信号超出医生规定的安全范围时向值班护士发出警告信息,此外,护士在需要时还可以要求系统印出某个指定病人的病情报告。答:从问题陈述可知,本系统的数据源点是“病人”和“护士”,他们分别提供生理信号和要求病情报告的信息。进一步分析问题陈述,从系统应该“定时记录病人情况以形成患者日志”这项要求可以想到,还应该有一个提供日期和时间信息的“时钟”作为数据源点。从问题陈述容易看出,本系统的数据终点是接收警告信息和病情报告的护士。系统对病人生理信号的处理功能主要是“接收信号”、“分析信号”和“产生警告信息”。此外,系统还应该具有“定时取样生理信号”、“更新日志”和“产生病情报告”的功能。为了分析病人生理信号是否超出了医生规定的安全范围,应该存储“患者安全范围”信息。此外,定时记录病人生理信号所形成的“患者日志”也是一个数据存储。本系统的基本系统模型如图所示:要求报告日期、时间警告信息病情报告生理信号病人时钟护士护士患者监护系统本系统的功能级数据流图如图所示:日志数据日志数据病情报告危急病人信息生理信号1患者安全范围日期时间生理信号病人时钟护士护士2分析信号6产生病情报告警告信息3产生警告信息生理信号1接收信号定时的生理信号4定时取样生理信号5更新日志要求报告2患者日志复习题2:为开发一个铁路自动售票系统(该系统预计从2004年使用到2014年),请完成下面的数据流图和数据字典,即从供选择的答案中选出A、B、C、D和E的内容,并给出、和的内容,填在答案栏中。(1)数据流图已收款车费乘客受理收款登记供选择的答案车次表接受售票记录购票请求拒绝(2)数据字典购票请求乘车日期到站字母20字母“”.“”“a”.“z”车次“001”.“999”拒绝无车次无票无车次“no train”无票“no ticket”接受“to sale”已收款“yes”车次表起站止站车次起站止站到站售票记录乘车日期起站止站车次座号座号车厢号座位号车厢号“01”.“20”座位号注意:“01”.“20”表示数字范围从1到20;乘车日期应给出年、月、日,例如,2004/06/21;假设每个车厢有100个座位。答案栏:_ :_:_:_:_:_:_:_答案栏:购票请求 :接受:拒绝:车次表:售票记录:乘车日期到站车次:“2004”.“2014”+“/”+“01”.“12”+“/”+“01”.“31”:“001”.“100”第三章:需求分析要求:1、掌握需求分析的基本任务和任务2、掌握获取需求的方法3、掌握状态转换图的绘制4、掌握实体联系图的绘制作业: T2 T3 T6附本章习题答案和新增复习题T2:怎样与用户有效地沟通以获取用户的真实需求?答:(1)访谈;(2)面向数据流自顶向下求精;(3)简易的应用规格说明技术;(4)快速建立软件原型。T3:银行计算机储蓄系统的工作过程大致如下:储户填写的存款单或取款单由业务员输入系统,如果是存款则则系统记录存款人姓名、住址(或电话号码)、身份证号码、存款类型、存款日期、到期日期、利率及密码(可选)等信息,并印出存单给储户;如果是取款而且存款时留有密码,则系统首先核对储户密码,若密码正确或存款时未留密码,则系统计算利息并印出利息清单给储户。用数据流图描绘本系统的功能,并用实体联系图描绘系统中的数据对象。答:(1)描绘本系统功能的数据流图如下图所示存款信息利息值利息清单存款存单存款信息1存款信息取款单存款单储户2打印存款单5打印利息清单存款信息1记录存款信息存款信息3核对密码4计算利息储户(2)本问题中共有两类实体,分别是“储户”和“储蓄所”,它们之间存在“存取款”关系。因为一位储户可以在多家储蓄所存取款,一家储蓄所拥有多位储户,所以“存取款”是多对多(M:N)关系。储户的属性主要有姓名、住址、电话号码和身份证号码,储蓄所的属性主要是名称、地址和电话号码,则数额、类型、到期日期、利率和密码则是联系类型存取款的属性。ER图如下所示:储户储蓄所存取款住址姓名到期日期利率类型数额名称电话号码地址电话号码身份证号码密码T6:复印机的工作过程大致如下:未接到复印命令时处于闲置状态,一旦接到复印命令则进入复印状态,完成一个复印命令规定的工作后又回到闲置状态,等待下一个复印命令;如果执行复印命令时发现没纸,则进入缺纸状态,发出警告,等待装纸,装满纸后进入闲置状态,准备接收复印命令;如果复印时发生卡纸故障,则进入卡纸状态,发出警告,等待维修人员来排除故障,故障排除后回到闲置状态。试用状态转换图描绘复印机的行为。答:从问题描述可知,复印机的状态主要有闲置、复印、缺纸和卡纸。引起状态转换的事件主要是复印命令、完成复印命令、发现缺纸、装满纸、发生卡纸故障和排除了卡纸故障。下图所示的状态转换图描绘了复印机的行为。发现缺纸装满纸排除卡纸故障完成复印命令复印命令复印Do/复印发生卡纸故障闲置卡纸Do/警告缺纸Do/警告复习题:请为某仓库的管理设计一个模型。该仓库主要管理零件的订购和供应等事项。仓库向工程项目供应零件,并且根据需要向供应商订购零件。分析:(1)确定实体类型本问题中共有三类实体,分别是“零件”、“工程项目”和“供应商”。(2)确定联系类型一种零件可供应多个工程项目,一个工程项目需要使用多种零件,因此,零件与工程项目之间的联系“供应”,是多对多(:)联系;类似,零件与供应商之间的联系“订购”,也是多对多(:)联系。(3)确定实体类型和联系类型的属性实体类型“零件”的主要属性是零件编号、零件名称、颜色和重量。实体类型“工程项目”的主要属性是项目编号、项目名称和开工日期。实体类型“供应商”的属性主要有供应商编号、供应商名称和地址。联系类型“供应”的属性是向某工程项目供应的某种零件的数量。联系类型“订购”的属性是向某供应商订购的某种零件的数量。(4)把实体类型、联系类型及属性组合成图。如下图所示:工程项目供应商零件供应订购项目名称项目编号订购量重量颜色零件名称零件编号供应量供应商编号供应商名称地址开工日期第五章 总体设计要求:1、掌握总体设计的基本目的2、了解总体设计的步骤3、掌握模块化的定义和模块化的根据4、掌握抽象,逐步求精,信息隐藏和局部化的概念5、掌握模块独立程度的度量标准(耦合和内聚各有哪些类型)作业:T3附本章复习题T3:用面向数据流的方法设计下列系统的软件结构:(1)储蓄系统(2)机票预订系统(3)患者监护系统复习 第一题:分析下图,确定模块之间的耦合类型625341pur模块p, t和u更新同一个数据库stq在图中已经给模块之间的接口编了号码,下表描述了模块之间的接口编 号输 入输 出1飞机类型状态标志2飞机零件清单3功能代码4飞机零件清单5零件编号零件制造商6零件编号零件名称答案:当模块p调用模块q时(接口1),它传递了一个参数飞机类型。当模块q把控制返还给模块p时,它传回一个状态标志。因此,模块p和q之间的(接口1)、模块r和t之间(接口5)及模块s和u之间(接口6)都是数据耦合,因为它们传递的都是一个简单变量。如果两个模块中的一个模块给另一个模块传递控制元素,也就是说,如果一个模块明显地控制另一个模块的逻辑,则它们之间具有控制耦合。例如,当给具有逻辑内聚的模块传递功能代码时就传递了控制元素。另一个控制耦合的例子是把控制开关作为一个参数传递。图中模块q调用模块r时(接口3)传递一个功能代码,因此,这两个模块之间是控制耦合。由已知条件,模块p, t, u更新同一个数据库,因此,它们之间具有公共环境耦合。当模块p调用模块s时(接口2),如果模块s使用或更新模块p传递给它的零件清单中的所有元素,则模块p和模块s之间的耦合是数据耦合;但是,如果模块s只访问该清单中的一部分元素,则模块p和s之间的耦合是特征耦合。模块q和s之间(接口4)的耦合情况类似。由于图和表中所给出的信息不足以准确地描述各个模块的功能,所以不能确定这两对模块之间的耦合是数据耦合还是特征耦合。复习 第二题:从供选择的答案中选出在下列叙述中括弧内字母应该代表的正确内容(1)一组语句在程序的多处出现,为了节省内存空间把这些语句放在一个模块中,该模块的内聚度是(A)的。(2)将几个逻辑上相似的的成分放在一个模块中,该模块的内聚度是(B)的。(3)模块中所有成分都使用共同的数据,该模块的内聚度是(C)的。(4)模块内某些成分的输出是另一些成分的输入,该模块的内聚度是(D)的。(5)模块中所有成分结合起来完成单独一项任务,该模块的内聚度是(E)的。它具有简明的外部界面,由它构成的软件易于理解,测试和维护。供选择的答案AE1功能性2顺序性3通信性4过程性5偶然性6时间性7逻辑性请选择A: B:C: D:E: 答案:A(5 偶然性) B(7 逻辑性) C(3 通信性) D(2 顺序性) E(1 功能性)第六章 详细设计要求:1、了解人机界面设计过程中遇到的4个问题(系统响应时间,用户帮助设施,出错信息处理和命令交互)2、掌握过程设计的工具(程序流程图,盒图,判定表和判定树)3、了解面向数据结构的两种设计方法:Jackson方法4、掌握程序复杂程度的定量度量方法:McCabe方法作业:T3 T4 T8附本章习题答案和新增复习题T3:画出下列伪码程序的程序流程图和盒图STARTIF p THENWHILE q DO fEND DOELSEBLOCKgnEND BLOCKEND IFSTOP答案:(1)程序流程图 (2)盒图FpnTfg开始q循环WHILE qq循环停止F p T qg fnT4:图6.18给出的程序流程图代表一个非结构化的程序,问:(1)为什么说它是非结构化的?(2)设计一个等价的结构化程序(3)在(2)题的设计中使用附加的标志变量flag了吗?若没有,再设计一个使用flag的程序;若用了,再设计一个不用flag的程序。答案:(1)通常所说的结构化程序是按照狭义的结构程序的定义衡量,符合定义规定的程序。图中所示的程序的循环控制结构有两个出口,显然不符合狭义的结构程序的定义,因此是非结构化的程序。(2)使用附加的标志变量flag,至少有两种方法可以把该程序改造为等价的结构化程序,如下盒图所示:flag = TRUEp AND flaggF q Tflag=FALSEflag = TRUE(NOT q) OR (NOT flag)F q Tflag=FALSE g(3)不使用flag把该程序改造为等价的结构化程序的方法如图所示:(NOT q) OR (NOT p)F q TgT8:画出下列伪码程序的流图,计算它的环形复杂度,这个程序的逻辑有什么问题吗?C EXAMPLELOOP:DO WHILE Z01A=B+12IF A103THEN X=A4ELSE Y=Z5END IFIF Y011THEN PRINT G12ELSE PRINT K13END IFSTOP14程序流程图和流图分别如下图所示:FTTFA10X=APRINTX, YA=B+1Z0循环WHILE Z0Z0循环Y=ZTY0PRINT GTFPRINT K1234567891011121314(1)环形复杂度等于流图中的区域数上图所求的流图中有六个区域,故环形复杂度等于6。(2)环形复杂度等于流图中边的条数减去节点数之后加2流图中共有18条边,14个节点,故它的环形复杂充为18-14+26(3)环形复杂度等于程序中的判断数加1流图中有2条输出弧的节点(节点1,3,6,8,11)对应于程序中的1个判断,因此,流图的环形复杂度为516存在的逻辑问题:流图中节点6和8有矛盾,判定节点8对应的条件无法满足;另外,Z的值没有变化,该程序将是一个无限循环或根本不执行循环。第一题:用三种方法计算图中所示流图的环形复杂度afbgcdhe答案:(1)环形复杂度等于流图中的区域数上图所求的流图中有五个区域,故环形复杂度等于5。(2)环形复杂度等于流图中边的条数减去结点数之后加2流图中共有11条边,8个结点,故它的环形复杂充为11-8+25(3)环形复杂度等于程序中的判断数加1流图中有2条输出弧的结点(结点c和f)对应于程序中的1个判断,有n(n2)条输出弧的结点(例如结点a有3条输出弧)对应于程序中的n-1个判断。因此,流图的环形复杂度为211(3-1)15第二题: 假设某航空公司规定,乘客可以免费托运重量不超过30kg的行李。当行李重量超过30kg时,对头等舱的国内乘客超重部分每公斤收费4元,对其他舱的国内乘客超重部分每公斤收费6元,对外国乘客超重部分每公斤收费比国内乘客多一倍,对残疾乘客超重部分每公斤收费比正常乘客少一半。请用判定树表示与上述每种条件组合相对应的计算行李费的算法。 答案:第三题:.请分别给出如下程序流程图的N-S图和PAD图表示,并计算它的环形McCabe复杂性度量。答案 略第七章:实现要求:1、掌握测试的定义,目标,测试方法,测试准则和测试的步骤2、掌握单元测试,集成测试和确认测试3、掌握白盒和黑盒测试技术各自所包含的主要测试方法作业:T4附本章习题答案T4:回答下列问题:(1)什么是模块测试和集成测试?它们各自有什么特点?(2)假设有一个由1000行FORTRAN语句构成的程序(经编译后大约有5000条机器指令),估计在对它进行测试期间将发现多少个错误?为什么?(3)设计下列伪码程序的语句覆盖和路径覆盖测试用例STARTINPUT (A, B, C)IF A5THEN X=10ELSE X=1END IFIF B10THEN Y=20ELSE Y=2END IFIF C15THEN Z=30ELSE Z=3END IFPRINT (X, Y, Z)STOP答案:(1)模块测试把每个模块作为一个单独的实体来测试,目的是发现并改正程序模块中的错误,保证每个模块作为一个单元能正确地运行,这个测试步骤中所发现的往往是编码和详细设计的错误。测试重点在于模块接口、局部数据结构、重要的执行通路、出错处理通路和边界条件。集成测试是测试和组装软件的系统化技术,主要目标是发现与接口有关的问题。有两种集成测试策略:非渐增式测试方法和渐增式测试。(2)经验表明, 在类似的程序中,单位长度里的错误数ET/IT近似为常数。美国的一些统计数字告诉我们,通常0.5*10-2= ET/IT =2*10-2也就是说,在测试之前每1000条指令中大约有520个错误假设在该程序的每1000条指令中有10个错误,则估计在对它进行测试期间将发现的错误数为:500010 / 1000 = 50(3)u 语句覆盖的测试用例:因为每个判定表达式为真或为假时均有赋值语句,为了使每个语句都至少执行一次,总共需要两组测试数据,以便使得每个判定表达式取值为真或为假各一次。下面是实现语句覆盖的典型测试用例:使3个判定表达式之值全为假输入:A=1, B=1, C=1预期的输出:X1,Y2,Z3使3个判定表达式之值全为真输入:A=20, B=40, C=60预期的输出:X10,Y20,Z30u 路径覆盖的测试用例:本程序共有8条可能的执行通路,为做到路径覆盖总共需要8组测试数据。下面是实现路径覆盖的典型测试用例: 3个判定表达式之值全为假输入:A=1, B=1, C=1预期的输出:X1,Y2,Z3 3个判定表达式依次为假 假 真输入:A=1, B=1, C=60预期的输出:X1,Y2,Z30 3个判定表达式依次为假 真 假输入:A=1, B=40, C=1预期的输出:X1,Y20,Z3 3个判定表达式依次为假 真 真输入:A=1, B=40, C=60预期的输出:X1,Y20,Z30 3个判定表达式依次为真 假 假输入:A=20, B=1, C=1预期的输出:X10,Y2,Z3 3个判定表达式依次为真 假 真输入:A=20, B=1, C=60预期的输出:X10,Y2,Z30 3个判定表达式依次为真 真 假输入:A=20, B=40, C=1预期的输出:X10,Y20,Z3 3个判定表达式全为真输入:A=20, B=40, C=60预期的输出:X10,Y20,Z30第九章:面向对象方法学引论要求:1、了解面向对象方法学的要点2、掌握面向对象方法的主要优点3、掌握面向对象中的有关概念:对象,类,继承,封装等4、掌握三种面向对象模型(对象模型,动态模型,功能模型)5、了解对象模型的类图表示,UML的含义和组成6、了解利用Use case(用例)图来建立系统的用例模型附本章习题答案和新增复习题复习题1:请建立下述的图书馆馆藏出版物的对象模型一家图书馆藏有书籍、杂志、小册子、电影录像带、音乐CD、录音图书磁带和报纸等出版物,供读者借阅。这些出版物有出版物名、出版者、获得日期、目录编号、书架位置、借出状态和借出限制等属性,并有借出、收回等服务。答案:复习题2:试建立下述订货系统的用例模型假设一家工厂的采购部每天需要一张订货报表,报表按零件编号排序,表中列出所有需要再次订货的零件。对于每个需要再次订货的零件应该列出下述数据:零件编号、零件名称、订货数量、目前价格、主要供应者、次要供应者。零件入库或出库称为事务,通过放在仓库中的终端把事务报告给订货系统。当某种零件的库存数量少于库存量临界值时就应该再次订货。答案:从对这个订货系统的需求可以知道,仓库管理员通过放在仓库中的终端把零件入库/出库事务报告给订货系统,系统接收到事务信息之后应该处理事务;采购员需要使用订货系统提供的产生报告功能,以获取订货报告。综上所述,可以画出用例图:附:1、有人说:软件开发时,一个错误发现得越晚,为改正它所付出的代价就越大。对否?请解释你的回答 解答:软件开发时,一个错误发现得越晚,为改正它所付出的代价就越大,这个说法是对的。在1970年代,GTE、TRW和IBM等三家公司对此问题做了独立研究,最后它们得到相似的结论: 阶段 需求分析 软件设计 程序编码 单元测试 验收测试 维 护 相对修复代价 0.10.2 0.5 1 2 5 20 从表中可以看出,在需求分析阶段检查和修复一个错误所需的代价只有编码阶段所需代价的1/5到1/10,而在维护阶段做同样的工作所付出的代价却是编码阶段的20倍。2、试论述瀑布模型软件开发方法的基本过程解答:瀑布模型规定了各项软件工程活动,包括:制定软件项目计划,进行需求分析和定义,软件设计,程序编码,测试及运行维护。并且规定了它们自上而下,相互衔接的固定次序,如同瀑布流水,逐级下落。然而软件开发的实践表明,上述各项活动之间并非完全是自上而下,呈线性图式。实际情况是,每项开发活动均应具有以下特征: (1) 从上一项活动接受本项活动的工作对象,作为输入; (2) 利用这一输入实施本项活动应完成的内容; (3) 给出本项活动的工作成果,作为输出传给下一项活动; (4) 对本项活动实施的工作进行评审。若其工作得到确认,则继续进行下一项活动,否则返回前项,甚至更前项的活动进行返工。3、软件工程是开发、运行、维护和修复软件的系统化方法,它包含哪些要素?解答:软件工程包括三个要素:方法、工具和过程。4、数据流图的作用是什么?它有哪些基本成份 数据流图可以用来抽象地表示系统或软件。它从信息传递和加工的角度,以图形的方式刻画数据流从输入到输出的移动变换过程,同时可以按自顶向下、逐步分解的方法表示内容不断增加的数据流和功能细节。因此,数据流图既提供了功能建模的机制,也提供了信息流建模的机制,从而可以建立起系统或软件的功能模型。 数据流图的基本成份有4种:5、请将下述有关模块独立性的各种模块之间的耦合,按其耦合度从低到高排列起来。 内容耦合 控制耦合 非直接耦合 标记耦合 数据耦合 外部耦合 公共耦合 答案:、6、请将下述有关模块独立性的各种模块内聚,按其内聚度(强度)从高到低排列起来。 巧合内聚 时间内聚 功能内聚 通信内聚 逻辑内聚 信息内聚 过程内聚 答案: 、7、从供选择的答案中选出应填入下列叙述中( )内的正确答案。 软件设计中划分程序模块通常遵循的原则是使各模块间的耦合尽可能( A )。三种可能的模块耦合是: ( B ),例如,一个模块直接引用另一个模块中的数据。 ( C ),例如,一个模块把开关量作为参数传送给另一个模块。 ( D ),例如,一个模块通过公共数据结构把数据传送给另一个模块。 其中, ( E )的耦合性最强。【供选择的答案】 A: 强 适中 弱BE: 公共耦合 数据耦合 逻辑耦合 外部耦合 内容耦合 控制耦合答案:A. B. C. D. E. 8、为高质量地开发软件项目,在软件结构设计时必须遵循( A )的原则,( B )建立软件系统的模块结构。并且应根据( C )评价系统模块划分的质量。此外在模块设计时,应从5种基本的( D )出发,利用它们组合成一个模块的程序块结构。 要求每个( E )的结构应是单入口和单出口。 【供选择的答案】 A: 质量控制 程序优化 信息隐蔽 数据共享 模块通信 B: 自底向上 自顶向下 衍变的自顶向下 随机 回归 C: 数据独立性 程序独立性 模块独立性 可修改性 可理解性 D: 数据结构 处理结构 功能结构 成份 控制结构 E: 程序块 公共块 数据块 记录块 通信块答案:A. B. C. D. E. 9、阅读下列关于软件可靠性方面的叙述,回答问题1和问题2。软件的可靠度可定义为:在假定输入和硬件不发生错误的前提下,对于给定的环境和给定的输入,在指定的时间内能完成规定任务的概率。某软件中心的评测部为了评估已开发实现的应用软件ASP的可靠性,决定采用软件可靠性的错误播种模型来进行测试和评估。评测部在评估时,作了下列三个假设:(1) 在测试前,单位长度的故障个数ET / IT 为一常数,此常数基本上落在一个固定的范围内。其中IT 为被测程序的长度(即机器指令条数),ET 为被测程序中故障总数。(2) 失效率正比于软件中剩余的(潜伏的)故障数,平均无故障时间MTTF与单位长度的剩余故障个数成反比,即 MTTF = 1/(K*r )。其中r 为单位长度剩余故障个数,K的典型值现取为200。(3) 测试中发现的错误都得到了及时改正,在测试过程中没有引入新的错误。评测部对ASP软件人为地植入了10个错误,即NS = 10,在开始测试的一小段时间内,发现了160个固有故障,即n = 160,又发现了植入的故障2个,即nS = 2,被测程序ASP的长度(机器指令条数)为105 。问题1:用故障播种(植入)的数学模型,估算出被测程序ASP的固有故障的个数N的值。如果通过测试一段时间后,发现的固有错误个数为ED = 795时,请估算此程序的平均无故障时间MTTF值。问题2:若要求把此MTTF再提高4倍,应至少再排除多少个固有错误? 请简要地列出有关计算式答案:问题1利用故障播种(植入)模型,被测程序ASP的固有故障个数N的值为:N = NS * n / nS = 10 * 160 / 2 = 800 (个故障)。 根据Shooman模型:问题2把此MTTF再提高4倍,则MTTF = 500,有 得: EC(t) = 799 因此,只要再排除799 - 795 = 4个固有错误,MTTF就可再提高4倍。
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑环境 > 建筑工程


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!