1、 简答
-
软件工程的定义
Software engineering is “(1) the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, that is, the application of engineering to software,” and “(2) the study of approaches as in (1).” – IEEE Standard 610.12
软件工程:(1)将系统化、规范化、可度量的方法应用与软件的开发、运行和维护的过程,即将工程化应用于软件中。(2)对(1)中所述方法的研究。——IEEE[IEE93]软件工程:是指导计算机软件开发和维护的工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过实践考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,这就是软件工程。
-
阅读经典名著“人月神话”等资料,解释 software crisis、COCOMO 模型。
软件危机(software crisis),20 世纪60年代以前,计算机刚刚投入实际使用,软件设计往往只是为了一个特定的应用而在指定的计算机上设计和编制,采用密切依赖于计算机的机器代码或汇编语言,软件的规模比较小,文档资料通常也不存在,很少使用系统化的开发方法,设计软件往往等同于编制程序,基本上是个人设计、个人使用、个人操作、自给自足的私人化的软件生产方式。
60年代中期,大容量、高速度计算机的出现,使计算机的应用范围迅速扩大,软件开发急剧增长。高级语言开始出现;操作系统的发展引起了计算机应用方式的变化;大量数据处理导致第一代数据库管理系统的诞生。软件系统的规模越来越大,复杂程度越来越高,软件可靠性问题也越来越突出。原来的个人设计、个人使用的方式不再能满足要求,迫切需要改变软件生产方式,提高软件生产率,软件危机开始爆发 。构造性成本模型(COCOMO,英文全称为Constructive Cost Model)是由巴里·勃姆(Barry Boehm)提出的一种软件成本估算方法。这种模型使用一种基本的回归分析公式,使用从项目历史和现状中的某些特征作为参数来进行计算在软件项中估算工作量、成本以及时间表的模型。
COCOMO 模型具有估算精确、易于使用的特点。在该模型中使用的基本量有以下几个:
(1)DSI( 源指令条数 ) ,定义为代码行数,包括除注释行以外的全部代码。若一行有两个语句,则算做一条指令。
(2)MM( 度量单位为人月 ) 表示开发工作量。
(3)TDEV( 度量单位为月 ) 表示开发进度,由工作量决定。
(4)COCOMO 模型重点考虑 15 种影响软件工作量的因素,并通过定义乘法因子,从而准确、合理地估算软件的工作量。 软件生命周期。
软件生命周期(software development life cycle)是将软件开发工作划分成各个不同的阶段,以此改进设计,产品管理和项目管理的过程。又名软件开发过程(software development process)按照 SWEBok 的 KA 划分,本课程关注哪些 KA 或 知识领域?
Software requirements
Software design
Software construction
Software engineering models and methods解释 CMMI 的五个级别。例如:Level 1 - Initial:无序,自发生产模式。
Level 1 - Initial:无序,自发生产模式
Level 2 - Managed:有序管理,以项目为单位分工且有响应
Level 3 - Defined:良好定义,以组织为单位分工且积极主动
Level 4 - Quantitatively Managed:量化管理,良好地控制并测量进程
Level 5 - Optimizing:优化过程,聚焦于连续的进程优化用自己语言简述 SWEBok 或 CMMI (约200字)
CMMI英文全称是Capability Maturity Model Integration,直接翻译就是能力成熟度模型。CMMI可以看作是成功企业如何做好软件的一些习惯、做法、准则等的集合,是如何做好软件的最佳实践的集合。如果企业也能按照CMMI的要求做好,那么企业就很可能成为成功的企业。
公司的商业目标,简单地说两个字可以概括——“赚钱”!为了赚钱,我们有很多办法:
提高质量,我们的质量不需要很高,比竞争对手高就可以了。
加快进度,我们的进度也不需要很快,但至少要比竞争对手快。
减少成本,成本也不必减少很多,关键是能支持公司运作,能带来利润就可以了。
CMMI是为企业的商业目标服务的!既不是纯粹提高质量,也不是光增加公司的成本而不提高效益。CMMI是为了提高企业的生产力!
如果贵公司实施了CMMI,而没有提高生产力的话,改进是失败的,违背CMMI的初衷的。CMMI是个好东西,我们没有做好,并不是CMMI的错,是我们没有理解好或者是执行好。
要让CMMI切实为企业带来价值,难度很高。
2、解释 PSP 各项指标及技能要求:
阅读《现代软件工程》的 PSP: Personal Software Process 章节。 http://www.cnblogs.com/xinz/archive/2011/11/27/2265425.html
-
按表格 PSP 2.1, 了解一个软件工程师在接到一个任务之后要做什么,需要哪些技能,解释你打算如何统计每项数据? (期末考核,每人按开发阶段提交这个表)
Planning:根据项目体量以及个人对项目预估熟悉程度来估计
Development:利用课程所学知识以及开发经验进行预估