软件工程考点例题整理.docx

上传人:极速器 文档编号:596220 上传时间:2025-09-01 格式:DOCX 页数:28 大小:174.20KB
下载 相关 举报
软件工程考点例题整理.docx_第1页
第1页 / 共28页
软件工程考点例题整理.docx_第2页
第2页 / 共28页
软件工程考点例题整理.docx_第3页
第3页 / 共28页
软件工程考点例题整理.docx_第4页
第4页 / 共28页
软件工程考点例题整理.docx_第5页
第5页 / 共28页
点击查看更多>>
资源描述

1、软件工程概述软件软件是计算机系统中与硬件相互依存的另一局部,它是包括程序、数据及其相关文档的完整集入口O软件的特点1. Logicalratherthanphysical(软件是一种逻辑实体,而非具体的物理实体)2. DevelopedorEngineered,notmanufacturedintheclassicalsense(在研制、开发活动中被创造出来,但不能按传统的生产含义加以理解)3. Doesn,twearOUt(在软件的运行和使用期间,没有磨损、老化问题)软件的开展软件的开展可以分为这样三个阶段:1 .程序设计阶段,约为50至60年代2 .程序系统阶段,约为60至70年代3 .软

2、件工程阶段,约为70年代以后时期特点程序设计程序系统软件工程软件所指程序程序及说明书程序、文档及数据主要程序设计语言汇编及机器语言高级语言软件语言*软件工作范围程序编写包括设计和测试软件生存期需求者程序设计者本人少数用户市场用户开发软件的组个人开发小组开发小组及大、中型软件开发机构软件规模小型中、小型大、中、小型决定质量的因素个人程序设计技术小组技术水平管理水平开发技术和手段子程序、程序库结构化程序设计数据库,开发工具,开发环境,工程化开发方法,标准和标准,网络和分布式开发,面向对象技术,软件过程与过程改良维护责任者程序设计者开发小组专职维护人员硬件特征价格高,存储容量小,工作可靠性差降价,速

3、度、存储容量及工作可靠性有明显提IwJ向超高速、大容量、微型化及网络化方向开展软件特征完全不受重视软件技术的开展不能满足需求,出现软件危机开发技术有进步,但未获突破性进展,价格高,未完全摆脱软件危机软件危机* 软件需求增长得不到满足;* 软件生产本钱高,价格昂贵;* 软件生产进度无法控制;* 软件需求定义不准确,易偏离用户需求;* 软件质量不易保证;* 软件可维护性差等等软件工程采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,这就是软件工程。Boehm曾为软件工程下了定义:运用现代科学技术知识来设计并构造计算机程序及为

4、开发、运行和维护这些程序所必需的相关文件资料。FritzBauer:Theestablishmentanduseofsoundengineeringprinciplesinordertoobtaineconomicallysoftwarethatisreliableandworksefficientlyonrealmachines.软件工程是建立和使用一系列完善的工程化原则以便经济地获得能够在实际机器上有效运行的可靠软件。1983年,IEEE(InstituteofElectrical&ElectronicEngineers,电气和电子工程师学会)做出的定义是“软件工程是开发、运行、维护和修复

5、软件的系统方法。它的核心内容是“以工程化的方式组织软件的开发,其中涉及软件方案、开发和维护各个阶段。软件工程三个要素:方法、工具和过程。D软件工程方法为软件开发提供了“如何做的技术。2)软件工具为软件工程方法提供自动的或半自动的软件支撑环境。3)软件工程过程指将软件工程的方法和工具综合起来,以到达合理、及时地进行计算机软件开发的目的。软件工程过程(SoftwareEngineeringProcess)软件工程过程是指为了获得软件产品,在软件工具支持下由软件工程师采用软件工程方法完成的一系列软件工程活动。软件工程的七条原理著名的软件工程专家于1983年在一篇论文中提出了软件工程的七条根本原理。他

6、认为这七条原理是确保软件产品质量和开发效率的原理的最小集合。1 .分阶段的生命周期方案严格管理2 .坚持进行阶段评审3 .实行严格的产品控制4 .采用现代程序设计技术5 .结果应能清楚地审查6 .开发小组的人员应少而精7 .成认不断改良软件工程实践的必要性软件工程的目标组织实施软件工程工程是为了获得工程的成功,即到达以下几个主要的目标:1 .出较低的开发本钱2 .到预期的软件功能3 .取得较好的软件性能4 .使开发的软件易于移植5 .需要较低的维护费用6 .能按时完成开发工作,及时交付使用概括地说,根本目标,四个字:优质、高效。即质量高、效率高。软件工程的原则软件工程根本目标适用于所有软件工程

7、工程。为到达这些目标,在软件开发过程中必须遵循以下软件工程原则。1 .抽象2 .信息隐蔽3 .模块化4 .局部化5 .确定性6 .一致性7 .完备性8 .验证性使用一致性、完备性和可验证性的原则可以帮助开发者设计一个正确的系统。软件生命周期(lifecycle)同其它事物一样,软件也有孕育、诞生、成长、成熟、衰亡的生存过程,称为软件的生命周期。包括六阶段内容:1 .制定方案2 .需求分析3 .系统设计4 .程序编写5 .软件测试6 .运行和维护软件生命周期经典模型一一瀑布模型软件生命周期模型是从软件工程需求定义直至软件经使用后废弃为止,跨越整个生存期的系统开发、运作和维护所实施的全部过程、活动

8、和任务的结构框架。软件开发模型瀑布模型:按照软件生命周期经典模型-瀑布模型的各个阶段实施开发工作优点:1:谑供了软件开发的根本框架,优于“手工作坊式的开发方法2 .有利于大型软件开发过程中人员的组织、管理3 .有利于软件开发方法和工具的研究与使用,从而提高了大型软件工程开发的质量和效率缺点:1在软件开发的初始阶段指明软件系统的全部需求是困难的,有时甚至是不现实的2.需求确定后,用户和软件工程负责人要等相当长的时间(经过设计、编码、测试、运行)才能得到一份软件的最初版本。如果用户对这个软件提出比较大的修改意见,那么整个软件工程将会蒙受巨大的人力、财力、时间方面的损失。渐进模型(演化模型、原型模型

9、原型模型在克服瀑布模型缺点、减少由于软件需求不明确而给开发工作带来风险方面,确实有着显著的效果原型化方法是用户和软件开发人员之间进行的一种交互过程,适用于需求不确定性高的系统螺旋模型它是生命周期模型与原型模型的结合,不仅表达了两个模型的优点,还增加了新的成分一一风险分析螺旋模型是支持大型软件开发并具有广泛应用前景的模型例题1 .开发软件时,对于提高软件开发人员工作效率至关重要的是(八)o软件工程中描述软件生存周期的瀑布模型一般包括方案、(B),设计、编码、测试、维护等几个阶段。其中,设计阶段在管理上又可以依次分成(C)和(D)两个步骤。供选答案:A:程序开发环境操作系统的资源管理功能开发程序

10、人员数量计算机的并行处理能力需求调查问题定义代码设计详细设计概要设计数据设计故障处理设计软件体系结构设计B:需求分析可行性分析C、D:方案设计运行设计答案:A.B.C.D.2 .有人将软件的开展过程划分为4个阶段:第一阶段(20世纪50年代)称为“程序设计的原始时期。这时既没有(八),也没有(B),程序员只能用机器指令编写程序。第二阶段(20世纪60年代)称为“根本软件期。出现了(八),并逐渐普及。随着(B)的开展,编译技术也有较大的开展。第三阶段(20世纪60年代末-70年代中)称为“程序设计方法时代。这一时期,与硬件价格下降相反,软件开发费用急剧上升。人们提出了(C)和(D)等程序设计方法

11、设法降低软件的开发费用。第四阶段(20世纪70年代中期至今)称为“软件工程时期,软件开发技术不再仅仅是程序设计技术,而是包括了与软件开发的各个阶段,如(E),(F),编码、单元测试、综合测试、(G)及其整体有关的各种管理技术。供选择的答案:A-D:汇编语言操作系统虚拟存储器概念高级语言结构化程序设计数据库概念固件模块化程序设计E-G:使用和维护兼容性确实认完整性确实认设计需求定义图象处理答案:A.B.C.D.E.F.G.问题定义关于问题性质、工程目标和规模的书面报告可行性研究(也称可行性分析,FeasibilityAnalysis)目的就是要用最小的代价在尽可能短的时间内确定问题是否能够解决

12、具体任务:1 .进一步分析和澄清问题定义。2 .导出系统的高层逻辑模型。从系统逻辑模型出发,探索若干种可供选择的主要解法(即系统实现方案)。对每种解法都应该至少从下述几方面研究其可行性:Economicfeasibility,经济可行性。这个系统的经济效益能超过它的开发本钱吗?Technicalfeasibility,技术可行性。使用现有的技术能实现这个系统吗?Legalfeasibility,法律可行性。确定系统开发可能导致的任何侵权行为、阻碍性后果和责任。Operationalfeasibility,操作可行性。系统的操作方式在这个用户组织内行得通吗?3、对以后的行动方针提出建议。基于计

13、算机系统的本钱一效益分析是可行性研究的重要内容,它用于评估计算机系统的经济合理性。给出系统开发的本钱论证,并将估算的本钱与预期的利润进行比照。本钱软件开发本钱主要表现为人力消耗(乘以平均工资则得到开发费用)。一般来说,基于计算机系统的本钱由四个局部组成:1 .购置并安装软硬件及有关设备的费用2 .系统开发费用3 .系统安装、运行和维护费用4 .人员培训费用1、代码行技术代码行技术是比较简单的定量估算方法,也是一种自底向上的估算方法。它把开发每个软件功能的本钱和实现这个功能需要用的源代码行数联系起来。通常根据经验和历史数据估计实现一个功能需要的源程序行数。一旦估计出源代码行数以后,用每行代码的平

14、均本钱乘以行数即可确定软件的本钱。每行代码的平均本钱主要取决于软件的复杂程度和开发小组的工资水平。大致分如下两步:对要求设计的系统进行功能分解,直到可以对为实现该功能所要求的源代码行数做出可靠的估算为止。根据经验和历史数据,对每个功能块估计一个最有利的、最可能的和最不利的LOC值。设最有利的LoC值为a,最可能的LoC值为m,最不利的LoC值为b,则代码行的期望(平均)值L-a+411i+TL=-6a、b、m分别为程序最小规模、最大规模和最可能规模;豆、E、帚为3种规模平均值再根据历史数据和经验,选择每个软件功能块的LOC价格计算每个功能块的价格及工作量,并确定该软件工程总的估算价格和工作量。

15、可行性论证的提纲大致包括如下内容:1、背景情况。问题描述,市场需求等2、系统描述。简略的范围描述,方案目标和阶段目标等3、候选方案。候选方案的配置,选择最终方案的准则等4、价格利益分析。经费概算和预期经济效益5、技术冒险评价。包括技术实力、设备条件和已有工作基础6、操作可行性。用户组织对操作方式的希望7、法律可行性。系统开发可能导致的侵权、违法等8、其它与工程有关的问题。可能的未来变化9、结论。需求分析所谓软件需求是指用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。需求分析具体任务:1、确定对系统的综合要求D系统功能要求2)系统性能要求3)运行要求4)将来可能提出的要求2、分析系统

16、的数据要求(需求分析的本质就是对数据和加工进行分析)3、导出系统的逻辑模型4、修正系统开发方案5、开发原型系统(可选)需求获取技术1、访谈与会议2、书面调查法3、观察用户工作流程4、用户和开发人员共同组成联合小组需求调查主要包括四局部内容:1、组织概况2、组织的业务活动:1)组织的业务状态2)业务的详细内容3)输入输出信息从六个方面着手:* 信息流向* 信息种类* 利用的目的* 信息的使用者和制造者* 输入和输出地点* 输入和输出信息量3、存在问题、约束条件4、未来要求结构化分析方法(SA方法)就是面向数据流自顶向下逐步求精进行需求分析的方法。分析的过程:面向数据流,采用自顶向下、分支分层、逐

17、步分解、逐步细化、逐步求精,最后落实到具体加工、根本加工、简单加工。用逐步求解的方法控制系统的复杂度,使得复杂系统简单化、抽象系统具体化。数据流图(DFD)数据流图描绘系统的逻辑模型,或者说描绘信息在系统中流动和处理的情况。根本系统模型数据流分析将系统模型视作一种数据变换,它接受各种形式的输入,通过变换产生各种形式的输出。输入1输入2输出1输出2例,以下图是一个飞机机票预定系统的根本系统模型机票数据流图的成分以下图是机票预定系统的DFDo可以看出,数据流图是由以下四个根本成分组成的:1、数据流(用箭头表示)2、加工(用圆圈表示)3、文件(用单线或双线表示)4、数据源点和终点(用方框表示)记帐文

18、件几点说明:1、一个加工并不一定是一个程序。2、一个数据存储也不等同于一个文件。3、数据存储和数据流都是数据,但所处状态不同。自顶向下逐层画DFD的步骤如下:D把根本系统模型加上源点和终点作为顶层DFD。2)画出各层DFD,逐层画DFD的过程也就是逐层分解的过程。为便于管理,要对分层DFD和图中的加工进行编号。A、子图的图号就是分解的父图中相应加工的编号。B,子图中的加工编号是由子图号、小数点、局部顺序号组成。3)画出总的DFD。(可选)画DFD时要注意的几个问题:1、画DFD不是画流程图。DFD只描述“做什么,不描述“怎么做和做的顺序。而流程图表示对数据进行加工的次序和细节。2、父图和子图的

19、平衡。父图某加工的输入输出和分解这个加工的子图的输入输出必须完全一致。3、局部文件。文件总是局部于分层DFD的某一层或某几层。4、分解的深度与层次。逐层分解要求分解到加工成为足够简单、易于理解的根本加工为止。所谓根本加工就是加工的意义明确、操作单一。但是究竟分解的层次多少适宜,应当根据问题的复杂程度来确定。一般来说,可参考以下准则:D一个加工的分解,最多不要超过7个子加工。若超过7个时,可以用增加层次的方法来减少子加工数。2)分解在逻辑上应合理、自然,不能硬性分割。3)在保证数据流的易理解性的前提下,尽量少分解层次。这样可以减少层次的界面。4)分解要均匀。即在一张DFD中,不要有些加工已是根本

20、加工,另一些加工还要分解好几层。绝对均匀不可能,但不要相差太大。数据字典(DD)数据字典是关于数据的信息的集合,也就是对数据流图中包含的系统元素(所有数据流、加工、文件)的定义的集合。数据流图和数据字典是需求规格说明书的主要组成局部。1、数据流条目数据流条目是定义数据流的。定义的方式一般是列出该数据流的各组成数据项。在定义数据流时,通常借助于一些简单的符号。如=等价于(定义为)+与=a+b,X由a和b组成*,或=,x=abX由a或b组成,重复x=aX由。个或多个a组成mn重复如x=3a8表示X中至少出现3次a,至多出现8次aO可选(选择)如x=a+(b)+cb可以在X中出现,也可以不出现“根本

21、数据元素X=aX为取值为a的数据元素.连接符x=l.9X可取1至9中的任一值如数据流“存折可以定义:存折=户名+所号+帐号+开户日+性质+(印密)+1存取行50。/蚪9户名=2字母24所号=001“999帐号=00000001”99999999开户日=年+月+日性质=1.”6印密=0存取行=日期+(摘要)+支出+存入+余额+操作+复核日期=年+月+日年=0001”.9999”月=01”.12”日=01.“31摘要=1字母4支出=金额金额=操作=00001”.“999992、数据文件条目文件条目是定义文件的,一般只需列出文件的组成数据项,以及文件的组织方式如数据文件(数据存储)“存折可定义为存折

22、户名+所号+帐号+开户日+性质+(印密)+1存取行50。产9蚪组织:按帐号次序从小至大排列3、加工条目(小说明)小说明集中描述一个加工“做什么,即加工逻辑。所谓加工逻辑是指用户对这个加工的逻辑要求,即这个加工的输出数据流和输入数据流的逻辑关系。目前用于写小说明(加工逻辑说明)的工具有结构化英语、判定表和判定树。结构化英语下面是商店业务处理系统中“检查发货单的例子IFtheinvoiceexceeds$500THEN(发货单金额超过$500)IFtheaccounthasanyinvoicemorethan60daysoverdueTHEN(欠款超过60天)theconfirmationpen

23、dingresolutionofthedebt(在归还欠款前不予tt准)ELSE(accountisingoodstanding)(欠款未超期)issueconfirmationandinvoice(发tt准书及发货单)ENDIFELSE(invoice$500orless)(发货单金额未超过$500)IFtheaccounthasanyinvoicemorethan60daysoverdueTHEN(欠款超过60天)issueconfirmation,invoiceandwritemessageoncreditactionreport(发批准书,发货单及赊欠报告)ELSE(accountis

24、ingoodstanding)(欠款未超期)Issueconfirmationandinvoice(发tt准书及发货单)ENDIF判定表在某些数据处理问题中,某数据流图的加工需要依赖于多个逻辑条件的取值,就是说完成这一加工的一组动作是由于某一组条件取值的组合引发的。这时使用判定表来描述比较适宜。下面以“检查发货单为例,说明判定表的构成。1234条件发货单金额$500$500W$500W$500赊欠情况60天60天60天60天操作不发出批准书J发出批准书发出发货单V发出赊欠报告判定表由四个局部组成,虚线分割开的四局部是:条件茬(ConditionStub)左上局部条件项(ConditionEnt

25、ry)右上局部动作茬(ACtionStub)左下局部动作项(ACtiOnEntry)右下局部例题请用判定表表示下面描述的耗电计费系统中电费的计算方法耗电计费系统可以采用固定价格收费和浮动价格收费两种方式。若采用固定价格方式收费,对每月耗电100KWh以下的用户只征收最低标准费,超过100KWh的用户按价格表A收费;若采用浮动价格方式收费,则每月耗电100KWh以下的用户按价格表A收费,超过100KWh的用户按价格表B收费。答案:条件收费方式固定固定浮动浮动耗电规模100100100100操作征收最低标准费J按价格表A收费按价格表B收费V条件固定固定浮动浮动100100100100操作按价格表A

26、收费征收最低标准费按价格表B收费按价格表A收费判定树判定树也是用来表达加工逻辑的一种工具,有时它比判定表更直观。下面把前面的“检查发货单的例子用判定树表示。/欠款60天一一不发出批准书检查发货单金额$500金额W$500欠款60天一一发出批准书、发货单及赊欠报告欠款W60天一一发出批准书、发货单欠款W60天一一发出批准书、发货单我们用DFD描述了系统中数据流动和加工的状况,用DD描述了其中的一些数据流、文件和加工,但是还不能满足需求分析阶段的要求。任何一个软件系统都可能有成千上万个数据项,仅仅描述它们是不够的,更重要的是如何把它们以最优的方式组织起来,以满足系统对数据的要求。E-R图(Enti

27、ty-Relationship,实体-关系图)1、实体是现实世界中实体的数据侧面;或者说,数据对象是现实世界中省略了功能和行为的实体。2、联系客观世界中的事物彼此间往往是有联系的。同样,应用问题中的任何数据对象都不是孤立的,它们与其它数据对象一定存在各种形式的联系。联系可分为三类:1) 一对一联系(1:1)2) 一对多联系(1:N)3)多对多联系(M:N)3、属性属性是实体或联系所具有的性质软件需求规格说明1 .引言。编写目的,工程背景等2 .任务概述。目标,运行环境等3 .数据描述。4 .功能需求。5 .性能需求。6 .运行需求。7 .其他需求。例题1 .软件需求分析的任务不应包括(八)0进

28、行需求分析可使用多种工具,但(B)是不适用的。在需求分析中,分析员要从用户那里解决的最重要的问题是(C)。需求规格说明书的内容不应当包括(D)。该文档在软件开发中具有重要的作用,但其作用不应当包括(E)o供选答案:信息域分析确定逻辑模型判定表A:问题分析结构化程序设计B:数据流图PAD图数据词典要让软件做那么要给软件提供哪些信息要求软件工作效率如何对重要功能的描述软件确认准则要让软件具有什么样的结构对算法的详细过程性描述软件的性能E:软件设计的依据用户和开发人员对软件要“做什么的共同理解软件验收的依据软件可行性分析的依据答案:A.B.C.D.E.2 .在结构化分析方法中,用以表达系统内数据的运

29、动情况的工具有()。供选答案:答案:A一旦软件需求确认之后,就进入开发阶段。开发阶段由3个互相关联的步骤组成,即设计、实现(编码)和测试。从工程管理的角度看,软件设计可分为概要设计/总体设计和详细设计两大步骤。从技术角度来看,软件设计可分为数据设计、系统结构设计和过程设计。现在越来越多的人把界面设计也单独取出作为一个方面。概要设计根本目的是用比较抽象概括的方式确定系统如何完成预定的任务,即确定软件系统的总体结构,给出系统中各个组成模块的功能和模块间的接口。涉及的概念主要有:模块化,抽象与逐步求精,信息隐藏,模块独立在进行软件结构设计时应该遵循的最重要的原理是模块独立原理。采用模块化原理的优点:

30、D可以使软件结构清晰,容易设计、容易阅读和理解、容易测试和调试。2)提高软件的可靠性。3)易于软件开发工程的组织管理。所谓模块的独立性,是指软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中其他模块的接口是简单的。模块独立性可用两个定量准则来度量耦合(COUPling):各个模块之间相互关联的度量内聚(cohesion):模块内部各元素之间相互关联的度量耦合共分七级非直接耦合、数据耦合、特征耦合/标记耦合、控制耦合、外部耦合、公共耦合、内容耦合按上述顺序,耦合性逐渐升高,模块独立性逐渐降低。内聚共分七级偶然内聚、逻辑内聚、时间内聚、过程内聚、通信内聚、顺序内聚、功能内聚按上述顺序,

31、内聚性逐渐加强,功能趋于单一,模块独立性也逐渐加强。软件概要设计的目标是力求增加模块的内聚,尽量减少模块间的耦合。但增加内聚比减少耦合更重要,应当把更多的注意力集中到提高模块的内聚程度上来。系统结构设计的七条启发式原则:1)改良软件结构提高模块独立性2)模块规模应该适中3)深度、宽度、扇出和扇入都应适当4)模块的作用范围应在控制范围之内5)力争降低模块接口的复杂程度6)设计单入口单出口的模块7)模块功能应该可以预测概要设计常用图形工具有:层次图、HlPo图、结构图(SC图)。常见的软件概要设计方法有3大类:1)以数据流图为基础构造模块结构的结构化设计方法(SD,StructuredDesign

32、2)以数据结构为基础构造模块结构的JaCkSon方法和LCP(LogicalConstructionofPrograms)(Wanier)逻辑构造方法3)以对象、类、继承和通信为基础的面向对象的设计方法(OoD)此外,以信息隐藏为原则的ParnaS方法虽然没有给出系统化的设计方法,但提出了一组原贝限结构化设计方法(StructuredDesign,SD)是基于模块化、自顶向下细化、结构化程序设计等程序设计技术基础而开展起来的。概要设计的步骤:1、分析/重画DFD2、确定DFD的特点及边界3、映射为软件结构4、细化后,得到初始结构图5、获得最终的软件结构图概要设计说明书1 .引言。编写目的,工

33、程背景等2 .任务概述。目标,运行环境,需求概述,条件与限制等3 .总体设计。处理流程,系统总体结构等4 .接口设计。外部接口,内部接口等5 .数据结构设计6 .运行设计7 .出错处理设计8 .其它问题例题1 .在众多的设计方法中,SD方法是最受人注意的,也是最广泛应用的一种,这种方法可以同分析阶段的(八)方法及编程阶段的(B)方法前后衔接,SD方法考虑如何建立一个结构良好的程序结构,它提出了评价模块结构质量的两个具体标准-块间联系和块内联系。SD方法的最终目标是(C),用于表示模块间调用关系的图叫(D)o另一种比较著名的设计方法是以信息隐藏为原则划分模块,这种方法叫(E)方法。供选择的答案:

34、A-B:JaCkSOnSASC(4)ParnasSPC:块间联系大,块内联系小块间联系大,块内联系小块间联系小,块内联系大块间联系小,块内联系小D:PADHCPSCSADTHIPoNSE:JaCkSonParnaSTUringWirthDijkStra答案:A.B.C.D.E.2 .块间联系和块内联系是评价程序模块结构质量的重要标准。联系的方式、共用信息的作用、共用信息的数量和接口的(八)等因素决定了块间联系的大小。在块内联系中,(B)的块内联系最强。SD方法的总的原则是使每个模块执行(C)功能,模块间传送(D)参数,模块通过(E)语句调用其它模块,而且模块间传送的参数应尽量(F)o此外,SD

35、方法还提出了判定的作用范围和模块的控制范围等概念。SD方法认为,(G)应该是(三)的子集。供选择的答案:A:友好性健壮性简单性平安性B:巧合内聚功能内聚通信内聚信息内聚C:一个多个D:数据型控制型混合型E:直接引用标准调用中断宏调用F:少多G-H:作用范围控制范围答案:A.B.C.D.E.F.G.H.3 .从以下有关系统结构图的叙述中选出正确的叙述A.系统结构图中反映的是程序中数据流的情况。B.系统结构图是精确表达程序结构的图形表示法。因此,有时可将系统结构图当作程序流程图使用oC.个模块的多个下属模块在系统结构图中所处的左右位置是无关紧要的。D.系统结构图中,上级模块与其下属模块之间的调用关

36、系用有向线段表示。这时,使用斜的线段和水平、垂直的线段具有相同的含义。答案:D5.在完成软件概要设计,并编写出相关文档之后,应当组织对概要设计工作的评审。评审的内容包括:分析该软件的系统结构、子系统结构,确认该软件设计是否覆盖了所有已确定的软件需求,软件每一成分是否可(八)到某一项需求。分析软件各局部之间的联系,确认该软件的内部接口与外部接口是否已经明确定义。模块是否满足(B)和(C)的要求。模块(D)是否在其(E)之内。供选择的答案:A:覆盖演化追溯等同连接B:多功能高内聚高耦合高效率可读性C:多入口低内聚低耦合低复杂度低强度D-E:作用范围高内聚低内聚取值范围控制范围答案:A.B.C.D.

37、E.详细设计详细设计就是要在总体设计阶段成果的基础上,考虑如何实现定义的软件系统,直到对系统中的每个模块给出足够详细的过程描述。结构化程序设计技术是进行详细设计的逻辑基础。它采用自顶向下逐步求精的设计方法和单入口单出口的控制结构。结构化程序设计的三种根本控制结构是顺序、选择、循环。详细设计的工具有程序流程图、盒图、PAD图、判定表、判定树和PDL语言等。程序复杂性度量程序复杂性主要指模块内程序的复杂性。它直接关联到软件开发费用的多少、开发周期的长短和软件内部潜伏错误的多少等。1)代码行度量法度量程序的复杂性,最简单的方法就是统计程序的源代码行数。该方法的根本考虑是统计一个程序模块的源代码行数目

38、并以源代码行数作为程序复杂性的度量。LiPoW及其他研究者得出一个结论:对于少于100个语句的小程序,源代码行数与出错率是线性相关的。随着程序的增大,出错率以非线性方式增长。2)MCCabe度量法McCabe度量法是一种基于程序控制流的复杂性度量方法。MCCabe定义的程序复杂性度量值又称环路复杂性,它是基于程序图中环路的个数。如果把程序流程图中每个处理符号都退化成一个结点,原来联结不同处理符号的流线变成连接不同结点的有向弧,这样得到的有向图就叫做程序图。计算有向图G的环路复杂性的公式:V(G)=mn+2其中,V(G)是有向图G中的环路个数,m是图G中有向弧个数,n是图G中结点个数。详细设计

39、说明书1 .引言2 .总体设计。软件结构3 .程序描述。逐个模块描述其功能、性能、输入、输出、算法等例题软件详细设计工具可分为3类,即图形工具、设计语言和表格工具。图形工具中,(八)简单而应用广泛。(B)表示法中,每个处理过程用一个盒子表示,盒子可以嵌套。(C)可以纵横延伸,图形的空间效果好。(D)是一种设计和描述程序的语言,它是一种面向(E)的语言。供选答案:A-C:NS图流程图HIPO图PAD图D:CPDLPROLoGPascalE:人机器数据结构对象答案:A.(g)BeC.D.EG2001年统考下面是两个程序流程图,试分别用N-S图和PAD图表示之,并计算它们的McCabe复杂性度量。答

40、案:PAD图略MCCabe复杂性度量都为3。(7-6+2)以下图是使用BASIC语言编写的一个打印A、B、C三数中最小者的程序流程图。其中出现了6个GOTO语句,1个向前,5个向后,程序可读性很差。FTif(AB)goto120;if(BC)goto110;100printC;goto140;110printB;goto140;120if(AC)goto130;goto100;130printA;140试利用根本控制结构,将程序中的GOTO语句消去。使用if-then-else结构化构造,则上述程序段可改成如下形式:if(ABandA=BandBc)thenprintBelseprintC编码

41、所谓编码就是把软件设计的结果翻译成计算机可以“理解的形式一用某种程序设计语言书写的程序。按照软件工程的方法论,程序的质量根本上由设计的质量决定。但是,编码使用的语言,特别是写程序的风格和途径也对程序质量有相当大的影响。程序设计语言的分类、选择大量实践说明,高级程序设计语言较汇编语言有很多优点。程序设计风格包括四个方面:源程序文档化、数据说明、语句结构和输入/输出方法例题从以下叙述中选出5条符合程序设计风格指导原则的叙述。嵌套的重数应加以限制尽量多使用临时变量不滥用语言特色不用可以省略的括号使用有意义的变量名应尽可能把程序编得短些把常见的局部优化工作留给编译程序去做注解越少越好程序的格式应有助于

42、读者理解程序应尽可能多用GOTO语句答案:、是正确的从以下关于模块化程序设计的叙述中选出5条正确的叙述。程序设计比较方便,但比较难以维护便于由多个人分工编制大型程序软件的功能便于扩充程序易于理解,也便于排错在主存储器能够容纳得下的前提下,应使模块尽可能大,以便减少模块的个数模块之间的接口叫做数据文件只要模块之间的接口关系不变,各模块内部实现细节的修改将不会影响别的模块模块间的单向调用关系叫做模块的层次结构模块越小,模块化的优点越明显。一般来说,模块的大小都在10行以下答案:、是正确的测试软件测试的目的就是软件投入生产性运行之前,尽可能多地发现软件中的错误。目前软件测试仍然是保证软件质量的关键步

43、骤。软件测试在软件生命周期中横跨两个阶段:编码和测试。就软件测试目的提出以下观点:1)测试是程序的执行过程,目的在于发现错误。2) 一个好的测试用例在于能发现至今未发现的错误3) 一个成功的测试是发现了至今未发现的错误的测试软件测试的原则1)应当尽早地不断地进行软件测试2)测试用例应由测试输入数据和与之相对应的预期输出结果这两局部组成3)程序员应防止检查自己的程序4)在设计测试用例时,应当包括合理的输入条件和不合理的输入条件5)充分注意测试中的群集现象6)严格执行测试方案,排除测试的随意性7)应当对每个测试结果做全面检查8)妥善保存测试方案、测试用例、出错统计和最终分析报告,为维护提供方便常分单元测试/模块测试,集成测试,确认测试和系统测试。关系重大的还可做平行运行。设计测试方案是测试阶段的关键技术问题,根本目标是选用最少量的高效测试数据,做到尽可能完善的测试,从而尽可能多地发现软件中的问题。动态测试两个根本方法黑盒测试/功能测试等价类划分边界值分析错误推测法因果图法白盒测试/结构测试语句覆盖:使得每一可执行语句至少执行一次判定覆盖:使得程序中每个判断的取真分支和取假分支至少执行一次条件覆盖:使得程序中每个判断的每个条件的可能取值至少执行一次判定-条件覆盖:使得判断中每个条件的所有可能取值至少执行一次,同时每个判断的所有可能判断结果至少执行一次条

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 习题/试题

宁ICP备18001539号-1