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

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

  1、优秀的需求分析能力。如果投入大量的人力,物力,财力,时间,开发出的软件却没人要,那所有的投入都是徒劳。如果费了很大的精力,开发一个软件,最后却不满足用户的要求,从而重新开发,这种返工是很浪费的

  2、扎实的基础。掌握一门编程语言:C、C++、JAVA......;算法、数据结构知识要掌握好;熟悉常用的程序设计、设计模式

  3、写代码,多做总结。多做总结其实是为了让自己一次比一次写得少,一次比一次好,能够避免以前的一些坑,或者说能够避免以前的一些错误,这个就是一个进步

  4、代码命名规范。在编程过程中一定要注意代码命名的规范性,否则在使用和维护过程中将造成很大的麻烦,这也是一种良好的编码习惯,否则不规范的代码会浪费很多不必要的时间

  5、测试能力。软件容易出错,并且软件都是复杂的,编写软件的是人,无论多么有经验的工程师都会写出有bug的程序,所以测试能力是必备的

软件工程期末试题

一、选择题

1、瀑布模型的存在问题是() (东北大学软件工程期末考试题)

A、缺乏灵活性         B、用户容易参与开发   C、用户与开发者易沟通        D、适用可变需求

 

答案:A。本题考查了软件开发常见模型的优缺点。

瀑布模型:适用于用户需求明确,完整、无重大变化的软件项目开发,文档驱动。缺点:文档驱动;用户难以清除给出所有需求;用户等待周期长;缺乏灵活性。
V模型:强调测试的重要性,每步都进行测试。
原型模型:在用户不能给出完整明确的需求时,根据用户的基本需求,快速建造原型,然后进行评估,进一步精华、调整原型,使其满足用户的要求,也使开发者对将要做的事情有更好的理解。缺点:没有考虑软件的总体质量和长期的可维护性。不便管理。
增量式模型:迅速向用户提交完成部分工作的产品,分批,逐步的向用户提交产品,需要更精心的设计,但将在维护阶段获得回报。缺点:增量时必须不破坏原来已开发的产品,有无法集成的风险。
喷泉模型:主要用于面向对象软件开发项目。
螺旋模型:基本思想是降低风险,迭代更新产品,有利于软件的重用,减少了过多测试或测试不足,维护和开发没有本质区别。缺点:风险驱动,需要专业知识,否则风险更大。适用于内部开发的大规模软件项目。随着迭代次数增加,工作量加大,软件开发成本增加。

 

2、不属于可行性研究的内容的是() (北京大学软件工程期末考试题)

A、技术可行性  B、经济可行性  C、社会可行性  D、军事可行性

 

答案:D。本题考查可行性研究的内容

可行性研究:明确做不做,从经济、技术、社会因素论证解决方案的可行性。通常,对于软件来说,其可行性分析可以从以下三个方面来考虑:技术可行性;经济可行性;社会可行性

 

3、以下说法错误的是()

A.面向对象分析与面向对象设计的定义没有明显区别

B.从面向对象分析到面向对象设计,是一个逐渐扩充模型的过程

C.在实际的软件开发过程中,面向对象分析与面向对象设计的界限是模糊的

D.面向对象分析和面向对象设计活动是一个多次反复迭代的过程

 

答案:A。本题考查面向对象分析和面向对象设计的区别

面向对象分析的关键是识别问题域内的对象及其关系。分析的任务基本完成后,下一步则是将分析的成果用于设计中。就是根据成本与要求,规划出系统应如何实现的问题。所以A中“分析与设计的定义没有明显区别”的说法是不正确的

 

4、在设计测试用例时()是用得最多的一种黑盒测试方法

A、等价类划分    B、边界值分析     C、因果图       D、判定表

 

答案:A。本题考查黑盒测试的方法

等价类划分是一种典型的黑盒测试方法。等价类划分是指分步骤把海量的测试用例集减得很小但过程同样有效。也就是说,选取足够小测试用例,发现更多软件缺陷

 

5、软件开发瀑布模型中的软件定义时期各个阶段依次是() (百度文库)

A、可行性研究,问题定义,需求分析  B、 问题定义,可行性研究,需求分析  C、可行性研究,需求分析,问题定义  D、以上顺序都不对

 

答案:B。本题考查瀑布模型中软件定义时期。

 

6、软件中所花费用最多的阶段是()(百度文库)

A、详细设计  B、软件编码  C、软件测试  D、软件维护

 

答案:D。本题考查软件各个阶段

软件设计的各个阶段包括

问题定义:明确要解决的问题是什么。

可行性研究:明确做不做,从经济、技术、社会因素论证解决方案的可行性。

需求分析阶段:明确做什么,提出完整、准确、清晰、具体的要求。
概要设计:明确怎么做,制定最佳方案的详细计划,系统的体系结构设计。
详细设计:明确具体做法,设计出程序的详细规格说明。
编码和单元测试:编写出正确的、易理解的、易维护的程序模块。
综合测试:通过各类的测试使软件达到预定的要求。
软件维护:通过各种必要的维护活动使系统持久的满足用户的要求。

 

7、在白盒测试技术测试用例的设计中,()是最弱的覆盖标准 (清华大学软件工程期末考试题)

A、语句覆盖  B、路径覆盖  C、条件组合覆盖  D、判定覆盖

 

答案:A。本题考查白盒测试中的覆盖标准,最弱是语句覆盖,最强是路径覆盖

 

8、“软件危机”是指()

 A、计算机病毒的出现  B、利用计算机进行经济犯罪     C、软件开发和维护中出现的一系列问题    D、人们过分迷恋计算机系统

 

答案:C。本题考查软件危机的定义

 

9、软件设计中模块划分应遵循的准则是()

A、低内聚低耦合  B、高耦合高内聚  C、高内聚低耦合  D、以上说法均错误

 

答案:C。本题考查软件设计中耦合和内聚的定义

根据软件设计原理提出如下优化准则:①划分模块时,尽量做到高内聚、低耦合,保持模块相对独立性,并以此原则优化初始的软件结构。②一个模块的作用范围应在其控制范围之内,且判定所在的模块应与受其影响的模块在层次上尽量靠近。③软件结构的深度、宽度、扇入、扇出应适当。

 

10、需求分析的主要任务是()

A、确定系统怎样完成工作  B、确定系统必须完成哪些工作  C、研究系统的软件结构  D、确定软件开发费用

 

答案:B。本题考查需求分析的任务

需求分析:开发人员准确地理解用户的要求,进行细致的调查分析,将用户非形式的需求陈述转化为完整的需求定义,再由需求定义转换到相应的需求规格说明的过程。主要任务是确定系统必须完成哪些工作

 

二、判断题

1、在进行总体设计时应加强模块间的联系(×)

2、系统结构图是精确表达程序结构的图形表示法。因此,有时也可以将系统结构图当作系统流程图使用(×)

3、耦合用于衡量一个模块内部的各个元素彼此结合的紧密程度(×)

4、以对象,类,继承和通信为基础的面向对象设计方法(OOD)也是常见的软件概要设计方法之一(√)

5、在面向对象的软件开发方法中,每个类都存在其相应的对象,类是对象的实例,对象是生成类的模板(×)

 

三、名词解释

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

2、观察者模式:属于行为型模式的一种,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态变化时,会通知所有的观察者对象,使他们能够自动更新自己

3、多态:指同一个实体同时具有多种形式,有不同的解释,产生不同的执行结果,是面向对象程序设计的重要特征

4、功能内聚:模块内所有元素共同完成一个功能,缺一不可

5、可修改性:可修改性描述了程序能够被正确修改的难易程度。一个可修改的程序应当是可理解的、通用的、简单的、灵活的。通用性是指程序适用于各种功能变化而无需修改。灵活性是指能够容易地对程序进行修改

6、实现视图:从程序员角度看软件系统的结构

7、松散耦合:松散耦合是一个被程序开发人员广泛使用的概念,就是说应用模块之间要使用输入和输出的模块进行解耦

8、发布和订阅的架构风格:消息的发送者不将信息直接发给特定的授权者,而是将发布消息分类,无需了解哪些订阅者可能存在

9、模块化:将系统自顶向下层层划分成各个模块,每个模块完成一个特定功能,将各个模块组合起来成为一个系统的整体

10、抽象:从具体事物抽出、概括出它们共同的方面,本质属性与关系

11、设计模式:一种被反复使用、多数人知晓、经过分类的代码经验的总结

 

四、简答题

1、猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒,问

(1)设计可能用到什么设计模式?

(2)画出其类图

 

(1)观察者模式,分析:要有联动性,老鼠和主人的行为是被动的;考虑可扩展性,猫的叫声可能引起其他联动效应。

(2)

 

本题考查了观察者模式的具体应用

 

2、网上选课系统的功能需求包括以下内容

系统管理员负责系统的管理维护工作,维护工作包括对课程信息和学生信息进行管理,包括对课程的添加、删除和修改,以及对学生基本信息的添加、修改、查询和删除,其中查询又分为精准查询和模糊查询,并且系统管理员登录后才能对信息进行维护,忘记密码可以通过忘记密码这个功能找回。学生通过输入自己的学号和密码进入选课界面,在这里学生可以进行查询已选课程、选择课程以及对自己的基本信息进行查询。要求画出系统管理员和学生的用例图

 

 

本题考查了用例图的画法,言之有理即可

 

3、本学习通过高级软件工程这门课,你学到了什么知识,谈谈你对这么课的看法,并提出相应的建议

  通过高级软件工程这么课,我们体验到了与传统课堂不一样的教学方式。课后的作业都是同学们通过博客提交,培养了同学们写博客的能力,每位同学都可以看到彼此的博客,增进了同学间知识的传播。

  第一次作业结束后很多同学都分享了自己在键盘使用效率方面的建议,例如:提供了键盘练习的网站https://www.typingclub.com https://www.typingtest.com/。还有VIM方面的建议、正则表达式的联系,这些都对同学的帮助很大

  到后来的作业,结合工程实践选题分析同类软件产品、用例建模等作业都是结合实际来学习课堂上没有的知识。我们学到了程序的代码规范、需求分析的实际应用、各种设计模式在大型工程中的实际应用,让我们对知识的掌握提升到一个新的高度。

  高级软件工程是一门理论与实际结合的课,虽然名字中带有高级但是并不高级,相反还很基础。即使之前没有经验的同学也可以来学,对着门课的建议是希望老师能够增加实验,让同学们进一步在实践中掌握课上的知识

posted @ 2020-01-05 15:28  蒋松冬  阅读(528)  评论(0编辑  收藏  举报