一.简单题
1. 软件工程的定义
笼统来说,软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及程序设计语言、数据库、软件开发工具、系统平台、标准、设计模式等方面。
但实际上,软件工程一直以来都缺乏一个统一的定义。许多部门或机构都有着自己的定义,目前比较认可的一种定义认为:软件工程是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。
2.阅读经典名著“人月神话”等资料,解释 software crisis、COCOMO 模型。
软件危机(英语:Software Crisis)是早期计算机科学的一个术语,是指在软件开发及维护的过程中所遇到的一系列严重问题,这些问题皆可能导致软件产品的寿命缩短、甚至夭折。软件开发是一项高难度、高风险的活动,由于它的高失败率,故有所谓“软件危机”之说。软件危机的本源是复杂、期望和改变。这个术语用来描述正急遽增加之电脑的力量带来的冲击和可能要处理的问题的复杂性。从本质上来说,它谈到了写出正确、可理解、可验证的计算机程序的困难。
构造性成本模型(COCOMO,英文全称为Constructive Cost Model)是由巴里·勃姆(Barry Boehm)提出的一种软件成本估算方法。这种模型使用一种基本的回归分析公式,使用从项目历史和现状中的某些特征作为参数来进行计算。
构造性成本模型由三个不断深入和详细的层次组成。第一层,“基本COCOMO”,适用对软件开发进行快速、早期地对重要的方面进行粗略的成本估计,但因其缺少不同的项目属性(“成本驱动者”)的因素,所以准确性有一定的局限性。“中级COCOMO”中考虑进了这些成本驱动者。“详细COCOMO”加入了对不同软件开发阶段影响的考量。
3.软件生命周期
软件生命周期又称为软件生存周期或系统开发生命周期,是软件的产生直到报废的生命周期。周期内有问题定义、可行性分析、总体描述、系统设计、编码、调试和测试、验收与运行、维护升级到废弃等阶段
4.按照SWEBok的KA划分,本课程关注哪些KA或知识领域?
- 软件需求分析
- 软件设计
- 软件开发过程
- 软件工程工具和方法
5.解释 CMMI 的五个级别。例如:Level 1 - Initial:无序,自发生产模式。
- Level 1 - Initial:无序,自发的生产模式。
- Level 2 - Repeatable:有基本的项目管理过程,制定必要规律,管理化制度的生产模式。
- Level 3 - Defined:软件管理及工程过程化、标准化,完善培训和评价制度的生产模式
- Level 4 - Managed:分析度量数据,控制生产流程,管理预测性能的生产模式
- Level 5 - Optimizing:量化反馈、持续更新、改善流程,集中精力改进过程的生产模式
6.用自己语言简述 SWEBok 或 CMMI (约200字)
CMMI是一套融合多学科的、可扩充的产品集合, 其研制的初步动机是为了利用两个或多个单一学科的模型实现一个组织的集成化过程改进。CMMI的本质是软件管理工程的一个部分。软件过程改善是当前软件管理工程的核心问题, 50多年来计算机的发展使人们认识到要高效率、高质量和低成本地开发软件,必须改善软件生产过程。基于模型的过程改进是指采用能力模型来指导组织的过程改进,使之过程能力稳定的进行改善,该组织也能变得更加成熟。CMMI分为五个级别,可以大致理解为初始级,可重复级,已定义级,量化管理级,优化管理级。
二.解释PSP各项技能级指标要求
一个软件工程师在接到一个任务之后,需要做的事:
- 计划:估计这个任务需要多少时间
- 开发
- 分析需求
- 生成设计文档
- 设计复审 (和同事审核设计文档)
- 代码规范 (为目前的开发制定合适的规范)
- 具体设计
- 具体编码
- 代码复审
- 测试(包括自我测试,修改代码,提交修改)
- 记录时间花费
- 测试报告
- 计算工作量
- 事后总结
- 提出过程改进计划
需要的技能:
- 职业技能包括:
- 自我管理的能力;
- 团队执行能力;
- 时间管理能力;
- 对应的编程技术能力;
如何统计数据:
对每一项的数据进行分开统计,在统计的过程中注意统计有效时间而不是全部时间,而在计量单位上可以使用推荐的每人每月工作量来统计。