一个软件工程师的软件工程知识技能水平高低主要体现在哪些方面
1、编程语言能力
对于软件工程师来说,首先应该掌握至少一门计算机编程语言,并且能够深入理解OOP,OOA,OOD等基本的编程思想,要熟练地运用操作工具集进行编译和调试。
2、编码能力
这个编码能力可不仅仅是读懂别人代码,从网上拼凑代码的能力,而是独立自主地完成一个单独模块的开发。包括在不同层级上分解任务,以决定任务的执行次序、执行条件和循环执行。
3、学习能力
这个学习能力是不断学习新技术的能力,要知道,现在市场上的技术进步太快了,只有不断地学习,才不会被淘汰。只有具备良好的学习能力,才能不断地更新自身的知识,和技术的进步保持同步。
4、设计能力
当然不能以为软件工程师不需要设计能力,代码是否整洁美观,是否通俗易懂,都是非常重要的。要知道,我们花费在代码读取的时间要远远大于我们实际书写代码的时间。同样的,怎么把接口设计得通俗易懂,复用性强,也是非常重要的。
同样的,我们也应该清楚,一个优秀的软件工程师不仅仅具备扎实的专业知识与技能,而且还要具备一定的设计能力。因为只有这样,才能使一个软件或者应用更加完美,更加容易受到人们的欢迎,从而获得更广阔的市场。
5、团队协作能力
独木不成林, 一个大型的软件不可能是由一个人完成的,在整个软件开发的过程中,我们通常需要协调好产品、测试、前端、后端的各项工作,这对每一个软件工程师来说都是非常重要的。要知道,如果沟通上出了问题可能就会导致1+1 < 2 的结果,单个软件工程师再怎么优秀,如果没有良好的团队协作能力,也是一盘散沙。
试题:
一、单选题:
1、下列不属于软件模型的是(A)
A、概念模型 B、设计模型 C、实现模型 D、部署模型
2、在结构化方法中,可作为总体设计的工具的是(D)
A、盒图 B、数据流图 C、程序流程图 D、模块结构图
3、通过保证每个模块只完成一个特定的功能,这样可以大大减少模块间的(B)
A、内容耦合 B、控制耦合 C、公共耦合 D、数据耦合
4、UML提供用来支持系统交互建模的图形化工具是(D)
A、类图 B、用况图 C、状态图 D、顺序图
5、在软件生存周期模型中,不适应变化需求的软件开发模型是(D)
A、演化模型 B、螺旋模型 C、增量模型 D、瀑布模型
6、对象实现了数据和操作的结合,使数据和操作( C )于对象的统一体中。
A.结合 B.隐藏 C.封装 D.抽象
二、多选题:
1、软件⼯工程包括下列哪些领域(A、B、C、D)
2、检查单元测试应该满足的条件是(A、B、C、D)
A、单元测试应该在最基本的功能/参数上验证程序 的正确性。
B、单元测试过后,机器状态保持不变。
C、单元测试应该产⽣可重复、⼀致的结果。
D、单元测试应该覆盖所有代码路径。
3、下面哪些是符合代码规范的做法(A、C、D)
A、命名文件名、接口和变量的时候力求做到简单明晰,命名名副其实
B、尽可能多的使用注释
C、项目的测试代码和程序单独存放
D、函数尽可能的短小,一个函数实现一个功能,只做一件事
三、简答题:
1、我们常说,软件开发是没有银弹的,这个银弹是什么,为什么这么说?
第一步,画子系统的输入输出
把整个系统视为一个大的加工,然后根据数据系统从哪些外部实体接收数据流,以及系统发送数据流到那些外部实体,就可以画出输入输出图。这张图称为顶层图。
第二步,画子系统的内部
把顶层图的加工分解成若干个加工,并用数据流将这些加工连接起来,使得顶层图的输入数据经过若干加工处理后,变成顶层图的输出数据流。这张图称为0层图。从一个加工画出一张数据流图的过程就是对加工的分解。