1、软件开发阶段包括需求分析、总体设计、详细设计、编码和测试五个阶段。其中需求分析阶段常用的工具是数据流图和数据字典
2、软件的需求分析阶段的工作,可以概括为四个方面:需求获取、需求分析、编写需求规格说明书和需求评审。
需求获取的目的是确定对目标系统的各方面需求。涉及到的主要任务是建立获取用户需求的方法框架,并支持和监控需求获取的过程。
需求分析是对获取的需求进行分析和综合,最终给出系统的解决方案和目标系统的逻辑模型。
编写需求规格说明书作为需求分析的阶段成果,可以为用户、分析人员和设计人员之间的交流提供方便,可以直接支持目标软件系统的确认,又可以作为控制软件开发进程的依据。
需求评审是对需求分析阶段的工作进行复审,验证需求文档的一致性、可行性、完整性和有效性。
3、常见的需求分析方法有:结构化分析方法和面向对象的分析方法。结构化分析的常用工具有:数据流图(DFD)、数据字典(DD)、判定树和判定表等
4、需求分析是软件定义时期的最后一个阶段,它的基本任务就是详细调查现实世界要处理的对象(组织、部门、企业等),充分了解原系统的工作概况,明确用户的各种需求,然后在此基础上确定新系统的功能。选项A)软件开发方法是在总体设计阶段完成的任务;选项B)软件开发工具是在实现阶段需完成的任务;选项C)软件开发费用是在可行性研究阶段需完成的任务。
5、软件需求规格说明书(SRS,Software Requirement Specification)是需求分析阶段的最后成果,是软件开发中的重要文档之一。它有以下几个方面的作用:① 便于用户、开发人员进行理解和交流;② 反映出用户问题的结构,可以作为软件开发工作的基础和依据;③ 作为确认测试和验收的依据。
6、软件需求规格说明书是需求分析阶段产生的主要文档,可以为用户、分析人员和设计人员之间的交流提供方便,可以直接支持目标软件系统的确认,又可以作为控制开发软件进程的依据。
7、软件需求规格说明书的作用:
1.便于用户和开发人员进行理解和交流。
2.反映出用户问题的结构,可以作为软件开发工作的基础和依据。
3.作为确认测试和验收的依据。
8、结构化分析的常用工具有数据流图、数据字典、判定树和判定表。而PAD图是常见的过程设计工具中的图形设计。
9、软件设计一般分为总体设计和详细设计两个阶段,总体设计的任务是确定软件的总体结构,子系统和模块的划分,并确定模块间的接口和评价模块划分质量,以及进行数据分析。详细设计的任务是确定每一模块实现的定义,包括数据结构、算法和接口。
10、软件设计包括软件结构设计、数据设计、接口设计和过程设计。其中结构设计是定义软件系统各主要部件之间的关系;数据设计是将分析时创建的模型转化为数据结构的定义;接口设计是描述软件内部、软件和操作系统之间及软件与人之间如何通信;过程设计则是把系统结构部件转换成软件的过程性描述。
11、软件工程包括3个要素,即方法、工具和过程。
12、软件设计工具包括:程序流程图、N-S、PAD、HIPO,判定表,PDL(伪码)。
13、程序流程图(PFD)通常也称为程序框图,是一种传统的、应用广泛的软件过程设计表示工具,通常也称为程序框图,其箭头代表的是控制流,矩形表示加工步骤,菱形表示逻辑条件。
14、数据流相当于一条管道,并有一级数据(信息)流经它。在数据流图中,用标有名字的箭头表示数据流。数据流可以从加工流向加工,也可以从加工流向文件或从文件流向加工,并且可以从外部实体流向系统或从系统流向外部实体。
15、确认测试的任务是验证软件的功能和性能及其他特性是否满足了需求规格说明中的确定的各种需求,以及软件配置是否完全、正确。
16、总体设计过程通常由两个主要阶段组成:系统设计,确定系统的具体实现方案;结构设计,确定软件结构。
为确定软件结构,首先需要从实现角度把复杂的功能进一步分解。分析员结合算法描述仔细分析数据流图中的每个处理,如果一个处理的功能过分复杂,必须把它的功能适当地分解成一系列比较简单的功能。
17、调试的关键在于推断程序内部的错误位置及原因。主要的调试方法有强行排错法、回溯法和原因排除法
18、视图设计一般有3种设计次序,它们分别是自顶向下、自底向上和由内向外,它们又为视图设计提供了具体的操作方法,设计者可根据实际情况灵活掌握,可以单独使用也可混合使用。
19、常见的过程设计工具有:程序流程图、N-S图、PAD图和HIPO图。其中,为了避免流程图在描述程序逻辑时的灵活性,提出了用方框图来代替传统的程序流程图,通常也把这种图称为N-S图。
20、通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。它可以分为软件定义、软件开发及软件运行维护三个阶段。
21、软件的白盒测试方法是把测试对象看做一个打开的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。
白盒测试从检查程序的逻辑着手,可以把白盒测试理解为"内行人"进行软件测试。逻辑覆盖是泛指一系列以程序内部的逻辑结构为基础的测试用例技术,程序中的逻辑表示有判断、分支、选择等。
22、黑盒测试方法也称为功能测试或数据驱动测试。黑盒测试是对软件已经实现的功能是否满足需求进行测试和验证。黑盒测试完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求和功能规格说明,检查程序的功能是否符合它的功能说明。
黑盒测试方法主要有:等价类划分法、边界值分析法、错误推测法、因果图等,主要用于软件确认测试。
23、关于软件测试的目的,Grenford J.Myers在《The Art of Software Testing》一书中给出了深刻的阐述:软件测试是为了发现错误而执行程序的过程;一个好的测试用例是指很可能找到迄今为止尚未发现的错误的用例;一个成功的测试是发现了至今尚未发现的错误的测试。整体来说,软件测试的目的就是尽可能多地发现程序中的错误。
24、模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。耦合性与内聚性是模块独立性的两个定性标准,耦合与内聚是相互关联的。在程序结构中,各模块的内聚性越强,则耦合性越弱。一般较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性。
25、计算机软件是计算机系统中与硬件相互依存的另一部分,是包括程序、数据及相关文档的完整集合。
26、软件具有以下特点:①软件是一种逻辑实体,而不是物理实体,具有抽象性;②软件的生产过程与硬件不同,它没有明显的制作过程;③软件在运行、使用期间不存在磨损、老化问题;④软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制,这导致软件移植的问题;⑤软件复杂性高,成本昂贵;⑥软件开发涉及诸多的社会因素。
27、程序调试的任务是诊断和改正程序中的错误,改正以后还需要再测试。程序调试的任务是诊断和改正程序中的错误。它与软件测试不同,软件测试是尽可能多地发现软件中的错误。先要发现软件的错误,然后借助于一定的调试工具去找出软件错误的具体位置。软件测试贯穿整个软件生命期,调试主要在开发阶段。
28、为了达到更好的测试效果,应该由独立的第三方来构造测试。因为从心理学角度讲,程序人员或设计方在测试自己的程序时,要采取客观的态度是程度不同地存在障碍的。软件的运行和维护是指将已交付的软件投入运行,并在运行使用中不断地维护,根据新提出的需求进行必要而且可能的扩充和删改。
29、程序调试的任务是诊断和改正程序中的错误。程序调试的基本步骤:①错误定位。②修改设计和代码,以排除错误。③进行回归测试,防止引进新的错误。
30、软件工程是计算机软件开发和维护的工程学科,它采用工程的概念原理、技术和方法来开发和维护软件,它把经过时间考验而证明正确的管理技术和当前能够得到的最好技术结合起来。
31、软件的运行和维护是指将已交付的软件投入运行,并在运行使用中不断地维护,根据新提出的需求进行必要而且可能的扩充和删改。而软件生命周期是指软件产品从提出、实现、使用维护到停止使用退役的过程
32、20世纪70年代以来,提出了许多软件设计方法,主要有
(1)逐步求精:对复杂的问题,应设计一些子目标作过渡,逐步细化
(2)自顶向下:程序设计时应先考虑总体,后考虑细节;先考虑全局目标,后考虑局部目标。不要一开始就过多追求众多的细节,先从最上层总目标开始设计,逐步使问题具体化
(3)模块化:一个复杂问题,肯定是由若干稍简单的问题构成。模块化是把程序要解决的总目标分解为分目标,再进一步分解为具体的小目标,把每个小目标称为一个模块,而可复用是面向对象程序设计的一个优点。
33、从工程管理角度看,软件设计分为两步完成:概要设计与详细设计。概要设计(又称结构设计)将软件需求转化为软件体系结构、确定系统级接口、全局数据结构或数据库模式;详细设计确立每个模块的实现算法和局部数据结构,用适当方法表示算法和数据结构的细节。
34、软件生命周期分为软件定义、软件开发及软件维护。其中软件开发阶段的任务中软件设计阶段可分解成概要设计阶段和详细设计阶段;软件维护不属于软件开发阶段。
35、软件开发阶段包括需求分析、总体设计、详细设计、编码和测试5个阶段。其中需求分析阶段常用的工具是数据流图(简称DFD)和数据字典(简称DD)。常见的详细设计的图形描述工具主要有程序流程图、N-S结构图、问题分析图(简称PAD图)。
36、可行性研究和计划制定,其目的在于确定待开发软件系统的开发目标和总的要求,给出它的功能、性能、可靠性以及接口等方面的可能方案,制定完成开发任务的实施计划,因此不属于开发阶段。
37、1983年IEEE将软件测试定义为:使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。因此选项A的叙述是错误的。
38、软件测试的基本准则为:①所有测试都应追溯到需求。②严格执行测试计划,排除测试的随意性。③充分注意测试中的群集现象。④程序员应避免检查自己的程序。⑤穷举测试不可能。⑥妥善保存测试计划、测试用例、出错统计和最终分析报告,为维护提供方便。因此选项D正确。
在对程序进行了成功的测试之后将进入程序调试(通常称Debug,即排错)。
39、软件测试过程一般按4个步骤进行,即单元测试、集成测试、验收测试(确认测试)和系统测试
40、单元测试是对软件设计的最小单位-----模块(程序单元)进行正确性检验的测试。单元测试的目的是发现各模块内部可能存在的各种错误。单元测试的依据是详细设计说明书和源程序。
41、软件测试是保证软件质量的重要手段,其主要过程涵盖了整个软件生命期的过程。
软件测试的目的:
1)软件测试是为了发现错误而执行程序的过程;
2)一个好的测试用例是指很可能找到迄今为止尚未发现的错误的用例;
3)一个成功的测试是发现了至今尚未发现的错误的测试。
42、软件测试的准则:
1)所有的测试都应追溯到需求;
2)严格执行测试计划,排除测试的随意性;
3)充分注意测试中的群集现象;
4)程序员应避免检查自己的程序;
5)穷举测试不可能;
6)妥善保存测试计划、测试用例、出错统计和最终分析报告,为维护提供方便。
43、软件按功能可以分为:应用软件、系统软件、支撑软件(或工具软件)。
应用软件是为解决特定领域的应用而开发的软件。例如,事务处理软件,工程与科学计算软件,实时处理软件,嵌入式软件,人工智能软件等应用性质不同的各种软件。
系统软件是计算机管理自身资源,提高计算机使用效率并为计算机用户提供各种服务的软件。如操作系统,编译程序,汇编程序,网络软件,数据库管理系统等
44、在软件开发和维护过程中,软件危机主要表现在:
①软件需求的增长得不到满足。用户对系统不满意的情况经常发生。
②软件开发成本和进度无法控制。开发成本超出预算,开发周期大大超过规定日期的情况经常发生。
③软件质量难以保证。
④软件不可维护或维护程度非常低。
⑤软件的成本不断提高。
⑥软件开发生产率的提高赶不上硬件的发展和应用需求的增长。
总之,可以将软件危机归结为成本、质量、生产率等问题。
45、为了消除软件危机,通过认真研究解决软件危机的方法,认识到软件工程是使计算机软件走向工程科学的途径,逐步形成了软件工程的概念,开辟了工程学的新兴领域-软件工程学。软件工程就是试图用工程、科学和数学的原理与方法研制、维护计算机软件的有关技术及管理方法。
46、软件生命周期的主要活动阶段为:
(1)可行性研究和计划制定。确定待开发软件系统的开发目标和总的要求,给出它的功能、性能、可靠性以及接口等方面的可能方案,制定完成开发任务的实施计划。
(2)需求分析。对待开发软件提出的需求进行分析并给出详细定义,即准确地确定软件系统的功能。编写软件规格说明书及初步的用户手册,提交评审。
(3)软件设计。系统设计人员和程序设计人员应该在反复理解软件需求的基础上,给出软件的结构、模块的划分、功能的分配以及处理流程。在系统比较复杂的情况下,设计阶段可分解成概要设计阶段和详细设计阶段。编写概要设计说明书、详细设计说明书和测试设计初稿,提交评审。
(4)软件实现。把软件设计转换成计算机可以接受的程序代码。即完成源程序的编码,编写用户手册、操作手册等面向用户的文档,编写单元测试计划。
(5)软件测试。在设计测试用例的基础上,检验软件的各个组成部分。编写测试分析报告。
(6)运行和维护。将已交付的软件投入运行,并在运行使用中不断地维护,根据新提出的需求进行必要而且可能的扩充和删改。
软件设计阶段任务:设计软件系统结构、数据结构及数据库设计、编写概要设计文档、概要设计文档评审。其中,在数据结构及数据库设计任务中,需要结合算法设计,确定算法所必需的逻辑数据结构及其操作。
47、概要设计使用的工具是系统结构图。
48、详细设计使用的工具主要有:程序流程图,N-S图,PAD,HIPO。
结构化分析的常用工具有:数据流图(DFD)、数据字典(DD)、判定树和判定表等。
49、数据字典(Data Dictionary,简称DD)就是用来定义数据流图中的各个成分的具体含义的,它以一种准确的、无二义性的说明方式为系统的分析、设计及维护提供了有关元素的一致的定义和详细的描述。它和数据流图共同构成了系统的逻辑模型,是需求规格说明书的主要组成部分。
50、软件设计阶段任务:设计软件系统结构、数据结构及数据库设计、编写概要设计文档、概要设计文档评审。
其中,在数据结构及数据库设计任务中,需要结合算法设计,确定算法所必需的逻辑数据结构及其操作。
51、结构图是描述软件结构的图形工具,模块用矩形表示,模块的扇出是指模块直接调用的下级模块的个数,模块的扇入是指模块受了多少个直接上级模块的调用。扇出和扇入的最大值称为最大扇数。
52、结构图的深度表示控制的层数。同一层上所有结点的所有子结点都在下一层,该系统结构共三层,系统深度就为3。
53、扇入,是直接调用该模块的上级模块的个数,扇入的大小代表着该模块被调用的频繁度,扇入越大表明该模块使用度高,扇入小表明该模块被调用的机率低
54、软件的宽度是指软件结构同一层次上模块的总个数的最大值。
55、关于软件工程的定义,国标(GB)中指出,软件工程是应用于计算机软件的定义、开发和维护的一整套方法、工具、文档、实践标准和工序
56、软件工程包括3个要素,即方法、工具和过程
57、软件工程从根本上来说,其目的是研究软件的开发技术
58、软件根据应用目标的不同,是多种多样的。软件按照功能可以分为:应用软件、系统软件、支撑软件(工具软件)。应用软件是为解决特定领域的应用而开发的软件。如:数据库管理系统、财务管理系统,所以选项B、C错误;系统软件是计算机管理自身资源,提高计算机使用效率并为计算机用户提供各种服务的软件。如:操作系统,所以选项D错误;支撑软件是介于系统软件和应用之间,协助用户开发软件的工具性软件,包括辅助和支持开发和维护应用软件的工具软件,如需求分析工具软件,设计工具软件,编码工具软件,测试工具软件,维护工具软件等,也包括辅助管理人员控制开发进程和项目管理的工具软件。
59、系统设计人员和程序设计人员应该在反复理解软件需求的基础上,给出软件的结构、模块的划分、功能的分配以及处理流程。在系统比较复杂的情况下,设计阶段可分解成概要设计阶段和详细设计阶段。编写概要设计说明书、详细设计说明书和测试计划初稿,提交评审。