软件工程期末复习

 软件工程期末题库整理

一、判断题

  1. 软件就是程序,编写软件就是编写程序。 X
  2. 软件危机的主要表现是软件需求增加,软件价格上升。 X
  3. 软件工程学科出现的主要原因是软件危机的出现。
  4. 瀑布模型的最大优点是将软件开发的各个阶段划分得十分清晰。 ( X )
  5. 原型化开发方法包括生成原型和实现原型两个步骤。 (X )
  6. 软件过程改进也是软件工程的范畴。 ( √ )
  7. 在软件开发中采用原型系统策略的主要困难是成本问题 ( X )
  8. 需求规格说明书在软件开发中具有重要的作用,它也可以作为软件可行性分析的依据。( X )
  9. 需求分析的主要目的是解决软件开发的具体方案 ( X )
  10. 需求规格说明书描述了系统每个功能的实现。 ( X )
  11. 非功能需求是从各个角度对系统的约束和限制,反映了应用对软件系统质量和特性的额外要求。 ( √ )
  12. 需求评审人员主要由开发人员组成,一般不包括用户。 ( X )
  13. 分层的DFD可以用于可行性分析阶段,描述系统的物理结构。 ( X )
  14. 信息建模方法是从数据的角度来建立信息模型的,最常用的描述信息模型的方法是E-R图。 ( √ )
  15. 用于需求分析的软件工具,应该能够保证需求的正确性,即验证需求的一致性、 完整性、现实性和有效性。 ( √ )
  16. 需求分析是开发方的工作,用户的参与度不大。 ( X )
  17. 软件设计说明书是软件概要设计的主要成果。 ( X )
  18. 软件设计中设计复审和设计本身一样重要,其主要作用是避免后期付出高昂代价。( √ )
  19. 划分模块可以降低软件的复杂度和工作量,所以应该将模块分得越小越好。 ( X )
  20. SD是一种面向数据结构的设计方法,强调程序结构与问题结构相对应。 ( X )
  21. 判定表的优点是容易转换为计算机实现,缺点是不能够描述组合条件。 ( X )
  22. 模块独立要求高耦合低内聚。 ( X )
  23. 程序设计语言是指编程时表现出来的特点、习惯、逻辑思维等。 ( X )
  24. 进行程序设计语言的选择时,首先考虑的是应用领域。 ( √ )
  25. 好程序的一个重要标准是源程序代码的逻辑简明清晰、易读易懂。 ( √ )
  26. 软件测试的目的是尽可能多地发现软件中存在的错误,将它作为纠错的依据。( √ )
  27. 测试用例由输人数据和预期的输出结果两部分组成。 ( √ )
  28. 白盒测试是结构测试,主要以程序的内部逻辑为基础设计测试用例。 ( √ )
  29. 软件测试的目的是证明软件是正确的。 ( X )
  30. 单元测试通常应该先进行人工走查,再以白盒法为主,辅以黑盒法进行动态测试。( √ )
  31. 白盒法是一种静态测试方法,主要用于模块测试。 ( X )
  32. 在等价分类法中,为了提高测试效率,一个测试用例可以覆盖多个无效等价类。( X )
  33. 发现错误多的模块,残留在模块中的错误也多。 ( √ )
  34. 类是指具有相同或相似性质的对象的抽象,类的具体化就是对象。
  35. 继承性是父类和子类之间共享数据结构和消息的机制,这是类之间的一种关系。 X
  36. 多态性增强了软件的灵活性和重用性,允许用更为明确、易懂的方式去建立通用软件, 多态性和继承性相结合使软件具有更广泛的重用性和可护充性。
  37. 类的设计过程包括:确定类,确定关联类,确定属性,识别继承关系。
  38. 用面向对象方法开发的软件系统,可维护性好。
  39. 模型是对现实的简化,建模是为了更好地理解所开发的系统。
  40. 多态性防止了程序相互依赖而带来的变动影响 X
  41. 类封装比对象封装更具体、更细致。 X
  42. 面向对象的继承性是子类自动共享父类数据结构和方法的机制。
  43. 面向对象的开发方法将过程作为最基本的元素,是分析问题、解决问题的核心。( X )
  44. 用例需求分析方法采用的是一种结构化的情景分析方法,即是一种基于场景建模的方法 ( X )
  45. 面向对象分析方法认为系统是对象的集合,是以功能和数据为基础的。 ( √ )
  46. 面向对象分析的核心在于建立一个描述软件系统的模型 ( X )
  47. 面向对象的分析过程主要包括三项内容:理解、表达和验证。 ( √ )
  48. 面向对象分析就是抽取和整理用户需求并建立问题域精确模型的过程。 ( √ )
  49. 面向对象的方法是以类作为最基本的元素,它是分析问题、解决问题的核心。( X )
  50. 功能模型是类似编译器之类系统的主要模型。 ( √ )
  51. 软件设计一般分为总体设计和详细设计,它们之间的关系是全局和局部。 ( √ )
  52. 在面向对象的设计中,应遵循的设计准则除了模块化、抽象、低耦合、高内聚以外,还有信息隐藏。 ( √ )
  53. 一个设计得好的软件系统具有低内聚、高耦合的特征。 ( X )
  54. 面向对象分析和设计活动是一个多次反复迭代的过程。 ( √ )
  55. 关系数据库可以完全支持面向对象的概念,面向对象设计中的类可以直接对应到关系数据库中的表。 (X)
  56. 用户界面设计对于一个系统的成功是至关重要的,一个设计得很差的用户界面可能导致用户拒绝使用该系统。 ( √ )
  57. 一般来说,应该尽量选用面向对象语言来实现面向对象分析、设计的结果。 ( √ )
  58. 良好的面向对象程序设计风格,既包括传统的程序设计风格准则,也包括为适应面向对象方法所特有的概念( 如继承性)而必须遵循的一些新准则。 ( √ )
  59. 面向对象测试用例的设计由软件的输入--处理--输出视图或单个模块的算法细节驱动。 ( X )
  60. 面向对象系统的确认测试是面向白盒的,并且可以应用传统的白盒方法完成测试工作。 ( X )
  61. UML是一种建模语言,是一种标准的表示,是一种方法。 ( X )
  62. 泳道是一种分组机制,它描述了状态图中对象所执行的活动。 ( √ )
  63. 类图中的角色是用于描述该类在关联中所扮演的角色和职责的。 ( √ )
  64. 类图用来表示系统中类与类之间的关系,它是对系统动态结构的描述。 ( X )
  65. 用例模型的基本组成部件是用例、角色和用例之间的联系。 ( √ )
  66. 用例之间有扩展、使用、组合等几种关系。 ( X )
  67. 顺序图描述对象之间的交互关系,重点描述对象间消息传递的时间顺序。 ( √ )
  68. 活动图显示动作及其结果,着重描述操作实现中所完成的工作,以及用例实例或类中的活动。 ( X )
  69. UML 语言支持面向对象的主要概念,并与具体的开发过程相关。 ( X )
  70. 部署图描述系统硬件的物理拓扑结构以及在此结构上执行的软件。 ( √ )
  71. 代码行技术是比较简单的定量估算软件规模的方法。 ( √ )
  72. 功能点技术依据对软件信息域特性和软件复杂性的评估结果,估算软件规模。( √ )
  73. 民主制程序员组的一个重要特点是,小组成员完全平等,享有充分民主,通过协商做出技术决策。 ( √ )
  74. 主程序员组的两个关键特性是专业化和层次性。 ( √ )
  75. 现代程序员组中,技术组长既对技术工作负责,又负责非技术事务。 ( X )
  76. 总体上说,软件工程文档可以分为用户文档、开发文档和管理文档三类。 ( √ )
  77. 文档是影响软件可维护性的决定因素 ( )
  78. 适应性维护是在软件使用过程中,用户会对软件提出新的功能和性能要求,为了满足这些新的要求而对软件进行修改,使之在功能和性能上得到完善和增强的活动。 ( X )
  79. 进行软件维护活动时,直接修改程序,无需修改文档。 ( X )
  80. 软件生命周期的最后一个阶段是书写软件文档。 ( X )

二、选择题

1.在下列选项中,( D )不是软件的特征。

A.系统性与复制性 B.可靠性与一致性

C.抽象性与智能性 D.有形性与可控性

2.软件危机的主要原因是( D )。

A.软件工具落后 B.软件生产能力不足

C.对软件的认识不够 D.软件本身的特点及开发方法

3.下列说法中正确的是( B )。

A.20世纪50年代提出了软件工程的概念

B.20世纪60年代提出了软件工程的概念

C.20 世纪70年代出现了客户机/服务器技术

D.20世纪80年代软件工程学科达到成熟

4.( C )是将系统化的、规范的、可定量的方法应用于软件的开发、运行和维护的过程,它包括方法、工具和过程三个要素。

A.软件生命周期 B. 软件测试 C.软件工程 D.软件过程

5.在下列选项中, (A )不属于软件工程学科所要研究的基本内容。

A.软件工程材料 B.软件工程目标 C.软件工程原理 D. 软件工程过程

6.软件工程的三要素( C)

A.技术、方法和工具 B. 方法、对象和类

C.方法、工具和过程 D.过程、模型和方法

7.用来辅助软件开发、运行、维护、管理、支持等过程中的活动的软件称为软件开发工具,通常也称为( D) 工具。

A. CAD B. CAI C. CAM D. CASE

8.软件生命周期模型不包括( B )

A.瀑布模型 B.用例模型 C.增量模型 D.螺旋模型

9.包含风险分析的软件工程模型是( D )

A.喷泉模型 B.瀑布模型 C.增量模型 D.螺旋模型

10.软件过程是( C )

A.特定的开发模型 B.一种软件求解的计算逻辑

C.软件开发活动的集合 D.软件生命周期模型

11.软件工程中描述生命周期的瀑布模型一般包括计划、需求分析、设计、编码、( D )、维护等几个阶段。

A.产品发布 B.版本更新 C.可行性分析 D.测试

12.软件开发的瀑布模型,一般都将开发过程划分为:分析、设计、编码和测试等阶段,一般认为可能占用人员最多的阶段是(C )

A.分析阶段 B.设计阶段 C.编码阶段 D.测试阶段

13.增量模型本质上是一种(C )

A.线性顺序模型 B.整体开发模型 C.非整体开发模型 D.螺旋模型

14.螺旋模型综合了(B ) 的优点,并增加了风险分析。

A.增量模型和喷泉模型 B.瀑布模型和演化模型

C.演化模型和喷泉模型 D.原型和喷泉模型

15. CMM模型将软件过程的成熟度分为5个等级。在( B) 使用定量分析来不断地改进和管理软件过程。

A.管理级 B.优化级 C.定义级 D.可重复级

16.需求工程的主要目的是(C )

A.系统开发的具体方案 B.进一步确定用户的需求

C.解决系统是做什么的问题” D.解决系统是如何做的问题"

17.需求分析的主要方法( C)

A.形式化分析方法 B.PAD 图描述

C.结构化分析SA方法 D.程序流程图

18.SA的主要描述手段有(B )

A.系统流程图和模块图 B.DFD图、数据词典、加工说明

C.软件结构图、加工说明 D.功能结构图、加工说明

19.画分层DFD的基本原则有( C)

A.数据守恒原则 B.分解的可靠性原则

C.子、父图平衡的原则 D.数据流封闭的原则

20.E-R模型中,包含以下基本成分(D )

A.数据、对象、实体 B.控制、关系、对象

C.实体、关系、控制 D.实体、属性、关系.

21.在下面的叙述中哪一个不是软件需求分析的任务? ( C )

A.问题分解 B.可靠性与安全性要求

C.结构化程序设计 D.确定逻辑模型

22.需求规格说明书的作用不应包括(D )

A.软件设计的依据 B.用户与开发人员对软件要做什么的共同理解

C.软件验收的依据 D.软件可行性研究的依据

23.软件需求规格说明书的内容不应该包括( B)

A.对重要功能的描述 B.对算法的详细过程描述

C.对数据的要求 D.软件的性能

24.软件需求分析阶段的工作,可以分为以下4个方面:对问题的识别、分析与综合、编写需求分析文档以及(C )

A.总结 B.阶段性报告

C.需求分析评审 D.以上答案都不正确

25.下述任务中, 不属于软件工程需求分析阶段的是(D )

A.分析软件系统的数据要求 B.确定软件系统的功能需求

C.确定软件系统的性能要求 D.确定软件系统的运行平台

26.进行需求分析可使用多种工具,(B )是不适用的。

A.数据流图 B. PAD C.状态转换图 D. 数据词典

27.在需求分析之前有必要进行(B ) 工作。

A.程序设计 B.可行性分析 C.ER分析 D.2NF分析

28.数据流图是进行软件需求分析的常用图形工具,其基本图形符号是(C )

A.输人、输出、外部实体和加工 B. 变换、加工、数据流和存储

C.加工、数据流、数据存储和外部实体 D. 变换、数据存储、加工和数据流

29.在结构化分析方法中,用以表达系统内数据的运动情况的工具是( A )

A.数据流图 B.数据字典 C.结构化语言 D.判定表与判定树

30.为了提高模块的独立性,模块之间最好是(C )

A.公共环境耦合 B.控制耦合 C.数据耦合 D.特征耦合

31.在面向数据流的软件设计方法中,一般将信息流分为( D)

A.数据流和控制流 B.变换流和控制流 C.事务流和控制流 D.变换流和事务流

32.模块独立性是软件模块化所提出的要求,衡量模块独立性的度量标准是模块的(A )

A.内聚性和耦合性 B.局部化和封装化 C.抽象和信息隐藏 D.逐步求精和结构图

33.模块的独立性是由内聚性和耦合性来度量的,其中内聚性是( C )

A.模块间的联系程度 B.信息隐藏程度 C.模块的功能强度 D.接口的复杂程度

34.当算法中需要用一个模块去计算多种条件的复杂组合.并根据这些条件完成适当的功能时,从供选择的答案中,选出合适的描述工具。( D)

A.程序流程图 B.N-S C.PAD D.判定表

35.面向数据流的软件设计方法可将( C)映射成软件结构。

A.控制结构 B.模块 C.数据流 D.事物流

36.Jackson 方法根据( C )来导出程序结构。

A.数据流图 B.数据间的控制结构 C.数据结构 D. IPO

37.程序语言的特性包括(B)

A.习惯特性 B.算法特性 C.工程特性 D.技术特性

38.软件实现是软件产品由概念到实体的一个 关键过程,它将(A )的结果翻译成用某种程序设计语言编写的并且最终可以运行的程序代码。虽然软件的质量取决于软件设计,但是规范的程序设计风格将会对后期的软件维护带来不可忽视的影响。

A.软件设计 B.详细设计 C.架构设计 D.总体设计

39.成功的测试是指运行测试用例后( A

A.发现了程序错误 B.未发现程序错误 C.证明程序正确 D.改正了程序错误

40.白盒测试法是根据程序的( B) 来设计测试用例的方法。

A.输出数据 B.内部逻辑 C.功能 D.输人数据

41.软件的集成测试工作最好由(C )承担,以提高集成测试的效果。

A.该软件的设计人员 B.该软件开发组的负责人

C.不属于该软件开发组的软件设计人员 D.该软件的编程人员

42.黑盒测试是从(C )观点的测试,白盒测试是从( )观点的测试。

A.开发人员、管理人员 B.用户、管理人员

C.用户、开发人员 D.开发人员、用户

43.软件测试可能发现软件中的( D ), 但不能证明软件( )

A.所有错误、没有错误 B.设计错误、没有错误

C.逻辑错误、没有错误 D.错误、没有错误

44.软件测试的目的是(D )

A.证明软件的正确性 B.找出软件系统中存在的所有错误

C.证明软件系统中存在错误 D.尽可能多的发现软件系统中的错误

45.使用白盒测试方法时确定测试数据应根据( A)和指定的覆盖标准。

A.程序的内部逻辑 B.程序的复杂程度

C.程序的难易程度 D.程序的功能

46.黑盒测试方法根据(B )设计测试用例。

A.程序的调用规则 B.软件要完成的功能

C.模块间的逻辑关系 D.程序的数据结构

47.在软件测试中,逻辑覆盖标准主要用于(A )

A.白盒测试方法 B.黑盒测试方法

C.灰盒测试方法 D.回归测试方法

48.集成测试的主要方法有两个,一个是(C )一个是( )

A.白盒测试方法、黑盒测试方法 B.等价类划分方法、边缘值分析方法

C.渐增式测试方法、非渐增式测试方法 D.因果图方法、错误推测方法.

49.验收测试的任务是验证软件的(D )

A.可靠性 B.正确性 C.移植性 D.有效性

50.软件测试的目的是尽可能发现软件中的错误,通常(D ) 是代码编写阶段可进行的测试,它是整个测试工作的基础。

A.集成测试 B.系统测试 C.验收测试 D. 单元测试

51.汽车有一个发动机,汽车和发动机之间的关系是( B ) 关系。

A.组装 B.整体部分 C.分类 D. 一般具体

52.(D ) 是把对象的属性和操作结合在一起, 构成-个独立的对象,其内部信息对外界是隐藏的,外界只能通过有限的接口与对象发生联系。

A.多态性 B.继承 C.消息 D.封装

53. ( B) 意味着一个操作在不同的类中可以有不同的实现方式。

A.多继承 B.多态性 C.消息 D.封装

54.每个对象可用它自己的一组属性和它可以执行的一组(A )来表征。

A.操作 B.功能 C.行为 D.数据

55.应用执行对象的操作可以改变该对象的( C)

A.行为 B.功能 C.属性 D.数据

56.面向对象的主要特征除了对象唯一性、封装性、继承性外,还有( D)

A.兼容性 B.完整性 C.可移植性 D.多态性

57.关联是建立( B )之间关系的一种手段。

A.对象 B. C.功能 D.属性

58.面向对象软件技术的许多强有力的功能和突出的优点,都来源于把类组织成一个层次结构的系统,一个类的上层可以有父亲,下层可以有子类,这种层次结构系统的一个重要性质是 ( B ),一个类可获得其父亲的全部描述(数据和操作)

A.兼容性 B.继承性 C.复用性 D.多态性

59.所有的对象可以成为各种对象类, 每个对象类都定义了一组(D )

A.说明 B.类型 C.过程 D.方法

60.通过执行对象的操作改变对象的属性,但它必须通过( B )的传递。

A.操作 B.消息 C.信息 D.继承

61. 下列不属于面向对象的要素有( C)

A.继承 B.抽象 C.分类性 D.封装

62.面向对象分析的首要工作是建立(D )

A.系统的动态模型 B.系统的功能模型

C.基本的E-R模型 D.问题的对象模型

63.面向对象的分析方法主要是建立三类模型,即( B).

A.系统模型、ER模型、应用模型 B.对象模型、动态模型、功能模型

C.ER模型、对象模型、功能模型 D.对象模型、动态模型、应用模型

64.软件开发过程中,抽取和整理用户需求并建立问题域精确模型的过程叫( C )

A.生命周期 B.面向对象设计 C.面向对象分析 D.面向对象程序设计

65.面向对象分析阶段建立的3个模型中,核心的模型是( C) 模型。

A.功能 B.动态 C.对象 D.分析

66.面向对象分析是对系统进行(C)的一种方法。

A.设计评审 B.程序设计 C.需求建模 D.测试验收

67.应该在( B )确定对象类中应有的服务

A.建立对象模型之时 B.建立动态模型和功能模型之后

C.建立功能模型之后 D.建立动态模型之后

68.面向对象的动态模型中,每张状态图表示(A ) 的动态行为。

A.某一个类 B.有关联的若干个类 C.一系列事件 D.一系列状态

69.在考察系统的-些涉及时序和改变的状况时,要用动态模型来表示。动态模型着重于系统的控制逻辑,它包括两个图:一个是事件追踪图,另一个是( B)

A.顺序图 B.状态图 C.系统结构图 D.数据流图

70.动态模型的描述工具是( C)

A.设计图 B.结构图 C.状态图 D.对象图

71.对象模型的描述工具是( D )

A.状态图 B.数据流图 C.结构图 D.对象图

72.功能模型中所有的( D)往往形成一个层次结构,在这个层次结构中一个数据流图的过程可以由下一层数据流图做进一步的说明。

A.事件追踪图 B.物理模型图 C.状态迁移图 D.数据流图

73.只有类的共有界面的成员才能成为使用类的操作,这是软件设计的(B)原则。

A.过程抽象 B.信息隐藏 C.功能抽象 D.共享性

74.(B) 是表达系统类及其相互联系的图示,它是面向对象设计的核心,是建立状态图、

协作图和其他图的基础。

A.部署图 B.类图 C.组件图 D.配置图

75.下面所列的性质中,(D)不属于面向对象程序设计的特性。

A.继承性 B.重用性 C.封装性 D.可视化

76.下列是面向 对象设计方法中有关对象的叙述,其中(B ) 是正确的。

A.对象在内存中没有它的存储区 B.对象的属性集合是它的特征表示

C.对象的定义与程序中类型概念相当 D.对象之间不能相互通信

77.面向对象程序设计中,基于父类创建的子类具有父类的所有特性(属性和方法),这一特点称为类的( C)

A.多态性 B.封装性 C.继承性 D.重用性

78.面向对象设计00D模型的主要部件中,通常不包括(A)

A.通信部件 B.人机交互部件 C.任务管理 D.数据管理

79.面向对象设计时,对象信息的隐藏主要是通过(A ) 实现的。

A.对象的封装性 B.子类的继承性 C.系统模块化 D.模块的可重用

80.面向对象设计阶段的主要任务是系统设计和(D )

A.结构化设计 B.数据设计 C.面向对象程序设计 D.对象设计

81.面向对象的实现主要包括( A)

A.把面向对象设计用某种程序设计语言书写为面向对象程序,测试并调试面向对象的程序

B.面向对象设计

C.选择面向对象语言

D.单元测试

82.面向对象程序设计语言不同于其他语言的最主要特点是( C)

A.模块性 B.抽象性 C.继承性 D.内聚性

83.面向对象的测试与传统测试方法的主要区别是 ( A C )

A.面向对象的测试可在编码前进行,传统测试方法在编码后进行

B.面向对象的测试以需求和设计阶段的测试为主,不需要进行代码测试

C.测试对象不同

D.面向对象的测试不需要设计测试用例,只需要进行会议评审

84.UML是软件开发中的一个重要T具,它主要应用于(D )

A.基于螺旋模型的结构化方法 B. 基于需求动态定义的原型化方法

C.基于数据的数据流开发方法 D.基于对象的面向对象的方法

85.( C) 是从用户使用系统的角度描述系统功能的图形表达方法。

A.类图 B.活动图 C.用例图 D.状态图

86.( A) 是表达系统类及其相互联系的图示,它是面向对象设计的核心,是建立状态图、

协作图和其他图的基础。

A.类图 B.状态图 C.对象图 D.部署图

87.(B ) 描述了一组交互对象间的动态协作关系,它表示完成某项行为的对象和这些对象之间传递消息的时间顺序。

A.类图 B.顺序图 C.状态图 D.协作图

88.(C)是用于表示构成分布式系统的节点集和节点之间的联系的图示,它可以表示系统

软件和硬件的物理架构

A.组件图 B.类图 C.部署图 D.状态图

89.(A)定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功

能的具体实现。

A.用例图 B.类图 C.活动图 D.对象图

90.状态图包括( D )

A.类的状态和状态之间的转换 B.触发类动作的事件

C.类执行的动作 D.所有以上选项

91. ( B) 的作用是为有效地、定量地进行管理,把握软件工程过程的实际情况和它所产生的产品质量,

A.估算 B.度量 C.风险分析 D.进度安排

92.LOCFP是两种不同的估算技术,但两者有许多共同的特征,只是LOCFP技术对于分解所需要的( A) 不同。

A.详细程度 B.分解要求 C.使用方法 D.改进过程

93.项目团队原来有6个成员,现在又增加了6个成员,这样沟通渠道增加了多少? ( A )

A.4.4 B.2 C. 6 D.6

94. Mantei 提出了3种通用的项目组组织方式:民主分权式、控制分权式、( D )

A.启发式 B.归纳式 C.总结式 D.控制集权式

95.下列哪项不是风险管理的过程?( D)

A.风险规划 B.风险识别 C.风险评估 D.风险收集

96.按照软件配置管理的原始指导思想,受控制的对象应是( C)

A.软件过程 B.软件项目 C.软件配置项 D.软件元素

97.在软件维护的内容中,占维护活动工作量比例最高的是(D )

A.纠错性维护 B.适应性维护 C.预防性维护 D.完善性维护

98.使用软件时提出增加新功能就必须进行(C ) 维护。

A.预防性 B.适应性 C.完善性 D.纠错性

99.软件文档是软件工程实施的重要成分,它不仅是软件开发各阶段的重要依据,而且也影响软件的( B)

A.可用性 B.可维护性 C.可扩展性 D.可移植性

100影响软件可维护性的主要因素不包括( C)

A.可修改性 B.可测试性 C.可用性 D.可理解性

  1. 什么叫软件危机?

在计算机软件的开发与维护过程中所遇到的一系列严重问题

  1. 软件危机典型表现

对软件开发成本和进度的估计不准确;用户不满意;质量不可靠;不可维护;缺文档资料;成本渐增;开发生产速度跟不上计算机应用普及深入趋势。

  1. 产生软件危机的原因

客观:软件本身特点

逻辑部件:缺乏“可见性”;

规模庞大:管理和控制开发过程困难

主观:不正确的开发方法

忽视需求分析

错误认为:软件开发=程序编写

轻视软件维护

4、软件工程定义

用工程、科学和数学的原则与方法研制、维护计算机软件的有关技术及管理方法。

5、软件工程的本质特性

1.关注于大型程序的构造

2.中心课题是控制复杂性

3. 软件经常变化

4. 开发软件的效率非常重要

5. 和谐地合作是开发软件的关键

6. 软件必须有效地支持它的用户

7. 在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人创造产品

6、如何消除软件危机

       对软件有一个正确的认识

软件开发应该组织良好、管理严密、协调配合

推广使用成功的技术和方法

开发和使用好的软件工具

    7、软件工程三要素:工具、方法、过程

8.软件生命周期

问颗定义:要解决的问题是什么;

可行性研究: 上一个阶段所确定的问题是否有行得通的解决办法”

需求分析: 目标系统必须做什么;编写规格说明书。

总体设计:应该怎样实现目标系统;对比得出最佳方案;设计程序的体系结构。

详细设计︰解法具体化;可以写出实际程序代码的详细规格说明书;详细设计每个模块,确定实现模块功能所需要的算法和数据结构。

编码和单元测试:写出容易理解维护的程序模块;对模块仔细的单元测试。

综合测试:各类测试使软件达到预定要求

软件维护:通过各种必要的维护活动使系统持久地满足用户的需要

9、瀑布模型、原型模型、螺旋模型、增量模型优缺点以及适用范围?

瀑布模型

适合于需求明确变化较小的软件项目。

优缺点

强迫开发人员采用规范的文档;严格规定了每个阶段必须提交的文档;每个阶段产品都经过质量验证。前期的需求理解和设计缺陷错误后期才能被发现,提高了成本,易失败;开发人员与用户缺乏有效沟通。

快速原型模型

适合于一些需求可变、模糊不定的软件系统开发。

优缺点

软件开发是线性顺序进行的;通常能满足用户真实需求。

追求速度而忽视了软件的总体质量和长期的可维护性;开发过程不便于管理。

增量模型

适合于软件要求不明确,设计方案有一定风险的软件项目。

优缺点

客户可以不断看到软件产品,有足够时间学习适应新产品;多个构件并行开发,缩短开发时间;软件结构可拓展性好,便于日后升级

软件体系结构要做到开放;多个构件并行开发,具有无法集成的风险。

螺旋模型 

适用于内部开发的复杂大型软件项目;需要开发人员具有丰富的风险评估和知识经验。

优缺点

有利于已有软件的重用;专注于软件质量;减少测试带来的风险;软件开发与维护没有本质区别。

开发人员知识经验不够,会带来不可估计的风险。

10、可行性分析

可行性研究的目的不是解决问题,而是确定问题是否值得去解决

研究方面

经济可行性:成本——效益分析;确定要开发的项目是否值得投资开发。

技术可行性:采用技术是否先进;当下技术能否实现系统达到的目标;技术人员的技术水平是否具备。

操作可行性:系统的操作方式在这个应用范围内是否行的通。

法律可行性:考虑合同的责任、专利权、版权等一系列权益方面。

可行性分析典型步骤

复查系统规模和目标:关于规模和目标的报告进一步复查确认;确保分析员正在解决的问题确实是要求他解决的问题。

研究目前正在使用的系统:新的目标系统必须也能完成现有系统的基本功能;新系统必须解决旧系统中存在的问题;分析现有系统的文档资料和使用手册;实地考察。

导出新系统的高层逻辑模型:参考现有系统的逻辑模型,设想目标系统的逻辑模型,最后构建新的物理系统。

进一步定义问题:前四个步骤实质上构成一个循环。

导出和评价供选择的解法:分析员从他建议的系统逻辑模型出发,导出若干个较高层次的物理解法提供比较和选择;去掉操作角度看用户不能接受的方案;考虑开发成本和运行费用;确定选择后制定实现进度表,估计生命周期每个阶段的工作量。

推动行动方针:是否继续进行这项开发工程;选择一种最好解法;进行较仔细的成本/效益分析。

草拟开发计划书:估计对各类开发人员和各种资源的需要情况;给出下一阶段的详细进度表和成本估计。

写文档提交审查:把上述各个步骤的工作结果写成清晰的文档。

11、需求分析的定义、任务和目的是什么?

基本任务是准确地回答系统必须做什么这个问题。

目的:开发出真正满足用户需求的软件产品

12总体设计

目的:回答“概括地说,系统应该如何实现?

设计原理:模块化 抽象 逐步求精 信息隐藏和局部化 模块独立 耦合

耦合:一个软件结构内各个模块之间的互连程度

耦合度由强到弱:内容耦合 公共耦合 特征耦合 控制耦合 标记耦合 数据耦合 非直接耦合

内聚:一个模块内各个元素彼此结合的紧密程度

由弱到强分别为

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

提高模块独立性

争取低耦合、高内聚(增加内聚 > 减少耦合)

模块是由边界元素限定的相邻程序元素

模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能

结构设计原则

找到改进软件设计,提高软件质量的途径

1. 提高模块独立性

2. 模块规模适中

3. 选择适当的深度、宽度、扇出和扇入

4. 模块的作用域应在其控制域之内

5. 降低接口的复杂程度

6. 单出单入,避免内容耦合

7. 模块功能可预测

13、结构程序设计

基本概念:如果一个程序的代码块仅仅通过顺序、选择和循环这三种基本控制结构进行连接,并且每个代码块只有一个入口和出口,则称这个程序是结构化的。上述经典定义过于狭隘,结构程序设计本质上并不是无GO TO 语句的编程方法,而是一种使程序代码容易阅读、容易理解的编程方法。

14、结构化设计方法典型步骤

  • 复审数据流图
  • 确定数据流图类型
  • 分解上层模块,设计中下层模块结构
  • 根据软件结构设计准则对软件结构求精并改进
  • 导出接口描述和全程数据结构
  • 复审

15、详细设计

根本目标:确定应该怎样具体地实现所要求的系统

任务:通过对结构表示进行细化,得到软件详细的数据结构和算法。

Jackson方法的步骤

  • 分析并确定输入数据和输出数据的逻辑结构。
  • 找出输入数据结构和输出数据结构中有对应关系的数据单元。
  • 从描绘数据结构的Jackson图导出描绘程序结构的Jackson图。
  • 列出所有操作和条件(包括分支条件和循环结束条件),并且把他们分配到程序结构图的适当位置。
  • 用伪码表示程序。

优点

(1)Jackson图不仅便于表示层次结构,而且也有利于对结构自顶向下分解;

(2)Jackson图形象直观,可读性好;

(3)Jackson图不仅能表示数据结构,也能表示程序结构(因为程序结构也可以由上述3种基本结构组成)。

基本结构:顺序结构 选择结构 重复结构

16、软件测试

目的

用户的角度出发,普遍希望通过软件测试暴露软件中隐藏的错误和缺陷,以考虑是否可接受该产品。

软件开发者的角度出发,则希望测试成为表明软件产品中不存在错误的过程,验证该软件已正确地实现了用户的要求,确立人们对软件质量的信心

根本目标是尽可能多地发现并排除软件中潜藏的错误,最终把一个高质量的软件系统交给用户使用

测试原则

(1) 所有测试都应该能追溯到用户需求

(2) 应该在测试开始之前就制定出测试计划

(3) 测试发现的错误中的80%很可能是由程序中20%的模块造成的。问题是怎样找出这些可疑的模块并彻底地测试它们

(4) 应该从“小规模”测试开始,并逐步进行“大规模”测试

(5) 穷举测试是不可能的

(6) 为了达到最佳的测试效果,应该由独立的第三方从事测试工作

(7)充分注意测试中的群集现象。

经验表明,测试后程序中残存的错误数目与该程序中已发现的错误数目成正比。

(8)严格执行测试计划,排除测试的随意性。

(9)妥善保存测试计划,测试用例,出错统计和最终分析报告,为维护提供方便。

测试步骤

模块测试:编码和详细设计错误

子系统测试:测试接口

系统测验:软件设计错误或需求说明错误

验收测试:用户积极参与;需求说明错误

平行运行:同时运行新开发处来的系统和将被 它取代的旧系统。

自顶向下集成

分类:深度优先和宽度优先

优缺点:不需要测试驱动程序,早期发现上层模块的接口错误;需要存根程序,低层模块错误发现较晚,早期不能充分展开人力。

自底向上集成

优缺点:刚好相反

17、软件维护

定义:在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程。

诊断和改正错误 —— 改正性维护

为了和变化了的环境(如软\硬件升级、新数据库等)适当地配合而修改软件 —— 适应性维护

为了增加新功能,修改已有功能,改造界面,增加HELP等,而修改软件 —— 完善性维护

维护过程

为了改进未来的可维护性或可靠性,或为了给未来的改进奠定更好的基础而修改软件 —— 预防性维护

维护过程

首先建立维护的机构

 申明提出维护申请报告的过程及评价的过程

 为每一个维护申请规定标准的处理步骤

 建立维护活动的登记制度以及规定评价和评审的标准。

18、面向对象方法学

要点

OOM的出发点和基本原则是

尽可能模拟人类习惯的思维方式,使描述问题的问题空间与实现解法的解空间在结构上尽可能一致。

面向对象方法是一种以数据和信息为主线,把数据和处理相结合的方法

面向对象方法把对象作为由数据及可以施加在这些数据上的操作所构成的统一体

面向对象方法学的优点

  1. 与人类习惯的思维方式一致
  2. 稳定性好
  3. 可重用性好
  4. 可维护性好

对象模型表示静态的、结构化的系统的“数据”性质是对模拟客观世界实体的对象以及对象彼此间的关系的映射

动态模型

动态模型表示瞬时的,行为化的系统的“控制”性质,它规定了对象模型中的对象的合法变化序列。

功能模型

表示变化的系统的“功能”性质,它指明了系统应该“做什么”,因此更直接地反映了用户对目标系统的需求。

面向对象分析的基本过程

需求获取

建立对象模型

·建立动态模型(动态模型着重表示应用系统的控制逻辑)

·建立物理模型

19、什么是软件工程管理,简述软件工程管理与软件工程的区别与关系

软件项目管理的对象是软件工程项目。它所涉及的范围覆盖了整个软件工程过程。 为使软件项目开发获得成功,关键问题是必须对软件项目的工作范围、可能风险、需要资源(人、硬件/软件)、要实现的任务、经历的里程碑、花费工作量(成本)、进度安排等做到心中有数。 这种管理在技术工作开始之前就应开始,在软件从概念到实现的过程中继续进行,当软件工程过程最后结束时才终止。

20、如何估算软件的规模

代码行计术

功能点技术

你可能感兴趣的:(软件工程)