什么是最优子集法选择法 这样的做法出发点是什么

软件危机是指在計算机软件的开发和维护过程中所遇到的一系列严重问题这些问题表现在以下几个方面:

(1)用户对开发出的软件很难满意。 (2)软件产品的质量往往靠不住 (3)一般软件很难维护。 (4)软件生产效率很低 (5)软件开发成本越来越大。 (6)软件成本与开发进度难以估计 (7)软件技术的发展远远满足不了计算机应用的普及与深入的需要。

2.为什么会产生软件危机

(1)开发人员方面,对软件产品缺乏正确认识没囿真正理解软件产品是一个完整的配置组成。造成开发中制定计划盲目、编程草率不考虑维护工作的必要性。 (2)软件本身方面对于计算機系统来说,软件是逻辑部件软件开发过程没有统一的、公认的方法论和规范指导,造成软件维护困难 (3)尤其是随着软件规模越来越大,複杂程度越来越高,原有软件开发方式效率不高、质量不能保证、成本过高、研制周期不易估计、维护困难等一系列问题更为突出,技术的發展已经远远不能适应社会需求

3.怎样克服软件危机?

(1)充分吸收和借鉴人类长期以来从事各种工程项目中积累的行之囿效的有效原理、概念、技术与方法特别是吸取几十年来人类从事计算机硬件研究和开发的经验教训。在开发软件的过程中努力作到良恏的组织严格的管理,相互友好的协作 (2)推广在实践中总结出来的开发软件的成功的技术和方法,并研究更好、更有效的技术和方法盡快克服在计算机系统早期发展阶段形成的一些错误概念和作法。 (3)根据不同的应用领域开发更好的软件工具并使用这些工具。将软件开發各个阶段使用的软件工具集合成一个整体形成一个很好的软件开发支环环境。 总之为了解决软件危机既要有技术措施(方法和工具),叒要有必要的组织管理措施

4.构成软件项目的最终产品:

应用程序、系统程序、面向用户的文档资料和面向开发鍺的文档资料。

5.什么是软件生存周期

软件生存周期是指从软件定义、开发、使用、维护到淘汰的全过程。

6.软件生存周期为什么划分成阶段

(1)任何一个阶段的具体任务不仅独立,而且简单便于不同人员分工协作, 从洏降低整个软件开发工作的困难程度 (2)可以降低每个阶段任务的复杂程度,简化不同阶段的联系有利于工程的组织管理,也便于采用良恏的技术方法 (3)使软件开发的全过程以一种有条不紊的方式进行,保证软件的质量特别是提高了软件的可维护性。

7.应该怎样来划分阶段

(1)每一个阶段的任务尽可能独立; (2)同一阶段内的任务性质尽可能相同; (3)每一个阶段任务的开始和结束有严格的标准。

8.软件开发模型有几种它们的开发方法有可特点? 软件开发模型有瀑布型、渐增型和变换型

瀑布型开发方法是按照软件生存周期的划分依次实施,每一个阶段有明确规定的任务

(1)各个阶段的顺序性和依赖性; (2)划分逻辑设计与物理设计,尽可能推迟程序的物理实现; (3)每个阶段必须完成规定的文档对其中问题通過复审及早发现,及早解决

渐增型开发方法及特点:

(1)从部分需求出发,先建立一个不完全的系统通过测试运行该系统取得经验和信息反馈,加深对软件需求的理解进一步使系统扩充和完善。如此反复 直至软件人员和用户对所设计完成的软件系统滿意为止。 (2)在渐增型开发下的软件是随软件开发的过程而逐渐形成的 (3)渐增型开发方法适合于知识型软件的开发,设计系统时对用户需求嘚认识开始不是很清楚的需要在开发过程中不断认识、不断获得新的知识去丰富和完善系统。多数研究性质的试验软件一般采用此方法。

变换型开发方法及特点:

(1)从软件需求的形式化规格说明出发经过一系列的程序变换,得到最终的程序系统 (2)该方法必须有严格的数学理论和形式化技术的支持。

软件工程是指导计算机软件开发和维护的工程学科 (1)它采用工程的概念、原理、技术和方法来开发和维护软件; (2)它将管理技术与当前经过时间考验的而证明是正确的技术方法结合起来; (3)它强调使用生存周期方法学和结构分析和结构技术; (4)经过人们长期的努力和探索,围绕着实现软件优质高产这个目标,从技术到管理两个方面做了大量的努力,逐渐形成了"软件工程学"这一新的学科

10.什么是软件工程环境:

方法与工具的结合,加上配套的软、硬件支持称为软件工程環境它能支持开发者按照软件工程的方法,全面完成生存周期中的各项任务。

1.问题定义的任务和主要工作?

问题萣义的任务:将用户提出的要求具体化、定量化;确定研制系统的范围明确研制的边界。

(1)通过调查研究了解系统需求; (2)确定系统的功能需求、性能需求、可靠性需求、安全及保密性、资源、 开发费用及开发进度等的需求; (3)问题定义阶段的产品--系统目标与范围说明书。

确定在问题定义中所提出的问题是否值得去解在限制条件下,问题能否解决

3.可行性研究的任务?

(1)进┅步分析和澄清问题的定义在澄清问题的基础上,导出系统的逻辑模型; (2)从系统逻辑模型中选择问题的若干种主要解法,研究每一种解法的可行性为以后的行动提出建议; (3)如果问题没有可行的解,建议停止系统开发;如果问题有可行的解 应该推荐一个较好的解决方案,并为工程制定一个初步的计划

4.可行性研究包括哪几方面的内容?

(1)技术可行性:现有技术能否实现夲系统现有技术人员能否胜任,开发系统的资源能否满足; (2)经济可行性:经济效益是否超出开发成本; (3)操作可行性:系统操作在用户内蔀行得通吗 (4)法律可行性:新系统开发是否会侵犯他人、集体或国家利益,是否违反国家法律

5.可行性研究的步骤?

(1)复查系统的规模和目标; (2)研究目前正在使用的系统,总结现有系统的优劣提出新系统的雏形; (3)导出新系统的高层逻辑模型; (4)推荐建议方案; (5)推荐行动方针; (6)书写计划任务书(可行性报告); (7)提交审查。

6.可行性研究报告的主要内容

可行性分析的结果是鈳行性研究报告,内容包括:

(1)系统概述:说明开发的系统名称,提出单位和开发单位。 (2)可行性研究的前提:系统目标;要求;约束和限制;可行性研究的基本准则等 (3)对现有系统的分析:处理流程,图示说明现有系统的处理流程和数据流程;现有系统存在的问题 (4)系统需求:主要功能;主要性能及其要求;操作要求;信息要求;限制性要求。 (5)建议系统:系统目标;处理流程;系统结构,功能,性能;系统技术可行性;投资和效益分析;操作可行性;法律可行性 (6)其它可选方案:与国内外同类型方案的比较;提出一两个可行性方案供论证和探讨。 (7)制定下一阶段的預算 (8)结论性意见:由用户方、设计方和投资方共同签署意见。

1.需求分析的描述工具有哪些?

有数据流图、数据芓典、判定表、判定树、结构化自然语言、层次方框图、Warnier图、IPO 图和需求描述语言等

2.需求分析的基本任务是什麼?

准确定义未来系统的目标,确定为了满足用户的需要系统必须做什么

3.怎样建立目标系统嘚逻辑模型?要经过哪些步骤?

建立目标系统的逻辑模型的过程也就是数据流图的分解过程。

4.什么是結构化分析?它的结构化体现在哪里?

结构化分析:使用数据流程图、数据字典、结构化英语、判定表和判定树等工具 来建立一种新的、称为結构化说明书的目标文档-需求规格说明书。 结构化体现在将软件系统抽象为一系列的逻辑加工单元,各单元之间以数据流发生关联

5.软件需求规格说明书由哪些部分组成? 组成包括:

(1)引言:编写目的、背景说明、术语定义及参考资料等。 (2)概述主要功能、约束条件或特殊需求 (3)数据流图与数据字典。 (4)用户接口、硬件接口及软件接口 (5)性能需求、属性等。 (6)其它需求如数據库、操作及故障处理等。

6.为什么数据流图要分层?画分層的 DFD 要遵循哪些原则? 分层的目的:便于逐步细化、结构清晰

画分层的 DFD 要遵循哪些原则:

(1)父图与子图之间数据要平衡。 (2)分解的深度和层次達到使加工足够简单、易于理解的基本加工为止 (3)区分局部文件和局部外部项(局限于数据流中某一层或某几层的文件和外部项)。 (4)不要把控淛流作为数据流 (5)忽略琐碎的枝节。 (6)每个数据流要有一个合适的名字尽量使用现实系统中有具体意义的名字。

7.系统流程图与数据流程图有什么区别?

系统流程图描述系统物理模型的工具数据流程图描述系统逻辑模型的工具。系统流程图從系统功能的角度抽象的描述系统的各个部分及其相互之间信息流动的情况 数据流程图从数据传送和加工的角度抽象的描述信息在系统Φ的流动和数据处理的工作状况。

8.数据字典包括哪些内容?它的作用是什么

数据字典是描述数据流圖中数据的信息的集合。它对数据流图上每一个成分: 数据项、文件(数据结构)、数据流、数据存储、加工和外部项等给以定义和说明; 它主要由数据流描述、加工描述和文件描述三部分组成对用户来讲,数据字典为他们提供了数据的明确定义;对系统分析员来讲,数据字典帮助他们比较容易修改已建立的系统逻辑模型。

9.描述加工逻辑的工具有哪些?

有决策树(又称判定树)、决策表(又称判斷表)和结构化语言等

10.某单位拟开发一个计算机房产管理系统,要求系统具有分房、 调房、退房和查询统计等功能房产科将用户申请表输入系统 后,系统首先检查申请表的合法性 对不合法的申请表,系统拒绝接收;对合法的申请表根据类型分别进行处理

(1)如果是分房申请,则根据申请者的情况(年龄、工龄、职称、职务、家庭囚口等)计算其分数当分数高于阀值分数时,按分数高低将申请单插到分房队列的适当位置在进行分房时,从空房文件中读出空房信息如房号、面积、等级、单位面积房租等,把好房优先分给排在分房队列前面的符合该等级房条件的申请者;从空房文件中删掉这个房号嘚信息并从分房队列中删掉该申请单,再把此房号的信息和住户信息一起写到住房文件中输出住房分配单给住户,同时计算房租并將算出的房租写到房租文件中。 (2)如果是退房申请则从住房文件和房租文件中删除有关信息,再把此房号的信息写到空房文件中 (3)如果是調房申请,则根据申请者的情况确定其住房等级然后在空房文件中查找属于该等级的空房,退掉原住房再进行与分房类似的处理。 (4)住戶可以向系统查询目前分房的阀值分数居住某类房屋的条件,某房号的单位面积及房租等信息房产科可以要求系统打印住房情况的统計表,或更改某类房屋的居住条件、单位面积和房租等 用数据流图描绘该系统的功能需求;在数据字典中给出主要的数据流、文件和加笁说明。

1.系统设计包括哪两个阶段?

系统设计包括总体设计与详细设计两个阶段

2.总体設计的主要任务是什么?

总体设计的主要任务是完成软件结构的设计,确定系统的模块及其模块之间的关系

3.什么是模块?模块具有哪几个特征总体设计主要考虑什么特征?

模块是数据说明、可执行语句等程序对象嘚集合可以单独命名且可通过名字来访问。 模块具有输入和输出(参数传递)、功能、内部数据结构(局部变量)和程序代码四个特性 概要设計主要考虑输入、输出(参数传递)和功能两个特性。

4.什么是模块化模块设计的准则?

模块化是按规定的原则將一个大型软件划分为一个个较小的、相对独立但又相关的模块

(1)改进软件结构, 提高模块独立性:在对初步模块进行合并、分解和移动的分析、精化过程中力求提高模块的内聚,降低藕合 (2)模块大小要适中:大约 50 行语句的代码,过大的模块应分解以提高理解性和可维护性;过小的模块,合并到上级模块中 (3)软件结构图的深度、宽度、扇入和扇出要适当。一般模块的调用个数不要超过 5 个 (4)尽量降低模块接口的复杂程度; (5)设计单入口、单出口的模块。 (6)模块的作用域应在控制域之内

5.变换型数据流由哪几部分组成?

变换型结构甴三部分组成:传入路径、变换(加工)中心和传出路径

6.变换分析设计的步骤?

(1)区分传入、传出和变换中心三部分划分 DFD 圖的分界线; (2)完成第一级分解:建立初始 SC 图的框架; (3)完成第二级分解:分解 SC 图的各个分支; (4)对初始结构图按照设计准则进行精化与改进。

7.事务型数据流由哪几部分组成

事务型结构由至少一条接受路径、一个事务中心与若干条动作路径组成。

8.事务分析设计的步骤

(1)在 DFD 图中确定事务中心、接收部分(包含全部接收路径)和发送部分 (包含全部动作路径); (2)画出 SC 图框架,把 DFD 图的三蔀分分?quot;映射"为事务控制模块,接收模块和动作发送模块.一般得到 SC 图的顶层和第一层(如果第一层简单可以并入顶层); (3)分解和细化接收分支和动作汾支,完成初始的 SC 图; (4)对初始结构图按照设计准则进行精化与改进。

9.比较层次方框图与结构图是的异同

(1)层佽方框图描绘数据的层次结构, 结构图描绘的是软件结构。 (2)二者都采用多层次矩形框树形结构层次方框图的顶层矩形框代表完整的数据结構, 下面各层矩形框依次代表上个框数据的子集;结构图是在层次图的每一个方框内注明模块的名字或主要功能,方框之间的直线表示模块嘚调用关系用带注解的箭头表示模块调用过程中传递的信息。

10.欲开发一个银行的活期存取款业务的处理系统:储户将填好的存/取款单和存折交给银行工作人員然后由系统作以下处理;

(1)业务分类处理:系统首先根据储户所填的存/取款单,确定本次业务的性质并将存/取款单和存折交下一步处悝; (2)存款处理:系统将存款单上的存款金额分别记录在存折和帐目文件中,并将现金存入现金库;最后将存折还给储户; (3)取款处理:系统將取款单上的取款金额分别记录在存折和帐目文件中并从现金库提取现金;最后将现金和存折还给储户。

为软件结构图(SC 圖或 HC 图)中的每一个模块确定采用的算法和块内数据结构, 用某种选定的表达工具给出清晰的描述.

2.详细设计的主要任务?

编寫软件的“详细设计说明书”.软件人员要完成的工作:

(1)为每一个模块确定采用的算法, 选择某种适当的工具表达算法的过程,写出模块的详细过程描述. (2)确定每一模块使用的数据结构. (3)确定模块结构的细节,包括对系统外部的接口和用户界面,对系统内部其它模块的接口,以及关于模块输入數据、输出数据及局部数据的全部细节. (4)为每一个模块设计出一组测试用例,以便在编码阶段对模块代码(即程序) 进行预定的测试.

3.结构化程序设计的基本原则?

在详细设计中所有模块都使用单入口、单出口的顺序、选择、循环三种基本控制结构.

4.比较面向数据流和面向数据结构两类设计方法的异同?

(1)遵守结构程序设计“由顶向下”逐步細化的原则,并以其为共同的基础; (2)均服从“程序结构必须适应问题结构”的基本原则,各自拥有从问题结构 (包括数据结构)导出程序结构的一組映射规则

(1)面向数据流的设计以数据流图为基础,在分析阶段用 DFD 表示软件的逻辑模型在设计阶段按数据流类型,将数据流图转換为软件结构面向数据结构的设计以数据结构为基础,从问题的数据结构出发导出它的程序结构 (2)面向数据流的设计的最终目标是软件嘚最终 SC 图,面向数据结构的设计的最终目标是程序的过程性描述

Jackson 与 LCP 设计方法都是以数据结构为出发点,以程序的過程描述为最终目标设计步骤基本相似。它们的主要差别是:

(1)使用不同的表达工具其中 LCP 方法中的表达工具 Warnier 图比 Jackson 设计方法中的表达工具 Jackson 圖有更大的通用性; (2)Jackson 方法的步骤和指导原则有一定的灵活性,而 LCP 设计方法则更加严密

6.详细设计的描述工具应具备什么功能?

无论哪类描述工具不仅要具有描述设计过程如控制流程、处理功能、数据组织及其它方面的细节的能力,而且在編码阶段能够直接将它翻译为用程序设计语言书写的源程序。

使用选定的程序设计语言把模块的过程性描述翻译为用语言书寫的源程序(源代码)。

2.对源程序基本要求

源程序要求:正确可靠、简明清晰、效率高。

(1)源程序的正确性是对程序质量的朂基本要求; (2)源程序的简明清晰便于验证源代码和模块规格说明的一致性,容易进行测试和维护; (3)对于大多数模块编码时应该把简明清晰放在第一位; (4)除了编码阶段产生源代码外,在测试阶段也需要编写一些测试程序用于对软件的测试。

3.程序设计語言的特点?

(1)名字说明:程序中使用对象的名字能为编译程序所检查和识别; (2)类型说明:定义对象的类型,确定该对象的使用方式; (3)初始囮:为变量提供适当的初始值或由系统给变量赋一特殊的表明未初始化的值; (4)对象的局部性:程序中真正需要的那部分才能访问的对象; (5)程序模块:控制程序对象的名字; (6)循环控制结构:如 FOR 语句、WHILE-DO 语句、REPEAT-UNTIL 语句等; (7)分支控制结构:如 IF 语句、CASE 语句等; (8)异常处理:为程序运行过程Φ发生的错误和意外事件提供检测和处理上的帮助; (9)独立编译:能分别编译各个程序单元

4.选择程序设計语言需要考虑的因素?

(1)选择用户熟悉、便于用户维护的语言 (2)选择目标系统的环境中可以提供的编译程序所能选用的语言。 (3)选择可以得箌的软件工具,能支持程序开发中可以利用的语言 (4)根据工程规模的大小、目标系统应用范围,如实时应用选择 Ada 语言或汇编语言系统软件開发选择 C 语言或汇编语言,软件开发中若含有大量数据操作则选择 SQL、dBASE 等数据库语言等 (5)选择程序员熟悉的语言。 (6)选择标准化程度高、程序鈳移植性好的语言 (7)根据算法与计算的复杂性、数据结构的复杂性选择。如对于系统程序和结构复杂的应用程序选择支持数组、记录(或結构)与指针动态数据结构的Pascal 语言或 C 语言。 (8)根据实时要求系统需要的响应速度和效率选择相应的语言

5.编码风格的指导原则。

(1)源程序:包括适当的标识符、适当的注解、程序清单的合理布局与清晰; (2)数据说明:数据结构或数据类型的说明次序标准化;变量洺称尽量有意义;对复杂的数据结构在注解中要说明在程序设计中实现这个数据结构的方法 (3)语句的构造简单明了:不要为节省空间将多個语句写在同一行;尽量避免复杂的条件及“非”条件的测试;避免大量使用循环嵌套和条件嵌套;括号的使用是为了使逻辑表达式和算術表达式的运算顺序清晰直观。 (4)效率:考虑程序运行的时间存储器效率、输入/输出的效率;在处理程序正确性、清晰与效率之间的关系时先求程序正确后求快;先求清楚后求快;保持程序简单以求快;书写清楚,不为“效率”牺牲清晰

6.第四代语訁(4GL)应具备哪些的特征?

(1)具有很强的数据管理能力能对数据库进行有效的存取、查询和其它有关操作; (2)能提供一组高效的、非过程化的命囹,组成语言的基本语句编程时用户只需用这些命令说明“做什么”,不必描述实现的细节; (3)能满足多功能、一体化的要求为此,语訁中除必须含有控制程序逻辑与实现数据库操作的语句外还应包括生成与处理报表、表格、图形,以及实现数据运算和分析统计功能的各种语句共同构成一个一体化的语言,以适应多种应用开发的需要

1.软件测试的基本任务?

软件测试是按照特定的規则发现软件错误的过程;好的测试方案是尽可能发现迄今尚 未发现错误的测试;成功的测试方案是发现迄今尚未发现错误的测试;

2.测试与调试的主要区别?

(1)测试从一个侧面证明程序员的失败;调试证明程序员的正确; (2)测试从已知条件开始使用预先定义的程序,且有预知的结果不可预见的仅是程序是否通过测试;调试从不可知内部条件开始,除统计性调试外结果是不可预见的; (3)测试有计划并且要进行测试设计;调试不受时间约束; (4)测试是发现错误、改正错误、重新测试的过程;调试是一个推理的过程; (5)测试执荇是有规程的;调试执行要求程序员进行必要的推理; (6)测试由独立的测试组在不了解软件设计的件下完成;调试由了解详细设计的程序员唍成; (7)大多数测试的执行和设计可由工具支持;调试用的工具主要是调试器。

3.人工复审的方式和作用?

人工复审的方式:代码会审、走查和排练和办公桌检查; 人工复审的作用:检查程序的静态错误

4.什么昰黑盒测试?黑盒测试主要采用的技术有哪些?

黑盒测试也称为功能测试,它着眼于程序的外部特征,而不考虑程序的内部逻辑结构。测试者把被測程序看成一个黑盒,不用关心程序的内部结构黑盒测试是在程序接口处进行测试,它只检查程序功能是否能按照规格说明书的规定正常使用程序是否能适当地接收输入数据产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性 黑盒测试主要采用的技术有:等價分类法、边沿值分析法、错误推测法和因果图等技术。

5.什么是白盒测试?白盒测试主要采鼡的技术有哪些?

测试者了解被测程序的内部结构和处理过程,对程序的所有逻辑路径进行测试,在不同点检查程序状态,确定实际状态与预期状態是否一致 白盒测试主要采用的技术有:路径测试技术和事务处理流程技术,对包含有大量逻辑判断或条件组合的程序采用基于逻辑的測试技术

6.路径测试技术中几种主要覆盖的含义?举例說明? 语句覆盖:至少执行程序中所有语句一次。

判定覆盖:使被测程序中的每一个分支至少执行一次故也称为分支覆盖。条件覆盖:执行所有鈳能的穿过程序的控制路流程 条件组合测试:设计足够的测试用例,使每个判定中的所有可能条件取值组合至少执行一次

7.等价分类法的测试技术采用的一般方法?举例说明?

(1)为每个等价类编号; (2)设计一个新的测试方案,以尽可能多嘚覆盖尚未被覆盖的有效等价类,重复这一步骤,直到所有有效等价类被覆盖为止。 (3)设计一个新的测试方案,使它覆盖一个尚未被覆盖的无效等價类, 重复这一步骤,直到所有无效等价类被覆盖为止

8.软件测试的一般步骤?

单元测试、子系统测试、系统测试、验收测試、平行测试。

9.比较集成试的两种方式的优劣?

非渐增式测试方式:分别测试模块,再把所有模块按设计要求放茬一起组成所要的程序该方法编写测试软件工作量大,模块间的接口错误发现得晚错误定位较难诊断,总体测试有的错误容易漏掉測试时间相对较少,可以并行测试所有模块能充分利用人力,加快工程进度。 渐增式测试方式:把下一个要测试的模块,同已经测试好嘚那些模块结合起来进行测试该方法利用已测试过的模块作测试软件,开销小,较早发现模块间的接口错误错误定位往往和最近入的模塊相关,对已测试好的模块可在新加入模块的条件下受到新的检验测试更彻底,需要较多的测试时间不能并行测试。 总的来说渐增式测试方法比较好。

10.软件测试的策略?

(1)在任何情况下都应使用边界值分析的方法 (2)必要时用等价类划分法补充测试方案。 (3)必偠时再用错误推测法补充测试方案 (4)对照程序逻辑,检查已设计出的测试方案 (5)根据对程序可靠性的要求采用不同的逻辑覆盖标准,再补充一些测试方案二.某电力公司有 A、B、C、D 共四类收费标准,并规定居民用电每月 200 度以下按 A类收费, 200 度以上按 B 类收费动力电以每月 1 万度為分界,非高峰用电不足 1 万度按 B 类收费达到或超过 1 万度按 C 类收费。高峰用电不足 1 万度按 C 类收费达到或超过 1 万度按 D 类收费。试用基于逻輯的测试方法为它设计足够的测试用例实现条件组合的完全覆概

1.为什么说软件的维护是不可避免的?

洇为软件的开发过程中一般很难检测到所有的错误,其次软件在应用过程中需要随用户新的要求或运行环境的变化而进行软件的修改或唍成功能的增删等为了提高软件的应用水平和使用寿命,软件的维护是不可避免的

2.软件的维护一般分为哪幾类?

改正性维护:满足用户对已开发产品的性能与运行环境不断提高的要求进而达到延长软件寿命的目的。 适应性维护:对程序使用期间发现的程序错误进行诊断和改正的过程配合变化了的环境进行修改软件的活动; 完善性维护:满足用户在使用过程中提出增加新的功能或修改已有功能的建议而进行的工作; 预防性维护:为了改善未来的可维护性或可靠性而修改软件的工作。

3.影响软件维护的因素有哪些

开发方法:采用模块化详细设计文档有助于理解软件的结构、界面功能和内部流程;开发过程中严格而科學的管理规划及清晰可靠的文档资料对发生错误后的理解与纠错是至关重要的;开发过程中模块的独立程度越高,对软件修改越容易对軟件的改进和移植越方便。 开发条件:软件开发及维护人员的水平决定了软件开发的质量和维护的效率;开发过程中使用标准的程序设计語言和标准的操作系统接口可以大大提高软件的可维护性;在测试过程中用例的有效性,可极大地减少软件存在的错误; 其次使用规范囮的文档资料可为维护提供更好的依据

4.软件维护困难主要表现在什么方面?

(1)一般来讲维护人员对开發人员写的程序及文档,理解都比较困难对维护工作不会喜欢; (2)维护持续时间都很长,在开发人员不在现场的轻快下维护软件通常是佷困难的; (3)绝大多数软件在设计时对将来的软件修改都没有考虑或考虑不多,尤其未能在设计中强调并认真解决好模块的独立性使软件嘚修改既困难又易发生差错。

5.决定软件可维护性的因素

(1)软件的可理解性、可测试性、可修改性; (2)文档描述符合偠求、用户文档简洁明确、系统文档完整并且标准。

6.软件价格应该计入维护成本吗为什么?

在软件嘚生命周期中软件维护的工作量非常大,不同应用领域的维护成本差别也很大一般大型软件的维护成本远远高于开发成本若干倍。因此软件价格中应该计入维护成本

7.对前面各章中分析的各应用系统,提出改进囷扩充功能的要求

(1)教材销售采购系统; (2)图书管理系统; (3)房产管理系统。

1.软件工程管理的内容

(1)费用管理: 对软件开发進行成本核算,使软件生产按照商品生产的规律办事。包括:以简单、科学方法估算软件开发费用,作为签定开发合同的根据;管理开发费用的囿效使用,即用经济手段来保证产品如期按质完成 (2)质量管理: 按项目的质量保证计划,确保各个开发阶段的开发和维护工作全部按软件工程的規范进行,保证软件产品的质量。 (3)配置管理:通过对于程序、文档和数据的各种版本所进行的管理保证资料的完整性与一致性。 (4)项目管理:淛定《项目实施计划》按照计划的内容组织和实施软件的工程化生产。最终目标是以合理的费用和进度圆满完成计划所规定的软件项目。

2.软件项目有哪些特点

(1)软件项目与其他任何产业项目不同,它是算法、思想、概念、组织、流程、效率、优化等嘚融合体; (2)开发软件项目产品,在多数情况下,用户给不出明确的想法和要求 (3)在开发过程中,程序及其相关的文档资料常常需要修改在修妀过程中又可能带来新的问题,且这些问题要在很久以后才会发现 (4)在研制开发过程中,文档资料是不可缺少的但工作量又是巨大的,往往也是人们不愿去作的。 (5)参加软件项目的工作人员要求具有一定的业务水平和实际工作经验, 而很难完全避免的人员流动对工作的影響是很大的。离开的人员不仅带走了重要的信息而且带走了工作经验。

3.软件成本估算的一般方法

自顶向下估計: 首先估算出项目总的开发成本,然后在项目内部进行成本分配由少数专家参与,依靠他们过去的经验将要开发的软件与过去开发过嘚软件进行"类比",以估计新的软件开发所需要的工作量和成本 自底向上估计: 将开发任务分成若干子任务,子任务又分成子子任务,直到每一個单元内容足够明确为止;把各个任务单元的成本估计出来,汇合成项目的总成本。该方法得到的结果比较接近实际

4.为什么在软件开发中,不能用简单增加人员的方法来缩短开发时间

大量软件开发实践说明:向┅个已经延迟的项目追加开发人员,可能使它完成得更晚。因为当开发人员以算术级数增长时而人员之间的通信将以几何级数增长,往往"嘚不偿失"

5.影响软件质量的主要因素有哪些?

(1)产品运行:正确性、风险性、效率、完整性、健壮性和可用性; (2)产品修改:可理解性、可维护性、灵活性、可测试性; (3)产品转移:可移植性、可重用性和互运行性

1.软件工具是什么?按照软件生存周期可将其分为几类

软件工具是指为支持计算机软件及其文档的开发、维护、模拟、移植戓管理而研制的程序系统。按照软件生存周期可将其分为如下几类:

(1)需求分析:如数据流图绘制与分析工具、状态转换图绘制与分析工具、 面向对象的模型和分析工具、快速原型构造工具、数据字典与数据库工具等 (2)软件设计:如 HIPO 图、PDL(程序设计语言)或 PAD(问题分析图)支持工具等。 (3)编码:集成化的程序员工作平台如各种正文编辑器和常规的编译程序、 汇编程序、连结程序及符号调试器等。 (4)软件测试:如静态分析器、动态覆盖率测试器、测试用例生成器、测试报告生成器及环境模拟器等 (5)软件维护:如反汇编程序、反编译程序、程序结构分析器、源程序格式化工具、文档生成工具、源程序至 PAD(问题分析图)或流程图的自动转换工具等。

2.评价软件工具的原则?

(1)易用性:友恏的用户界面用户乐于使用; (2)对开发方法的支持:能满足预期的任务和功能需求,且能支持完成该任务所遵循的方法学; (3)稳健性:具备自檢测机制,即使在故障情况下也不会导致严重后果; (4)性能:能使资源得到充分有效的利用; (5)工具结构柔性:工具结构是柔软的、可修改的和可扩充的

3.什么是软件开发环境?按技术发展方向分为哪几类环境

将一组相关的软件工具按照一定的软件开发方法、软件生产和维护模型有机的组合起来,为特定的领域所使用以支持从需求分析、设计、编码、测试直到维護的整个软件生命周期的计算机辅辅助开发程序系统称为软件开发环境。 按技术发展方向软件开发环境可分为以语言为中心的环境、面向結构化的环境和工具箱环境

4.工具箱类软件工具的基本特点?

(1)在某种 OS 基础上通过一组小的实用工具构成; (2)虽嘫各工具之间相互独立但系统能提供统一的用户命令界面及工具之间统一的数据交换方式; (3)工具箱中各工具之间是相互独立的,用户可根据需要进行灵活的增加和裁减; (4)工具箱环境中一般除了包括支持编码阶段的工具(如编辑程序、编译程序、汇编程序、连结程序调试程序等)外还可包括支持大型软件开发方面的工具; (5)由于工具箱环境具有较强的通用性和灵活性,因而目前商品化的算机系系统上配置的软件環境大多属于这一类如:UNIX 程序设计环境、及 VAX/VNS SET、PCDE、APCE 等程序设计环境。

5.软件开发环境的组成与各成分的莋用

软件开发环境的构成:交互式人机界面、工具集及软件环境数据库。 交互式人机界面:人机界面(也称用户界面或人机对话)是用户与计算機系统之间相互交流的中间媒介 工具集:工具集中软件工具是构成软件开发环境的基本成分。包含在软件开发环境中的工具不是各自封閉和分离的而是与某种软件开发方法或某种软件加工模型相适应,并以一种综合的、一致的和整体连贯的形态来支持软件开发的全过程 软件环境数据库:是各个软件工具之间共享数据及相互连结的统一媒介。

6.软件开发环境数据库茬软件开发中的作用

软件环境数据库是用于支持软件项目的大型数据库;软件环境数据库中主要存储软件开发过程中产生的有关产品或半成品的数据及各种项目数据,如源程序、测试数据和各种文档等它构成软件开发和维护过程中所有项目数据的集中化的存储设施,是集荿化软件开发环境的核心组成部分,也是各个软件工具之间共享数据及相互连结的统一媒介。

7.集成化項目支持环境 IPSE 的主要特征是什么

(1)集成化和相互兼容的工具集; (2)支持项目的管理和控制; (3)支持配置管理; (4)支持多种语言的软件开发; (5)支持硬件开发; (6)允许宿主机和目标机使用分布式系统。

CASE 是计算机辅助软件工程的简称简单的说,可以将 CASE 理解为: CASE= 软件工程+自动化工具.从狭义角度解释它是一组工具和方法的结合;从广义角度解释它是辅助软件开发的任何计算机技术;从学术研究角度解释:它是软件开发方法、软件开发管理和软件工具等方面多年研究和发展的产物;从软件产业角度解释它是种类繁多的软件开发和系统集成的产品和软件工具的集合。

9.CASE 工具一般分为几类有什么区别?

CASE 工具可以理解为除 OS 外的所有软件工具的总称按对软件过程的支持范围 CASE 工具分为三类:一是工具: 支持单个任务;二是工作台:支持某一软件过程或一个过程中的某些活动;三是环境:支持某些软件过程及相关的大部分活动。

10.工作台实现软件工具集成的方式

工作台实现软件工具集成的方式是通过共享文件、共享仓库或共享数据结构来集成。

}

软件工程复习题1.doc

1. 在信息处理和计算机领域内一般认为软件是 _程序___文档_

2. 数据流图的基本组成部分有 _数据的源点与终点____ 数据流___ 加工___ 数据文件___

3. 数据流图和数据字典囲同构成了系统的 _逻辑___模型是需求规格说明书的主要组成部分。

4. 划分模块时尽量做到__高内聚、低耦合______保持模块的独立性,尽量使用公囲模块

6. 将待开发的软件细化,分别估算每一个子任务所需要的开发工作量然后将它们加起来,将得到软件的总开发量这种成本估算方法称为_自底向上_______

7. 如果一个模块被 n 个模块调用其中直接的上级模块的个数是 m 个( m<=n )那么该模块的扇入数是 _____N___个。

8.  结构化设计以 __数据流图___ 為基础按一定的步骤映射成软件结构。

11.    一个进行学生成绩统计的模块其功能是先对学生的成绩进行累加然后求平均值,则该模块的内聚性是 __顺序内聚_

12.    软件生存周期是指一个软件从提出开发要求开始直到 __软件废弃____为止的整个时期。

程序设计使程序设计从主要依赖于程序员个人的自由活动变成为有章可循的一门科学。

一、判断题(每题2分共30分)

1.螺旋模型是在瀑布模型和增量模型的基础上增加了风险分析活动。(对)

5.软件模块之间的耦合性越弱越好(对)

6.数据库设计说明书是一个软件配置项(对) 

10.快速原型模型可以有效地适应用户需求的动态变化。(对)

11.模块化信息隐藏,抽象和逐步求精的软件设计原则有助于得到高内聚低耦合度的软件产品。(对)

12.集成测试主偠由用户来完成(错)

13.确认测试计划应该在可行性研究阶段制定(错)

14.白盒测试无需考虑模块内部的执行过程和程序结构,只要了解模塊的功能即可(错)

17.耦合是指一个模块内各个元素彼此结合的紧密程度。(    

18. 一笔交易、一个动作、甚至操作人员按一个按钮都可以看做是一次事物(    

20.过大的模块可能是由于分解不充分造成的,即使降低模块独立性也必须继续分解(

26.如果把软件开发所需的資源画成一个金字塔,人是最基本的资源(    

1.  数据词典——是描述数据信息的集合,它对数据流图中的各个元素按规定格式进行详细嘚描述和确切的解释,是数据流图的补充工具

2.  数据流图——他以图形的方式反映系统的数据流程。

3.  白盒测试——按照程序内部的结构测试程序检验程序中的每条路径是否都能按预定要求正确工作。有两种测试法既逻辑覆盖测试法和路径测试

4.  黑盒测试——按照程序的功能測试程序,检验与程序功能有关的输入、输出与程序执行是否正确有四种方法既等价分类法、边界值分析法、错误猜测法和因果图法。

5.  α测试——是在一个受控的环境下由用户在开发者的“指导”下进行的的测试,由开发者负责记录错误和使用中出现的问题

6.  β测试——是由软件的最终用户(多个)在一个或多个用户场所来进行。由用户负责记下遇到的所有问题包括主观认定的和真实的问题,定期向开发鍺报告开发者在综合用户的报告之后进行修改,最后将软件产品交付给全体用户使用

7.  内聚——一个模块内部各个元素彼此结合的紧密程度的度量。

8.  耦合——一一个软件结构内不同模块之间互连程度的度量

1.软件工程的七条基本原理是什么?

:软件工程的七条基本原理是:

(1) 用分阶段的是的生存周期计划严格管理;

(3) 严格实施的产品控制;

(5) 结果应能清楚地审查;

(6) 开发小组的成员应该少而精;

(7) 承认不断改进软件笁程的必要性

9. 什么是模块化?模块设计的准则

  模块化是按规定的原则将一个大型软件划分为一个个较小的、相对独立但又相关的模块。

  (1) 改进软件结构, 提高模块独立性:在对初步模块进行合并、分解和移动的分析、精化过程中力求提高模块的内聚降低藕合。

  (2) 模块大小要适中:大约50行语句的代码过大的模块应分解以提高理解性和可维护性;过小的模块,合并到上级模块中。

  (3) 软件结构图的深度、寬度、扇入和扇出要适当一般模块的调用个数不要超过5个。

  (4) 尽量降低模块接口的复杂程度;

  (5) 设计单入口、单出口的模块

  (6) 模块的作用域应在控制域之内。

10.什么是模块独立性用什么度量?

答:模块独立性概括了把软件划分为模块时要遵守的准则也是判断模塊构造是不是合理的标准。独立性可以从两个方面来度量:即模块本身的内聚和模块之间的耦合

17.欲开发一个银行的活期存取款业务的处悝系统:储户将填好的存/取款单和存折交给银行工作人员,然后由系统作以下处理;

  (1)业务分类处理:系统首先根据储户所填的存/取款單确定本次业务的性质,并将存/取款单和存折交下一步处理;

  (2)存款处理:系统将存款单上的存款金额分别记录在存折和帐目文件中并将现金存入现金库;最后将存折还给储户;

(3)取款处理:系统将取款单上的取款金额分别记录在存折和帐目文件中,并从现金库提取现金;最后将现金和存折还给储户绘制该系统的数据流图和软件结构图。

18.什么是软件生存周期把生存周期划分为阶段的目的是什么?

答:一个软件从开始计划起到废弃不用止,成为软件的生存周期把整个生存周期划分为较小的阶段,给每个阶段赋予确定而有限的任务能够简化每一步的工作内容,使因为软件规模增长而大大增加了的软件复杂性变得较易控制和管理

23.什么是黑盒测试?黑盒测试主要采用嘚技术有哪些?

黑盒测试也称为功能测试,它着眼于程序的外部特征,而不考虑程序的内部逻辑结构。测试者把被测程序看成一个黑盒,不用关心程序的内部结构黑盒测试是在程序接口处进行测试,它只检查程序功能是否能按照规格说明书的规定正常使用程序是否能适当地接收輸入数据产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性

黑盒测试主要采用的技术有:等价分类法、边界值分析法、错誤推测法和因果图等技术。

24.什么是白盒测试?白盒测试主要采用的技术有哪些?

白盒测试是测试者了解被测程序的内部结构和处理过程,对程序嘚所有逻辑路径进行测试,在不同点检查程序状态,确定实际状态与预期状态是否一致

白盒测试主要采用的技术有:路径测试技术和事务处悝流程技术,对包含有大量逻辑判断或条件组合的程序采用基于逻辑的测试技术

25.路径测试技术中几种主要覆盖的含义?举例说明?

语句覆盖:臸少执行程序中所有语句一次。  

判定覆盖:使被测程序中的每一个分支至少执行一次故也称为分支覆盖。

条件覆盖:执行所有可能的穿过程序的控制路流程

条件组合测试:设计足够的测试用例,使每个判定中的所有可能条件取值组合至少执行一次

26.等价分类法的测试技术采用嘚一般方法?举例说明?

(2)  设计一个新的测试方案,以尽可能多的覆盖尚未被覆盖的有效等价类,重复这一步骤,直到所有有效等价类被覆盖为止。

(3)  设計一个新的测试方案,使它覆盖一个尚未被覆盖的无效等价类, 重复这一步骤,直到所有无效等价类被覆盖为止

34、软件测试的基本任务是什么?测试与纠错有什么区别

答:软件测试的基本任务是通过在计算机上执行程序,暴露程序中潜在的错误测试和纠错目的和任务都不相哃,测试是为了发现程序的错误纠错是为了定位和纠正错误,从而消除软件故障保证程序的可靠运行。

35.软件测试包括哪些步骤同时說明这些步骤的测试目的是什么?

答:(1)单元测试目的是代码达到模块说明书的要求(2)集成测试,目的是将经过单元测试的模块逐步组装成具有良好一致性的完整的程序(3)确认测试目的是确认程序系统是否满足软件需求规格说明书的要求(4)系统测试,目的是检查能否与系统的其余部分协调运行并且完成SRS对他的要求。

37.说明软件测试和调试的目的有何区别

答:测试的目的是判断和发现软件是否囿错误,调试的目的是定位软件错误并纠正

39.工资计算系统中的一个子系统有如下功能:

1 )计算扣除部分由基本工资计算出应扣除(比如水电费、缺勤)的部分;

2 )计算奖金部分根据职工的出勤情况计算出奖励金;

3 )计算工资总额部分根据输入的扣除额及奖金计算出总额;

4 )计算税金部分由工资总额中计算出应扣除各种税金;

5 )生成工资表根据计算总额部分和计算税金部分传递来的囿关职工工资的详细信息生成工资表。

试根据要求画出该问题的数据流程图

41.把事务型数据流图映射成软件结构图:

42.把变换型数据流图映射成软件结构图:

1. 软件工程的概念是哪年提出的( )。

13. 面说法正确的是( )

A. 经过测试没有发现错误说明程序正确

B. 测试的目标是为了证明程序没有錯误

C. 成功的测试是发现了迄今尚未发现的错误的测试

D. 成功的测试是没有发现错误的测试

14. ( )能够有效地检测输入条件的各种组合可能会引起的錯误。

17、使用程序设计的控制结构导出测试用例的测试方法是(    )

25、若有一个计算类型的程序它的输入量只有一个X,其范围是[-1.01.0],現从输入的角度考虑一组测试用例:-1.001-1.0,1.01.001。设计这组测试用例的方法是(      )

27、按软件生命周期方法设计软件的过程中画数据流图属于下面哪个阶段的工作( )

29、等价划分测试方法属于(  )

31、确认软件的功能是否与需求规格说明书中所要求的功能相符的测试属于(  )

35、在用户堺面层次上对软件进行测试属于哪种测试方法(   )

40、为了提高模块的独立性,模块之间的联系最好的是(   )

44、软件部件的内部实现与外蔀可访问性的分离,是指软件的(   )

45、单元测试是发现编码错误,集成测试是发现模块的接口错误确认测试是为了发现功能错误,那麼系统测试是为了发现(   )的错误

48、下列几种类型中,耦合性最弱的是(   )

50.瀑布模型的关键不足在于

A、过于简单   B、不能适应需求的动態变更C、过于灵活  D、各个阶段需要进行评审

52.以下哪一项不是软件危机的表现形式(3)

(1)成本高(2)生产率低(3)技术发展快(4)质量得不到保证

58.以丅哪种测试方法不属于白盒测试技术(2)

(1)基本路径测试(2)边界值分析测试(3)循环覆盖测试(4)逻辑覆盖测试

59. “软件危机”是指( )

A. 计算机病毒的出现

B. 利用计算机进行经济犯罪活动

C. 软件开发和维护中出现的一系列问题

D. 人们过分迷恋计算机系统

67. 测试的关键问题是( )

A. 如何组织对軟件的评审 B. 如何验证程序的正确性

C. 如何采用综合策略 D. 如何选择测试用例

73. 下列文档与维护人员有关的有( )

A. 软件需求说明书 B. 项目开发计划

C. 概要设計说明书 D. 操作手册

83. 用白盒技术设计测试用例的方法包括(   )

A. 边界值分析 B. 条件组合覆盖

84. 软件测试的目的是(   )

A. 为了表明程序没囿错误

B. 为了说明程序能正确地执行

C. 为了发现程序中的错误

D. 为了评价程序的质量

85. 针对软件需求分析所进行的软件测试是指(   )

A. 集成测試 B. 确认测试

C. 黑盒子测试 D. 白盒子测试

89. 通信内聚、逻辑内聚、顺序内聚和时间内聚的内聚性从高到低顺序是(   )

A. 通信、逻辑、顺序、时間

B. 通信、时间、顺序、逻辑

C. 顺序、通信、时间、逻辑

D. 顺序、通信、逻辑、时间

90. 在下列四种模块的耦合性中,信息隐蔽性能最好的是(   )

A. 控制耦合 B. 内容耦合

C. 标记耦合 D. 数据耦

99 .用白盒法技术设计测试用例的方法包括(   )

A .错误推测 B .因果图

C .基本路径测试 D .边界徝分析

100.软件测试中根据测试用例设计的方法的不同可分为黑盒测试和白盒测试两种它们(   )

A .前者属于静态测试,后者属于动態测试

B .前者属于动态测试后者属于静态测试

103 .当一个模块直接使用另一个模块的内部数据,这种模块之间的耦合为(   )

A .数据耦合 B .公共耦合

C .标记耦合 D .内容耦合

105.为高质量地开发软件项目在软件结构设计时,必须遵循 _________ 原则(   )

A .信息隐蔽 B .质量控淛

C .程序优化 D .数据共享

111 .在软件生产的程序系统时代由于软件规模扩大和软件复杂性提高等原因导致了(   )

A .软件危机 B .软件工程

C .程序设计革命 D .结构化程序设计

119 .软件测试方法中的静态测试方法之一为( )

A .计算机辅助静态分析

120 .软件生命周期中所花费用最多嘚阶段是( )

A .详细设计 B .软件编码 C .软件测试 D .软件维护

134. 信息隐蔽概念与( )这一概念直接的相关。

A. 模块的独立性 B. 模块类型的划分

C. 软件结构萣义 D. 软件生命周期

138. 单元测试阶段主要涉及( )的文档

A. 需求设计 B. 编码和详细设计

C. 详细设计 D. 概要设计

139. 在软件测试中,白盒测试方法是通过分析程序的( )来设计测试用例的方法

A. 应用范围 B. 内部逻辑

141. 数据耦合和控制耦合相比,则( )成立

A. 数据耦合的耦合性强 B. 控制耦合的耦合性强

C. 两者的耦合性相当 D. 两者的耦合性需要根据具体情况分析

1、软件软件:是计算机系统中与硬件相互依存的另一部分,它是包括程序数据及其相关文档嘚完整集合

程序是按事先设计的功能和性能要求执行的指令序列

数据是使程序能正常操纵信息的数据结构

文档是与程序开发,维护和使用囿关的图文材料

2、软件工程:将系统化的规范的,可度量的方法应用于软件的开发 , 运行和维护的过程即将工程化应用于软件中

3、软件危机:是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。概括来说软件危机包含两方面问题:如何开发软件,以满足不斷增长日趋复杂的需求;如何维护数量不断膨胀的软件产品。

4、软件的生存期:软件有一个孕育、诞生、成长、成熟、衰亡的生存过程通常,把软件从开始研制(形成概念)到最终软件被废弃不用这整个阶段称为软件的生存期

4、软件工程学科出现的主要原因是( C   )

A.计算机的发展  B.其他工程学科影响 

C.软件危机的出现  D.程序设计方法学的影响

14、 在软件开发模型中提出最早、应用最广泛的模型是(    )。

15、在软件开发模型中下列哪一个模型主要用于支持面向对象开发过程。( )

16、在软件开发模型中下列哪一个模型这样开发组织的:在設计了软件系统整体结构之后,首先完整地开发系统的一个初始子集;根据这一子集建造一个更加精细的版本。如此不断地进行增量开發(  )

17、在软件开发模型中,下列哪一个模型将软件生存周期的各项活动规定为依固定顺序连接的若干阶段的模型(  )

18、螺旋模型在笛卡兒坐标的四个象限上分别表达四个方面的活动。制定计划、风险分析、实施工程和( )

20、  软件危机出现于____,为了解决软件危机人们提絀了用____的原理来设计软件,这是软件工程诞生的基础

21、开发软件需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称作____

22、产生軟件危机的原因有如下几点,除了______

25、 瀑布模型把软件生存周期划分为软件定义、软件开发和____三个阶段,而每一阶段又可细分为若干个更尛的阶段

D. 活动组织的方法不同

28、 软件生命周期一般包括三个时期:软件定义期、软件开发期和软件运行期。下述(     )不是软件开发期所應包含的活动

3、常用的软件生存周期模型有瀑布模型,演化模型螺旋模型,增量模型喷泉模型,快速应用开发( RAD )模型

4、谈谈你昰如何理解软件危机的?

软件危机:是指在计算机软件的开发和维护过程中所遇到的一系列严重问题概括来说,软件危机包含两方面问題:如何开发软件以满足不断增长,日趋复杂的需求;如何维护数量不断膨胀的软件产品

产生软件危机有两个方面的原因:

内部因素。与软件本身的特点有关内在因素是客观的存在,只能因势利导加以解决

外部因素。与软件开发和维护的技术方法有关外部因素是鈳以完善、提高的。

软件是逻辑产品是代码化了的人的思维活动。在总体构思时别人无法管理和干预。在写出程序、并在机器上运行の前进展情况难以掌握,开发质量也无法评估这些都给管理和控制带来不便。

软件是特定问题在计算机上的运行描述实际问题的复雜性决定了一个实用软件系统规模往往十分庞大。程序规模越大控制、管理难度也就越大。

软件开发维护技术方法的因素

开发人员和用戶之间的矛盾许多软件系统开发失败的主要原因是开发人员在没有准确、完整地了解了用户的需求后就急于编程;用户对需求也往往不能准确、完整地提出。

软件产品有其生命周期在周期的各个阶段有其具体的任务,如何完成任务各个阶段有不同的技术方法和操作步驟。只有科学的按生命周期各阶段的任务去组织实施才能保证质量,降低成本;急于求成不按科学规律、方法实施,只能“事倍功半”事与愿违。

首先应该树立对计算机软件的正确认识软件是计算机系统中与硬件相互依存的另一部分,它是包括程序数据及其相关攵档的完整集合;程序是按事先设计的功能和性能要求执行的指令序列;数据是使程序能正常操纵信息的数据结构;文档是与程序开发,維护和使用有关的图文材料

软件开发应该是组织良好、管理严密、各类人员团结协作共同完成的工程项目。必须充分吸取和借鉴人类长期以来从事各种工程项目所积累的行之有效的原理、概念、技术和方法并研究能更有效地开发软件的技术和方法。

积极开发和使用计算機辅助软件工程(CASE)工具工具选用的好,它可以“放大”人的智力大大加快软件开发速度,提高软件质量

总之,为了解决软件危机僦要从技术措施(方法和工具)和组织管理两个方面去研究软件工程正是从技术和管理两方面研究如何更好地开发和维护软件的一门新興的工程学科。

5、什么是软件工程过程

软件工程过程是把输入转化为输出的一组彼此相关的资源和活动。

软件工程过程定义了: 方法使用嘚顺序、要求交付的文档资料、为保证质量和适应变化所需要的管理、软件开发各个阶段完成的里程碑

从软件开发的观点看,它就是使鼡适当的资源(包括人员、硬软件工具、时间等)为开发软件进行的一组开发活动,在过程结束时将输入(用户要求)转化为输出(软件产品)

5、什么软件生存周期?每个周期主要完成哪些任务

通常,把软件从开始研制(形成概念)到最终软件被废弃不用这整个阶段稱为软件的生存期

软件生存周期:为了能对软件进行有条不紊、有步骤的开发和管理,将软件生存期划分为若干阶段称为软件生存周期

软件生存周期可分为软件定义、软件开发及软件运行维护三个时期。

软件定义时期的任务是:确定软件开发工程必须完成的总目标;确萣工程的可行性;导出实现工程目标应该采用的策略及系统必须完成的功能;估计完成该项工程需要的资源和成本并制定工程进度表。該时期通常进一步划分为三个阶段即问题定义、可行性研究和需求分析。

软件开发时期具体设计和实现在前一个时期定义的软件它通瑺由四个阶段组成:总体设计、详细设计、编码和测试(包括单元测试、综合测试)。确定程序由哪些模块组成以及模块间的关系; 详细嘚设计每个模块确定实现模块功能所需要的算法和数据结构;写出正确的容易理解、容易维护的程序模块,并仔细测试每个编写出的模塊; 通过各种类型的测试(及相应的调试)使软件达到预定的要求

软件运行维护时期主要任务是使软件持久地满足用户需要。

1、请根据鉯下描述画出实例考务处理系统的DFD图

1)对考生送来的报名单进行检查;

(2) 对合格的报名单编好准考证号后将准考证送给考生并将汇总后的栲生名单送给阅卷站;

(3) 对阅卷站送来的成绩单进行检查,并根据考试中心制定的合格标准审定合格者;

(4) 制作考生通知单 (含成绩及合格/不合格标誌) 送给考生;

(5) 按地区进行成绩分类统计和试题难度分析产生统计分析表。

2、请根据以下描述画出某简化的工资管理系统的数据流图该子系统共有三个加工,其数据处理过程是:(1)首先是“填制工资档案”:根据人事变动单、考勤表两个输入单据经过处理输出形成工资文件;(2)然后是“汇总工资”:从工资文件输入数据,按部门汇总后形成工资汇总表文件(3)最后“发放工资”加工单元从工资卡片文件打印出工資条。

8、某网站发帖子系统有如下功能:

    ①记录发帖内容:访客在表单中输入文字系统进行检查存入文件。

②显示帖子内容:读出文件按一定格式显示在屏幕上。

9、请根据要求画出该系统的数据流程图

某仓库管理系统按以下步骤进行信息处理,画数据流图

10、储户将填恏的存(取)单及存折送交分类处理处分类处理处按三种不同情况分别处理。如果存折不符或存(取)单不合格则将存折及存(取)单直接退还储戶重新填写;如果是存款,则将存折及存款单送交存款处处理存款处理处取出底账登记后,将存折退还给储户;如果是取款则将存折忣取款单送交取款处理处,该服务台取出底账及现金记账后将存折与现金退给储户。从而完成存(取)款处理过程试按此画出数据流程图。

4、内聚性:内聚是一个模块内部各个元素彼此结合的紧密程度的度量

5、耦合性:   耦合是模块间互相连接的紧密程度的度量,它取决于各個模块之间接口的复杂度、调用方式以及哪些信息通过接口

4、下列哪一项说明模块的独立性越强。( )

6、 程序内部的各个部分之间存在嘚联系用结构图表达时,最关心的是模块的耦合性和( )

7、程序内部的各个部分之间存在的联系,用结构图表达时 下列哪一项是在模块之间的联系。( )

9、一个模块把一个数值量作为参数传送给另一模块这两个模块之间的耦合是( )。

10、一个模块直接操作另一模块Φ的数据这两个模块之间的耦合是( )。

11、一个模块在界面上传递一个信号控制另一个模块接受信号的模块的动作根据信号值进行调整,这两个模块之间的耦合是( )

12 下列哪一项定义为受该模块内一个判断影响的所有模块集合( )

13、标记耦合指( )。

A.两个模块之间没囿直接的关系它们之间不传递任何信息

B.两个模块之间有调用关系,传递的是简单的数据值

C.两个模块之间传递的公共参数包含内部结构

 D.一個模块调用另一个模块时传递的是控制变量

14、通信内聚指()。

 A.把需要同时执行的动作组合在一起形成的模块为通讯内聚模块

 B.指模块的所有成分都操作同一数据集或生成同一数据集

 C.指一个模块中各个处理元素都密切相关于同一功能且必须顺序执行

 D.这是最强的内聚指模块內所有元素共同完成一个功能,缺一不可

15、耦合性最强是下面哪一项( )

17、在软件结构设计完成后,对于下列说法正确的是()。

A.非單一功能模块的扇入数大比较好说明本模块重用率高

B.单一功能的模块扇入高时应重新分解,以消除控制耦合的情况

C.一个模块的扇出太多说明该模块过分复杂,缺少中间层

D.一个模块的扇入太多说明该模块过分复杂,缺少中间层

18、偶然内聚指()

A.一个模块内的各成分之間没有任何联系

B.指模块内执行几个逻辑上相似的功能,通过参数确定该模块完成哪一个功能

C.把需要同时执行的动作组合在一起形成的模块為时间内聚模块

D.指模块内所有处理元素都在同一个数据结构上操作

22、软件结构图中模块框之间若有直线连接,表示它们之间存在着( )

35、定义软件系统各主要成份之间的关系。属于软件设计的(    B.

A.数据设计B.体系结构设计C.接口设计D.过程设计

3、模块独立性比较强的模塊应是高内聚低耦合的模块

4、一个模块的作用范围应在其控制范围之内,且条件判定所在的模块应与受影响的模块在层次上尽量靠近

6、在事务流型系统结构图中,事务中心模块按所接受的事务的类型选择某一事务(活动流)处理模块执行。各事务处理模块并列

7、在過程设计阶段,要决定各个模块的实现算法并精确地表达这些算法。对每个模块规定的功能以及算法的设计给出适当的算法描述:

4、紦一个系统的数据流图,将其转换为软件结构图的基本步骤

答:(1)复查基本系统模型。

   (3)变换型数据流图:确定输入、变换、输出這三部分之间的边界

   (4)系统模块结构图顶层和第一层的设计。

6、按从强到弱的顺序写出常见的模块间耦合的类型

  答:内容耦合、公共耦合、控制耦合、标记耦合、数据耦合

7、从低到高写出常见的内聚类型

偶然内聚、逻辑内聚、时间内聚、过程内聚、通信内聚、顺序内聚、功能内聚

8、什么是模块的独立性简述在系统设计中重视模块独立性的原因

模块独立性, 是指软件系统中每个模块只涉及软件要求的具体嘚子功能, 而和软件系统中其它的模块的接口是简单的。例如, 若一个模块只具有单一的功能且与其它模块没有太多的联系, 则称此模块具有模塊独立性

重视模块独立性的原因是:

③独立模块比较容易测试和维护

1、根据下列数据流图画出系统结构图

2、按图所示数据流图导出模块結构图。说明:其中C为变换中心

3、按图所示数据流图导出模块结构图。说明:其中C为变换中心

4、按图所示数据流图导出模块结构圖。

该方法把被测试对象看成一个黑盒子测试人员完全不考虑程序的内部结构和处理过程,只在软件的界面上进行测试用来证实软件功能的可操作性,检查程序是否满足功能要求是否能很好地接收数据,并产生正确的输出因此,黑盒测试又称为功能测试或数据驱动測试

该方法把测试对象看作一个透明的盒子,测试人员能了解程序的内容结构和处理过程以检查处理过程为目的,对程序中尽可能多嘚逻辑路径进行测试在所有的点检验内部控制结构和数据结构是否和预期相同。

3、软件测试:用人工或自动的手段来执行和评价系统或系统部件的过程以检验它是否满足规定的需求,或识别期望的结果和实际的结果之间有无差别

1、用黑盒技术设计测试用例的方法之一為(  a )

B.发现软件开发中出现的错误

C.尽可能发现并排除软件中潜藏的错误,提高软件的可靠性

D.修改软件中出现的错误

3、下列软件属性中软件产品首要满足的应该是( a  )

4、坚持在软件的各个阶段实施下列哪种质量保障措施,才能在开发过程中尽早发现和预防错误把出现的错誤克服在早期(   A.。

5、以程序的内部结构为基础的测试用例技术属于(  d )

6、为了提高测试的效率,正确的做法是(  a )

A.选择发现错误可能性大的数据作为测试用例

B.在完成程序的编码之后再制定软件的测试计划

D.使用测试用例测试是为了检查程序是否做了应该做的事

7、对程序的測试最好由谁来做,对程序的调试最好由谁来做( b  )

8、在进行单元测试时,常用的方法是(c  )

9、以下那一种选项不属于软件缺陷(  d )

A.軟件没有实现产品规格说明所要求的功能

B.软件中出现了产品规格说明不应该出现的功能

C.软件实现了产品规格没有提到的功能

D.软件实现了产品规格说明所要求的功能但因受性能限制而未考虑可移植性问题

10、软件生存周期过程中,修改错误最大的阶段是( d  )

11、在边界值分析中,下列数据通常不用来做数据测试的是(b   )

D.在程序完成的编码之后再制定软件的测试用例

12、单元测试中设计测试用例的依据是(  d )。

13、通常可分为白盒测试和黑盒测试白盒测试是根据程序的( c  )来设计测试用例,

黑盒测试是根据软件的规格说明来设计测试用例

14、如果┅个判定中的复合条件表达式为(A > 1)or(B <= 3),则为了达到100%的条件覆盖率至少需要设计多少个测试用例( b  )。

15、经验表明在程序测试中,某模块与其他模块相比若该模块已发现并改正的错误较多,则该模块中残存的错误数目与其他模块相比通常应该( b  )。

16、下面有关软件缺陷的说法中错误的是(   C.

A.缺陷就是软件产品在开发中存在的错误

B.缺陷就是软件维护过程中存在的错误、毛病等各种问题

C.缺陷就是导致系统程序崩溃的错误

D.缺陷就是系统所需要实现某种功能的实效和违背

17、在某大学学籍管理信息系统中,假设学生年龄的输入范围为16—40则根据黑盒测试中的等价类划分技术,下面划分正确的是( b )

A.可划分为2个有效等价类,2个无效等价类

B.可划分为1个有效等价类2个无效等价類

C.可划分为2个有效等价类,1个无效等价类

D.可划分为1个有效等价类1个无效等价类

18、根据软件需求规格说明书,在开发环境下对已经集成的軟件系统进行的测试是( a  )

19、下面有关测试原则的说法正确的是(  a )。

A.测试用例应由测试的输入数据和预期的输出结果组成

B.测试用例只需选取合理的输入数据

C.程序最好由编写该程序的程序员自己来测试

D.使用测试用例进行测试是为了检查程序是否做了它该做的事

20、集成测试對系统内部的交互以及集成后系统功能检验了何种质量特性a

21、软件设计阶段的测试主要采取的方式是(   A.

22、下列关于测试方法的叙述中不囸确的是(   C.

A.从某种角度上讲,白盒测试与黑盒测试都属于动态测试

   C.对功能的测试通常是要考虑程序的内部结构

23、在覆准则中最常用的是( d  )

24、大多数实际情况下,性能测试的实现方法是(  a )

25、下列方法中,不属于黑盒测试的是(  a )

26、测试程序时,不可能遍历所有可能嘚输入数据而只能是选择一个子集进行测试,那么最好的选择方法是(   B.)

D.根据数据大小进行选择

28、数据流覆盖关注的是程序中某个变量从其声明、赋值到引用的变化情况,它是下列哪一种覆盖的变种(  d )

29、在Web应用软件的分层测试策略中,下列哪个不是测试关注的层次(  c )

30、软件测试规范规定,软件测试的类别可分为:单元测试、集成测试以及( d  )

31、根据划分等价类等价类的原则,如果输入条件规萣了取值范围或值的个数,则可确立一个有效等价类和(    )无效等价类

32、(   )是集中对用源代码实现的每一个程序单元进行测试,检查各个程序模块是否正确地实现了规定的功能

1、测试用例应由测试输入数据和对应的预期输出结果这两部分组成。

2、V & V(验证和确认)技術分为两种:

软件检查:对系统的各种表示进行静态分析以发现问题。这些检查可以借助工具进行文档和代码分析

软件测试:通过执荇测试数据观察系统的操作特征(行为)是否符合要求。

3、验证(Verification)检查软件生存期各个阶段过程活动的结果是否满足规格说明的描述,证實各阶段和阶段之间的逻辑协调性、完备性和正确性

确认(Validation),是比验证更广泛的过程活动目的是想证实在一个给定的外部环境中软件的邏辑正确性,即是否满足用户的要求

4、白盒测试技术主要有逻辑覆盖、判定结构分析、循环结构分析、基本路径覆盖

5、逻辑覆盖主要有語句覆盖、判定覆盖、条件覆盖、判定-条件覆盖、条件组合覆盖、路径覆盖

6、黑盒测试技术主要有等价类划分、边界值分析、错误推测法、因果图、功能图、接口测试

7、测试过程按4个步骤进行,即单元测试、集成测试、确认测试和系统测试

8、确认测试应交付的文档有: 確认测试分析报告、 最终的用户手册和操作手册、 项目开发总结报告
9、α测试是由一个用户在开发环境下进行的测试,也可以是公司内部嘚用户在模拟实际操作环境下进行的测试

10、β测试是由软件的多个用户在实际使用环境下进行的测试。这些用户返回有关错误信息给开發者

11、主要的调试方法有强行排错、回溯法调试、归纳法调试、演绎法调试

12、归纳法调试:归纳法是一种从特殊推断一般的系统化思考方法。归纳法调试的基本思想是:从一些线索(错误征兆)着手通过分析它们之间的关系来找出错误。

收集有关的数据 、组织数据、提絀假设、证明假设

13、演绎法调试:演绎法是一种从一般原理或前提出发经过排除和精化的过程来推导出结论的思考方法。

主要步骤有列舉所有可能出错原因的假设、利用已有的测试数据排除不正确的假设、改进余下的假设、证明余下的假设

14、从下列关于软件测试的叙述Φ,选出5条正确的叙述

(1)用黑盒法测试时,测试用例是根据程序内部逻辑设计的

(2)尽量用公共过程或子程序去代替重复的代码段。

(3)测试是為了验证该软件己正确地实现了用户的要求

(4)对于连锁型分支结构,若有n个判定语句则有2n条路

(5)尽量采用复合的条件测试,以避免嵌套的汾支结构

(6)GOT0语句概念简单使用方便,在某些情况下保留GOT0语句反能使写出的程序更加简洁。

(7)发现错误多的程序模块残留在模块中的错误吔多

(8)黑盒测试方法中最有效的是因果图法。

(9)在做程序的单元测试时桩(存根)模块比驱动模块容易编写。

(10)程序效率的提高主要应通过选择高效的算法来实现

1、单元测试任务主要有:

模块局部数据结构测试;

模块中所有独立执行通路测试;

模块的各条错误处理通路测试。

2、黑盒测试旨在测试软件是否满足功能要求,它主要诊断的错误为:

数据结构或外部数据库访问错误;

初始化和终止条件错误

推荐您阅读更多有关于“”的文章

}

    分治法、随机化、递归求解、动態规划、贪心算法

最优化问题当作选择时,出现同样形式的子问题每一个特定子问题有多于一种选择的集合。关键技术是存储这些子問题每一个解防止其重复出现

算是动态规划的子集,当子问题只有一种选择就是取当前情况下的最优解时适用

一种用来分析执行一系列类似操作的算法的工具。在一个操作序列中不可能每一个都以其已知的最坏情况运行,某些操作的代价高些而其它的低一些,考虑整体而不是一次的算法执行

数论算法:主要在加密系统中如公钥加密

1. 与分治法的区别:是否有公共子问题

4. 动态规划就是满足

重叠子问题:问题以前出现过

两个条件后,通过递归从下至上地进行展开避免重复计算子问题

6.  为了描述子问题空间: 尽量保持这个空间简单,在需偠的时候扩充

7.  时间复杂度为  子问题的个数× 子问题有多少种选择

11. 做备忘录的递归方法:这种方法是动态规划的一个变形它本质上与动态規划是一样的,但是比动态规划更好理解!

    b) 当在递归算法的执行中每一次遇到一个子问题时就计算它的解并填入一个表中。以后每次遇箌该子问题时只要查看并返回表中先前填入的值即可。   

12. 备忘录方法与动态递归方法的比较:如果所有的子问题都至少要被计算一次则┅个自底向上的动态规划算法通常比一个自顶向下的做备忘录算法好出一个常数因子。因为动态规划没有使用递归的代价只用到了循环,所以常数因子肯定比递归要好一些 

    最长公共子序列: 两个字符串中最长的相同字符串序列,不是连续的

    最优二叉查找树: 二叉查找树烸个节点带概率如何组织使得所有的搜索访问的节点数目最小

    近似串匹配 (语音、手写识别,模糊查找) K-近似匹配(样本p在T中至多k个差别):关键是建立代价函数模型,得出代价函数递推关系

 矩阵炼乘法的算法实现

1. 在每一个贪心算法的下面,几乎总是会有一个更加复雜的动态规划解贪心比动态规划简单,但贪心选择性有时证明比较困难

2. 正确使用贪心算法的2个关键要素:

a) 贪心选择性质:即当考虑做哬选择时,我们只考虑对当前问题最佳的选择而不考虑子问题的结果

b) 最优子结构:一个问题的最优解包含了其子问题的最优解。

    a) 将优化問题转化成这样的一个问题即先做出选择(对应于动态规划的先解决子问题再选择),再解决剩下的一个子问题

    b) 证明原问题总是有一個最优解是做贪心选择得到的,从而说明贪心选择的安全

    c) 说明在做出贪心选择后,剩余的子问题具有这样的一个性质即如果将子问题嘚最优解和我们所做的贪心选择联合起来,就可以得出原问题的一个最优解

      将n个字符放入概率最小优先队列中,每次从优先队列中取出兩个作为0,1 分支将其和存入优先队列中。循环操作直到Q为空   

(n个活动各有自己的开始和结束时间选出最大个数的活动序列)

 n台机器和m个莋业,每个作业花费ti时间求将m个作业分配到n台机器,使得 每一台机器执行的max 时间最短

    解决 n!或2^n但n并不大或增加限定条件,如八皇后 0-1褙包,旅行商问题

    2. 以深度优先(回溯)、广度优先(分支)搜索解空间树

    3. 利用 判定函数 剪枝思路:赋予算法智能,优先搜索可能的子树

無向图的团集(每一节点互相连接)问题

        求无向图中的最大的极大联通子图应用如:n种动物将尽可能的动物放在一起喂养;多支路口的鈈同路线的最小分组数

1.  平摊分析与平均情况分析不同的地方是:平摊分析不考虑概率,在最坏情况下每个操作的平均性能

2.  三种类型: 聚集分析、记账分析,势能分析

3.  聚集法: N个操作构成的序列执行时间是 O(n) 则每个操作的平均时间是 O(n)/n

    以前的时间复杂度分析都是以单次操作为對象的分析它的最坏时间复杂度,而聚集分析所分析的是N次操作的总时间的最坏情况应注意其与平均情况分析的不同之处!聚集分析:甴序列的总最坏时间?单次的平摊时间

}

我要回帖

更多关于 最优子集法 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信