如何评测软件工程知识技能水平?
1)能做正确的决定:优秀的软件工程师深知没有完美的设计、服务和工具,他们还深刻理解可选方案以及实际状况的约束并能做出适当的权衡。一般的软件工程师只是盲目地使用当前比较流行的服务、设计和工具,而不做更深一步的理解和研究。
2)编写高质量的代码:良好的编程习惯不但有助于代码的移植和纠错,也有助于不同技术人员之间的协作。优秀的软件工程师都具有良好的编程习惯,他们编写尽量少的代码即可满足需求,还能够引入恰当的抽象层次,重构代码,将业务逻辑和其他程序逻辑分离。一般的软件工程师编写不出高质量的代码,他们只关心自己的代码是否能够达到预期的输出结果,只要有输出结果,就认为自己的任务完成了,根本不在乎代码的可维护性和可读性。
3)长远的眼光:洞察力优秀的软件工程师具有长远的眼光,使他们能够承担起各种困难的软件项目,他们经历过无数的非预期任务,如被喊去解决线上服务器的问题,处理积累了很多技术债的代码以及面对较为紧张的期限。一般的软件工程师对发生的问题从不积极响应,还责怪别人处理不当;当事情进展不顺时,他们很容易失去信心或推卸责任,不主动、不认真地解决问题。
4)扎实的计算机知识:一名优秀的软件工程师必然具有完整的计算机知识体系,这有助于让他们在面对复杂的技术问题的时候直击问题的本质,如果一个软件工程师的知识知识浮于表面,只满足调用各种API,那么他是无法发现和解决复杂的问题的。
5)团队协作能力:优秀的软件工程师深知一项业务的成功不能只靠个人单打独斗,而是团队的力量推动整个业务前进,因此一个优秀的软件工程师必然具有优秀的团队协作能力和沟通能力。
软件工程知识技能水平测评试题
以下试题来自各大学期末考试试卷
选择题:
1.软件开发瀑布模型中的软件定义时期各个阶段依次是: (B)
A) 可行性研究,问题定义,需求分析。
B) 问题定义,可行性研究,需求分析。
C) 可行性研究,需求分析,问题定义。
D) 以上顺序都不对。
2.可行性研究主要从以下几个方面进行研究: ( A )
A) 技术可行性,经济可行性,操作可行性。
B) 技术可行性,经济可行性,系统可行性。
C) 经济可行性,系统可行性,操作可行性。
D) 经济可行性,系统可行性,时间可行性。
3 耦合是对软件不同模块之间互连程度的度量。 各种耦合按从强到弱
排列如下: ( C )
A) 内容耦合,控制耦合,数据耦合,公共环境耦合。
B) 内容耦合,控制耦合,公共环境耦合,数据耦合。
C) 内容耦合,公共环境耦合,控制耦合,数据耦合。
D) 控制耦合,内容耦合,数据耦合,公共环境耦合。
4 在软件生命周期中,能准确确定软件系统的体系结构的功能阶段是
( C )
A.概要设计 B.详细设计 C.需求分析 D.可行性分析
5.下列叙述中不属于软件生命周期模型的是(D)
A.原型模型 B.瀑布模型 C.螺旋模型 D.快速组装模型
6.软件设计中,用抽象和分解的目的是(B)
A.提高易读性 B.降低复杂性 C.增加内聚性 D.降低耦合性
7 软件生命周期中所花费用最多的阶段是( D )。
A.详细设计 B.软件编码 C.概要设计 D.软件测试和维护
8.开发软件时对提高开发人员工作效率至关重要的是(B)
A.操作系统的资源管理功能
B.先进的软件开发工具和环境
C.程序人员的数量
D.计算机的并行处理能力
9.开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种
现象称作( B )。
A.软件投机 B.软件危机 C.软件工程 D 软件产生
10 软件开发的结构化生命周期方法将软件生命周期划分成 ( A )。
A.定义、开发、运行维护
B.设计阶段、编程阶段、测试阶段
C.总体设计、详细设计、编程调试
D.需求分析、功能定义、系统设计
11 软件设计中划分模块的一个准则是( C)。
A、 低内聚低耦合
B、 低内聚高耦合
C、 高内聚低耦合
D、 高内聚高耦合
12( A)是用户和设计交换最频繁的方法。
A、 原型化方法 B、瀑布模型方法
C、 螺旋模型方法 D、构件组装模型
13 下列语言中哪个语言是低级语言 ( D) 。
A、 PASCAL B、 VISUAL BASIC
C、 C++ D、 汇编语言
14 软件测试的目的是? (D )
A、 证明软件的正确性
B、 找出软件系统中存在的所有错误
C、 证明软件系统中存在错误
D、 尽可能多的发现软件系统中的错误
15. 使用白盒测试方法时,确定测试数据应根据(A )和指定的覆盖标准。
A、程序的内部逻辑 B、程序的复杂程度
C、该软件的编辑人员 D、程序的功能
16. 软件维护工作的最主要部分是 (C ) 。
A、 校正性维护 B、适应性维护
C、完善性维护 D、预防性维护
填空题:
1. 黑盒测试又称为 (功能测试 数据驱动测试或基于规格说明的测试) ,白盒测试也称为(结构测试或逻辑驱动测试)
2、如果用户对系统的目标不是很清楚,需求难以定义,这时最好使用(原型)模型进行系统开发。
3、在软件开发的各个阶段中, 对软件开发成败影响最大的是 (需求分析) 阶段。
4、研究可行性从 (技术可行性,经济可行性,操作可行性 )三个方面进行研究。
5.结构化方法的指导思想是 (自顶向下,逐步分解)
6、在软件开发的各个阶段中,(软件维护) 阶段成为软件的二次开发。
7、类是指具有相同数据结构和相同操作的 (对象) 的集合。
8. 数 据 流程 图 按 照信 息流的类型主要分为 (事务流)和 (变换流)两种。
9.软件危机是指在(计算机软件开发和维护)过程中所遇到的一系列严重问题
10.软件工程方法学的三要素是 (方法 工具 过程)
判断题:
1、开发软件就是编写程序。 (×)
2、系统测试的主要方法是白盒法,主要进行功能测试、性能测试、安全性测试及可靠性等测试。 (×)
3、生产高质量的软件产品是软件工程的首要目标。 (√ )
4、只有了解用户、了解任务,才能设计出好的用户界面。 (√)
5、对象是具有相同状态的一组操作的集合。 (√)
6、用户本身的技能,个性上的差异,行为方式的不同,不会对人机界面使用造成影响。(×)
7、编程序时应尽可能利用硬件特点以提高程序效率 . (×)
8、软件开发人员对用户需求的理解有偏差,这将导致软件产品与用户的需求不一致,是产生软件危机的唯一原因。 ( ×)
9、开发一个软件项目总存在某些不确定性,即存在风险。有些风险如果控制得不好,可能导致灾难性的后果。 (√ )
10. 程序的可靠性、可维护性和效率通常由程序设计语言、源代码的质量、和语言的实现机制决定的。 (√)
简答题:
1.软件开发和写程序有什么不同
答:软件包含程序,程序是软件的一部分。
软件是程序、数据及其相关文档的完整集合。
程序只是为了实现软件的功能和性能要求而编写的指令序列
2.什么是软件的生命周期,包含哪些阶段
答:是软件产生直到报废的生命周期,周期内有问题定义、可行性分析、总体描述、系统设计、编码、调试和测试、验收与运行、维护升级到
废弃等阶段
3:比较黑盒测试和白盒测试的优缺点
答:黑盒测试的优点:适应于阶段测试,从产品功能角度测试,容易入手生成测试数据。
缺点:某些代码得不到测试,如果规格说明有误,可能无法发现,不易进行充分性测试。
白盒测试 的优点:可构成测试数据使特定程序部分得到测试, 有一定的充分性度量手段,可生成较多工具支持。
缺点:不易生成测试数据,无法对未实现规格说明的部分进行测试,作量大通常只用于单元测试有应用局限。
4、软件测试要经过哪些步骤 ?这些测试与软件开发各阶段之间有什么关系 ?
答:软件测试要经过的步骤是:单元测试→集成测试→确认测试→系统测试。
单元测试对源程序中每一个程序单元进行测试, 检查各个模块是否正确实现规定的功能, 从而发现模块在编码中或算法中的错误。该阶段涉及编码和详细设计文档。
集成测试是为了检查与设计相关的软件体系结构的有关问题, 也就是检查概要设计是否合理有效。
确认测试主要是检查已实现的软件是否满足需求规格说明书中确定了的各种需求。
系统测试是把已确认的软件与其他系统元素 (如硬件、其他支持软件、数据、人工等 )结合在一起进行测试。以确定软件是否可以支付使用。
5:说明面向对象的特征 ?
面向对象的特征是:
(1)对象唯一性。每个对象都有自身唯一的标识,在对象生存期中,其标识不变,不同的对
象不能有不同的标识。
(2)分类性。是指将具有一致的数据结构 (属性 )和行为 (操作 )的对象抽象成类
(3)继承性。是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系。
(4)多态性。是指相同的操作或函数过程可以作用于多种类型的对象上并获得不同的结果。