1.您认为一个软件工程师的软件工程知识技能水平高低主要体现在哪些方面,请您简要总结一下?
1. 具有扎实的计算机基础知识,如数据结构与算法、操作系统、计算机组成原理等基础知识的熟练掌握。
2. 对设计模式的掌握,有助于更好地构建大型软件。
3. 拥有良好的代码风格,遵守编码规范。
4. 对软件开发过程的掌握,从瀑布模型到DevOps,熟悉可行性分析、需求分析、设计、编码、测试、运维等各阶段, 掌握UML等系统建模语言。
5. 良好的沟通能力,能与客户沟通需求,与组内成员协商进度等。
6. 对常用工具的熟练运用,如版本控制工具Git、自动化测试工具、构建工具等。
2.软件工程知识技能水平的测评试题
一. 选择题
1.下列哪项不是统一软件过程(Unified Process)的特点:(B)
A. 用例驱动
B. 持续集成
C. 以构架为中心
D. 迭代和增量
解析:B 统一软件过程是一种用例驱动、以构架为中心、迭代和增量的软件过程框架。
2. 在软件生命周期中,能准确地确定软件系统必须做什么和具备哪些功能的阶段是:(D)
A. 概要设计
B. 详细设计
C. 可行性分析
D. 需求分析
解析:需求分析阶段的任务是确定待开发软件的功能、性能、数据、界面等需求,从而确定系统的逻辑模型。参加人员有用户、项目负责人、系统分析员。
3. 软件开发瀑布模型中的软件定义时期各个阶段依次是: (B)
A. 可行性研究,问题定义,需求分析
B. 问题定义,可行性研究,需求分析
C. 可行性研究,需求分析,问题定义
D. 以上都不对
4. 下面不属于软件工程三要素之一的是:(D)
A. 工具
B. 过程
C. 方法
D. 环境
解析:软件工程的三要素是方法、工具和过程。方法是完成软件工程项目的技术手段,工具支持软件的开发、管理和文档生成,过程支持软件开发的各个环节的控制、管理。
5. 下面不属于软件设计原则的是:(C)
A. 抽象
B. 模块化
C. 自底向上
D. 信息屏蔽
解析:软件设计应遵循软件工程的基本目标和原则,在软件设计中应该遵循的基本原则有:
抽象:把事物的本质共性提取出来而不考虑其他细节。
模块化:指把一个待开发的软件分解为若干小的简单的部分。
信息屏蔽:指在一个模块内包含的信息对于不需要这些信息的其他模块来说是不能访问的。
模块独立性:模块独立性指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少最简单。
6. _____是对软件系统所必须解决的问题作出详细的说明。(C)
A. 功能描述 B.性能描述
C. 数据描述 D.参考文献目录
解析:软件系统的说明部分包括:数据描述、性能描述、参考文献目录和附录。数据描述是对软件系统所必须解决的问题作出的详细说明。
功能描述中描述了为解决用户问题所需要的每一项功能的过程细节。对每一项功能都要给出处理说明和设计时需要考虑的限制条件。
在性能描述中说明系统应能打到的性能和应该满足的限制条件、检测方法和标准,预期的软件响应和可能需要考虑的特殊问题。
参考文献目录中应包括与该软件有关的全部参考文献,其中包括前期的其他文档、技术参考资料、产品目录手册以及标准等。
7. 下列叙述中,正确的是:(C)
A. 接口复杂的模块,其耦合程度一定低
B. 耦合程度弱的模块,其内聚程度一定低
C. 耦合程度弱的模块,其内聚程度一定高
D. 以上三种说法都不对
解析:耦合是指模块之间联系的紧密程度。耦合度越高则模块的独立性越差。内聚是指模块内部各元素之间联系的紧密程度。例如一个完成多个功能的模块的内聚度就比完成单一功能的模块的内聚度低。内聚度越低的模块独立性越差。因此,模块独立就是希望每个模块都是高内聚低耦合的。
8. 下列叙述中,正确的是:(A)
A. 黑盒测试方法完全不考虑程序的内部结构和内部特征
B. 黑盒测试方法主要考虑程序的内部结构和内部特征
C. 白盒测试主要考虑程序内部的逻辑结构
D. 以上三种说法都不对
解析:黑盒测试是根据规格说明所规定的功能来设计测试用例,它不考虑程序的内部结构和处理过程。常用的黑盒测试技术有等价类划分、边值分析、错误猜测等。白盒测试是在程序内部进行,主要用于完成软件内部所有数据结构的验证,如:内部的逻辑结构、路径等。
二、名词解释
1. 模块化(modularity):指解决一个复杂问题时自顶向下逐层把系统划分成若干模块的过程,有多种属性,分别反映其内部特性。
2.统一软件开发过程(Rational Unified Process,RUP):一种软件工程方法,为迭代式软件开发流程。它是基于构件(Component-based)的,即所构造的软件系统是由软件构件通过明确定义的接口相互链接所建造起来的。并且它使用统一建模语言(Unified Modeling Language,UML)来制定系统的所有蓝图。
3. 重构(refactoring):指对软件代码做任何更动以增加可读性或者简化结构而不影响输出结果。
4.设计模式(design pattern):设计模式是对软件工程中普遍存在(反复出现)的各种问题,所提出的解决方案。设计模式并不直接用来完成代码的编写,而是描述在各种不同情况下,要怎么解决问题的一种方案。
5. 单元测试(unit test):单元测试又称为模块测试,是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。
三、简答题
1. 谈一种你熟悉的设计模式,以及你在项目中是如何应用它的?
(开放性问题,言之有理即可)
2. 选择一个你熟悉的在线服务APP,如美团外卖、猫眼电影、背单词APP等,绘制它们用例图。并满足以下要求:
- 请使用用户的视角,描述用户目标或系统提供的服务
- 粒度达到子用例级别,并用 include 和 exclude 关联它们
- 尽可能识别外部系统和服务
- 请用醒目标识标注出你认为创新(区别于竞争对手)的用例或子用例
答案示例1:美团外卖用例图
答案示例2:扇贝单词APP用例图
Reference:
1.https://books.google.com.hk/books?id=GptnqE20WV0C&pg=PA29&lpg=PA29#v=onepage&q&f=false 2.https://github.com/rockefys/hit/tree/master/%E5%A4%8D%E8%AF%95/%E5%A4%8D%E8%AF%95%E8%B5%84%E6%96%99/%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B/%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B%E8%AF%95%E5%8D%B7