第一篇:软件工程练习题
练习题
一、判断题
1.螺旋模型是在瀑布模型和增量模型的基础上增加了风险分析活动。(错)2.软件的模块数越少,其软件成本越低。(错)3.JAVA语言编译器是一个CASE工具。(对)。
4.发现错误多的程序模块,一般残留在模块中的错误也多。(对)
5..软件是指用程序设计语言(如PASCAL ,C,VISUAL BASIC 等)编写的程序,软件开发实际上就是编写程序代码。(错)
6.软件模块之间的耦合性越弱越好。(对)7.数据库设计说明书是一个软件配置项(对)8.软件测试就是程序测试。(错)
9.PDL的语法是开放式的,其内层语法是确定的,而外层语法则不确定。(错)10.根据编程规范,在对方法命名时, 方法名称的第一个单词常常采用一个名词。(错)11.在面向对象的软件开发方法中,每个类都存在其相应的对象,类是对象的实例,对象是生成类的模板。(错)
12.可行性研究的目的不是解决问题,而是确定问题是否值得去解决。13.过程描述语言可以用于描述软件的系统结构。(错)
14.如果通过软件测试没有发现错误,则说明软件是正确的。(错)
15.快速原型模型可以有效地适应用户需求的动态变化。(对)
16.模块化,信息隐藏,抽象和逐步求精的软件设计原则有助于得到高内聚,低耦合度的软件产品。(对)
17.集成测试主要由用户来完成。(错)
18.随着软件技术的发展,人们逐渐认识到编码不仅要强调效率还要强调清晰。(对)19.确认测试计划应该在可行性研究阶段制定(错)
20.白盒测试无需考虑模块内部的执行过程和程序结构,只要了解模块的功能即可。(错)
21.软件概要设计包括软件系统结构设计以及数据结构和数据库设计。(对)
22.一个好的测试用例在于能发现至今未发现的错误。(对)
23.在可行性研究中最难决断和最关键的问题是经济可行性。(╳)24.耦合是指一个模块内各个元素彼此结合的紧密程度。(╳)25.一个好的测试用例在于能发现至今未发现的错误。(√)
26.一笔交易、一个动作、甚至操作人员按一个按钮都可以看做是一次事物。(√)27.集成测试时,一般希望较早地发现系统功能的错误,所以经常采用自底向上的渐增式测试。(错)28.程序要能直截了当地说明程序员的用意。(对)
29.编程作业中,代码的检查是对程序进行动态分析。(错)30.概要设计阶段完成的主要文档是概要设计说明书。(√)
31.发现错误多的程序模块,一般残留在模块中的错误也多。(对)32.在做程序的单元测试时,一般桩模块比驱动模块容易编写。(错)
33.过大的模块可能是由于分解不充分造成的,即使降低模块独立性也必须继续分解。(╳)34.代码版本控制的优点之一是能获得版本控制工具中保存的任何版本。(√)35.在设计模块时,其宽度和深度要适当。(对)
36.37.38.39.40.程序设计语言中应绝对禁止使用GOTO语句。(╳)类是关于对象性质的描述,由方法和数据组成。(√)
随着软件技术的发展,人们逐渐认识到编码不仅要强调效率还要强调清晰。(√)为保证程序的安全,必须做到程序中没有任何错误存在,即容错。(╳)如果把软件开发所需的资源画成一个金字塔,人是最基本的资源。(√)
41.功能性注释嵌在源程序体中,用以解释其后的语句或程序段是在怎么做。(错)42.模块耦合的强弱取决于模块间接口的复杂程度。(对)
二、名字解释: 1.软件: 2.软件危机: 3.软件工程: 4.软件生命周期: 5.软件过程: 6.瀑布模型: 7.快速原型模型: 8.增量模型: 9.螺旋模型: 10.抽象: 11.模块化: 12.逐步求精: 13.耦合: 14.内聚: 15.模块独立: 16.信息隐蔽: 17.结构程序设计: 18.测试用例: 19.单元测试: 20.白盒测试: 21.黑盒测试: 22.对象: 23.等价划分:
三、选择题
1.软件工程的概念是哪年提出的()。A.1988 B.1968 C.1948 D.1928 2.瀑布模型的关键不足在于()。
A.过于简单 B.各个阶段需要进行评审 C.过于灵活 D.不能适应需求的动态变更 3.以下哪一项不是软件危机的表现形式()。
A.开发的软件不满足用户需要 B.开发的软件可维护性差 C.开发的软件价格便宜 D.开发的软件可靠性差
4.软件可行性研究实质上是要进行一次()需求分析、设计过程。A.简化、压缩的 B.详细的 C.彻底的 D.深入的
5.结构化设计是一种面向()的设计方法。A.数据流 B.模块 C.数据结构 D.程序
6.与确认测试阶段有关的文档是()。
A.需求规格说明书 B.概要设计说明书 C.详细设计说明书 D.源程序
7.软件开发的需求活动,其主要任务是()。A.给出软件解决方案 B.给出系统模块结构
C.定义模块算法 D.定义需求并建立系统模型 8.以下说法错误的是()。
A.文档仅仅描述和规定了软件的使用范围及相关的操作命令 B.文档也是软件产品的一部分,没有文档的软件就不成软件
C.软件文档的编制在软件开发工作中占有突出的地位和相当大的工作量 D.高质量文档对于发挥软件产品的效益有着重要的意义
9.一个项目是否开发,从经济上来说是否可行,归根结底是取决于()。A.成本估算
B.项目计划
C.工程管理
D.工程网络图
10.在面向对象的设计中,我们应遵循的设计准则除了模块化、抽象、低耦合、高内聚以外,还有()。
A.隐藏复杂性 B.信息隐蔽
C.经常类的复用 D.类的开发 11.面向对象的主要特征除对象惟一性、封装、继承外,还有()。A.多态性 B.完整性 C.可移植性 D.兼容性 12.下面说法正确的是()。
A.经过测试没有发现错误说明程序正确 B.测试的目标是为了证明程序没有错误
C.成功的测试是发现了迄今尚未发现的错误的测试 D.成功的测试是没有发现错误的测试
13以下哪一条不属于注释的基本原则?()A.注释应该增加代码的清晰度。B.避免使用装饰性内容。
C.注释在源代码中的比例至少为25%.D.注释信息不仅要包括代码的功能,还应给出原因。
14.()有效地检测输入条件的各种组合可能会引起的错误。A.等价类划分 B.边界值分析 C.错误推测 D.因果图
15火车是一种陆上交通工具。火车和陆上交通工具之间的关系是()关系。A.组装 B.整体部分 C.has a D.一般特殊
16、软件维护产生的副作用,是指()
A、开发时的错误 B、隐含的错误 C、因修改软件而造成的错误 D、运行时误操作
17、使用程序设计的控制结构导出测试用例的测试方法是()A、黑盒测试 B、白盒测试
C、边界测试 D、系统测试
18、软件详细设计的主要任务是确定每个模块的()A、算法和使用的数据结构 B、外部接口 C、功能 D、编程
19、软件结构图的形态特征能反映程序重用率的是()A、深度 B、宽度 C、扇入 D、扇出
20、为了提高模块的独立性,模块内部最好是()A、逻辑内聚 B、时间内聚 C、功能内聚 D、通信内聚
21、软件是一种()
A、程序 B、数据 C、逻辑产品 D、物理产品
22、需求分析最终结果是产生()
A、项目开发计划 B、需求规格说明书 C、设计说明书 D、可行性分析报告
23、因计算机硬件和软件环境的变化而作出的修改软件的过程称为()A、纠正性维护
B、适应性维护 C、完善性维护
D、预防性维护
24、下列属于维护阶段的文档是()A、软件规格说明
B、用户操作手册
C、软件问题报告
D、软件测试分析报告
25、若有一个计算类型的程序,它的输入量只有一个X,其范围是[-1.0,1.0],现从输入的角度考虑一组测试用例:-1.001,-1.0,1.0,1.001。设计这组测试用例的方法是()A、条件覆盖法
B、等价分类法
C、边界值分析法
D、错误推测法 26.如果一个程序常常需要根据多种条件的复杂组合,选择执行相应的动作,则以下哪种设计工具比较适合描述它?()
A.判定表
B.流程图
C.PDL
D.N-S图
28、经过严密的软件测试后所提交给用户的软件产品中()
A、软件不再包含任何错误 B、还可能包含少量软件错误 C、所提交给用户的可执行文件不会含有错误 D、文档中不会含有错误。
29、等价划分测试方法属于()
A、黑盒测试 B、白盒测试
C、边界测试 D、系统测试
30、软件按照设计的要求,在规定时间和条件下达到不出故障,持续运行的要求的质量特性称为()A.可用性
B.可靠性
C.正确性
D.完整性
31、确认软件的功能是否与需求规格说明书中所要求的功能相符的测试属于()
A、集成测试 B、恢复测试
C、确认测试 D、单元测试
33、从心理学角度看,一次大模块分解为多少个子模块为宜。()
A、3±1 B、7±2 C、15±1 D、18±2
34、结构化程序设计主要强调的是()
A、程序的规模 B、程序的效率 C、程序设计语言的先进性 D、程序易读性
35、在用户界面层次上对软件进行测试属于哪种测试方法()
A、黑盒测试 B、白盒测试
C、边界测试 D、系统测试
36、对象实现了数据和操作的结合,使数据和操作()于对象的统一体中。A、结合 B、隐藏
C、封装 D、抽象
37、()是比较理想的可重用软构件。
A.子程序库 B.源代码包含文件 C.对象 D.类
38、软件设计启发规则不包括()A.在耦合方式上降低模块间接口的复杂性 B.模块功能应该可以预测
C.将模块的控制域保持在其作用域内
D.设计单入口单出口的模块
39、软件生存周期中时间最长的是()阶段。
A、总体设计 B、需求分析 C、软件测试 D、软件维护
40、为了提高模块的独立性,模块之间的联系最好的是()。
A、公共耦合 B、控制耦合 C、内容耦合 D、数据耦合
41、软件概要设计结束后得到()
A、初始化的软件结构图 B、优化后的软件结构图 C、模块的接口图和详细算法 D、程序编码
42、为使得开发人员对软件产品的各个阶段工作都进行周密的思考,从而减少返工,所以()的编制是很重要的。
A、需求说明 B、概要说明 C、软件文档 D、测试计划
43、汽车有一个发动机,因而汽车与发动机之间的关系是()关系。
A、一般与特殊 B、整体与部分 C、分类关系 D、is a 关系
44、软件部件的内部实现与外部可访问性的分离,是指软件的()。
A、继承性 B、共享性 C、封装性 D、抽象性
45、单元测试是发现编码错误,集成测试是发现模块的接口错误,确认测试是为了发现功能错误,那么系统测试是为了发现()的错误。
A、接口错误 B、编码错误
C、性能、质量不合要求 D、功能错误 46.模块的基本属性不包括()
A 功能 B 接口 C 独立性 D 逻辑
47、许多产品的质量问题源于新产品的开发设计阶段,因此在产品()阶段就应采取有力措施来消灭由于设计原因而产生的质量隐患。
A、软件评审 B、软件测试 C、开发设计 D、软件度量
48、下列几种类型中,耦合性最弱的是()。
A、内容型 B、控制型 C、公共型 D、数据型
50.瀑布模型的关键不足在于
A、过于简单 B、不能适应需求的动态变更C、过于灵活 D、各个阶段需要进行评审
51.内聚程度最高的是()A功能内聚
B巧合内聚
C 过程内聚
D 信息内聚
52.以下哪一项不是软件危机的表现形式(3)(1)成本高(2)生产率低(3)技术发展快(4)质量得不到保证 53.以下哪一项不是面向对象的特征(4)
(1)多态性(2)继承性(3)封装性(4)过程调用 55.软件维护的副作用主要有以下哪几种(3)
(1)编码副作用、数据副作用、测试副作用(2)编码副作用、数据副作用、调试副作用(3)编码副作用、数据副作用、文档副作用(4)编码副作用、文档副作用、测试副作用
56.软件项目计划一般不包括以下哪项内容(4)
(1)培训计划(2)人员安排(3)进度安排(4)软件开发标准的选择和制定 58.以下哪种测试方法不属于白盒测试技术(2)
(1)基本路径测试(2)边界值分析测试(3)循环覆盖测试(4)逻辑覆盖测试 59.“软件危机”是指()A.计算机病毒的出现
B.利用计算机进行经济犯罪活动
C.软件开发和维护中出现的一系列问题 D.人们过分迷恋计算机系统
61.为了提高模块的独立性,模块之间最好是()A.控制耦合 B.公共耦合 C.内容耦合 D.数据耦合 62.下面关于PDL语言不正确的说法是()A.PDL是描述处理过程怎么做 B.PDL是只描述加工做什么 C.PDL也称为伪码
D.PDL的外层语法应符合一般程序设计语言常用的语法规则 63.详细设计与概要设计衔接的图形工具是()A.DFD图 B.程序图 C.PAD图 D.SC图 65.下列关于功能性注释不正确的说法是()A.功能性注释嵌在源程序中,用于说明程序段或语句的功能以及数据的状态 B.注释用来说明程序段,需要在每一行都要加注释 C.可使用空行或缩进,以便很容易区分注释和程序 D.修改程序也应修改注释
66.下列关于效率的说法不正确的是()A.效率是一个性能要求,其目标应该在需求分析时给出
B.提高程序效率的根本途径在于选择良好的设计方法,数据结构与算法 C.效率主要指处理机时间和存储器容量两个方面 D.程序的效率与程序的简单性无关 67.测试的关键问题是()A.如何组织对软件的评审 B.如何验证程序的正确性 C.如何采用综合策略 D.如何选择测试用例
68.结构化维护与非结构化维护的主要区别在于()A.软件是否结构化 B.软件配置是否完整 C.程序的完整性 D.文档的完整性
69.软件维护困难的主要原因是()A.费用低 B.人员少
C.开发方法的缺陷 D.得不到用户支持 70.可维护性的特性中,相互矛盾的是()A.可理解性与可测试性 B.效率与可修改性 C.可修改性和可理解性 D.可理解性与可读性
71.快速原型是利用原型辅助软件开发的一种新思想,它是在研究()的方法和技术中产生的。
A.需求阶段 B.设计阶段
C.测试阶段 D.软件开发的各个阶段
72.从目前情况来看,增量模型存在的主要问题是()A.用户很难适应这种系统开发方法 B.该方法的成功率很低
C.缺乏丰富而强有力的软件工具和开发环境
D.缺乏对开发过程中的问题和错误具有应付变化的机制 73.下列文档与维护人员有关的有()A.软件需求说明书 B.项目开发计划 C.概要设计说明书 D.操作手册 D.实现错误检测和错误恢复的程序
74.()是为了确保每个开发过程的质量,防止把软件差错传递到下一个过程而进行的工作。
A.质量检测 B.软件容错 C.软件维护 D.系统容错 78.软件开发过程来自用户方面的主要干扰是()A.功能变化 B.经费减少 C.设备损坏 D.人员变化
81.为了提高软件的可维护性或可靠性而对软件进行的修改称为()A.纠错性维护 B.适应性维护 C.完善性维护 D.预防性维护
82.面向维护的技术涉及软件开发的()阶段。A.设计 B.编码 C.测试 D.所有
83.用白盒技术设计测试用例的方法包括()A.边界值分析 B.条件组合覆盖 C.因果图 D.错误推测
84.软件测试的目的是()A.为了表明程序没有错误 B.为了说明程序能正确地执行 C.为了发现程序中的错误 D.为了评价程序的质量
85.针对软件需求分析所进行的软件测试是指()A.集成测试 B.确认测试
C.黑盒子测试 D.白盒子测试
87.结构化程序设计采用的三种基本控制结构是()A.顺序、分支、选择 B.选择、循环、重复 C.顺序、选择、循环 D.输入、变换、输出
88.在软件设计中详细描述处理过程常用的三种工具是()A.SA,SD,SP B.程序流程图,IPO,PAD C.SA,SC,SD D.图形,表格,语言
89.通信内聚、逻辑内聚、顺序内聚和时间内聚的内聚性从高到低顺序是()
A.通信、逻辑、顺序、时间 B.通信、时间、顺序、逻辑 C.顺序、通信、时间、逻辑 D.顺序、通信、逻辑、时间
90.在下列四种模块的耦合性中,信息隐蔽性能最好的是()A.控制耦合 B.内容耦合 C.标记耦合 D.数据耦合
91.结构化方法是一种()的软件开发方法。A.面向用户 B.面向数据结构 C.面向对象 D.面向数据流
92.需求分析是回答系统必须()的问题。A.做什么 B.怎么做 C.何时做 D.为谁做
93.在软件生产的(),使用的工具主要是机器语言和汇编语言。A.程序系统时代 B.软件工程时代 C.面向对象时代 D.人工智能时代
.维护中因删除一个标识符而引起的错识是 _________ 副作用。()A .文档 B .数据 C .编码 D .设计
98.软件维护的困难主要原因是()A .费用低 B .人员少
C .开发方法的缺陷 D .维护难
.用白盒法技术设计测试用例的方法包括()A .错误推测 B .因果图
C .基本路径测试 D .边界值分析
100.软件测试中根据测试用例设计的方法的不同可分为黑盒测试和白盒测试两种,它们()
A .前者属于静态测试,后者属于动态测试 B .前者属于动态测试,后者属于静态测试 C .都属于静态测试 D .都属于动态测试
101.程序的三种基本控制结构的共同特点是()A .只能用来描述简单程序 B .不能嵌套使用 C .单入口,单出口 D .仅用于自动控制系统 102、代码版本控制的基本操作不包括()A.检入
B 检出
C.删除
D.更新
.当一个模块直接使用另一个模块的内部数据,这种模块之间的耦合为()
A .数据耦合 B .公共耦合 C .标记耦合 D .内容耦合 104 .软件设计的方法有多种,_________ 方法不属于面向数据流的设计方法。()
A .基于 Jackson 图的设计 B .基于 IDEF0图的设计 C .交换分析设计 D .事务分析设计 105.为高质量地开发软件项目,在软件结构设计时,必须遵循 _________ 原则。()
A .信息隐蔽 B .质量控制 C .程序优化 D .数据共享
107.螺旋模型是一种将瀑布模型和 _________ 结合起来的软件开发模型。()
A .增量模型 B .专家系统 C .喷泉模型 D .变换模型
108.需求规格说明书的作用不包括()A .软件验收的依据
B .用户与开发人员对软件要做什么的共同理解 C .软件可行性研究的依据 D .软件设计的依据
109.数据字典是用来定义 _________ 中的各个成份的具体含义的。()A .流程图 B .功能结构图 C .系统结构图 D .数据流图
.在软件生产的程序系统时代由于软件规模扩大和软件复杂性提高等原因导致了()
A .软件危机 B .软件工程
C .程序设计革命 D .结构化程序设计
.对象实现了数据和操作的结合,使数据和操作()于对象的统一体中。A .结合 B .隐藏 C .封装 D .抽象 117 .软件调试技术包括()
A .边界值分析 B .演绎法 C .循环覆盖 D .集成测试 118 .瀑布模型的存在问题是()A .用户容易参与开发 B .缺乏灵活性
C .用户与开发者易沟通 D .适用可变需求
.软件测试方法中的静态测试方法之一为()A .计算机辅助静态分析 B .黑盒法 C .路径覆盖 D .边界值分析
.软件生命周期中所花费用最多的阶段是()
A .详细设计 B .软件编码 C .软件测试 D .软件维护 122 .程序的三种基本控制结构是()A .过程、子程序和分程序 B .顺序、选择和重复 C .递归、堆栈和队列 D .调用、返回和转移
.在详细设计阶段,经常采用的工具有()A . PAD B . SA C . SC D . DFD 124 .详细设计的结果基本决定了最终程序的()
A .代码的规模 B .运行速度 C .质量 D .可维护性 125 .需求分析中开发人员要从用户那里了解()
A .软件做什么 B .用户使用界面 C .输入的信息 D .软件的规模 126 .结构化程序设计主要强调的是()A. 程序的规模 B .程序的效率
C. 程序设计语言的先进性 D .程序易读性
.经济可行性研究的范围包括()
A .资源有效性 B .管理制度 C .效益分析 D .开发风险 129 .可行性分析是在系统开发的早期所做的一项重要的论证工作,它是决定该系统是否开 发的决策依据,因必须给出()的回答。A .确定 B.行或不行 C.正确 D.无二义 130 .需求分析阶段的任务是确定()A. 软件开发方法 B. 软件开发工具 C. 软件开发费 D.软件系统的功能
134.信息隐蔽概念与()这一概念直接的相关。A.模块的独立性 B.模块类型的划分 C.软件结构定义 D.软件生命周期
135.在软件的概要设计中,不使用的图形工具是()图。A.SC B.IPO C.PAD D.IDEF0
136.不属于详细设计的主要工具有()。A.IPO图 B.PAD图 C.PDL D.SC
137.不属于序言性注释的有()。A.模块设计者 B.修改日期
C.程序的整体说明 D.语句功能
138.单元测试阶段主要涉及()的文档。A.需求设计 B.编码和详细设计 C.详细设计 D.概要设计
139.在软件测试中,白盒测试方法是通过分析程序的()来设计测试用例的方法。
A.应用范围 B.内部逻辑 C.功能 D.输入数据
140.需求分析是分析员经了解用户的要求,认真细致地调研、分析,最终建立目标系统的逻辑模型并写出()的过程。A.模块说明书 B.软件规格说明 C.项目开发计划 D.合同文档
141.数据耦合和控制耦合相比,则()成立。A.数据耦合的耦合性强 B.控制耦合的耦合性强
C.两者的耦合性相当 D.两者的耦合性需要根据具体情况分析 142.鱼是一种水生动物。鱼与水生生物之间的关系是()。A.分类关系 B.组装关系 C.整体成员关系 D.has a 146 .用白盒法技术设计测试用例的方法包括()A .错误推测 B .因果图
C .基本路径测试 D .边界值分析 147 .软件测试中根据测试用例设计的方法的不同可分为黑盒测试和白盒测试两种,它们()
A .前者属于静态测试,后者属于动态测试 B .前者属于动态测试,后者属于静态测试 C .都属于静态测试 D .都属于动态测试
.当一个模块直接使用另一个模块的内部数据,这种模块之间的耦合为()
A .数据耦合 B .公共耦合 C .标记耦合 D .内容耦合 150.为高质量地开发软件项目,在软件结构设计时,必须遵循 _________ 原则。()
A .信息隐蔽 B .质量控制 C .程序优化 D .数据共享
151 .螺旋模型是一种将瀑布模型和 _________ 结合起来的软件开发模型。()
A .增量模型 B .专家系统 C .喷泉模型 D .变换模型
152 .需求规格说明书的作用不包括()A .软件验收的依据
B .用户与开发人员对软件要做什么的共同理解 C .软件可行性研究的依据 D .软件设计的依据
157.单元测试阶段主要涉及()的文档。A.需求设计 B.编码和详细设计 C.详细设计 D.概要设计
158.在软件测试中,白盒测试方法是通过分析程序的()来设计测试用例的方法。
A.应用范围 B.内部逻辑 C.功能 D.输入数据
159.需求分析是分析员经了解用户的要求,认真细致地调研、分析,最终建立目标系统的逻辑模型并写出()的过程。A.模块说明书 B.软件规格说明
C.项目开发计划 D.合同文档
第二篇:软件工程 练习题
演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案
软件工程
练习题
1.在软件生产的程序系统时代由于软件规模扩大和软件复杂性提高的原因导致了(软件危机)
2.面向对象的程序设计特征有(多态 继承 封装)
3.程序的三种控制结构(顺序结构
选择结构
循环结构)4.白盒测试技术有(语句覆盖
判断覆盖
条件覆盖
条件组合 判断/条件覆盖)
5.数据字典是用来定义(数据流图)中的各个成分的具体含义的6.结构化分析方法(SA)的一个重要指导思想是(自顶向下,逐步分解)7.jackson设计方法是由英国的M.jackson提出的,它是一种面向(数据结构)的软件设计方法
8.瀑布模型突出的缺点是不适应(用户需求)的变动
9.汽车有一个发动机,汽车与发动机的关系属于(整体与部分)关系 10.进行需求分析可使用多种工具,但(PAD图)是不适用的 11.软件结构中两个模块之间有调用关系,传递简单数值相当于高级语言中的值传递,这两个模块之间的耦合是(数据耦合)12.总体设计的目的是确定整个系统的(功能及模块结构)13.程序的三种基本结构的共同特点是(只有一个入口和一个出口)14.白盒测试的方法一般适用于(单元)测试
15.软件配置管理包括(变动控制 配置显示
配置审计)
精心收集
精心编辑
精致阅读
如需请下载!
演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案
16.使用白盒测试方法时,确定测试数据应根据(程序的内部逻辑)和指定的覆盖标准
17.软件测试方法有(白盒测试
黑盒测试
动态测试
功能测试)18.软件结构图的形态特征能反映程序重用率的是(扇入)19.为了提高模块的独立性,模块的内部最好的是(功能内聚)20.软件开发过程中,抽取盒整理用户需求建立问题及模型的过程叫(面向对象分析)
21.完成系统逻辑模型的开发阶段是(分析设计)22.属于软件开发工具的是(报表生成器)
23.系统可行性研究主要从(技术可行性
经济可行性
操作可行性)几个方面进行
24.数据字典定义数据流或数据存储组成时,使用了若干符号,其中(.....)的含义是(或)
25.划分模块时(作用范围在其控制范围之内)
26.(模块)是指具有相对独立的、由数据说明、执行语句等程序对象构成的集合
27.软件工程方法的目的是:使软件生产规范化和工程化,而软件工程的方法得以实施的主要保证是(软件开发工具和软件开发环境)28.(螺旋模型)引入了“风险驱动”思想,使用于大规模的内部开发项目
29.构造原型时,主要考虑(原型要体现的特征)
30.数据字典是软件需求分析阶段最重要的工具之一,最基本的功能
精心收集
精心编辑
精致阅读
如需请下载!
演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案
是(数据定义)
31.面向数据流的设计方法把(数据流)映射成软件结构 32.内聚程度最低的是(偶然)内聚
33.软件需求规格说明的内容不应包括(算法的详细描述)34.在E-R模型中,包含的基本成分是(实体
联系
属性)35.详细设计的基本任务是确定每个模块的(算法)设计
36.面向对象的设计方法主要是建立三类模型,即(对象模型
动态模型
功能模型)
37.面向对象(00)由(对象+类+继承+消息)组成 38.软件维护组织成员不包括(编程人员)39.(代码行技术)定量估算。源程序行数
40.软件生存中期由(分析
设计
实现)三个时期组成41.软件开发环境的目标是(提高软件成产率和提高软件质量)42.信息建模的核心概念是(和)43.数据流可分为(变换型和事务型)
44.面向对象设计主要包括(系统结构)设计、系统信息量设计和(数据结构)设计和划分程序阶段
45.在数据流图中,没有任何具体的物理元素,它仅仅描述数据在系统中的(流动和处理)的情况
46.模块独立性可通过(内聚和耦合)两方面来衡量
47.软件开发是一个自顶向下逐步细化和求精的过程,而软件测试是一个(自低向上)的集成过程
精心收集
精心编辑
精致阅读
如需请下载!
演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案
48.常见的软件开发模型有(瀑布
圆形
螺旋)三种
49.从软件工程管理的角度,软件设计分为(概念设计和详细设计)两步完成
50.概要设计过程由(确定设计方案和结构设计)两个阶段组成 51.动态测试既可以采用(白盒测试)对模块进行逻辑测试,又可以用(黑盒)做功能测试
52.类之间的结构关系主要有两种,(一般与特殊结构关系和整体与部分结构关系)
53.(工程网络技术)能显示地表示各个作业彼此间的依赖关系,从中容易事变出来关键路行和关键任务
54.自顶向下结合的渐增式测试方法,在组合模型时有两种组合策略(深度优先和宽度优先)策略
55.模块是一般具有如下三个属性(功能)描述该模块实现什么功能,(逻辑)描述模块内部怎么做,(状态)描述该模块使用条件和环境 56.为了便于对照检测,测试用例应由(输入数据和预期输出结果)两部分组成
57.(软件测试阶段)是在软件投入运行前对软件需求分析,软件设计规格说明和软件编码进行查错和纠错
58.软件维护的四类维护活动是(完善
预防
适应性
改正)维护
59.软件系统中常用(数据文件)存放数据,供系统中各模块共享系统外部做通信用,其设计主要是(数据格式)设计
精心收集
精心编辑
精致阅读
如需请下载!
演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案
60.(模块)是指具有相对独立性的,由数据说明,执行语句等程序对象构成的集合
61.类是一组具有(相同数据结构和相同数据类型)的对象集合 62.影响软件可维护性的因素主要有(可理解性
可测试性
可修改性
可移植性
可使用性)
63.确认测试可以发现软件系统是否符合用户的(功能和性能)需求的
64.从结构化的瀑布模型看,在软件生存周期的几个阶段中,对软件影响最大的是(需求分析)阶段
65.模块内聚最好的是(功能内聚)最差的是(偶然内聚)66.软件文档可分为(用户文档和系统文档)两类
67.成本--效益分析的目的是从(经济)角度评价开发一个新软件项目是否可行
68.(系统流程图)中各个元素表达了系统中各种元素之间(信息流动)情况 简答
1.软件危机产生的原因 软件日益复杂和庞大 软件开发管理困难复杂 软件开发技术落后 生产方式落后 开发工具落后
精心收集
精心编辑
精致阅读
如需请下载!
演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案
软件开发费用不断增加
2.结构化设计步骤
对数据流图进行复审,必要时修改或细化 根据流图确定软件结构属于变换型还是事务型 把数据流图映射成初始结构图 改进结构图,使设计更完善 3.结构化程序设计的主要思想 自顶向下,逐步求精的设计方法
使用三种基本控制结构,单入口、单出口来构造程序 4.决定软件可维护性的因素 系统大小,系统年龄 结构合理性,模块化 层次组织 系统文档结构 命令的格式和约定 程序的复杂性等等
5.数据字典与数据流图的关系
数据字典与数据流图相辅相成,互相配合,分析员应遵守以下约定,有关数据流向在数据流图中,数据组成在数据字典中描述,有关数据的加工细节在数据字典中描述,编写数据字典时不能遗漏和重复 6.软件测试和调试的目的的区别 测试的目的是判断和发现软件是否有错
精心收集
精心编辑
精致阅读
如需请下载!
演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案
调试的目的是定位软件错误并纠正 7.如何提高程序的可维护性 建立明确的软件质量目标和优先级 进行明确的质量保证审查 选择可维护的程序设计语言 改进程序的文档
8.静态测试和动态测试的区别
静态分析技术不执行被测试软件,可对需求分析说明书、软件设计说明书、源程序...9.需求分析与软件设计二个阶段的任务主要区别是什么 需求分析定义软件的用户需求即做什么 软件设计定义软件实现细节即研究如何实现软件 10.软件测试目的
发现程序错误而执行程序的过程
好的测试方案是极可能发现迄今为止尚未发现的错误 成功的测试方案是发现至今未发现的错误的测试 11.文档在软件工程中的作用 提高过程能见度 提高开发效率
作为阶段工作成果和结束标志 记录有关信息便于使用于维护 提供运行、维护、培训的有关资料
精心收集
精心编辑
精致阅读
如需请下载!
演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案
12.软件测试步骤,说明这些步骤的测试对象是什么 单元测试
对象是段远模块
集成测试
对象是组装后的程序模块 确认测试
对象是可运行的目标软件系统
精心收集
精心编辑 精致阅读
如需请下载!
第三篇:软件工程练习题1
《软件工程概论》练习题
单选15 判断10
一、概念解释15
1.软件2.软件危机3.软件生命周期4.概要设计、详细设计5.软件测试
6.信息隐藏7.耦合8.内聚9.黑盒测试10.白盒测试11.对象
12.继承13.多态性14.数据字典(DD)15.单元测试、集成测试、确认测试
二、简答题30
1.简述软件工程方法学包括的三要素及其含义。
2.简述继承的含义,并通过一个具体例子加以说明。
3什么是软件危机?软件危机的表现是什么?其产生的原因是什么?如何消除软件危机?
4.在软件设计过程中需遵守一系列准则和规则,模块化是一条重要准则:
(1)为什么说只有合理划分模块才能保证软件的开发成本达到最小?
(2)什么是模块独立性?如何度量?
5.根据你了解的知识,简述“信息隐藏”在软件设计中的作用
6.简述面向对象分析的基本步骤
7.需求分析的任务是什么?
8.快速原型技术的基本思想是什么?
9.简述三种面向对象模型的主要功能
第四篇:《软件工程》期末考试模拟练习题
期末考试模拟练习题
一、填空题
1、用软件工程的观点看,软件=__程序____+____数据____+___系列文档__。
2、软件是计算机系统中与硬件相互依存的部分,它是包括_____程序_____,_____数据
____和___系列文档___的完整集合。
3、可行性分析的内容包括四个方面:__技术可行性_____,_经济可行性__,_操作可行
性____和___法律可行性__。
4、软件开发的结构化分析方法中,数据加工是组成内容之一。常用的加工说明的描述
方法有__结构化语言___、_____判定树____和____判定表__。
5、面向数据流的软件设计方法,一般将数据流图分成两种类型,一种称为__变换型___,另一种称为_事务型_。
6、内聚和耦合是模块独立性的重要度量,内聚是指__模块内部各软件元素之间结合的紧密程度___,耦合是指__度量一个软件结构中模块与模块之间联系程度强弱的一个指标__,从设计策略讲,模块的分解应遵循____高___内聚____低___耦合的原则。
7、程序设计语言的三个特性分别是_工程特性__,__技术特性__,_心理特性__。
8、大型软件系统的测试基本上由以下几个步骤组成,分别是__单元测试__,__集成测
试___,_确认测试___,_系统测试__和__验收测试___,其中需要最终用户参与的测试为___验收测试和系统测试__。
9、白盒子测试技术是从程序内部的逻辑结构及处理过程入手来设计测试用例,故
又称为__结构测试__测试;而黑盒子测试技术则相反,它是以需求规格说明书为根据来设计测试用例,故又称为__功能测试__测试。
10、软件维护的类型分为4种,分别是_改正性维护_,__适应性维护_,___完善性维
护_,___预防性维护_。
11、在软件运行中发生异常或故障时进行的维护工作称为__改正性维护___维护。在软
件的使用过程中,根据用户提出的新增系统功能和改善性能的要求而对软件进行修改或再开发,以扩充软件功能、增强软件性能、改进加工效率、提高软件质量的工作成为____完善性维护__维护。
12、面向对象就是运用___对象___、___类____、____继承______、___封装____、___消息____等面向对象的概念对问题进行分析,求解的系统开发技术。
13、由Rumbaugh等人提出的一种面向对象方法叫做对象模型化技术(OMT),它要求
把分析时收集的信息建立在3个模型中。第一个模型是__对象模型__,它的作用是描述系统的静态结构,包括构成系统的对象和类、它们的属性和操作,以及它们之间的联系。第二个模型是_动态模型_,它描述系统的控制逻辑,主要涉及系统中各个对象和类的时序及变化状况。第三个模型是_功能模型_,它着重于描述系统内部数据的传送与处理,它由多个数据流图组成。
14、在软件研制过程中,CASE是指__计算机辅助软件工程_。
15、面向对象的软件开发方法中,UML指__统一建模语言_。
二、选择题
1、瀑布模型将软件生命周期划分为计划、开发和运行三个时期。在下述工作中,属于
软件开发期的内容是_D___。
I 需求分析II 可行性分析III 结构设计
A)都是C)只有I
B)I和IID)I和III2、软件计划的目的是提供一个框架,使主管人员对项目能在短时间内进行合理的估价。
在下述内容中,不属于计划期的内容是_C___。A)资源需求
C)功能需求
B)成本估算D)项目进度
3、数据流图是用于软件需求分析的工具,下列元素中_C____是数据流图的基本元素。
I 数据流II 数据加工III 数据存储IV 外部实体 A)I、II和III C)全部
B)I和IIID)I、III和IV4、软件开发的结构化分析方法中,数据加工是组成内容之一。在下列方法中,常采用
编写加工说明方法的是__D__。
I 结构化语言II 判定树III判定表A)只有I
B)只有IID)都是
C)II和III5、软件工程的结构化分析方法强调的是分析开发对象的__A___。
A)数据流
B)控制流D)进程通信
C)时间限制
6、原型化方法是用户和软件开发人员之间进行的一种交互过程,适用于___A___系统。
A)需求不确定性高的C)管理信息
B)需求确定的 D)决策支持
7、软件的设计分两个阶段,即结构设计和详细设计,结构设计又称为_B__。
A)逻辑设计C)规划设计
B)总体设计 D)抽象设计
8、模块本身的内聚是模块独立性的重要度量因素之一,7类内聚中具有最强内聚的一
类是_D___。
A)顺序性内聚C)逻辑性内聚
B)过程性内聚 D)功能性内聚
9、软件测试的对象是___C___。A)程序
B)文档 D)模块算法
C)程序和各个软件配置项
10、成功的测试是指___B___。
A)运行测试实例后未发现错误项
C)证明程序正确
B)发现程序中的错误 D)改正程序中的错误
11、若有一个计算类型的程序,它的输入量只有一个X,其范围是[-1.0,1.0],现在从输入的角度考虑一组测试用例:-1.001,-1.0,1.0,1.001。设计这组测试用例的方法是__A_。A)边界值分析法C)条件覆盖法
B)等价分类法 D)错误推测法
12、因计算机硬件和软件环境的变化而做出的修改软件的过程称为______C______维
护。在软件维护类型中占全部维护活动一半以上的是______________维护。
I 改正性维护A)I,II
II 适应性维护 B)II,I
III 完善性维护 C)II,III
IV 预防性维护 D)II,IV13、在面向对象分析中,下列各项可列入类的实例的是____D_。
I 学生II 网上购物III白马IV 张三A)I 和 II
B)II 和IV D)都是
C)II、II、IV14、下列哪些问题是项目管理工作应该重点考虑的___C___。
I 风险分析和管理IV软件项目计划
II 项目进度安排V 软件配置管理
III 软件需求分析 VI软件测试
A)III,VIB)III,IV,VIC)I、II、IV、VD)都是
15、软件文档是软件工程实施中的重要成分,它不仅是软件开发各阶段的重要依据而且
也影响软件的_B____。
A)可理解性
B)可维护性 D)可移植性
C)可扩展性
第五篇:软件工程
2.2软件开发的基本策略
人们都有自己的世界观和方法论,能自然而然地运用于生活和工作中。同样,程序员脑子里的软件工程观念会无形地支配其怎么去做事情。软件工程三十年的发展,已经积累了相当多的方法,但这些方法不是严密的理论。实践人员不应该教条地套用方法,更重要的是学会“选择合适的方法”和“产生新方法”。有谋略才会有好的战术。几千年前,我们的祖先就在打闹之际写下了很多心得体会,被现代人很好地运用于工业和商业。本节讲述软件开发中的三种基本策略:“复用”、“分而治之”、“优化——折衷”。
2.2.1复用
复用就是指“利用现成的东西”,文人称之为“拿来主义”。被复用的对象可以是有形的物体,也可以是无形的成果。复用不是人类懒惰的表现而是智慧的表现。因为人类总是在继承了前人的成果,不断加以利用、改进或创新后才会进步。所以当我们欢度国庆时,要搞清楚祖国远不止50岁,我们今天享用到的财富还有上下五千年人民的贡献。进步只是应该的,不进步则就可耻了。
复用的内涵包括了提高质量与生产率两者。由经验可知,在一个新系统中,大部分的内容是成熟的,只有小部分内容是创新的。一般地可以相信成熟的东西总是比较可靠的(即具有高质量),而大量成熟的工作可以通过复用来快速实现(即具有高生产率)。勤劳并且聪明的人们应该把大部分的时间用在小比例的创新工作上,而把小部分的时间用在大比例的成熟工作中,这样才能把工作做得又快又好。
把复用的思想用于软件开发,称为软件复用。据统计,世上已有1000亿多行程序,无数功能被重写了成千上万次,真是浪费哪。面向对象(Object Oriented)学者的口头禅就是“请不要再发明相同的车轮子了”。
将具有一定集成度并可以重复使用的软件组成单元称为软构件(Software Component)。软件复用可以表述为:构造新的软件系统可以不必每次从零做起,直接使用已有的软构件,即可组装(或加以合理修改)成新的系统。复用方法合理化并简化了软件开发过程,减少了总的开发工作量与维护代价,既降低了软件的成本又提高了生产率。另一方面,由于软构件是经过反复使用验证的,自身具有较高的质量。因此由软构件组成的新系统也具有较高的质量。利用软构件生产应用软件的过程如图1.5所示。
软件复用不仅要使自己拿来方便,还要让别人拿去方便,是“拿来拿去主义”。面向对象方法,Microsoft公司的COM规范 [Rogerson 1999],都能很好地用于实现大规模的软件复用。
2.2.2分而治之
分而治之是指把一个复杂的问题分解成若干个简单的问题,然后逐个解决。这种朴素的思想来源于人们生活与工作的经验,完全适合于技术领域。软件人员在执行分而治之的时候,应该着重考虑:复杂问题分解后,每个问题能否用程序实现?所有程序最终能否集成为一个软件系统并有效解决原始的复杂问题?
图1.6表示了软件领域的分而治之策略。诸如软件的体系结构设计、模块化设计都是分而治之的具体表现。软件的分而治之不可以“硬分硬治”。不像为了吃一个西瓜或是一只鸡,挥刀斩成n块,再把每块塞进嘴里粉碎搅拌,然后交由胃肠来消化吸收,象征复杂问题的西瓜或是鸡也就此消失了。
2.2.3优化——折衷
软件的优化是指优化软件的各个质量因素,如提高运行速度,提高对内存资源的利用率,使用户界面更加友好,使三维图形的真实感更强等等。想做好优化工作,首先要让开发人员都有正确的认识:优化工作不是可有可无的事情,而是必须要做的事情。当优化工作成为一种责任时,程序员才会不断改进软件中的算法,数据结构和程序组织,从而提高软件质量。
著名的3D游戏软件Quake,能够在PC机上实时地绘制高度真实感的复杂场景。Quake的开发者能把很多成熟的图形技术发挥到极致,例如把Bresenham画线、多边形裁剪、树遍历等算法的速度提高近一个数量级。我第一次看到Quake时不仅感到震动,而且深受打击。这个PC游戏软件的技术水平已经远胜于我所见识到的国内领先的图形学相关科研成果。这对我们日益盛行的点到完止的研发工作真是莫大的讽刺。所以当我们开发的软件表现出很多不可救药的病症时,不要怨机器差。真的是我们自己没有把工作做好,写不好字却嫌笔钝。
就假设我们经过思想教育后,精神抖擞,随时准备为优化工作干上六天七夜。但愿意做并不意味着就能把事情做好。优化工作的复杂之处是很多目标存在千丝万缕的关系,可谓数不清理还乱。当不能够使所有的目标都得到优化时,就需要“折衷”策略。
软件中的折衷策略是指通过协调各个质量因素,实现整体质量的最优。就象党支部副书记扮演和事佬的角色:“…为了使整个组织具有最好的战斗力,我们要重用几个人,照顾一些人,在万不得已的情况下委屈一批人”。
软件折衷的重要原则是不能使某一方损失关键的职能,更不可以象“舍鱼而取熊掌”那样抛弃一方。例如3D动画软件的瓶颈通常是速度,但如果为了提高速度而在程序中取消光照明计算,那么场景就会丧失真实感,3D动画也就不再有意义了(如果人类全是色盲,计算机图形学将变得异常简单)。
人都有惰性,如果允许滥用折衷的话,那么一当碰到困难,人们就会用拆东墙补西墙的方式去折衷,不再下苦功去做有意义的优化。所以我们有必要为折衷制定严正的立场:在保证其它因素不差的前提下,使某些因素变得更好。
下面让我们用“优化——折衷”的策略解决“鱼和熊掌不可得兼”的难题。
问题提出:假设鱼每千克10元,熊掌每千克一万元。有个倔脾气的人只有20元钱,非得要吃上一公斤美妙的“熊掌烧鱼”,怎么办?
解决方案:化9元9角9分钱买999克鱼肉,化10元钱买1克熊掌肉,可做一道“熊掌戏鱼”菜。剩下的那一分钱还可建立奖励基金。
2.3一些不正确的观念
本节例举并分析一些不正确的软件工程观念,可帮助初学者少犯相似的错误。
观念之一:我们拥有一套讲述如何开发软件的书籍,书中充满了标准与示例,可以帮助我们解决软件开发中遇到的任何问题。
客观情况:好的参考书无疑能指导我们的工作。充分利用书籍中的方法、技术和技巧,可以有效地解决软件开发中大量常见的问题。但实践者并不能因此依赖于书籍,这是因为:(1)现实的工作中,由于条件千差万别,即使是相当成熟的软件工程规范,常常也无法套用。(2)软件技术日新月异,没有哪一种软件标准能长盛不衰。祖传秘方在某些领域很吃香,而在软件领域则意味着落后。
观念之二:我们拥有最好的开发工具、最好的计算机,一定能做出优秀的软件。
客观情况:良好的开发环境只是产出成果的必要条件,而不是充分条件。如果拥有好环境的是一群庸人,难保他们不干出南辕北辙的事情。
观念之三:如果我们落后于计划,可以增加更多的程序员来解决。
客观情况:软件开发不同于传统的农业生产,人多不见得力量大。如果给落后于计划的项目增添新手,可能会更加延误项目。因为:(1)新手会产生很多新的错误,使项目混乱。(2)老手向新手解释工作以及交流思想都要花费时间,使实际开发时间更少。所以科学的项目计划很重要,不在乎计划能提前多少,重在恰如其分。如果用“大跃进”的方式奔向共产主义,只会产生倒退的后果。
观念之四:既然需求分析很困难,不管三七二十一先把软件做了再说,反正软件是灵活的,随时可以修改。
客观情况:对需求把握得越准确,软件的修修补补就越少。有些需求在一开始时很难确定,在开发过程中要不断地加以改正。软件修改越早代价越少,修改越晚代价越大,就跟治病一样道理。
2.4一些有争议的观念
本节探讨一些有争议的观念,目的不在于得出“正确”或“错误”的评断,而在于争议会激发更多理性的思考。
争议之一:如果软件运行较慢,是换一台更快的计算机,还是设计一种更快的算法?
作者观点:如果开发软件的目的是为了学习或是研究,那么应该设计一种更快的算法。如果该软件已经用于商业,则需谨慎考虑:若换一台更快的计算机能解决问题,则是最快的解决方案。改进算法虽然可以从根本上提高软件的运行速度,但可能引入错误以及延误进程。技术狂毫无疑问会选择后者,因为他们觉得放弃任何可以优化的机会就等于犯罪。
类似的争议还有:是买现成的程序,还是彻底自己开发?技术人员和商业人士常常会有不同的选择。
争议之二:有最好的软件工程方法,最好的编程语言吗?
作者观点:在软件领域永远没有最好的,只有更好的。能解决问题的都是好方法或是好语言。程序员在最初学习Basic、Fortran、Pascal、C、C++等语言时会感觉一个比一个好,不免有喜新厌旧之举。而如今 的Visual Basic、Delphi、Visual C++、Java等语言各有所长,真的难分优劣。开发人员应该根据客观条件,选择自己熟悉的方法和语言,才能保证合格的质量与生产率。
程序设计是自由与快乐的事情,不要发誓忠于某某主义而自寻烦恼。
争议之三:编程时是否应该多使用技巧?
作者观点:就软件开发而言,技巧的优点在于能另辟蹊径地解决一些问题,缺点是技巧并不为人熟知。若在程序中用太多的技巧,可能会留下隐患,别人也难以理解程序。鉴于一个局部的优点对整个系统而言是微不足道的,而一个错误则可能是致命的。作者建议用自然的方式编程,少用技巧。
《狼三则》的故事告诉我们“失败的技巧通常是技俩”。当我们在编程时无法判断是用了技巧还是用了技俩,那就少用。《卖油翁》的故事又告诉我们“熟能生巧”,表明技巧是自然而然产生的,而不是卖弄出来的。卖油翁的绝技是可到中央电视台表演的,而他老人家却谦虚地说:“没啥没啥,用熟了而已”。
争议之四:软件中的错误是否可按严重程度分等级?
作者观点:在定量分析时,可以将错误分等级,以便于管理。微软的一些开发小组将错误分成四个等级 [Cusumano 1996],如表1.1所示。
一级严重:错误导致软件崩溃。
二级严重:错误导致一个特性不能运行并且没有替代方案。
三级严重:错误导致一个特性不能运行但有替代方案。
四级严重:错误是表面化的或是微小的。
表1.1 错误的四个等级
上述分类是非常技术性的,并不是普适的。假设某个财务软件有两个错误:错误A使该软件死掉,错误B导致工资计算错误。按表1.1分类,错误A属一级严重,错误B属二级严重。但事实上B要比A严重。工资算多了或者算少了,将会使老板或员工遭受经济损失。而错误A只使操作员感到厌烦,并没有造成经济损失。另一个示例是操作手册写错,按表1.1分类则属四级严重,但这种错误可能导致机毁人亡。
开发人员应该意识到:所有的错误都是严重的,不存在微不足道的错误。这样才能少犯错误。
2.5小 结
软件工程学科发展到今天,已经有了很多方法和规范,学之不尽。本章只在宏观上讨论了软件工程的一些
思想,更具体的内容将在后面的章节论述。无论是什么好方法,贵在理解与灵活运用,而不可当成灵丹妙药,不象“吃了脑黄金或脑白金,就能使一亿人先聪明起来”。
3程序员与程序经理
工作在第一线的软件开发人员是程序员和程序经理,他们决定着软件的命运。良好的程序员队伍和出色的管理是软件项目成功的必要条件。管理不是管制,不是去卡住人家的脖子,因为程序员不是一群野鸭子。管理的目的是让大家一起把工作做好,并且让各人获得各自的快乐和满足。当一个组织被出色地领导时,雇员甚至不知道他们已被领导。在项目完成时,他们会自豪地说:“看看我们通过努力取得的成绩吧”。所以管理者不能老惦记着自己是一个官,而应时刻意识到自己是责任的主要承担者。
我们经常会听到有经理头衔的人在高谈阔论:“编程我不会,做个项目还不easy?派个人去搞系统分析,回头再叫几个程序员把需求译成程序,不就OK了吗?”
不懂英语的人准以为easy和OK是贬义词。要让软件项目失败很容易,只要符合下列条件之一即可:
(1)项目经理对软件一无所知;
(2)技术负责人对编程不感兴趣;
(3)真真编写代码的程序员是临时雇用的。
如果上述三个条件同时具备,就请放心失败好了。
让我们少幻想自己是比尔·盖茨,先当好程序员和程序经理再说。
3.1了解程序员
早期的程序员干活能从软件直通硬件,个个生猛无比。又因他们的作息时间、言行举止与常人不太一样,久而久之就给人们留下了“神秘”、“孤僻”的印象。如今软件行业被炒得热火朝天,有能耐的程序员即便躲在大山岙的军工厂里也能被挖出来。而更多原本不是程序员的人操起几本“速成”、“二十一天通”等书籍也加入了这个行业。现在国内号称有上百万程序员,这支大军鱼龙混杂,已搞不清那些是正规军,那些是民兵游击队了。