如何评测软件工程知识技能水平?

一学期的高软课程结束了,回顾这一学期,作为一个跨专业调剂进入软院的学生,我受益匪浅,也对软件工程这个专业以及软件行业有了更深入的了解。孟宁老师在授课过程中,前期给我们讲述了互联网企业的发展现状以及编程的实用技术(例如vscode等软件的使用),后期讲述了软件开发过程、需求分析、代码结构和项目管理等高级软件工程师应该具备的知识和能力,在老师这十几周的授课过程中,我也体验到了学习过程中的坚持不懈精神,例如老师有节课课堂遇到一点小问题,课后仍然私下解决后告知我们(通过find找出/etc目录中所有*.conf;通过grep将*.conf文件中包含“hosts”的行输出到一个文本文件  sudo find /etc/ -name "*.conf" -exec grep "hosts" {} \; > result.txt)

总之,通过高级软件工程这门课的学习,我们都应该向高水平软件工程师靠拢,以下是软件工程师水平体现:

软件工程师的软件工程知识技能水平主要体现

(1)软件工程师:软件工程师英文是Software Engineer,是从事软件职业的人员的一种职业能力的认证,通过它说明具备了工程师的资格。软件工程师是从事软件开发相关工作的人员的统称。

它是一个广义的概念,包括软件设计人员、软件架构人员、软件工程管理人员、程序员等一系列岗位,工作内容都与软件开发生产相关。软件工程师的技术要求是比较全面的,除了最基础的编程语言C语言/C++/JAVA等)、数据库技术(SQL/ORACLE/DB2等)等,还有诸多如JAVASCRIPT、AJAX、HIBERNATESPRING等前沿技术。此外,关于网络工程软件测试的其他技术也要有所涉猎。

(2)能力要求:对于软件工程师,不太重视学历,但并不是对学历没有要求,重点关注项目的经验和学习知识的能力,能否利用软件工程专业知识来解决问题,根据岗位不同,对软件工程师的要求也有所不同。具体能力要根据岗位和自己的兴趣爱好选定自己的职业规划方向,一方面要详细了解软件工程师的要求,可以关注企业的招聘信息;一方面自己要贮备通用的知识技能,广泛阅读相关的计算机材料对自己以后的发展大有帮助。可以确定的是软件工程师的前途在未来的发展依然是不断升温的职业,比较需要有技术和良好前景的专业之一。

(3)软件工程师的软件工程知识技能水平主要体现:

1.编程语言能力  

  作为一名专业的软件工程师,应该能够熟练掌握JAVA语言,并且能够深入理解OOP、OOA、OOD等编程思想。精通一门编程语言能为以后的软件开发打下坚实的基础。

2.编码能力

这里说的编码可不是照着书本敲代码,而是能够独立的运用代码,编写一个程序出来。有很多软件工程师,他们都是随意堆砌网上搜来的代码,根本不管可读性和可维护性,只要能实现功能就行了,缺乏最基本的职责素养。

3.学习能力

IT技术可谓是更新换代最快的了,从市面上的电脑和手机就可以看出来。所以,只依靠自己之前学到的知识,很快就会被这个时代所淘汰,软件工程师应具备的技能里很重要的一点就是学习能力。因为只有具备了学习能力,才能在离开学校之后仍然能够独立地学习最新的技术,同时能够自主的发现现在有什么新技术,市场上流行的技术元素与市场需求的变化。

4.设计能力

一个优秀的软件工程师不仅仅具备扎实的专业知识与技能,而且还要具备一定的设计能力。因为只有这样,才能使一个软件或者应用更加完美,更加容易受到人们的欢迎,从而获得更广阔的市场。

5.团队协作能力

软件开发并不是孤军奋战,很多时候一个软件需要几个人一起开发,这个时候就需要大家齐心协力,共同努力了。这时候,作为软件工程师就需要具备一定的团队协作能力了,来保证每个人都负责相应的方向,不能只为了突出自己而不顾整个团队。

6.健康的心理素质

开发软件本身就是一项艰苦的脑力和体力劳动,软件工程师开发成功一个软件,要经过反复修改,要花费大量的进间和精力,这些都有要求软件工程师有较好的心理承受能力。很多学生往往只注重计算机专业知识的培养,而忽视了语言表达能力沟通能力、工程经济分析能力,以及心理素质的培养。

综合以上6点,只有各方面全面发展的工程师才是优秀的高级软件工程师。

 

软件工程知识技能水平的测评试题

一、选择题(10*3=30分)

1.开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称做(C)。  

  A.软件工程  B.软件周期 C.软件危机 D.软件产生

 

2.下面不是软件工程的3个要素的是(  C  )

A过程    B.方法     C.环境   D.工具

 

3.结构化方法是一种基于(D)的方法。   

 A.数据结构  B.程序结构  C.算法  D.数据流

 

4.软件工程方法学的目的是使软件生产规范化和工程化,而软件工程方法得以实施的主要保证是(C )。

A.硬件环境 B.开发人员的素质C.软件开发工具和软件开发的环境 D.软件开发的环境

答案解析:软件工程方法得以实施的主要保证是:软件开发中要有良好的软件开发工具和支撑环境,才能支持好的软件开发方法学得以应用,因此方法与工具的结合以及配套的软件和软件开发环境是软件工程方法学得以实施的重要保证。答案为C。

 

5.下列的( )不是分析建模的目的。

  A.定义可验证的软件需求

  B.描述客户需求

  C.开发一个简单的问题解决方案

  D.建立软件设计的基础

答案解析:分析建模的目的为定义可验证的软件需求,描述客户需求,建立软件设计的基础。所以答案是C。

 

6.瀑布模型的存在问题是( B  )

   A.用户容易参与开发          B.缺乏灵活性

   C.用户与开发者易沟通        D.适用可变需求

解析:瀑布模型各个阶段的划分完全固定、模型是线性的,用户只有等到整个过程的末期才能见到开发成果,不适应需求的变化,缺乏灵活性。

 

 7.软件工程的出现主要是由于( C )。   

  A.程序设计方法学的影响 B.其它工程科学的影响  C. 软件危机的出现 D.计算机的发展

 

8.耦合度也可以分为七级:其中最松散的耦合是(A)。 

  A. 非直接耦合 B. 数据耦合 C. 特征耦合 D. 控制耦合

9.需求分析阶段的任务是确定( C   )。

A.软件开发方法

B.软件开发费用

C.软件系统功能

D.软件开发工具

 10.在软件生命周期中,能准确确定软件系统的体系结构的功能阶段是 (C)

A.概要设计 B.详细设计 C.需求分析 D.可行性分析

 

二、判断题(5*2=10分)

1.在软件开发中,定义需求并建立系统模型属于设计阶段( × )。

解析:属于设计阶段的是:数据结构设计、给出系统模块结构、定义模块算法  

 

 2.结构化分析方法(SA)的一个重要指导思想是自顶向下,逐步分解。( √ )

        

3.关于模块设计的原则,模块的内聚性低,模块之间的耦合度高( × )  

解析:应该是模块的内聚性高,模块之间的耦合度低

 

4.数据流图包含的成分有:数据流、加工和数据存储( √ )

 

5.瀑布模型(Waterfall Model)突出的缺点是不适应用户需求的变动。( √ )

 

三、简答题(6*5=30分)

1.什么是软件生命周期? 

答:

一个软件从定义,开发,使用和维护,直到最终被废弃,要经历一个漫长的时期,通常把软件经历的这个漫长时期称为生命周期。

 

2.计算机软件的开发经过哪三个大阶段?

答: 三个阶段:定义、开发、维护。

 

3.解释重构与功能内聚?

答:

重构(Refactoring)就是通过调整程序代码改善软件的质量、性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性。

功能内聚指模块内所有元素共同完成一个功能,缺一不可,因此模块不能再分割。

 

4.软件危机产生的原因是什么?

答:

软件危机的原因:

a)     软件不同与硬件,是逻辑部件;

b)     软件规模庞大,逻辑结构复杂;

c)     软件开发人员和管理人员只重视设计程序而轻视用户的需求分析,导致最后研制出的软件产品无法满足用户的需求;

d)     软件设计技术和管理技术落后,没有统一的软件质量管理规范;

e)     在软件的开发与维护关系问题上存在错误的概念,重视开发,而轻视维护。

 

 5.说出3你所熟悉的设计模式,并简要描述。

答:

单例(Singleton)模式:某个类只能生成一个实例,该类提供了一个全局访问点供外部获取该实例,其拓展是有限多例模式。

原型(Prototype)模式:将一个对象作为原型,通过对其进行复制而克隆出多个和原型类似的新实例。

工厂方法(Factory Method)模式:定义一个用于创建产品的接口,由子类决定生产什么产品。

抽象工厂(AbstractFactory)模式:提供一个创建产品族的接口,其每个子类可以生产一系列相关的产品。

建造者(Builder)模式:将一个复杂对象分解成多个相对简单的部分,然后根据不同需要分别创建它们,最后构建成该复杂对象。

代理(Proxy)模式:为某对象提供一种代理以控制对该对象的访问。即客户端通过代理间接地访问该对象,从而限制、增强或修改该对象的一些特性。

适配器(Adapter)模式:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。

 

6.比较黑盒测试和白盒测试的优缺点

答:

黑盒测试的优点:适应于阶段测试,从产品功能角度测试,容易入手生成测试数据。

缺点:某些代码得不到测试,如果规格说明有误,可能无法发现,不易进行充分性测试。

白盒测试的优点:可构成测试数据使特定程序部分得到测试,有一定的充分性度量手段,可生成较多工具支持。

缺点:不易生成测试数据,无法对未实现规格说明的部分进行测试,作量大通常只用于单元测试有应用局限。

 

四、应用题(2*15=30分)

  1. 一个自动售货机顾客购买系统,自动售货机可显示是否有饮料以及收钱功能,而顾客在购买饮料时会选择饮料、付款,收到售货机找钱并拿到饮料,请画出该系统用例图。

答:如下:

 

 

 

2.下面是某系学籍管理的一部分(A)(B)分别是同一模块A的两个不同的设计方案,你认为哪一个设计方案较好?请陈述理由

 

答:

我认为(b)方案较好。要评价一个软件结构设计,主要看模块的独立性,要从软件结构的耦合性和内聚性两个方面来衡量。对于(a)方案,模块A 与模块B 之间形成了控制耦合,因此独立性不高,而在B 模块内部,有两个不同的功能被放在一起,形成的是逻辑内聚,内聚性不高。对于(b)方案,模块A 与B1 和B2 之间是数据耦合,独立性较强,在B1 和B2 内部,只完成单一的功能,是功能内聚,因此内聚性高,可维护性好,因此相比而言(b)方案比(a)方案更好些。

posted @ 2020-01-06 18:20  huyuefei  阅读(527)  评论(0编辑  收藏  举报