对于软件工程的能力要求也是多样性的、多方面的,对于不同岗位的具体要求会有所差别,但基本要求能力都是相同的。
基本要求及主要体现如下:
1.编程语言能力
作为一名专业的软件工程师,一方面,是否掌握了程序员的基本功:键盘输入速度,快捷键,编译和调试工具等,熟练掌握常用的工具集—VSCode/Vim、正则表达式等;另一方面,应该能够熟练掌握基础编程语言,并且能够深入理解OOP、OOA、OOD等编程思想。精通一门编程语言能为以后的软件开发打下坚实的基础。
2.编码能力
这里说的编码可不是照着书本敲代码,而是能够独立的运用代码,编写一个程序出来,而是严格规范的代码风格,合理使用空格、空行、缩进、注释,代码逻辑清晰,没有冗余和重复,遵从架构与设计原则,熟练使用各种编程库和API,编写出简洁、规范、可读性强、健壮安全的代码。
3.学习能力
IT技术可谓是更新换代最快的了,从市面上的电脑和手机就可以看出来。所以,只依靠自己之前学到的知识,很快就会被这个时代所淘汰,软件工程师应具备的技能里很重要的一点就是学习能力。因为只有具备了学习能力,才能在离开学校之后仍然能够独立地学习最新的技术,同时能够自主的发现现在有什么新技术,市场上流行的技术元素与市场需求的变化。
4.业务能力
熟悉解决问题的流程:分析问题、形成方案、探索尝试解决问题、单元测试、重构程序以满足不断变化的需求,并在理解业务的基础上进行需求分析,编写的代码结构清晰,具有良好的可靠性、鲁棒性、可移植性和可重用性,满足高内聚低耦合的要求,准确地表达出用户的需求,开发出高质量的软件。
5.设计能力
一个优秀的软件工程师不仅仅具备扎实的专业知识与技能,而且还要具备一定的设计能力。因为只有这样,才能使一个软件或者应用更加完美,更加容易受到人们的欢迎,从而获得更广阔的市场。
6.团队协作能力
软件开发并不是孤军奋战,很多时候一个软件需要几个人一起开发,这个时候就需要大家齐心协力,共同努力了。这时候,作为软件工程师就需要具备一定的团队协作能力了,来保证每个人都负责相应的方向,不能只为了突出自己而不顾整个团队。
一、选择题
1.以下哪一项不是软件危机的表现形式( C )。
A. 开发的软件不满足用户需要 D.开发的软件可维护性差
C.开发的软件价格便宜 D.开发的软件可靠性差
2. 软件生命周期一般包括三个时期:软件定义期、软件开发期和软件运行期。下述( D )不是软件开发期所应包含的活动。
A. 可行性分析
B. 需求获取和需求建模
C. 软件体系结构设计和数据设计
D. 软件集成与系统测试
3. 面向对象分析方法的基本思想之一是(C )
A. 基于过程或函数来构造一个模块
B. 基于事件及对事件的响应来构造一个模块
C. 基于问题领域的成分来构造一个模块
D. 基于数据结构来构造一个模块
4.(D)是将系统化的、规范的、可定量的方法应用于软件的开发、运行和维护的过程,它包括方法、工具和过程三个要素。
A、软件过程 B、软件测试 C、软件生存周期 D、软件工程
5.面向对象的主要特征除对象惟一性、封装、继承外,还有( A )。
A.多态性 B.完整性
C.可移植性 D.兼容性
二、简答题
1、说明结构化程序设计的主要思想是什么?
答案:(1)自顶向下、逐步求精的程序设计方法(2)使用3种基本控制结构、单入口、单出口来构造程序。
2.在面向对象分析时类和对象的静态关系主要有哪几种?
答案:类和对象的静态关系主要有关联、聚集、泛化、依赖等四种关系。
3.软件测试的基本任务?
答案:软件测试是按照特定的规则,发现软件错误的过程;好的测试方案是尽可能发现迄今尚未发现错误的测试;成功的测试方案是发现迄今尚未发现错误的测试;
4.层次图和层次方框图有何区别?
答案:层次图主要用来描绘软件的层次结构,矩形框代表一个模块,矩形框之间的连线表示模块之间的调用关系,常与IPO图一起形成HIPO图。层次方框图主要描述系统的组成关系,一般自用域需求分析。
5.常见的软件开发过程模型(软件生存周期模型)有哪些?
答案:瀑布模型,快速原型模型(用于需求不确定的软件开发),增量模型,螺旋模型(加入了风险分析),喷泉模型(面向对象),统一过程(Rational公司的),微软公司软件开发过程。
原文:https://www.cnblogs.com/xiehuichina/p/12158604.html