第一篇:软件工程复习资料
软件工程复习资料
一、熟悉和理解
(一)软件工程概述
1.螺旋模型是在瀑布模型和增量模型的基础上增加了风险分析活动,关键不足在于不能适应需求的动态变更。2.软件不只是用程序设计语言(如PASCAL ,C,VISUAL BASIC 等)编写的程序,编写程序代码只是软件开发的一个部分。
3.快速原型模型可以有效地适应用户需求的动态变化。4.生产高质量的软件产品是软件工程的首要目标。5.软件开发人员对用户需求的理解有偏差,这将导致软件产品与用户的需求不一致,是产生软件危机的一个原因。6.开发一个软件项目总存在某些不确定性,即存在风险.有些风险如果控制得不好,可能导致灾难性的后果。7.缺乏处理大型软件项目的经验.是产生软件危机的一个原因。
8.瀑布模型本质上是一种线性顺序模型,增量模型本质上是一种快速原型模型。
9.可行性分析是在系统开发的早期所做的一项重要的论 证工作,它是决定该系统是否开发的决策依据,因必须给出可行或不可行的回答。
10. 软件生存周期模型包括瀑布模型、快速原型模型、增量模型、螺旋模型、喷泉模型等。11. 软件是一种逻辑产品。
12. “软件危机”是指软件开发和维护中出现的一系列问题,成本高、生产率低、质量得不到保证、需求不能充分理解都是是软件危机的表现形式。
13. 原型化方法是用户和设计者之间执行的一种交互过程,适用于需求不确定性高的系统。
14. 软件工程中的各种方法是完成软件工程项目的技术手段,它们支持软件工程的各个阶段.15. 研究开发所需要的成本和资源是属于可行性研究中的经济可行性研究的一方面。
16. 快速原型模型的主要特点之一是及早提供工作软件。
17. 软件工程由方法,工具和过程三部分组成,称软件工程的三要素.18. 基于计算机系统的软件要素中的软部件由程序,数据和文档组成.19. 瀑布模型是以文档为驱动、适合于软件需求明确的软件项目的模型。20. 螺旋模型是风险驱动的,而瀑布模型是文档驱动的。21. 从事物的组成部件及每个部件的属性,功能来认识事物.这种方法被称为面向对象的方法。
22. 从事物的属性侧面来描述事物的方法就是面向数据的方法。
23. 面向对象(Object Oriented)方法是将现实世界的事物以对象的方式映射到计算机世界的方法。
(二)软件项目管理
24. 一个好的开发人员应具备的素质和能力包括善于与周围人员团结协作,建立良好的人际关系,善于听取别人的意见,具有良好的书面和口头表达能力。
25. 为了充分发挥开发人员的潜力,缩短工期,软件工程项目的任务分解与安排应尽力挖掘可并行开发的部分。26. 任务是管理有关项目工作的最小的单元。27. 任务是一项已经定义得很好的工作,该工作可分配给一个项目参与者或分配给一个团队。
(三)需求分析
28. 软件需求是指用户对目标软件系统在功能,性能,行为,设计约束等方面的期望.29. 数据流图就是用来刻画数据流和转换的信息系统建 3 模技术。
30. 用户对软件需求的描述不精确,往往是产生软件危机的原因之一。
31. 需求分析阶段的成果主要是需求规格说明,该成果与软件设计,编码,测试直至维护都有较大关系。
32. 需求规格说明书是需求分析阶段最重要的技术文档之一
33. 需求分析最终结果是产生需求规格说明书 34. DFD中的每个加工至少需要一个输入流和一个输出流。
35. 需求分析阶段的任务是确定软件系统的功能 36. 需求分析的任务不包括系统设计。
37. 需求规格说明书的作用包括:作为软件验收的依据、用户与开发人员对软件要做什么的共同理解、作为软件设计的依据等
38. 在结构化分析方法中,用以表达系统内数据的运动情况的工具有数据流图。
39. 结构化分析方法(SA)是一种面向数据流的需求分析方法.
40. 验证软件需求正确性的四个方面包括一致性、完整性、现实性、有效性。
41. 在面向对象软件开发方法中,类与类之间主要有继 承和聚集的关系。
42. 面向对象的特征主要包括多态性、继承性、封装性。43. 软件开发过程中,抽取和整理用户需求并建立问题域精确模型的过程叫面向对象的分析。
(四)概要设计
44. 软件概要设计的主要任务就是软件结构的设计,面向数据流的设计方法是将数据流映射成软件结构。45. 软件模块之间的耦合性越弱越好。
46. 模块化,信息隐藏,抽象和逐步求精的软件设计原则有助于得到高内聚,低耦合度的软件产品。
47. 内聚度标志一个模块内部各成分彼此结合的紧密程度,按其高低程度可分为七级,内聚度越高越好。
48. 在模块耦合性类型中,模块之间独立性最差的类型是内容耦合,在实际编程时一定要避免出现,为了提高模块的独立性,模块之间最好是数据耦合。模块耦合越弱,则说明模块的独立性强。
49. 在软件结构图中,扇入数大说明该模块的重用率高。50. 为了提高模块的独立性,模块内部最好是功能内聚,模块的内聚性最高的是功能内聚。
51. 软件结构图中,模块框之间若有直线连接,表示它们之间存在调用关系一个软件的宽度是指其控制的跨度,一个 软件的深度是指其控制的层数,一个模块的扇入数是指能直接控制该模块的模块数,一个模块的“扇出数”是指该模块直接控制的其他模块数。
52. 当一个模块直接使用另一个模块的内部数据,这种模块之间的耦合为内容耦合。
53. 在进行软件结构设计时应该遵循的最主要的原理是模块独立原理。
54. 变换型数据处理问题的工作过程大致分为三步,即取得数据,变换数据和给出数据。
55. 按数据流的类型,结构化设计方法有两种设计策略,它们是变换分析设计和事务分析设计。
56. 衡量模块的独立性的两个定性的度量标准是内聚度和耦合度。
(五)详细设计
57. 软件详细设计的主要任务是对算法和数据结构进行的详细设计,软件详细设计主要采用的方法是结构化程序设计。
58. 过程描述语言可以用于算法和数据结构的描述。59. 结构化程序设计方法是使用三种基本控制结构构造程序,程序的三种基本控制结构是顺序,选择和循环。60. 在详细设计阶段,经常采用的工具有盒图、PAD图、PDL语言、判定表和判定树等工具,其中PAD图为自动分析数据提供了有力的工具.61. 盒图也称为N-S图,种表达方式取消了流程线,它强迫程序员以结构化方式思考和解决问题.62. 当模块中包含复杂的条件组合,只有判定表和判定树能够清晰地表达出各种动作之间的对应关系.63. 模块的内部过程描述就是模块内部的算法设计,它的表达形式就是详细设计语言.
64. 程序的三种基本控制结构的共同特点是只有一个入口和一个出口。
65. 调试的目的是确定错误的位置和引起错误的原因,并加以改正。
66. 汇编语言是面向机器的,可以完成高级语言无法完成的特殊功能,如与外部设备之间的一些接口工作。
(六)编码、测试、维护
67. 以详细设计说明书为输入,将该输入用某种程序设计语言翻译成计算机可以理解并最终可运行的代码的过程叫编码过程。
68. 面向对象的开发方法中,UML是面向对象技术领域内占主导地位的标准建模语言。
69. 软件测试是执行程序发现并排除程序中潜伏的错误 的过程。
70. 是对软件规格说明,软件设计和编码的最全面也是最后的审查。
71. 软件测试并不能发现软件中所有潜伏的错误,通过软件测试没有发现错误,不能说明软件是正确的。72. 动态测试方法中根据测试用例的设计方法不同,分为黑盒和白盒两类.73. 黑盒测试无需考虑模块内部的执行过程和程序结构,只要了解模块的功能即可。
74. 自顶向下的渐增式测试初期一般不可以并行进行。75. 在现实项目中,路径测试和穷举测试是经常难以实现。
76. 单元测试的测试对象是程序模块。
77. 计算机辅助静态分析是软件测试方法中的静态测试方法之一。
78. 基本路径测试、循环覆盖测试、逻辑覆盖测试属于白盒测试技术。
79. 等价类划分、边界值分析测试等属于黑盒测试技术。80. 逻辑覆盖一般包括语句覆盖、判定覆盖、条件覆盖、条件/判定覆盖、边覆盖、路径覆盖等。
81. 将软件组装成系统的一种测试技术叫集成测试。82. 软件测试中根据测试用例设计的方法的不同可分为 黑盒测试和白盒测试两种,它们都属于动态测试。83. 在设计测试用例时,边界值分析是用的最多的一种黑盒测试方法。
84. 在进行软件测试时,首先应当进行单元测试,然后再进行集成测试,最后再进行有效性测试。
85. 质量保证是为了保证产品和服务充分满足消费者要求的质量而进行的有计划.有组织的活动,质量保证是为了使用产品实现用户要求的功能。
86. 在结构测试用例设计中,有语句覆盖,条件覆盖,判定覆盖(即分支覆盖),路径覆盖,其中路径覆盖是最强的覆盖准则.
87. 自顶向下结合的渐增式测试法,在组合模块时有两种组合策略:深度优先策略和宽度优先策略。
88. 为了提高测试的效率,应该选择发现错误可能性大的数据作为测试数据。
89. 使用白盒测试方法时,确定测试数据应根据程序的内部逻辑和指定的覆盖标准。
90. 黑盒测试在设计测试用例时,主要需要研究需求规格说明与概要设计说明。
91. 软件按照设计的要求,在规定时间和条件下达到不出故障,持续运行的要求的质量特性称为可靠性。92. 软件维护是软件生命周期的最后一个阶段,软件生 命周期中所花费用最多的阶段是软件维护。
93. 在软件维护的内容中,有四种维护:校正性维护,完善性维护,适应性维护,预防性维护,其中占维护活动工作量比例最高的是完善性维护,最少的一般是预防性维护。94. 为改正软件系统中潜藏的错误而进行的维护活动称为纠错性维护。
95. 根据用户在软件使用过程中提出的建设性意见而进行的维护活动称为完善性维护,完善性维护可以提高或完善软件的性能。
96. 为适应软件运行环境的变化而修改软件的活动称为适应性维护。
97. 为了进一步改善软件系统的可维护性和可靠性,并为以后的改进奠定基础的软件维护称为预防性维护。98. 软件中因修改软件而造成的错误称为维护的副作用。
99. 非结构化维护用于软件的配置中只有源代码维护。100. 维护中,因误删除一个标识符而引起的错误是编码副作用。
101. 软件可维护性,是指软件产品交付使用后,在实现改正潜伏的错误,改进性能等属性,适应环境变化等方面工作的难易程度。
102. 软件可靠性是指在给定的时间间隔内,程序成功运 行的概率。
103. 由于维护或在维护过程中其他一些不期望的行为引入的错误称为维护的 副作用。
104. 软件可修改性,是指允许对软件系统进行修改而不增加其复杂性,105. 所有软件维护申请报告要按规定方式提出,该报告也称软件问题报告。
二、掌握和记忆
(一)概念
1. 耦合性:也称块间联系,指软件系统结构中各模块间相互联系紧密程度的一种度量。
2. 软件生存周期模型:是描述软件开发过程中各种活动如何执行的模型.3. 数据字典(DD):是用来定义数据流图中的各个成分的具体含义的.它以一种准确的,无二义性的说明方式为系统的分析,设计及维护提供了有关元素的一致的定义和详细的描述.4. 内聚性:是模块独立性的衡量标准之一,它是模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量.5. 白盒测试:又称结构测试,是已经知道产品内部工作过程,检验产品内部动作是否按规定正常使用的测试方法。
6. 软件生存周期:就是从提出软件产品开始,直到该软件产品被淘汰的全过程,具体包括问题定义、可行性研究、需求分析、概要设计、详细设计、编码与测试、运行和维护。
7. 模块化:就是将程序划分为若干个独立模块的这样一个过程,其中每个模块完成一个特定子功能,每个模块既是相对独立的,又是相互联系的,它们共同完成系统指定的各项功能。
8. 桩模块:用于代替所测模块调用的子模块,桩模块可以做少量的数据操作。
9. 驱动模块:用于模拟被测模块的上级模块。它接收测试数据,把这些数据传送给所测模块,最后再输出实际测试结果。
10. 模块:模块是一个拥有明确定义的输入、输出和特性的程序实体。
11. 模块独立性:概括了把软件划分为模块时要遵守的准则,也是判断模块构造是否合理的标准,同时也是模块化、抽象及信息隐藏概念的直接产物。
12. 软件工程:即运用工程学的基本原理和方法来组织和管理软件生产。13. 程序的可移植性:指把一个软件(或程序)从一台计算机环境移植到另一台计算机环境的容易程度。
14. 模块的作用范围:一个模块的作用范围是指受该模块内一个判定影响的所有模块的集合。
15. 信息隐藏:信息隐蔽是指在设计和确定模块时,使得一个模块内包含的信息(过程或数据),对于不需要这些信息的其他模块来说是不能访问的。
16. 集成测试也称组装测试或联合测试。是指在单元测试的基础上,将所有模块按照设计要求组装成一个完整的系统进行的测试。组装模块的方式有两种:渐增式测试和非渐增式测试。
17. 类:某些对象共同特征(属性和操作)的表示。18. 对象:是现实世界中个体或事物的抽象表示,是其属性和相关操作的封装。
19. 继承:是现实世界中遗传关系的直接模型,它表示类间的内在联系以及对属性和操作的共享。
20. 聚集:现实世界中部分-整体关系的模拟。21. 消息:对象与外部世界相互关联的唯一途径。
(二)原理
1、螺旋模型的适应场合:支持需求不明确,特别是大型软件系统的开发,并支持面向规格说明,面向过程,面向对象 等多种软件开发方法,是一种具有广阔前景的模型。
2、软件开发风险分析实际上就是贯穿于软件工程过程中的一系列风险管理步骤,它包括以下内容:
1)风险标识; 2)风险估算; 3)风险评价; 4)风险驾驭和监控。
3、需求分析的任务是确定待开发的软件系统“做什么”.具体任务包括确定软件系统的功能需求,性能需求和运行环境约束,编制软件需求规格说明书,软件系统的验收测试准则和初步的用户手册。
4、快速原型技术的基本思想是:在软件开发的早期,快速开发一个目标软件系统的原型,让用户对其进行评价并提出修改意见,然后开发人员根据用户的意见对原型进行改进。
5、原型法模型一般适应的场合:它适合于那些不能预先确切定义需求的软件系统的开发,更适合于那些项目组成员(包括分析员,设计员,程序员和用户)不能很好交流或通信有困难的情况。
6、软件复杂性度量的主要参数极其含义:1)规模:总共的指令数或源程序行数;2)难度:通常由程序中出现的操作数的数目所决定的量来表示;3)结构:通常用与程序结构有 关的度量来表示;4)智能度:即算法的难易程序。
7、非渐增式测试与渐增式测试的区别:
非渐增式测试:分别测试每个模块,再放在一起结合成所要的程序;
渐增式测试:将下一个要测试的模块同已测试好的模块放在一起测试,类推结合成所要的程序;
优缺点:
渐增式测试可以较早发现模块间的接口错误 非渐增式测试最后才组装,因此错误发现得晚。 非渐增式测试中发现错误后难以诊断定位 渐增式测试中,出现的错误往往跟最新加入的模块有关。
渐增式测试在不断集成的过程中使模块不断在新的条件下受到新的检测,测试更彻底。 渐增式测试较非渐增式测试费时。 非渐增式测试可以同时并行测试所有模块,能充分利用人力。
8、软件工程目标:是研制、开发与生产出具有良好软件质量和费用合算的产品。软件工程的内容是:1)采用工程化方法和途径来开发与维护软件;2)应该开发和使用更好的软件工具;3)采取必要的管理措施。
9、模块的内聚性包括的一般类型:(1)偶然内聚(2)逻辑内聚(3)时间内聚(4)通信内聚(5)顺序内聚(6)功能内聚
10、软件测试的几个主要步骤:
1)模块测试 2)子系统测试 3)系统测试 4)验收测试 5)平行运行
11、软件测试和调试的目的的区别:测试的目的是判断和发现软件是否有错误,调试的目的是定位软件错误并纠正错误。
12、软件的可行性研究的目的:就是用最小的代价在尽可能短的时间内确定该软件项目是否能够开发,是否值得去开发。其实质是要进行一次简化、压缩了的需求分析、设计过程,要在较高层次上以较抽象的方式进行需求分析和设计过程。
13、文档在软件工程中的作用:(1)提高软件开发过程的能见度;(2)提高开发效率;
(3)作为开发人员阶段工作成果和结束标志;(4)记录开发过程的有关信息便于使用与维护;(5)提供软件运行、维护和培训有关资料;(6)便于用户了解软件功能、性能。
(三)运用
1、某单位工卡包含信息如下:
该卡包括工号、英文名、年龄、性别、部门,工号从001至200,英文名是任意长度为从3至20的字母,年龄范围1至200,性别男或女,部门只能是“技术部”、“市场部”、“财务部”、“行政部”中的一个。
在数据字典中,工卡的数据条目定义如下:
工卡 = 工号 + 英文名 + 年龄 + 性别 + 部门 工号 = 001..200 英文名 = 3{字母}20 年龄 = 1..200 性别 = [男|女] 部门 = [技术部|市场部|财务部|行政部] 解析:先明确要说明数据条目是谁,由哪些分量组成,这些分量是“+”的关系,还是“或”的关系,如本例的第一条是“+”的关系,然后分析它的组成是什么,再对其各个组成部分依次说明,如本例的第二至六条,要一条一条地写出来,不要都写到一条中。
2、能根据文字描述画出数据流图。
3、掌握变换型和事务性数据流图转化为系统结构图的原理,能根据给定的数据流图画出系统结构图。
第二篇:软件工程复习资料
选择题:
1、软件是一种(B)产品
A、有形
B、逻辑
C、物质
D、消耗
2、软件的主要功能和结构是在(A)阶段觉决定的
A、分析设计
B、编程
C、测试
D、维护
3、软件工程学的目的应该是解决软件生成的(D)问题
A、提高软件开发效率
B、使软件生产工程化
C、消除软件的生产危机 d、加强软件的质量保证
4、研究开发所需要的成本和资源是属于可行性研究中的(B)研究的一方面
A、技术可行性
B、经济可行性
c、社会可行性
d、法律可行性
5、经济可行性研究的范围包括(C)
A、资源有效性
b、管理制度
c、效益分析
d、开发风险
6、系统流程图是描述(D)的工具
A、逻辑系统
b、程序系统
c、体系结构
d、物理系统
7、可行性研究的目的是用最小的代价在尽可能短的时间内确定问题的(A)
A、能否可解
b、工程进度
c、开发计划
d、人员配置
8、需求分析阶段的任务是确定(D)
A、软件开发方法
b、软件开发工具
c、软件开发费
d、软件系统的功能
9、系统流程图用于可行性分析中(A)的描述
A、当前运行系统
b、当前逻辑模型
c、目标系统
d、新系统
10、数据字典是用来定义(D)中的各个成分的具体含义的
A、流程图
b、功能结构图
c、系统结构图
d、数据流图
11、在数据流图中,符号方框表示(B)
A、变换/加工
b、外部实体
c、数据流
d、数据存储
12、数据字典是对数据定义信息的集合,他所定义的对象都包含于(A)
A、数据流图
b、程序框图
c、软件结构
d、方框图
13、数据流图是表示软件模型的一种图示方法,画数据流图应遵循的原则是(B)
A、自底向上、分层绘制、逐步求精
B、自顶向下、分层绘制、逐步求精
C、自定向下、逐步求精
D、自顶向上、分层绘制
14、划分模块时,一个模块的(A)
A、作用范围应在其控制范围之内
b、控制范围应在其作用范围内
C、作用范围与控制范围互不包含
d、作用范围矛控制范围不受任何限制
15、结构化设计方法在软件开发中,用于(B)
A、测试用例设计
b、概要设计
c、程序设计
d、详细设计
16、在软件结构图中,模块框之间若有直线连接,表示他们之间存在着(A)关系
A、调用
b、组成 c、连接
d、顺序执行
17、在进行软件结构设计时应遵循的最主要的原理是(C)
A、抽象
b、模块化
c、模块独立
d、信息隐藏
18、设计软件结构一般不确定(C)
A、模块功能
b、模块接口
c、模块内的局部数据
d、模块间的调用关系
19、在软件的结构化设计方法中,一般分为概要设计和详细设计两阶段,其中详细设计主要要建立(D)
A、软件结构
b、软件过程
c、软件模型
d、软件模块 20、软件详细设计阶段的任务是(A)
A、算法设计
b、功能设计
c、调用关系设计
d、输入/输出设计
21、软件详细设计阶段主要采用的工具是(B)
A、DFD
B、PAD
C、DD
D、SA
22、软件详细设计阶段采用自左向右的二维图形结构描述算法的是(C)
A、IPO
B、JSP
C、PAD
D、JSD
23、Jackson方法以(B)为中心
A、控制
b、数据结构
c、活动事件
d、数据流
24、详细设计与概要设计衔接的图形工具是(D)
A、DFD图
b、程序图
c、PAD图
d、SC图
25、在确定属性时,所有(B)事候选属性
A、动词
b、名词
c、修饰性名词词组
d、词组
26、动态模型的构成不包括(C)
A、事件
b、关联
c、操作
d、状态
27、对象模型的描述工具是(C)
A、状态图
b、数据流图
c、对象图
d、结构图
28、通过执行对象的操作改变对象的属性,但他必须通过(B)来执行
A、接口
b、消息
c、信息
d、操作
29、描述对象的行为,反映对象的状态与事件的关系是(A)
A、状态图
b、对象图
c、流程图
d、结构图 30、软件测试可能发展软件中的(),但不能证明软件(B)
A、所有错误、没有错误
b、错误、没有错误
C、逻辑错误、没有错误
d、设计错误,没有错误
31、发现错误能力最弱的是(A)
A、语句覆盖
b、判定覆盖
c、条件覆盖
d、路径覆盖
32、从已经发现故障的存在到找到准确的故障位置并确定故障的性质,这一过程称为(C)
A、逻辑检测
b、故障排除
c、调试
d、测试
33、超出软件工程范围的测试是(D)
A、单元测试
b、集成测试
c、确定测试
d、系统测试
34、下列文档与维护人员有关的有(C)
A、软件需求说明书
b、项目开发计划
c、概要设计说明书
d、操作手册
35、在软件生存周期中,工作量所占比例最大的阶段是(D)阶段
A、需求分析
b、设计
c、测试
d、维护
36、软件维护困难的主要原因是(C)
A、费用低
b、人员少
c、开发方法的缺陷
d、维护难
37、维护阶段的文档是(C)
A、软件需求说明
b、操作手册
c、软件问题报告
d、测试分析报告
填空题:
1、在软件的生存周期开发阶段要经过概要设计、详细设计、软件设计三个步骤。
2、软件工程师指导软件开发和维护的一门工程学科,采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,就是是软件工程。
3、软件危机是在软件发展的第二阶段末期。
4、软件生存期可分为三个大阶段:软件开发、使用、维护。
5、技术可行性研究包括风险分析、资源分析、技术分析
6、可行性研究实质上进行一次简化、压缩了的需求分析和设计。
7、需求分析的步骤有:调查研究、分析与综合、书写文档、需求分析评审。
8、瀑布模型是以文档为驱动、适合于需求很明确的软件项目的模型。
9、模块之间联系越紧密,其耦合性就越强,模块的独立性就越差。
10、将软件系统划分模块时,要尽量做到高内聚低耦合,提高模块的独立性。
11、数据流图一般可分为交换型和事物型两类。事物型的DFD是一个顺序结构。
12、软件结构从形态上总的考虑是:顶层扇出数较高一些,中间层扇出数较少一些,底层扇入数较少一些。
13、一个模块的作用范围是指模块内一个判定影响的所有模块的集合。
14、软件的详细设计可以用来采用图形、表格、语言三种形式描述工具表示模块的处理过程。
15、在详细设计阶段的文档是详细设计说明书,他是程序运行过程的描述。
16、程序流程图又称程序框图,他是软件开发者最熟悉的一种算法表达工具。
17、对象之间通过接口互相联系,以模拟现实世界中的不同事件彼此之间的联系。
18、类的实例化是定义类的对象。
19、子类只继承一个父类的属性和操作,称为单重继承。20、类具有操作,它是对象的行为的抽象。
21、在用例图中用例之间也存在一定的联系,用例之间通常有执行者、用例和用例之间三种关系。
22、在UML用例图中,椭圆表示用例,方框表示系统,小人状图案表示执行者
23、软件测试过程按测试的先后次序可先分为四个步骤进行:单元测试、集成测试、确定测试和系统测试,最后进行验收测试。
24、软件测试的种类大致可以分为人工测试和基于计算机的测试。基于计算机的测试还有两种方法,分别是黑盒测试和白盒测试。
25、软件测试是为了发现错误执行程序的过程。
26、所有软件维护申请报告要按规定方式提出,该报告也称软件问题报告。
27、维护阶段是软件生存周期中时期最长的阶段,花费精力和费用最多的阶段
名词解释:
软件工程:指用科学的原理和理论定义,开发、维护软件的学科。
软件危机:指计算机软件的开发和维护过程中所遇到的一系列严重问题
瀑布模型:是将软件生存各个活动规定为依线性顺序联接的若干阶段的模型。它包括可行性分析、项目开发计划、需求分析、概要设计、详细设计、编码、测试和维护。它规定了由前至后,相互衔接的固定次序,如同瀑布流水,逐级下落。
可行性研究:指对项目有关的运行、经济、技术、法律和开发方案可行性等各方面研究可行性。
需求分析:需求分析是指开发人员要准确理解用户的需求,进行细致的调查分析,将用户非形式的需求陈述转化成完整的需求定义,再由需求定义转换到相应的形式功能规约(需求规格说明)的过程。
数据流图:一种图形化技术,它描绘信息流和数据从输入移动到输出过程中所经受的变
换
耦合性: 耦合性也称块间关系,指软件系统结构中各模块间相互联系紧密程度的一种度量
简答题:
10、软件工程有哪些原则?
答:
1、分解
2、抽象和信息隐蔽
3、一致性
4、确定性
5、完备性
6、可严验证性
11、简述软件工程目标和面临的主要问题?
答:软件工程是一门工程性的学科,其目标主要是:付出较低的开发成本;达到要求的软件功能;取得较好的软件性能;开发的软件易于移植;需要较低的维护费用;能按时完成开发任务,及时交付使用;开发的软件可靠性高。
面临的主要问题是:软件费用 软件可靠性 软件维护 软件生产率 软件重用。
第三篇:软件工程复习资料
1.软件是(程序及其文档)。
2.从事物的组成部件及每个部件的属性、功能来认识事物。这种方法被称为(面向对象)的方法。
3.程序的三种基本控制结构是(顺序、选择和重复)。
4.根据用户在软件使用过程中提出的建设性意见而进行的维护活动称为(改善性维护)。
5.面向对象的分析方法主要是建立三类模型,即(对象模型、动态模型、功能模型)。
6.可行性研究的步骤中不包括的内容是(导出新系统高层逻辑模型)。7.软件测试的目标是(发现错误、降低错误带来的风险)。8.将软件组装成系统的一种测试技术叫(集成测试)。
9.技术可行性是可行性研究的关键,其主要内容一般不包括(人员分析)。10.软件生命周期中所花费用最多的阶段是(软件维护)11.(软件有效性)指软件系统的时间和空间效率。
12.在E-R模型中,包含以下基本成分(实体、联系、属性)。
13.软件工程中的各种方法是完成软件工程项目的技术手段,它们支持软件工程的(各个)阶段。
14.软件需求规格说明的内容不应包括(算法的详细描述)。
15.盒图也称为(N-S图)。这种表达方式取消了流程线,它强迫程序员以结构化方式思考和解决问题。
16.从事物的属性侧面来描述事物的方法就是(面向数据)的方法。9.以下不属于白盒测试技术的是(等价类划分)。
17.为改正软件系统中潜藏的错误而进行的维护活动称为(纠错性维护)18.一个模块的(扇入数)是指能直接控制该模块的模块数。19.软件的发展经历了(三)个发展阶段。
20.Jackson方法在需求分析阶段的主要步骤不包括(了解实体行为)。21.实践表明,确定发生错误的位置和内在原因所需的工作量几乎占整个调试工作量的(90)%。
22.软件工程过程中最普通应用的是瀑布模型,下面叙述哪个不是它的主要特征(严格定义需求)
23.(类)是对具有共同特征的对象的进一步抽象。13.为了进一步改善软件系统的可维护性和可靠性,并为以后的改进奠定基础的软件维护称为(预防性维护)。
24.为了进一步改善软件系统的可维护性和可靠性,并为以后的改进奠定基础的软件维护称为(预防性维护)。
25.按软件的功能进行划分,软件分为(系统软件)、支撑软件和应用软件。26.软件定义的基本任务是确定软件系统的工程(需求),也就是要搞清“做什么”。
27.数据流图(DFD)是一种图形化技术,描绘信息和数据从输入移动到输出的过程所经受的变换。
28.任何一个基于计算机系统都可以用输入-处理-输出(IPO)图来描述,它将该系统转换成一个信息变换模型。
29.纯收入衡量工程价值的经济指标之一,它等于(折合现价的总收入-当前投资额)30.以详细设计说明书为输入,将该输入用某种程序设计语言翻译成计算机可以理解并最终可运行的代码的过程叫(编码)过程。
31.验证软件需求正确性的四个方面是一致性、完整性、现实性和(有效性)。32.(概要设计),将软件需求转化为数据结构和软件的系统结构。33.改进软件结构提高模块独立性争取(低耦合、高内聚)。
34.软件定义过程可通过软件系统的可行性研究和(需求分析)两个阶段来完成。
35.(调试)的目的是确定错误的位置和引起错误的原因,并加以改正。36.面向(数据流)的设计方法是把信息流映射成软件结构。37.(软件维护)是软件生命周期的最后一个阶段。38.(软件测试)的目标是发现错误、降低错误带来的风险。
39.为了进一步改善软件系统的可维护性和可靠性,并为以后的改进奠定基础的软件维护称为(预防性维护)。
40.文档:一种数据媒体和其上所记录的(数据)。
41.程序的三种基本控制结构是(顺序)、(选择)、(重复)。42.软件定义的基本任务是确定软件系统的工程(需求),也就是要搞清“做什么”。
43.所有软件维护申请报告要按规定方式提出,该报告也称(软件问题)报告。
44.软件可靠性是指在给定的时间间隔内,程序成功运行的(概率)。45.软件工程过程中最普通应用的是(瀑布)模型。46.软件有效性,指软件系统的时间和(空间)效率。47.高级语言:独立于机器,面向过程或面向(对象)。
48.在软件测试中,已知产品内部工作过程,通过测试检验产品内部动作是否按照产品规格说明的规定正常进行的方法称为(白盒)测试法。
49.任何一个基于计算机系统都可以用输入-处理-输出(IPO)图来描述,它将该系统转换成一个信息变换模型。
50.面向对象的分析方法主要是建立三类模型,即对象模型、动态模型、(功能模型)。
51.软件工程由方法、工具和过程三部分组成,称为(软件工程)的三要素。52.软件工程由(方法)、工具和过程三部分组成,称为软件工程的三要素。53.软件测试的目标是(发现错误、降低错误带来的风险)。54.(耦合度)是对软件结构中模快间关联程度的一种度量。
55.在E-R模型中,包含的基本成分有(实体)、联系和属性。
56.软件定义过程可通过软件系统的(可行性研究)和需求分析两个阶段来完成。
57.机器语言、汇编语言:依赖于机器,面向(机器)
58.调试的目的是确定错误的位置和引起错误的原因,并加以(改正)。59.将下面的关系按继承关系、聚集关系或普通关联进行分类。
小汽车---------红旗轿车(继承)小汽车---------驾驶员(普通关联)班级------------学生(聚集)60.以详细设计说明书为输入,将该输入用某种程序设计语言翻译成计算机可以理解并最终可运行的代码的过程叫(编码)过程。61.软件维护是软件生命周期的(最后)一个阶段。62.将下列各项分为类或类的实例
我的汽车(实例)交通工具(类)63.用户对软件需求的描述不精确,往往是产生软件危机的原因之一。64.一个好的开发人员应具备的素质和能力包括善于与周围人员团结协作,建立良好的人际关系,善于听取别人的意见。
65.面向数据的设计方法的适用场合是具有明显的层次信息结构的应用如:企事业的信息管理系统;系统软件如操作系统等。
66.如果在分析阶段和设计阶段采用的是面向对象的方法,而在编码阶段采用的是面向过程的语言,那么这种翻译就比较困难。67.类是对具有共同特征的对象的进一步抽象。
68.软件测试是对软件规格说明、软件设计和编码的最全面也是最后的审查。69.软件开发、设计几乎都是从头开始,成本和进度很难估计。70.缺乏有力的方法学的指导和有效的开发工具的支持,这往往是产生软件危机的原因之一。
71.流程图也称为程序框图是最常用的一种表示法。
72.面向数据设计方法一般都包括下列任务:确定数据结构特征;用顺序、选择和重复三种基本形式表示数据等步骤。73.软件工程的出现主要是由于软件危机的出现。
74.结构化分析方法是一种预先严格定义需求的方法,它在实施时强调的是分析对象的数据流。
75.在信息系统的物理模型中,表示系统各个物理组成部分之间的数据流动情况的工具是系统流程图。
76.成本效益分析的目的是从经济角度评价开发一个项目是否可行。
第四篇:软件工程复习资料(推荐)
1.软件工程是什么?
软件工程是一项解决问题的工程活动,通过分析对问题进行研究, 将问题分解成可以理解并能够处理的若干小部分。
软件工程是一项建模活动,通过抽象找到事物的重要特征而忽略非 本质的细节,从不同侧面建立系统模型,有效地简化和处理复杂性。
软件工程是一项受软件工程原理指导的活动,软件工程师要捕捉和 理解一个系统的基本原理模型,并根据评价标准提出合理开发决策。
2.软件危机的概念
落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。软件危机泛指在计算机软件的开发和维护过程中所遇到的一系列严重问题。3.软件危机的表现
(1)软件开发费用和进度失控。(2)软件的可靠性差。
(3)生产出来的软件难以维护。
(4)用户对“已完成”的系统不满意现象经常发生。
(5)软件产品质量难以保证。
(6)软件文档不完备,并且存在文档内容与软件产品不符情况。4.软件危机的原因
软件本身的特点(如:软件规模庞大)导致开发和维护困难
软件开发的方法不正确
开发人员与管理人员重视开发而轻视问题的定义和软件维护 软件开发技术落后
5.软件管理技术差从软件开发危机的种种表现和软件开发作为逻辑产品的特殊性可以发现软件开发危机的原因:(1)用户需求不明确
(2)缺乏正确的理论指导(3)软件开发规模越来越大(4)软件开发复杂度越来越高
6.解决软件危机的途径:软件工程学 采用工程化方法和工程途径来研制与维护软件
采用先进的技术、方法与工具来开发与设计软件
采用必要的组织管理措施 7.软件生存周期
从一个软件开始立项起,到废弃不用止 一个周期被划分为计划、开发、运行3个时期
计划时期:问题定义——可行性分析 开发时期:需求分析——软件分析——软件设计——编码(测试)——测试 运行时期:软件维护8.软件可行性研究的步骤
(1)对当前系统进行调查和研究(2)导出新系统的解决方案(3)提出推荐的方案
(4)编写可行性论证报告(系统概述、可
行性分析、结论意见)9.面向对象开发的有点
(1)提高软件系统的可复用性
可复用性是面向对象开发的核心思路。软件复用的途径主要包括:创建类的实例对象;从已有类派生新的子类。派生类既可以继承其父类的属性、方法、也可以添加新的属性和方法。
(2)提高软件系统的可拓展性
开发人员可以根据对用户需求的理解,不断地修改及完善有关类的描述。既可以利用继承对新的类添加属性和方法;或者在征求用户意见后加入新的累以及类的方法与属性等。
(3)提高软件系统的可维护性
一个系统是由对象组成的。当系统的功能需求发生变化时,通常仅需修改与之相关的对象或者类。10.软件测试目的测试是一个为了发现错误而执行程序的过程 一个好的测试用例是指很可能找到迄今为至尚未发现的错误的测试用例
一个成功的测试是指揭示了迄今为至尚未发现的错误的测试 11.测试方法
黑盒测试:已经知道了软件产品应该具有的功能,通过测试来检验是否每个功能都能正常使用。这种测试方法又称功能测试。白盒测试:知道软件产品内部的工作过程,通过测试来检验产品内部动作是否按照规格说明书的规定正常进行。这种测试方法又称结构测试。
12.软件维护的定义
什么是软件维护
是指软件系统交付使用以后,为了改正错误或满足新的需要而修改软件的过程软件维护的种类:
纠错性维护:为了改正软件系统中的错误,使软件能够满足预期的正常运行状态的要求而进行的维护
适应性维护:为了使软件适应内部或外部环境变化,而去修改软件的过程
改善性维护:满足使用过程中用户提出增加新功能或修改已有功能的建议维护 预防性维护:为了提高软件的可维护性、可靠性等,为以后进一步改进软件打下良好基础而修改软件的活动
第五篇:软件工程复习资料-2016-3-25分析
第一章 软件工程概述
1﹑软件产品的特性是什么? 产品特性:
⑴是一种逻辑产品,与物质产品有很大的区别。
⑵软件产品的生产主要是研制,生产成本主要在开发和研制,开发研制完成后,通过复制就产生了大量软件产品。
⑶软件产品不会用坏,不存在磨损,消耗。
⑷生产主要是脑力劳动,还末完全摆脱手工开发方式,大部分产品是“定做”的 ⑸开发软件的费用不断增加,致使生产成本相当昂贵。2﹑软件生产有几个阶段?各有何特征?
⑴程序设计时代:这个阶段生产方式是个体劳动,使用的生产工具是机器语言,汇编语言。
⑵程序系统时代:这个阶段生产方式是小集团合作生产,使用的生产工具是高级语言,开发方法仍依靠个人技巧,但开始提出结构化方法。
⑶软件工程时代:这个阶段生产方式是工程化的生产,使用数据库﹑开发工具﹑开发环境﹑网络﹑分布式﹑面向对象技术来开发软件。3﹑什么是软件危机?主要表现在哪些方面? 软件开发技术的进步未能满足发展的要求。在软件开发中遇到的问题找不到解决的办法,问题积累起来,形态尖锐的矛盾,导致了软件危机。表现方面:
(1)用户对开发出的软件很难满意。(2)软件产品的质量往往靠不住。
(3)一般软件很难维护。
(4)软件生产效率很低。
(5)软件开发成本越来越大。
(6)软件成本与开发进度难以估计。
(7)软件技术的发展远远满足不了计算机应用的普及与深入的需要。4﹑什么是软件工程?它目标和内容是什么?
软件工程:就是用科学的知识工程和技术原理来定义,开发,维护软件的一门学科。
软件工程的目标:付出较低开发成本;达到要求的功能;取得较好的性能;开发的软件易于移植;只需较低的维护费用;能按时完成开发任务,及时交付使用;开发的软件可靠性高。
软件工程的内容:研究内容包括开发技术和开发管理两个方面。开发技术主要研究:软件开发方法,开发过程,开发工具和环境。开发管理主要研究:软件管理学,软件经济学,软件心理学。
5﹑软件工程面临的问题是什么?
软件工程需要解决的问题:软件的费用,可靠性,可维护性,软件生产率和软件的重用。6﹑什么是软件生存周期?它有哪几个活动?
软件生存周期:一个软件从提出开发要求开始直到该软件报废为止的整个时期。
包括:可行性分析和项目开发计划,需求分析,概要设计,详细设计,编码,测试,维护。7﹑什么是软件生存周期模型?有哪些主要模型?
生存周期模型:描述软件开发过程中各种活动如何执行的模型。对软件开发提供强有力的支持,为开发过程中的活动提供统一的政策保证,为参与开发的人员提供帮助和指导,是软件生存周期模型化技术的基础,也是建立软件开发环境的核心。
主要有:瀑布模型,增量模型,螺旋模型,喷泉模型,基于知识的模型,变换模型。8﹑什么是软件开发方法?有哪些主要方法?
使用早已定义好的技术集及符号表示习惯来组织软件生产的过程。通过使用成功的软件开发方法,在规定的投资和时间内,开发出符合用户需求的高质量的软件。软件开发方法是克服软件危机的重要方面之一,对软件工程及软件包产业的发展起了不可估量的作用。主要有:结构化方法,JACKSON方法,维也纳开发方法﹙VDM﹚,面向对象开发方法。
9、软件工程方法学包含3个要素分别是什么? 分别是:方法、工具和过程。
方法是完成软件开发的各项任务的技术方法,回答“怎样做”的问题; 工具是为运用方法而提供的自动的或半自动的软件工程支撑环境;
过程是为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。
10、什么是软件过程?
为了获得高质量软件所需要完成的一系列任务的框架,规定了完成各项任务的工作步骤。在完成开发任务时必须进行一些开发活动,并且使用适当的资源,在过程结束时将把输入转化为输出。
11、瀑布模型的特点及优点? 特点:
(1)各个阶段的顺序性和依赖性;
(2)划分逻辑设计与物理设计,尽可能推迟程序的物理实现;
(3)每个阶段必须完成规定的文档,对其中问题通过复审及早发现,及早解决。
优点:
可强迫开发人员采用规范的方法(例如,结构化技术);
严格地规定了每个阶段必须提交的文档;
要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。
12、螺旋模型的优点?
对可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质量作为软件开发的一个重要目标;
减少了过多测试(浪费资金)或测试不足(产品故障多)所带来的风险;
在螺旋模型中维护只是模型的另一个周期,在维护和开发之间并没有本质区别。
螺旋模型主要适用于内部开发的大规模软件项目。项目越大,风险也越大,因此,进行风险分析的必要性也越大。此外,只有内部开发的项目,才能在风险过大时方便地中止项目。
13、快速原型的分类、特点及使用策略? 分类:探索型、实验型、进化型
特点:尽快向用户提供一个可在计算机上运行的目标系统的模型,以便使用户和开发者在目标系统应该“做什么”这个问题上尽可能快地达成共识。 快速原型应该具备的第一个特点是“快速”;
快速原型应该具备的第二个特点是“容易修改”。原型的“修改—试用—反馈”过程可能重复多遍。
使用策略:废弃策略和追加策略。
14、软件工程的目标?
付出较低开发成本;达到要求的功能;取得较好的性能;开发的软件易于移植;只需较低的维护费用;能按时完成开发任务,及时交付使用;开发的软件可靠性高。
15、软件开发技术主要研究内容?
软件开发方法,开发过程,开发工具和环境。
16、软件开发管理主要研究内容?
软件管理学,软件经济学,软件心理学。
17、快速原型开发的步骤?
快速开发、需求、构造原形、原形、运行原形、评价原形、修改意见。
18、某计算机系统投入使用后、5年内每年可节省人民币 2O0O元,假设系统的投资额为5000元,年利率为 12%。试计算投资回收期和纯收入。
第二章 可行性研究
1、可行性研究的任务是什么? 可行研究的任务:首先需要进行概要的分析研究,初步确定项目的规模,目标,约束和限制。分析员再进行简要的需求分析,抽象出项目的逻辑结构,建立逻辑模型。从逻辑模型出发,经过压缩的设计,探索出若干种可供选择的解决方法,对每种解决方法都要研究它的可行性。主要从四个方面考虑:
⑴.技术可行性:一般要考虑的情况包括 开发的风险即设计出的系统能否达到要求的功能和性能;资源的有效性;相关技术的发展是否支持;⑵.经济可行性:进行开发成本的估算以及了解取得效益的评估,确定要开发的项目是否值得投资。
⑶.法律可行性:要开发的项目是否存在任何侵权问题。
(4).管理可行性:运行方式在用户组织内是否可行,现有管理制度﹑人员素质﹑操作方式是否可行。
2、可行性研究有哪些步骤? ⑴.确定项目规模和目标;
⑵.研究正在运行的系统;收集﹑研究﹑分析现有系统的文档资料,实地考察系统访问有关人员,然后描绘现有系统的高层系统流程图。
⑶.建立新系统的高层逻辑模型;使用数据流图和数据字典描述数据在系统中的流动和处理情况。
⑷.导出和评价各种方案;导出若干较高层次的物理解决方法,根据技术可行性﹑经济可行性﹑社会可行性进行评估,得到可行的解决方法。
⑸.推荐可行方案;进行成本~效益分析,决定该项目是否值得开发,若值得开发那么解决方案是什么,并且说明该方案可行的原因和理由。
⑹.编写可行性研究报告;将上述可行性过程的结果写成相应文档,即可行性研究报告。
3、可行性研究过程包括哪些?
1.复查系统规模和目标 2.研究目前正在使用的系统
45678示楼号,CNO表示课程号,G表示成绩。函数依赖有:(SNO,CNO)→G;SDEPT→SLOC;SNO→SDEPT,对关系进行规范化,达到三范式要求。
(1)SC(SNO,CNO,G)和
(2)S-D(SNO,SDEPT,)(3)S-L(SDEPT ,SLOC)
11、状态转换图
状态转换图(简称为状态图)通过描绘系统的状态及引起系统状态转换的事件,来表示系统的行为。提供了行为建模机制。
12、层次方框图
层次方框图用树形结构的一系列多层次的矩形框描绘数据的层次结构。树形结构的顶层是一个单独的矩形框,它代表完整的数据结构,下面的各层矩形框代表这个数据的子集,最底层的各个框代表组成这个数据的实际数据元素(不能再分割的元素)。
13、IPO图
IPO图是输入、处理、输出图的简称,能够方便地描绘输入数据、对数据的处理和输出数据之间的关系。
14、从哪些方面验证软件需求的正确性
(1)一致性所有需求必须是一致的,任何一条需求不能和其他需求互相矛盾。
(2)完整性需求必须是完整的,规格说明书应该包括用户需要的每一个功能或性能。
(3)现实性指定的需求应该是用现有的硬件技术和软件技术基本上可以实现的。对硬件技术的进步可以做些预测,对软件技术的进步则很难做出预测,只能从现有技术水平出发判断需求的现实性。
(4)有效性必须证明需求是正确有效的,确实能解决用户面对的问题。
第四章 总体设计
1、什么是总体设计?总体设计的任务是什么?
总体设计又称为概要设计或初步设计。确定系统功能是实现。基本任务是:建立软件系统结构(划分模块、定义模块功能、模块间的调用关系、定义模块的接口、评价模块的质量)、数据结构和数据库的设计(数据结构设计、概念设计、逻辑设计、物理设计)、编写概要设计文档(概要设计说明书、用户手册、数据库设计说明书、修订测试计划)。
2、总体设计分为哪两个阶段?
系统设计阶段,确定系统的具体实现方案;结构设计阶段,确定软件结构。
3、总体设计过程包括几个步骤?
1.设想供选择的方案 2.选取合理的方案 3.推荐最佳方案 4.功能分解 5.设计软件结构 6.设计数据库 7.制定测试计划 8.书写文档 9.审查和复审
4、模块化
是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。
5、模块化的优点
(1)模块化使软件容易测试和调试,因而有助于提高软件的可靠性。
011控制范围:是模块本身和它的下属模块的集合。作用范围:模块中的一个判定影响的所有模块的集合。作用范围应该在控制范围内。
33、什么是变换流?什么是事物流? 变换流由输入、变换(或处理)、输出三部分组成。
事物流某个加工将它的输入流分离成许多发散的数据流,形成许多加工路径,并根据输入选择其中一个路径来执行。
34、试述“变换分析”﹑“事物分析”设计步骤。变换分析设计步骤:
⑴确定变换中心,逻辑输入和输出。
⑵设计软件结构的顶层和第一层--变换结构:顶层的功能是完成所有模块的控制(名称应是系统名,以体现完成整个系统功能)
第一层至少有三种功能模块:输入﹑输出和变换模块
⑶设计中﹑下层模块,对第一层的模块自顶向下分解。
输入模块由两部分组成:接收数据﹑转换成调用模块所需信息。
输出模块由两部分组成:将数据转换成下属模块所需的形式﹑ 发送数据 变换模块:对每个基本加工建立一功能模块
⑷设计的优化 :输入部分求精,每个物理输入设置专门模块,以体现系统的外部接口。其它输入模块与转换数据模块都很简单时,可将它们合并。
输出部分求精:每个物理输出设置专门模块,其它也可适当合并。变换部分求精:根据设计准则,对模块适当合并。
事务分析的设计步骤:
⑴确定事务中心和加工路径
⑵设计顶层(事务机构)和第一层 顶层模块有两个功能:接收数据和根据事务类型调动相应处理模块。
⑶中下层模块的设计﹑优化工作与变换结构相同。
事务型软件结构包括两部分: 接收分支 发送分支出 通常包括一调度模块,当事务类型不多时,可与主模块合并。
35、请将下图的DFD转换为软件结构图。
解:
第五章 详细设计
1、详细设计的基本任务是什么?有那几种描述方法?
设计模块的数据结构、设计数据库的物理结构、设计模块的详细算法、其它(代码设计、输入/输出格式设计、人机对话设计)、编写详细设计说明书、评审。
程序流程图、PAD图、PDL。
2、请使用流程图、PAD图和PDL语言描述下列程序的算法。(1)在数据A(1)~A(10)中求最大数和次大数。
PDL语言描述:
GET(a[1],a[2],...a[10])
max=a[1];
max2=a[2];
FOR i=2 TO 10
IF a[i]>max
max2=max;
max=a[i];
ELSE
IF a[i]>max2
max2=a[i];
ENDIF
ENDIF
ENDFOR
PUT(max,max2)
END
3、输入三个正整数作为边长,判断该三条边构成的三角形是等边、等腰还是一般三角形。使用流程图、PAD图和PDL语言描述。解:如图:
PDL语言描述如下:
GET(a,b,c)
IF(a+b>c and b+c>a and c+a>b)
IF(a=b)
IF(a=c)
PUT(“等边三角形”)
ELSE
PUT(“等腰三角形”)
ENDIF
ELSE
IF(a=c)
PUT(“等腰三角形”)
ELSE
IF(b=c)
6(6)对发现错误较多的程序段,应进行更深入的测试。
(7)程序员应避免测试自己的程序。测试是一种“挑剔性”的行为,心理状态是测试自己程序的障碍。
2、什么是白盒测试法?有哪些覆盖标准?试对他们的检错能力进行比较? 答:白盒法测试法把测试对象看作一个打开的盒子,测试人员须了解程序内部结构和处理过程,以检查处理过程的细节为基础,对程序中尽可能多的逻辑路径进行测试,检验内部控制结构和数据结构是否有错,实际的运行状态与预期的状态是否一致。白盒法有下列几种覆盖标准:
语句覆盖:设计若干个测试用例,运行被测程序,使得每一可执行语句至少执行一次。 判定覆盖:设计若干个测试用例,运行被测程序,使得程序中每个判断的取真分支和取假分支至少经历一次。
条件覆盖:设计若干个测试用例,运行被测程序,使得程序中每个判断的每个条件的可能取值至少执行一次。
判定/条件覆盖:设计足够的测试用例,使得判断中每个条件的所有可能取值至少执行一次,同时每个判断中的每个条件的可能取值至少执行一次。
条件组合覆盖:设计足够的测试用例,运行被测程序,使得每个判断的所有可能的条件取值组合至少执行一次。
路径覆盖:设计足够的测试用例,覆盖程序中所有可能的路径。从上到下的覆盖标准其检错能力也从弱到强,其中条件组合发现错误的能力较强,凡满足其标准的测试用例,也必然满足前四种覆盖标准。在实际的逻辑测试中,一般以条件组合覆盖为主设计测试用例,然后再补充部分用例来达到路径覆盖的测试标准。
3、什么是黑盒测试法?采用黑盒技术测试用例有哪几种方法?这些方法各有什么特点? 答:黑盒测试法把被测试对象看成是一个黑盒子,测试人员完全不考虑程序的内部结构和处理过程,只在软件接口处进行测试,依据需求规格说明书,检查程序是否满足功能要求。采用黑盒技术测试用例的方法有:
等价类的划分、边界值分析、错误推测和因果图。
等价类的划分:是将输入数据按有效的或无效的(也称合理的或不合理的)划分成若干个等价类,测试每个等价类的代表值就等于对该类其他值的测试。这样就把漫无边迹的随机测试改为有针对性的等价类测试,用少量有代表性的例子代替大量测试目的相同的例子,能有效地提高测试效率。但这个方法的缺点是没有注意选择某些高效的、能够发现更多错误的测试用例。
边界值分析法:是将测试边界情况作为重点目标,选取正好等于、刚刚大于和刚刚小于边界值的测试数据。(边界情况是指输入等价类和输入等价类边界上的情况。)这种方法可以查出更多的错误,因为在程序中往往在处理边界情况时易发生错误。
错误推测法:是在测试程序时,人们根据经验或直觉推测程序中可能存在的错误,从而有针对性地编写检查这些错误的测试用例。 因果图:能够有效地检测输入条件的各种组合可能会引起的错误。它的基本原理是通过画因果图,把用自然语言描述的功能说明转换为判定表,最后为判定表的每一列设计一个测试用例。
这几种方法都不能提供一组完整的测试用例,在实际测试中应把各种方法结合起来使用。综合策略:就是联合使用上述几种测试方法,尽可能多地发现程序中的错误。
4、软件测试要经过哪些步骤?这些测试与软件开发各阶段之间有什么关系?
-***3-