如何评测一名软件工程师的知识技能水平
首先,作为一名软件工程师,必须熟悉软件开发的流程以及软件的生命周期,以瀑布模型为例:
瀑布模型是将软件生存周期中的各个活动规定为依线性顺序连接的若干阶段的模型,包括需求分析、设计、编码、测试、运行和维护。它规定了由前至后、相互衔接的固定次序,如同瀑布流水逐级下落。
瀑布模型为软件的开发和维护提供了一种有效的管理模式,根据这一模式指定开发计划,进行成本预算,组织开发力量,以项目的阶段评审和文档控制为手段有效地对整个开发过程进行指导,所以它是以文档作为驱动、适合于软件需求很明确的软件项目的模型。
需求分析与设计
在整个软件开发过程中,需求分析与设计起到至关重要的作用,软件工程师能否实现良好的建模直接影响到后序的软件 开发。需求分析与设计包括业务建模和领域建模,其中领域建模是在业务建模的基础上得到的,领域建模是面向对象的。
当需求分析完成后就开始进行设计,现在常用的设计是敏捷开发。敏捷开发(Agile)是一种以人为核心、迭代、循序渐进的开发方法。在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。
敏捷开发属于增量式开发,对于需求范围不明确,需求变更较多的项目而言,可以很大程度上响应及拥抱变化。
对于互联网产品而言,市场风向转变很快,需要一种及时快速的交付形式,而敏捷开发则能更好地适用于此。
敏捷开发可最大程度体现80/20法则的价值,通过增量迭代,每次都优先交付那能产生80%价值效益的20%功能。能最大化单位成本收益。
软件工程知识技能水平的测评试题如下:
一、选择题
1. 软件工程的概念是哪年提出的( B )。
A.1988 B.1968
C.1948 D.1928
2. 瀑布模型的关键不足在于( D )。
A.过于简单 B.各个阶段需要进行评审
C.过于灵活 D.不能适应需求的动态变更
3.以下哪一项不是软件危机的表现形式( C )。
A. 开发的软件不满足用户需要 D.开发的软件可维护性差
C.开发的软件价格便宜 D.开发的软件可靠性差
4.面向对象的主要特征除对象惟一性、封装、继承外,还有( A )。
A.多态性 B.完整性
C.可移植性 D.兼容性
5、从结构化的瀑布模型来看,在软件生命周期的8个阶段中,下面的几个选项中哪个出错对软件的影响最大?
(C)
A、详细设计阶段 B、总体设计阶段 C、需求分析阶段 D、测试和运行阶段
6、 需求分析最终结果是产生( B )
A、 项目开发计划 B、 需求规格说明书 C、 设计说明书 D、 可行性分析报告
7.按软件生命周期方法设计软件的过程中,画数据流图属于下面哪个
阶段的工作( A)
A、需求分析 B、程序设计
C、详细设计 D、软件维护
8.经过严密的软件测试后所提交给用户的软件产品中( B )
A、软件不再包含任何错误 B、还可能包含少量软件错误
C、所提交的可执行文件不会含有错误 D、文档中不会含有错误。
9.对象实现了数据和操作的结合, 使数据和操作( C )于对象的统
一体中。
A、结合 B、隐藏
C、封装 D、抽象
10.系统因错误而发生故障时,仍然能在一定程度上完成预期的功能,
则把该软件称为(A )。
A、软件容错 B、系统软件
二、填空题
1.划分模块时尽量做到 高内聚、 低耦合 ,保持模块的独立性,尽量使用公共模块。
2.类的实例化是 对象
3.用例图的3个要素是什么 :参与者 用例 关联
4.在观察者模式中,观察者与被观察者是什么关系:组合关系
5.在信息处理和计算机领域内,一般认为软件是程序、 数据 和 文档
6.需求规 格说明书的主要组成部分是什么 数据流图和数据字典
7.程序的三种基本控制结构是 顺序、选择、循环
8.数据字典是用来定义 数据流图 中的各个成份的具体含义的。
三、简答题
1.请画出ATM机的用例建模图和领域建模图
2.列举类与类之间的各种关系并标明关系的强弱顺序
泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖
3.请列举几种设计模式并简要描述其特性