1、1、可行性研究的目的是用最小的代价,在尽可能短的时间内,确定该项目是否能够开发。 2、程序设计时代的生产方式是个体手工,程序系统时代的生产方式是作坊式小团体,软件工程时代的生产方式是工程化。 3、喷泉模型是一种以需求分析为动力,以对象为驱动的模型。 4、需求分析阶段,分析人员要确定对问题的综合需求,其中最主要的是功能需求。 5、可行性研究需要从以下三个方面分析研究每种解决方法的可行性:技术可行性、经济可行性、社会可行性。 6、可行性研究的目的不是去开发一个软件项目,而是研究这个软件项目是否值得开发,其中的问题能否解决。 7、判定树较判定表直观易读,判定表进行逻辑验证较严格,能把所有的可能性全部
2、都考虑到。可将两种工具结合起来,先用判定表做底稿,在此基础上产生判定树。 8、软件工具的发展特点是软件工具有单一工具向多个工具集成化方向发展。重视用户界面的设计,不断的采用新理论和新技术。软件工具的商品化推动了软件产业的发展,而软件产业的发展,又增加了对软件工具的需求,促进了软件工具的商品化进程。 9、环境集成主要有数据集成、界面集成、控制集成、平台集成、过程集成。 10、 可行性研究实质上是进行一项简化、压缩了的需求分析、设计过程。 11、 结构化方法有结构化分析、结构化设计、结构化程序设计构成,它是一种面向数据流的开发方法。 12、 投资回收期就是累计的经济效益等于最初的项目投资所需的时间
3、。 13、 详细描述处理过程常用三种描述工具:图形、表格和语言。 14、 数据流图中,每个加工至少有一个输入流和一个输出流。 15、 结构化设计以数据流为基础映射成软件结构。 16、 当数据流图中某个加工的一组动作存在着多个条件复杂组合的判断时,使用判定表或判定树较好。 17、 由于运用原型的目的和方式不同,在使用原型时也采取不同的策略,有抛弃策略和附加策略。 18、有两类维护技术:在开发阶段是用来减少错误、提高软件可维护性面向维护的技术,在维护阶段用来提高维护的效率和质量的维护支援技术。 19、 软件开发中原型是软件的一个早期可运行的版本,它反映了最终系统的重要特性。 20、 产品管理包括版
4、本管理和配置管理。 21、 任何程序都可由顺序、选择、重复三种基本控制结构构造。 22、 测试用例应有输入数据和预期的输出数据两部分组成。这样便于对照检查。 23、 需求分析阶段产生的最重要的文档之一是需求规格说明书。 24、 项目开发计划是一个管理性文档。 25、 软件配置管理,简称SCM,软件配置项简称SCI。 26、 在算法描述工具中,PAD图可自动生成程序。由机器自动通过走树的办法生成相应的源代码,大大提高软件的生产率。 27、在CASE集成中,控制集成支持工作台或环境中一个工具对系统中其它工具的访问。过程集成是指CASE系统嵌入了关于过程活动、阶段、约束和支持这些活动所需的工具的知识
5、。 28、 解决一个复杂问题,往往采取的策略是分解。 29、 效益分析有有形效益和无形效益两种。 30、 两个模块都是用同一张表,这种耦合称为公共耦合。 31、 一个模块把数值作为参数传送给另一个模块,这种耦合方式称为数据耦合。 32、 一个模块内部各程序段都在同一张表上操作,这个模块的内聚性称为通信内聚。 33、在SA方法的需求描述工具中,数据流图描述系统的分解,即描述系统有哪几部分组成,各部分之间有什么联系等等。数据字典定义了数据流图中每一个图形元素;结构化语言、判定表或判定树则详细描述数据流图中不能被再分解的每一个加工。 34、IDEF图是一种功能模型,表示系统功能的图形称为活动图形,连
6、方框上的箭头有四种类型,他们分别是输入、输出、控制、机制。 35、软件项目计划是可行性研究阶段的结果产品。但由于可行性研究是在高层次进行系统分析,未能考虑软件系统开发的细节情节,因此软件项目计划一般在需求分析阶段完成后才定稿的。 36、信息隐蔽指在设计和确定模块时,使得一个模块内包含的信息(过程或数据),对于不需要这些信息的其它模块来说,是不能访问的。 37、 同一个类中的共享是指同一个类中的对象有着相同的数据结构和相同的行为特征。 38、 通过抽象,可以确定组成软件的过程实体。通过信息隐蔽,可以定义和实施对模块的过程细节和局部数据结构的存取限制。 39、 IPO图描述分层图中一个模块的输入、
7、输出和处理内容。 40、 软件是一种逻辑产品,它与物质产品有很大区别。 41、 数据流图中的箭头表示数据流。 42、 软件测试时需要三类信息:软件配置、测试配置、测试工具。 43、 基于IDEF0图的设计也是结构化设计技术之一,它以系统的功能模型和信息结构为基础设计软件结构。 44、 系统流程图是描述物理模型的传统工具,用图形符号表示系统中各个元素,表达了系统中各种元素之间的信息流动情况。 45、 桩模块是用来代替被测试模块所调用的模块,它的作用是返回被测模块所需的信息。 46、 建立数据字典一般的两种形式是手工建立和利用计算机辅助建立并维护。 47、 汇编语言是面向机器的,可以完成高级语言无
8、法满足要求的特殊功能,如与外部设备之间的一些接口操作。 48、黑盒测试是功能测试,因此设计测试用例时,需要研究需求规格说明书和概要设计说明书中有关程序功能或输入、输出之间的关系等信息,从而与测试后的结果进行分析比较。 49、在类层次中,子类只继承一个父类的数据结构和方法,则称为单重继承。子类继承了多个父类的数据结构和方法,则称为多重继承。 50、 由于数据流是流动中的数据,所以必须有流向。除了与数据存储之间的数据流不用命名外,数据流应该用名词或名词短语命名。 51、投资回收期就是使累计的经济效益等于最初的投资费用所需的时间。项目的纯收入是指在整个生存周期之内的累计经济效益(折合成现在值)与投资
9、之差。 52、 程序设计语言的简洁性是指人们必须记住的语言成分的数量。人们要掌握一种语言,需要记住的成分数量越多,简洁性越差。 53、 不同对象的同一属性可以具有相同或不同的属性值。 54、 软件开发划分的各阶段任务尽可能相对独立,同一阶段任务性质尽可能相同。 55、 瀑布模型是将生存周期各活动规定为线性顺序联接的若干阶段的模型。 56、 成本效益分析的目的是从经济角度评价开发一个软件项目是否可行。 57、 在需求分析阶段要进行以下几方面的工作:问题识别、分析与综合、导出软件的逻辑模型、编写文档。 58、 静态冗余常用的有:三模冗余TMR和多模冗余。 59、 McCabe质量度量模型,针对面向
10、软件产品的运行、修正、转移。 60、程序设计语言的局部性是指语言的联想性。在编码过程中,由语句组合成模块,由模块组装成系统结构,并在组装过程中实现模块的高内聚,低耦合,使局部性得到加强。 61、 软件复杂性度量的参数主要有规模、难度、结构和职能度。 62、 项目开发计划的主要内容有:项目概述、实施计划、人员组织及分工、交付期限。 63、 可行性研究要在较高层次上以较抽象方式进行需求分析和设计。 64、 软件工程是一门综合性交叉学科,计算机科学着重于原理和理论,软件工程着重于建造软件系统。 65、 维护的副作用有编码副作用、数据副作用、文档副作用三种。 66、 若年利率为I,不计复利,P元在n年
11、后的价值F=P*(1+n*i) 67、 软件结构是以模块为基础而组成的一种控制层次结构。 68、 软件设计阶段产生的最重要的文档之一是概要设计说明书。 69、独立路径是指包括一组以前没有处理的语句或条件的一条路径。从程序图来看,一条独立路径是至少包含有一条在其它独立路径中未有过的边的路径。 70、 各模块经过单元测试后,将各模块组装起来进行集成测试,以检查与设计相关的软件系统结构的有关问题。 71、 开发过程管理包括项目计划和控制和任务管理等。 72、 临时维护小组采用“同事复审”或“同行复审”等方法来提高维护工作的效率。 73、数据字典中的加工逻辑主要描述该加工做什么,即实现加工的策略,而不
12、是实现加工的细节,它描述如何把输入数据流变换为输出数据流的加式规则。 74、 为了较完整的描述用户对系统的需求,DFD应与数据库中的ER图结合起来。 75、 纯收入是软件生存周期内累计经济效益与投资之差。 76、 反映软件结构的基本形态特征是深度、宽度、扇入和扇出。 77、 若年利率为I,不计复利,n年后能收入F元的现在价值p=F/(1+n*i)。 78、 在一个模块中,功能状态与接口反映模块的外部特性,逻辑反映它的内部特性。 79、 硬件与软件一起构成完整的计算机系统。 80、 SA方法中主要描述工具是DFD与DD。 81、 软件生存周期模型是描述软件开发过程中各种活动如何执行的模型。 82
13、、 结构化设计对数据流有两种分析方法,他们是变换分析设计和事务分析设计。 83、 数据字典中有四类条目:数据流、数据项、数据存储、加工。 84、常借用硬件可靠性的定量度量方法来度量软件的可靠性与可用性。常用指标有平均失效等待时间MTTF和平均失效间隔时间MTBF。 85、 Lisp是一种函数型语言,Prolog是一种逻辑性语言。 86、 Jackson结构图能对结构进行自顶向下分解,因此可以表示层次结构。 87、 变换模型是一种适合于形式化开发方法的模型,从软件需求形式化说明开始,经过一系列变换,最终得到系统的目标程序。 88、 软件开发环境的主要目标是提高软件开发的生产率,改善软件质量和降低
14、软件成本。 89、 “软件”包含计算机程序及其说明程序的各种文档。 90、 开发过程依序包括需求分析、设计、编码、集成、软件安装和验收等活动。 91、 社会可行性研究包括合同、责任、侵权、用户组织的管理模式及规范,其他一些技术人员常常不了解的陷阱等。 92、 IDEF0方法中,将系统功能称为活动,将表示系统功能的图形称为活动图形。 93、 数据库的设计指数据存储文件的设计,主要进行的设计方面有:概念设计、逻辑设计、物理设计。 94、如果只有两个模块之间有公共数据环境,这种公共耦合有两种情况:一是一个模块只是给公共数据环境送数据,另一个模块是只从公共环境中去数据,这是比较松散的公共耦合;二是两个
15、模块都往公共环境中送数据又从里面取数据,这是紧密的数据耦合。 95、Jackson方法是面向数据结构的设计方法。早期的Jackson方法用于开发模型较少的数据处理系统的设计,简称JSP。 96、 工程网络图只有一个开始点和一个终止点,开始点没有流入箭头,称为入度为零;终止点没有流出箭头,称为出度为零。 97、为了确保每个开发过程的质量,防止把软件差错传递到下一个过程,必须进行质量检验,检验的实施有实际运行检验(即白盒测试和黑盒测试)和鉴定两种形式1、需求分析:需求分析是指开发人员要准确理解用户的需求,进行细致的调查分析,将用户非形式的需求陈述转化成完整的需求定义,再由需求定义转换到相应的形式功
16、能规约(需求规格说明)的过程。2、白盒法:该方法把测试对象看作一个打开的盒子,测试人员须了解程序的内部结构和处理过程,以检查处理过程的细节为基础,对程序中尽可能多的逻辑路径进行测试,检查内部控制结构和数据结构是否有错,实际的运行状态与预期的状态是否一致。白盒法也不可能进行穷举测试。 3、黑盒法:该方法把被测试对象看成一个黑盒子,测试人员完全不考虑程序的内部结构和处理过程,只在软件接口处进行测试,依照需求规格说明书,检查程序是否满足功能要求。因此,黑盒测试又称为功能测试或数据驱动测试。 4、渐增式测试:逐个把未经过测试的模块组装到已经过测试的模块上去,进行集成测试。每加入一个新模块进行一次集成测
17、试,重复此过程直至程序组装完毕。 5、非渐增式测试:首先对每个模块分别进行单元测试,然后再把所有的模块按设计要求组装在一起进行测试。 6、可执行的规格说明:这是一种使要求说明过程自动化的技术,通过可执行的规格说明语言来描述预期的行为“做什么”,人们可以从直接观察中用规格说明语言来规定任何系统行为。 7、经济可行性:对组织的经济状况和投资能力进行分析,对系统建设,运行和维护费用进行估算,对系统建成后可能取得的社会及经济效益进行估计。 8、系统设计说明书:是从系统总体的角度出发对系统建设中各主要技术方面的设计进行说明,是系统设计阶段的产物,其着重点在于阐述系统设计的指导思想以及所采用的技术路线和方
18、法,编写系统设计说明书将为后续的系统开发工作从技术和指导思想上提供必要的保证。 9、面向对象设计:是把分析阶段得到的需求转变成符合成本和质量要求的、抽象的系统实现方案的过程。或者说,面向对象设计就是用面向对象观点建立求解域模型的过程。 10、结构化设计:面向数据流的设计是以需求分析阶段产生的数据流图为基础,按一定的步骤映射成软件结构,因此又称结构化设计(SD)。 11、结构化分析:是根据分解与抽象的原则,按照系统中数据处理的流程,用数据图来建立系统的功能模型,从而完成需求分析工作。 12、基于脚本的设计:此方法主要用于解决要求的验证问题。一个脚本将模拟在系统运行期间用户经历的事件,它提供了输入
19、、处理、输出的屏蔽,以及有关对话的一个模型,开发者能够给用户显示一个系统的逼真视图。 13、IDEF方法:是美国空军在1981年针对集成化计算机辅助制造(简称ICAM)工程项目中用于进行复杂系统分析和设计的方法,是在结构化分析与设计技术的基础上提出来的。 14、JSP方法:定义了一组以数据结构为指导的映射过程,他根据输入、输出的数据结构,按一定的规则映射成软件的过程描述,即程序结构,而不是软件的体系结构,因此该方法适于详细设计阶段。 15、软件概要设计:进 入了设计阶段,要把软件“做什么”的逻辑模型变换为“怎么做”的物理模型,即着手实现软件的需求,并将设计的结果反应在“设计规格说明书”文档中,
20、所以软 件设计是一个把软件需求转换为软件表示的过程,最初这种表示只是描述了软件的总的体系结构,称为软件的概要设计或结构设计。 16、信息隐蔽:指在设计和确定模块时,使得一个模块内包含的信息(过程或数据),对于不需要这些信息的其它模块来说,是不能访问的。 17、系统流程图:是描述物理系统的传统工具,它用图形符号来表示系统中的各个元素,例如人工处理、数据处理、数据库、文件、设备等。它表达了系统中各个元素之间的信息流动的情况。 18、集成测试:是指在单元测试的基础上,将所有模块按照设计要求组装成一个完整的系统进行的测试,故也称组装测试或联合测试。 19、附加策略:是将原型用于开发的全过程,原型由最基
21、本的核心开始,逐步增加新的功能和新的需求,反复修改反复扩充,最后发展为用户满意的最终系统。 20、抛弃策略:是将原型用于开发过程的某一阶段,促使该阶段的开发结果更加完整、准确、一致、可靠,该阶段结束后,原型随之作废。 21、抽象:是认识复杂现象过程中使用的思维工具,即抽出事物本质的共同的特征而暂不考虑它的细节,不考虑其它因素。 22、参数化抽象:所谓参数化抽象,它是指当描述类的规格说明时并不具体指定所要操作的数据类型,而是把数据类型作为参数。 23、静态测试:指被测试程序不在机器上运行,而是采用人工检测和计算机辅助静态分析的手段对程序进行检测。 24、原型:是指模拟某种产品的原型模型。软件开发
22、中的原型是软件的一个早期可运行的版本,它反映了最终系统的重要特征。 25、事件:是指定时刻发生的某件事情。它是某事情发生的信号,它没有持续时间,它是一种相对性的快速事件。 26、动态冗余:动态冗余的主要方式是多种模块待机储备,当系统检测到某工作模块出现错误时,就用一个备用的模块来顶替它并重新运行。这里须有检测、切换和恢复过程,故称其为动态冗余。 27、模块化:是指解决一个复杂问题是自顶向下逐层把软件系统划分成若干模块的过程,每个模块完成一个特定的子功能,所有的模块按某种方法组装起来,成为一个整体,完成整个系统所要求的功能。 28、JSP方法:定义了一组以数据结构为指导的映射过程,它根据输入、输
23、出的数据结构,按一定的规则映射成软件的过程描述,即程序结构,而不是软件的体系结构,因此该方法适于详细设计阶段。 29、模型:是为了理解事务而对事物做出一种抽象,它忽略不必要的细节,它也是事物的一种抽象形式,一个规划,一个程式。 30、瀑布模型:是将软件生存各个活动规定为依线性顺序联接的若干阶段的模型。它包括可行性分析、项目开发计划、需求分析、概要设计、详细设计、编码、测试和维护。它规定了由前至后,相互衔接的固定次序,如同瀑布流水,逐级下落。 31、增量模型:是 在项目的开发工程中以一系列的增量方式开发系统。增量方式包括增量开发和增量提交。增量开发是指在项目开发过程中以一定的时间间隔开发部分工作
24、软件;增量 提交是指在开发周期内,以一定的时间间隔增量方式向用户提交工作软件及相应稳当。增量开发和增量提交可以同时使用,也可单独使用。 32、喷泉模型:是一种以用户需求为 动力,以对对象作为驱动的模型,适合于面向对象的开发方法。他克服了瀑布模型不支持软件重用和多项开发活动集成的局限性。喷泉模型使开发过程具有迭代性和 无间隙性。系统某些部分常常重复工作多次,相关功能在每次迭代中随之加入演化的系统。无间隙是指在分析、设计、实现等开发活动之间不存在明显的边界。 33、功能模型:描述了系统的所有计算,它表明一个计算如何从输入值得到输出值,他不考虑所计算的次序。功能模型说明对象模型中操作的涵义、动态模型
25、中动作的意义以及对象模型中约束的意义。 34、动态模型:是与时间和变化有关的系统性质。该模型描述了系统的控制结构,他表示了瞬时的、行为化的系统控制性质。它关心的是系统的控制,操作的执行顺序。它从对象的事件和状态的角度出发,表现了对象的相互行为。 35、对象模型:表示了静态的、结构化的系统数据性质,描述了系统的静态结构,它是从客观世界实体的对象关系角度来描述,表现了对象的相互关系。 36、货币的时间价值:通 常利用银行的存款利息来表示货币的时间价值。设年利率为I,现存入p元,n年后得到本金和利息为F。若不计复利,则P元在n年后的价值为:F=P*(1+ n*i)。反过来,若n年后能收入的本金和利息
26、为F,则将来F元的现在价值(本金)P为:P=F/(1+n*i)。可用这个公式来计算将来收入的现在价 值。这是效益分析的最基本公式。 37、类:具有相同或相似性质的对象的抽象就是类。 38、对象:是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。类的具体化就是对象,也可以说类的实例是对象。 39、多态性:指相同的操作或函数、过程可作用于多种类型的对象上并获得不同结果。不同的对象,收到同一消息可以产生不同的结果,这种现象称为多态性。 40、风险分析:实际上就是贯穿在软件工程上的一系列风险管理步骤,其中包括风险识别、风险估计
27、、风险管理策略、风险解决和风险监督,它能让人们主动“攻击”风险。 41、模块:模块在程序重视数据说明、可执行语句等程序对象的集合,或者是单独命名和编址的元素,如高级语言中的过程、函数、子程序等等。 42、JSD方法:主要以活动事件为中心,通过有一串活动顺序组合构成的进程,建立系统模型,最后实现该模型。 43、路径覆盖:指设计足够的测试用例,覆盖被测程序中所有可能的路径。 44、判定/条件覆盖:指设计足够的测试用例,使得判定表达式中的每个条件的所有可能取值至少出现一次,并使每个判定表达式所有可能的结果也至少出现一次。 45、条件组合覆盖:是指设计足够的测试用例,使的每个判定表达式中条件的各种可能
28、的值的组合都至少出现一次,条件组合覆盖是比较强的覆盖标准。 46、条件覆盖:是指设计足够的测试用例,使得判定表达式中每个条件的各种可能的值至少出现一次。满足条件覆盖并不一定满足判定覆盖。 47、原型模型:又称快速原型模型,它是在开发真实系统之前,构造一个原型,在该原型的基础上,逐渐完成整个系统的开发工作。 48、软件工程环境:美国国防部在STARS计划中定义如下:“软件工程环境是一组方法、过程及计算机程序(计算机化的工具)的整体化构件,他支持从需求定义、程序生成知道维护的整个软件生存期”。 49、程序图:是退化的程序流程图。也就是说,把程序流程图中每个处理符号都退化成一个结点,原来连接不同处理
29、符号的流线变成连接不同结点的有向弧,这样得到的有向图就叫程序图。 1、可行性研究的任务是什么? 首先需要进行概要的分析研究,初步确定项目的规模和目标,确定项目的约束和限制,把他们清楚地列举出来。然后,分析员进行简要的需求分析,抽象出该项目 的逻辑结构,建立逻辑模型。从逻辑模型出发,经过压缩的设计,探索出若干种可供选择的主要解决方法,对每种解决方法都要研究它的可行性,可从以下三个方面 分析研究每种解决方法的可行性。技术可行性:对要开发项目的功能、性能、限制条件进行分析,确定在现有的资源条件下,技术风险有多大,项目是否能实现。 经济可行性:进行开发成本的估算以及了解取得效益的评估,确定要开发的项目
30、是否值得投资开发。社会可行性:要开发的项目是否存在任何侵犯、妨碍等责任 问题,要开发项目的运行方式在用户组织内是否行得通,现有管理制度、人员素质、操作方式是否可行。 2、什么是模块的影响范围?什么是模块的控制范围?他们之间应该建立什么关系? 一个模块的作用范围(或称影响范围)指受该模块内一个判定影响的所有模块的集合。一个模块的控制范围指模块本身以及其所有下属模块(直接或间接从属于它 的模块)的集合。一个模块的作用范围应在其控制范围之内,且判定所在的模块应在其影响的模块在层次上尽量靠近。如果再设计过程中,发现模块作用范围不在其 控制范围之内,可以用“上移判点”或“下移受判断影响的模块,将它下移到
31、判断所在模块的控制范围内”的方法加以改进。 3、非渐增式测试与渐增式测试有什么区别?渐增式测试如何组装模块? 非渐增式测试与渐增式测试的测试方法有以下区别:非渐增式测试方法把单元测试和集成测试分成两个不同的阶段,前一阶段完成模块的单元测试,后一阶段完 成集成测试。而渐增式测试往往把单元测试与集成测试和在一起,同时完成。非渐增式需要更多的工作量,因为每个模块都需要驱动模块和桩模块,而渐增式利用 已测试过的模块作为驱动模块或桩模块,因此工作量较少。渐增式可以较早的发现接口之间的错误,非渐增式最后组装是才发现。渐增式有利于排错,发生错误 往往和最近加进来的模块有关,而非渐增式发现接口错误推迟到最后,
32、很难判断是哪一部分接口出错。渐增式比较彻底,已测试的模块和新的模块再测试。渐增 式占用的时间较多,但非渐增式须更多的驱动模块、桩模块也占用一些时间。非渐增式开始可并行测试所有模块,能充分利用人力,对测试大型软件很有意义。渐 增式测试有以下两种不同的组装模块的方法:自顶向下组合。该方法只需编写桩模块,其步骤是从顶层模块开始,沿被测程序的软件结构图的控制路径逐步向下测 试,从而把各个模块都结合起来,它又有两种组合策略:深度有先策略:先从软件结构中选择一条主控制路径,把该路径上的模块一个个结合进来进行测试,以便 完成一个特定的子功能,接着再结合其它需要优先考虑的路径。宽度有先策略:逐层结合直接下属的
33、所有模块。自低向上结合。该方法仅需编写驱动模块。其步 骤为:把底层模块组合成实现一个个特定子功能的族。为每一个族编写一个驱动模块,以协调测试用例的输入和测试结果的输出。对模块族进行测试。按软 件结构图依次向上扩展,用实际模块替换驱动模块,形成一个个更大的族。重复至步,直至软件系统全部测试完毕。 4、软件质量与软件质量保证的含义是什么? 从实际应用来说,软件质量定义为:与所确定的功能和性能需求的一致性。与所成文的开发标准一致性。与所有专业开发的软件所期望的隐含特性的一致 性。软件质量保证就是向用户及社会提供满意的高质量的产品,确保软件产品从诞生到消亡为止的所有阶段的质量的活动,即确定、达到和维护
34、需要的软件质量而进 行的所有有计划、有系统的管理活动。5、软件工程标准化的意义是什么?都有哪些软件工程标准?积极推进软件工程标准化,其道理是显而易见的。仅就一个软件 开发项目来说,有许多层次,不同分工的人员相互配合,在开发项目的各个部分以及各开发阶段之间也都存在许多联系和衔接问题。如何把这些错综复杂的关系协调 好,需要有一系列统一的约束和规定。在软件开发项目取得阶段成果或最后完成是时,需要进行阶段评价和验收测试。投入运行的软件,其维护工作中遇到问题又与 开发工作者有着密切的关系。软件的管理工作则渗透到软件生存期的每一个环节。所有这些都要要求提供统一的行动规范和衡量准则,使得各种工作都有章可循。
35、软 件工程的标准主要有以下三个:FIPS135是美国国家标准局发布的软件文档管理指南NSAC 39是美国核子安全分析中心发布的安全参数显示系统的验证与确认。ISO5807是国际标准化组织公布(现已成为中国的国家标准)的信息处理 数据流程图、程序流程图、程序网络图和系统资源图的文件编制符号及约定。 5、需求分析阶段的基本任务是什么? 需求分析阶段的基本任务是要准确的定义新系统的目标,为了满足用户需要,回答系统必须“做什么”的问题。本阶段要进行以下几方面的工作:问题识别。双 方确定对问题的综合需求,这些需求包括:功能需求、性能需求、环境需求、用户界面需求,另外还有可靠性、安全性、保密性、可移植性、
36、可维护性等方面的需 求。分析与综合,导出软件的逻辑模型。分析人员对获取的需求,进行一致性的分析检查,在分析、综合中逐步细化软件功能,划分成各个子功能。这里也包括对 数据域进行分解,并分配到各个子功能上,以确定系统的构成及主要成份,并用图文结合的形式,建立起新系统的逻辑模型。编写文档。编写“需求规格说明 书”、编写初步用户使用手册、编写确认测试计划、修改完善软件开发计划。 6、采用黑盒技术设计测试用例有哪几种方法?这些方法各有什么特点?等价类划分。等价类划分是将输入数据域按有效的或无效的(也称合理的或不合理的)划分成若干个等价类,测试每个等价类的代表值就等于对该类其它值的测试。边界值分析。该方法
37、是将测试边界情况作为重点目标,选取正好等于,刚刚大于或刚刚小于边界值的情况,根据这些情况选择测试用例。错误推测。错误推测法没有确定的步骤,凭检验进行。它的基本思想是列出程序中可能发生错误的情况,根据这些情况选择测试用例。因果图。因果图能有效的检测输入条件的各种组合可能会引起的错误。因果图的基本原理是通过画因果图,把用自然语言描述的功能说明转换为判定表,最后为判定表的每一列设计一个测试用例。 7、说明动态建模的过程。准备脚本。动态分析从寻找事件开始,然后确定各对象的可能事件的顺序。在分析阶段不考虑算法的执行,算法是实现模型的一部分。确定事件。确定所有外部事件。事件包括所有来自或发往用户的信息、外
38、部设备的信号、输入、转换和动作。准备事件跟踪表。把脚本表示成一个事件跟踪表,对象为表中的列,给每一个对象分配一个独立的列。构造状态图。对各对象类建立状态图,反映对象接收和发送的事件,每个事件跟踪都对应于状态图中一条路径。 8、软件生产经历了几个阶段?各有何特征? 软件生产至今已经历了三个阶段:程序设计时代(1946-1956):这个阶段的生产方式是个体手工劳动,使用的工具实际其语言、汇编语言。开发方法 是追求编程技巧,追求程序运行效率。硬件特征是价格贵、存储容量小,运行可靠性差。软件特征是只有程序、程序设计概念,不重视程序设计方法。程序系统时 代(1956-1968):这个阶段的生产方式是作坊
39、式的小集团合作生产,生产工具是高级语言,开发方法仍就靠个人技巧,但开始提出结构化方法。硬件特征 是速度、容量、工作可靠性有明显提高。软件特征是程序员数量猛增,但开发技术没有新的突破,开发人员的素质和落后的开发技术不适应规模大、结构复杂的软件 开发,导致软件危机的产生。软件工程时代(1968至今):这个阶段的生产方式是工程化的生产,使用数据库、开发工具、开发环境、网络、分布式、面向对 象技术来开发软件。硬件特征是向超高速、大容量、微型化以及网络化方向发展。软件特征是开发技术有很大进步,但是未能获得突破性进展,软件价格不断上升, 没有完全摆脱软件危机。5、简述Gantt图的功能及不足。Gantt图
40、常用水平线段来描述把任务分解成子任务,以及每个子任务的进度安排,动态反映软件 开发进度情况,该图可以:表示任务分解成子任务情况;表示每个任务的开始时间和完成时间,线段的长度表示子任务完成所需要的时间;表示子任务之间的并行和 串行关系。Gantt图只能表示任务之间的并行与串行的关系,难以反映多个任务之间存在的复杂关系,不能直观表示任务之间相互依赖制约关系,以及哪些任务 是关键字任务等信息,因此仅仅用Gantt图作为进度的安排是不够的。6、什么是数据字典?其作用是什么?它有哪些条目?数据字典(简称DD)是用来定义 数据流图中的各个成分的具体含义的,它以一种准确的、无二义性的说明方式为系统的分析、设
41、计及维护提供了有关元素的一致的定义和详细的描述。他和数据流图 共同构成了系统的逻辑模型,是需求规格说明书的主要组成部分。数据字典是为分析人员查找数据流图中有关名字的详细定义而服务的,因此也像普通字典一样,要 把所有条目按一定的次序排列起来,以便查阅。数据字典有以下四类条目:数据流、数据项、数据存储、基本加工。数据项是组成数据流和数据存储的最小元素。源 点、终点不在系统之内,故一般不在字典中说明。7、调试的目的是什么?调试有哪些技术手段?调试的目的是确定错误的原因和位置,并改正错误,因此调试也成 为纠错。调试技术主要有:简单的调试方法,主要有在程序中插入打印语句、运行部分程序等;归纳法调试,他从
42、测试结果发现的线索(错误迹象、征兆)入手、分 析他们之间的联系,导处错误原因的假设,然后再证明或否定这个假设;演绎法调试,该方法列出所有可能的错误原因的假设,然后利用测试数据排除不适当的假 设,最后再测试数据验证余下的假设确实是出错的原因;回溯法调试,该方法从程序产生错误的地方出发,人工沿程序的逻辑路径反向搜索,直到找到错误的原因为 止。 9、如何做好软件质量保证工作? 软件质量保证工作是软件工程管理的重要内容,软件质量保证应做好以下几个方面的工作:采用技术手段和工具。质量保证活动要贯彻开发过 程始终,必须从采用技术手段和工具,尤其是使用软件开发环境来进行软件开发。组织正式技术评审,在软件开发
43、的第一个阶段结束时,都要组 织正式的技术评审。国家标准要求单位必须采用审查、文档评审、设计评审、审计和测试等具体手段来保证质量。加强软件测试。软件测试是质 量保证的重要手段,因为测试可发现软件可发现软件中大多数潜在错误。推选软件工程规范(标准)。用户可以自己指定软件工程规范(标 准),但标准一旦确认就应贯彻执行。对软件的变更进行控制。软件的修改和变更常常会引起潜伏的错误,因此必须严格控制软件的修改和变 更。对软件质量进行度量。即对软件质量进行跟踪,及时记录和报告软件质量情况。 10、什么是数据流图?其作用是什么? 其中的基本符号各表示什么含义?数据流图简称DFD,是SA方法中用于表示系统逻辑模
44、型的一种工具。它以图形的方式描述数据在系统中流动和处理的过程, 由于它只反映系统必须完成的逻辑功能,所以它是一种功能模型。数据流图有四种基本图形符号:“”箭头表示数据流;“”圆或椭圆表述加工;“=”双杠表 示数据存储;“”方框表示数据的源点或终点。 11、可行性研究的任务是什么? 首先需要进行概要的分析研究,初步确定项目的规模和目标,确定项目的约束和限制,把他们清楚地列举出来。然后,分析员进行简要的需求分析,抽象出该项目 的逻辑结构,建立逻辑模型。从逻辑模型出发,经过压缩的设计,探索出若干种可供选择的主要解决方法,对每种解决方法都要研究它的可行性,可从以下三个方面 分析研究每种解决方法的可行性
45、。技术可行性:对要开发项目的功能、性能、限制条件进行分析,确定在现有的资源条件下,技术风险有多大,项目是否能实现。 经济可行性:进行开发成本的估算以及了解取得效益的评估,确定要开发的项目是否值得投资开发。社会可行性:要开发的项目是否存在任何侵犯、妨碍等责任 问题,要开发项目的运行方式在用户组织内是否行得通,现有管理制度、人员素质、操作方式是否可行。 12、什么是模块的影响范围?什么是模块的控制范围?他们之间应该建立什么关系? 一个模块的作用范围(或称影响范围)指受该模块内一个判定影响的所有模块的集合。一个模块的控制范围指模块本身以及其所有下属模块(直接或间接从属于它 的模块)的集合。一个模块的
46、作用范围应在其控制范围之内,且判定所在的模块应在其影响的模块在层次上尽量靠近。如果再设计过程中,发现模块作用范围不在其 控制范围之内,可以用“上移判点”或“下移受判断影响的模块,将它下移到判断所在模块的控制范围内”的方法加以改进。 13、非渐增式测试与渐增式测试有什么区别?渐增式测试如何组装模块? 非渐增式测试与渐增式测试的测试方法有以下区别:非渐增式测试方法把单元测试和集成测试分成两个不同的阶段,前一阶段完成模块的单元测试,后一阶段完 成集成测试。而渐增式测试往往把单元测试与集成测试和在一起,同时完成。非渐增式需要更多的工作量,因为每个模块都需要驱动模块和桩模块,而渐增式利用 已测试过的模块
47、作为驱动模块或桩模块,因此工作量较少。渐增式可以较早的发现接口之间的错误,非渐增式最后组装是才发现。渐增式有利于排错,发生错误 往往和最近加进来的模块有关,而非渐增式发现接口错误推迟到最后,很难判断是哪一部分接口出错。渐增式比较彻底,已测试的模块和新的模块再测试。渐增 式占用的时间较多,但非渐增式须更多的驱动模块、桩模块也占用一些时间。非渐增式开始可并行测试所有模块,能充分利用人力,对测试大型软件很有意义。渐 增式测试有以下两种不同的组装模块的方法:自顶向下组合。该方法只需编写桩模块,其步骤是从顶层模块开始,沿被测程序的软件结构图的控制路径逐步向下测 试,从而把各个模块都结合起来,它又有两种组合策略:深度有先策略:先从软件结构中选择一条主控制路径,把该路径上的模块一个个结合进来进行测试,以便 完成一个特定的子功能,接着再结合其它需要优