系分课的作业
1.简单题
+ 软件工程的定义
关于软件工程的定义,在GB/T11457-2006《信息技术 软件工程术语》中将其定义为”应用计算机科学理论和技术以及工程管理原则和方法,按预算和进度,实现满足用户要求的软件产品的定义、开发、和维护的工程或进行研究的学科”。
+ 阅读经典名著“人月神话”等资料,解释 software crisis、COCOMO 模型。
software crisis
软件危机发生计算机发展的早期。软件危机是指落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。由于计算机没有普及,软件只能够在在特定平台上运行,给特定的人群使用,因此初期软件的使用范围十分有限。但当计算机逐渐普及后(PC的出现),使用计算机的人群变广,对软件功能要求也变得多样化,这些功能受限的早期软件不满足人们的使用需求。同时,早期软件的设计和使用方式也不适用于多数非专业人群,因此产生了软件危机。
COCOMO模型
构造性成本模型是由巴里·勃姆(Barry Boehm)提出的一种软件成本估算方法。这种模型使用一种基本的回归分析公式,使用从项目历史和现状中的某些特征作为参数来进行计算。COCOMO模型是最早的软件开发模型。相比于早期自发的软件开发过程,COCOMO模型为多开发者的开发模式提供了指导。具体来说,它在开发前通过合理预测(代码量,人均工作量,开发需求人数等)来合理分配工作,从而实现了多人的通力合作的目的,避免了工程进行到一半时发现人手不足而增加人手,培养新员工的问题,大大提升了软件开发效率。
+ 软件生命周期
软件生命周期(Software Development LifeCycle)是指软件的产生直到成熟的全部过程。具体可分为4个时期7个阶段:
- 软件分析时期: 问题定义,可行性研究,需求分析
- 软件设计时期: 总体设计,详细设计
- 编码与测试时期: 编码,测试
- 运行与维护时期:
+ 按照SWEBok的KA划分,本课程关注哪些KA或知识领域?
本课程关注以下KAs:
- 软件需求
- 软件设计
- 软件构建
- 软件测试
- 软件维护
- 软件配置管理
- 软件工程管理
- 软件工程过程
- 软件工程模型和方法
- 软件质量
+ 解释CMMI的五个级别。例如:Level 1-Initial:无序,自发生产模式。
- 初始级 软件过程是无序的,有时甚至是混乱的,对过程几乎没有定义,成功取决于个人努力。管理是反应式的。
- 可管理级 建立了基本的项目管理过程来跟踪费用、进度和功能特性。制定了必要的过程纪律,能重复早先类似应用项目取得的成功经验。
- 已定义级 已将软件管理和工程两方面的过程文档化、标准化,并综合成该组织的标准软件过程。所有项目均使用经批准、剪裁的标准软件过程来开发和维护软件,软件产品的生产在整个软件过程是可见的。
- 量化管理级 分析对软件过程和产品质量的详细度量数据,对软件过程和产品都有定量的理解与控制。管理有一个作出结论的客观依据,管理能够在定量的范围内预测性能。
- 优化管理级 过程的量化反馈和先进的新思想、新技术促使过程持续不断改进。
+ 用自己语言简述SWEBok或CMMI(约200字)
首先,软件工程之所以会出现工程的概念,就是因为软件开发时至今日必须要以工程化的方法进行才能适应现今的时代需求,再也不能像以前那样以艺术品进行个人开发。既然要以工程化开发,那么标准,量化与指导是必须的,各种标准与体系就应运而生。
SWEBok
软件工程知识体系指南是由IEEE计算机学会职业实践委员会主持的一个项目。SWEBok指南出现就是为了统一化软件工程的观点与知识体系。它的出现具体有以下目的:
- 促进世界范围内对软件工程的一致观点。
- 阐明软件工程相对其他学科的位置,并确立他们的分界。
- 刻画软件工程学科的内容。
- 提供使用知识体系的主体。
- 为开发课程表和个人认证与许可材料提供一个基础。 所以,由上面的目的我们可以看出,SWEBok就是为了详细定义软件工程而确立的一个规范化标准化指南。
CMMI
对于软件开发,如何判定一个程序员的编程能力对应有相应的算法考试,只是考试,确定其拥有一定程度的开发能力。那么对于软件工程,主体就变成了一个团体,因为一个大的项目不大可能由个人能完成,那么,对于团体,我们如何知道其有没有能力开发别人交给他的不同难度的项目呢?团体自己又如何得知自己的能力大小然后对应进行改进呢?对于这个问题,我们也可以通过一种认证来解决。CMMI的推出就是一种能力认证,包括以下方面:
- 过程管理
- 项目管理
- 工程管理
- 支持管理 有了以上方面的认证评测,团队与公司就能得知自己的相应能力,发现自己的问题并加以改进,促进软件企业增强开发与改进能力,从而能够按时地,不超预算地开发出高质量的软件。也能给客户如何选取开发团体一个参考
1. 解释PSP各项指标及技能要求:
+ 阅读《现代软件工程》的PSP: Personal Software Process章节。
+ 按表格PSP2.1,了解一个软件工程师在接到一个任务之后要做什么,需要哪些技能,解释你打算如何统计每项数据?
接到任务后的开发过程包括以下步骤:
-
分析需求
-
进行预测(开发周期,需要的人力等)
-
从软件开发与管理的角度,规定相应的文档及规范。
-
生成设计文档(设计软件的框架)
-
复审设计文档
-
选择合适的代码规范,以便调试和测试
-
具体编码和设计
-
代码复审
-
进行软件测试,编写测试报告
-
记录时间花费,计算工作量
-
总结经验并提出改进计划
需要技能:
-
软件系统分析能力
-
编程能力
统计数据的方法:
-
在每个步骤结束后统计此步骤所花费时间
-
分别统计每个开发者的工作量