简答题
软件工程的定义
软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及程序设计语言、数据库、软件开发工具、系统平台、标准、设计模式等方面。
解释software crisis、COCOMO 模型。
Software Crisis:软件危机是指早期在计算机领域中没有办法在给定时间内写出高效有用的代码。软件危机的成因是计算机的快速发展和待解决问题的复杂度急速上升。随着软件复杂度上升以及现有方法的低效,很多软件问题出现了。
COCOMO:Constructive Cost Model是一个由Barry W.Boehm提出发展的软件代价评估模型。模型的参数来源于将历史项目的数据放入回归公式中。COCOMO可以应用于三种软件项目
- Organic projects
- Semi-detached projects
- Embedded projects
软件生命周期
在软件工程中,软件开发过程是把软件开发划分为不同的阶段来提高设计,产品管理和项目管理。因此它又被称作是软件生命周期。软件生命周期可分为六个阶段:
- 可行性分析与计划阶段
- 需求分析阶段
- 设计阶段
- 实现阶段
- 测试阶段
- 运行与维护阶段
大部分现代开发过程都可以称之为敏捷开发。其他的开发模型还包括瀑布,原型,迭代,增量,螺旋等等。
按照 SWEBok 的 KA 划分,本课程关注哪些 KA 或 知识领域?
- Software requirements(软件需求)
- Software design(软件设计)
- Software engineering management(软件工程管理)
- Software engineering process(软件工程过程)
- Software engineering models and methods(软件工程模型与方法
解释 CMMI 的五个级别
- 初始级:软件工程管理制度缺乏,过程缺乏定义、混乱无序。成功依靠的是个人的才能和经验,经常由于缺乏管理和计划导致时间、费用超支。
- 可重复级:基于类似项目中的经验,建立了基本的项目管理制度,采取了一定的措施控制费用和时间。管理人员可及时发现问题,采取措施。一定程度上可重复类似项目的软件开发。
- 已定义级:已将软件过程文档化、标准化,可按需要改进开发过程,采用评审方法保证软件质量。
- 已管理级:针对制定质量、效率目标,并收集、测量相应指标。利用统计工具分析并采取改进措施。对软件过程和产品质量有定量的理解和控制。
- 优化级:基于统计质量和过程控制工具,持续改进软件过程。质量和效率稳步改进。
SWEBok
软件工程知识体系指南:一个职业在核心知识体系上达成一致,是所有学科的关键里程碑。这本指南清晰的指出了知识体系是发展一个职业关键的一步。因为它代表了对于软件工程专业人员应该知道什么的一个广泛的一致意见。没有这样的一致,就没有任何职业许可的考试。就不能为专业人员参与考试准备课程表。也不能形成一个认证一个课程表的准则。达成一致也是一个组织中采纳发展连贯技能和继续职业教育程度的前提。
SWEBok的目标是促进世界范围内对软件工程的一致观点。阐明软件工程相对其他学科的位置,确立分界。刻画软件工程学科的内容。提供使用知识体系的主题。为卡法课程表和个人认证与许可材料提供一个基础。
解释 PSP 各项指标及技能要求:
阅读《现代软件工程》的 PSP: Personal Software Process 章节。
http://www.cnblogs.com/xinz/archive/2011/11/27/2265425.html
按表格 PSP 2.1, 了解一个软件工程师在接到一个任务之后要做什么,需要哪些技能,解释你打算如何统计每项数据?
一个软件工程师在接到任务之后需要:
- 计划任务需要时间
- 开发
- 需求分析
- 生成设计文档
- 设计复审
- 代码规范
- 具体设计
- 具体编码
- 代码复审
- 测试
- 报告
- 测试报告
- 计算工作量
- 总结,提出改进计划。
根据需要做的事,我们可以给出一个软件工程师所需要的技能有需求分析,开发,测试,写文档以及工作总结能力。