ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2020-01-06 11:03:31  阅读:263  来源: 互联网

标签:评测 软件开发 测试 软件工程 答案 模块 耦合 软件 技能


一、软件工程师的软件工程知识技能水平高低主要体现在哪些方面总结

1、软件工程师

  软件工程师英文是Software Engineer,是从事软件职业的人员的一种职业能力的认证,通过它说明具备了工程师的资格。软件工程师是从事软件开发相关工作的人员的统称。软件工程师包括软件设计人员、软件架构人员、软件工程管理人员、程序员等一系列岗位,工作内容都与软件开发生产相关。软件工程师的技术要求是比较全面的,除了最基础的编程语言(C/C++/JAVA等)、数据库(SQL/ORACLE/DB2等)等,还有诸多如AJAX、SPRING等前沿技术。此外,关于网络工程和软件测试的其他技术也要有所涉猎。   2、知识技能水平高低主要体现   软件工程知识技能包含三大类基础知识,计算机基础、数学基础和工程基础,下面是总结的一些点。

第一:具有扎实的计算机专业知识:此外精通高等数学、离散数学、电子学、编程语言、数据结构等课程。(1)基础编程语言,编程语言是软件工程师必备的技能,不同方向的开发需要使用到不同的编程语言,比如Web开发熟练掌握ASP,NET等编程语言,而大数据可能会使用Scala等语言,而物联网开发可能会使用到C、C++等编程语言。通常来说,软件工程师往往需要掌握多门编程语言。(2)算法。算法是软件工程师的重点知识技能,算法的掌握情况往往能够决定软件工程师的成长高度。(3)数据库。信息是以数据为中心的,因此与数据库的交互在所有软件中都是必不可少的,了解数据库操作和编程是软件工程师需要具备的基本素质之一。目前常用的数据库软件有Oracle数据库和SQL Server等。(4)程序员的基本功。打字 输⼊速度、快捷键使用等 ;代码规范和⻛格,如缩进、命名、注释等;能够熟练操作的⼯具集 如VSCode/Vim、正则表达式等。

第二:累积软件开发相关的知识,提高技术技能(如对具体技术的掌握,动手能力)。例如对Java、C/C++、C#的掌握,诊断和提高效能的技术,对设备驱动程序、内核调试器的掌握,对某一开发平台的掌握。

第三:积累问题领域的知识和经验(例如对医疗和金融行业的了解)。随着经验的增长,应该掌握更广泛、更深入的技术和问题领域的知识。

第四:掌握前沿技术。不同开发领域需要掌握不同的知识结构,比如大数据软件工程师往往需要掌握Hadoop、Spark平台的使用,而Web开发工程师往往还需要掌握前后端开发技术,包括一系列Web开发框架的使用等等。

第五:对通用的软件设计思想和软件工程思想的理解。例如,IBM 提出了软件开发思想的4项要点——迭代开发、以系统架构为中心、持续的质量保证以及管理变更和资产。理解统一过程、敏捷开发、使用统一建模语言等。

第六:提升职业技能。包括自我管理能力,表达和交流的能力,与人合作的能力,安质按量完成任务的执行力。文档编写。熟练的技术文档编写能力,熟练使用Rose,Power Design,Visio等建模软件,有一定的架构设计能力;语言表达能力和沟通能力、工程经济分析能力以及心理素质。

 

二.试题

(来自于软件工程师考试题库)

1、选择题

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

A.硬件环境 B.开发人员的素质

C.软件开发工具和软件开发的环境 D.软件开发的环境

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

 

(2)软件开发的瀑布模型,一般都将开发过程划分为:分析、设计、编码和测试等阶段,一般认为可能占用人员最多的阶段是( )。

A.分析阶段 B.设计阶段 C.编码阶段 D.测试阶段

答案解析:在结构化的软件开发中,一般情况下,可能需要占用的人数最多的阶段是在软件编程的阶段,但从工作量上来说,在软件的需求分析、定义及软件的测试和维护阶段需要的工作量更多,用软件开发计划中的40-20-40原则,即可说明这一点,在软件需求分析和定义阶段,虽然工作量比软件编程多,但因为软件的需求分析和定义对开发人员的素质要求比较高,所以占用的人员并不需要太多;同时由于软件维护的周期比较长,所以其耗的工作量比软件编程多,但一般来说它占用的人员并不比软件编程阶段占用的人员多,所以答案为C。

 

(3)需求分析阶段的任务是确定( )。

  A.软件开发方法   B.软件开发工具

   C.软件开发费    D.软件系统的功能

答案解析:了解需求分析阶段的基本任务。所以答案是D。

 

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

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

  B.描述客户需求

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

  D.建立软件设计的基础

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

 

(5)下列选项中,不属于模块间耦合的是()。

  A)内容耦合  B)异构耦合

  C)控制耦合  D)数据耦合

答案解析:耦合可以分为下列几种,它们之间的耦合度由高到低排列:内容耦合——若一个模块直接访问另一模块的内容,则这两个模块称为内容耦合。公共耦合——若一组模块都访问同一全局数据结构,则称为公共耦合。外部耦合——若一组模块都访问同一全局数据项,则称为外部耦合。控制耦合——若一模块明显地把开关量、名字等信息送入另一模块,控制另一模块的功能,则称为控制耦合。标记耦合——若两个以上的模块都需要其余某一数据结构的子结构时,不使用其余全局变量的方式而全使用记录传递的方式,这样的耦合称为标记耦合。数据耦合——若一个模块访问另一个模块,被访问模块的输入和输出都是数据项参数,则这两个模块为数据耦合。非直接耦合——若两个模块没有直接关系,它们之间的联系完全是通过程序的控制和调用来实现的,则称这两个模块为非直接耦合,这样的耦合独立性最强。所以答案是B。

 

(6)软件设计中划分模块的一个准则是(      )。 

A、 低内聚低耦合 B、 低内聚高耦合 C、 高内聚低耦合 D、 高内聚高耦合 

答案解析:软件设计中划分模块的一个准则是高内聚低耦合。内聚是从功能角度来度量模块内的联系,一个好的内聚模块应当恰好做一件事。它描述的是模块内的功能联系;耦合是软件结构中各模块之间相互连接的一种度量,耦合强弱取决于模块间接口的复杂程度、进入或访问一个模块的点以及通过接口的数据。所以答案是C。

 

(7)Jackson设计方法是由英国的M. Jackson提出的,它是一种面向(       )的软件设计方法。 
A、 对象 B、 数据流 C、 数据结构 D、 控制结构 

答案解析:Jackson设计方法是一种面向数据结构的软件设计方法。所以答案是C。

 

(8)(       )是用户和设计交换最频繁的方法。 

A、 原型化方法        B、瀑布模型方法            C、 螺旋模型方法          D、构件组装模型 

答案解析:原型化方法,即Prototyping,为弥补瀑布模型的不足而产生的,是用户和设计交换最频繁的方法。所以答案是A。

 

8. 使用白盒测试方法时,确定测试数据应根据(    )和指定的覆盖标准。 

A、程序的内部逻辑         B、程序的复杂程度           C、该软件的编辑人员      D、程序的功能 

答案解析:白盒测试又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子是可视的,即清楚盒子内部的东西以及里面是如何运作的。"白盒"法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。"白盒"法是穷举路径测试。在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。所以答案是A。

 

10. PDL是(      )语言。 

A、 高级程序设计语言    B、伪码式      C、中级程序设计语言      D、低级程序设计

 答案解析:答案是B。

 

二、判断题(共5题)

1.Warnier方法也是一种面向数据结构的设计方法,其逻辑更严格。(      )

2.PAD图在设置了五种基本控制结构后,还允许递归调用。      (      )

3.为了加快软件维护作业的进度,应尽可能增加维护人员的数目。(      )

4.当验收测试通过,软件开发就完成了。(       )

5.完成测试作业后,为了缩短源程序的长度应删除程序中的注解。(       )

解析:1—5:√√×××

 

3.简答题:

3.1.分析软件危机产生的主要原因有哪些?
答:导致软件危机的主要原因有:
(1)软件日益复杂和庞大(2)软件开发管理困难和复杂(3)软件开发技术落后(4)生产方式落后(5)开发工具落后(6)软件开发费用不断增加

3.2.说明结构化程序设计的主要思想是什么?
答:(1)自顶向下、逐步求精的程序设计方法(2分)(2)使用3种基本控制结构、单入口、单出口来构造程序

3.3 说明软件测试和调试的目的有何区别?
答:测试的目的是判断和发现软件是否有错误

调试的目的是定位软件错误并纠正错误。

 

3.4  什么是软件维护?软件维护可以分为哪几类?

答:软件维护是指在软件系统已经交付使用之后,软件使用人员为了适应新的要求、满足新的需要或为了改正软件中存在的错误而对软件系统进行修改的过程。可以分为纠错性维护、完善性维护、适应性维护和预见性维护。

 

3.5 什么是白盒测试?什么是黑盒测试?

答:白盒测试又称为结构测试,它的前提条件是可以看成将程序放在一个透明的白盒子中,也就是完全了解了软件系统的结构和整个处理过程。

 

3.6 简述软件质量的定义及在软件开发过程中管理软件质量的办法。

答:软件质量指的是软件产品满足规定的和隐藏的与需求能力有关的全部特征和特性。管理软件质量的办法:(1)每个阶段都必须完成规定的文档,没有交出合格的文档就是没有完成该阶段的任务;(2)每个阶段结束前都要对所完成的文档、程序进行评审,以便尽早发现问题,改正错误。

 

4.应用题

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

 

答:

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

标签:评测,软件开发,测试,软件工程,答案,模块,耦合,软件,技能
来源: https://www.cnblogs.com/hgsheng/p/12155262.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有