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
- "将系统化的、规范的、可度量的方法用于软件的开发、运行和维护的过程,即将工程化应用于软件开发中。"
-
阅读经典名著“人月神话”等资料,解释 software crisis、COCOMO 模型。
- 软件危机(英语:Software Crisis)是早期计算机科学的一个术语,是指在软件开发及维护的过程中所遇到的一系列严重问题,这些问题皆可能导致软件产品的寿命缩短、甚至夭折。软件开发是一项高难度、高风险的活动,由于它的高失败率,故有所谓“软件危机”之说。
- 软件危机其原因,衔接到硬件的整体复杂度,与软件开发流程。危机表现在几个方面:
- 项目运行超出预算。
- 项目运行超过时间。
- 软件质量低落。
- 软件通常不匹配需求。
- 项目无法管理,且代码难以维护。
- 构造性成本模型(COCOMO,英文全称为Constructive Cost Model)是由巴里·勃姆(Barry Boehm)提出的一种软件成本估算方法。这种模型使用一种基本的回归分析公式,使用从项目历史和现状中的某些特征作为参数来进行计算。(https://zh.wikipedia.org/wiki/构造性成本模型)
-
软件生命周期。
- 软件生命周期(Software Development LifeCycle)是指软件的产生直到成熟的全部过程。生命周期是事物发展的客观规律,软件同样存在生命周期。早期的软件生命周期往往是说“软件从计划、需求开始,经历分析设计、实现、部署、维护,直到最后逐渐消亡的”。这是受到了第一个软件生命周期模型---瀑布模型影响,上述语句实质上简要的描述了瀑布型生命周期。 现在的软件生命周期不再只考虑瀑布型生命周期,另外常见的软件生命周期模型有原型模型、螺旋模型、迭代模型。所以现在的软件生命周期说明应当不再包括瀑布型生命周期中的典型阶段。
- 因此,现在对软件生命周期及软件生命周期模型采用如下定义:
- 软件生命周期是指软件的产生直到成熟的全部过程。
- 软件生命周期模型是指人们为开发更好的软件而归纳总结的软件生命周期的典型实践参考。
-
按照 SWEBok 的 KA 划分,本课程关注哪些 KA 或 知识领域?
- SWEBok v3关注的有15个KAs,我个人认为本课程关注的是
- 软件需求
- 软件设计
- 软件工程过程
- 软件工程模型和方法
- SWEBok v3关注的有15个KAs,我个人认为本课程关注的是
-
解释 CMMI 的五个级别。例如:Level 1 - Initial:无序,自发生产模式。
1. 初始级 软件过程是无序的,有时甚至是混乱的,对过程几乎没有定义,成功取决于个人努力。管理是反应式的。
2. 已管理级 建立了基本的项目管理过程来跟踪费用、进度和功能特性。制定了必要的过程纪律,能重复早先类似应用项目取得的成功经验。
3. 已定义级 已将软件管理和工程两方面的过程文档化、标准化,并综合成该组织的标准软件过程。所有项目均使用经批准、剪裁的标准软件过程来开发和维护软件,软件产品的生产在整个软件过程是可见的。
4. 量化管理级 分析对软件过程和产品质量的详细度量数据,对软件过程和产品都有定量的理解与控制。管理有一个作出结论的客观依据,管理能够在定量的范围内预测性能。
5. 优化管理级 过程的量化反馈和先进的新思想、新技术促使过程持续不断改进。
-
简述 SWEBok 或 CMMI (约200字)
- L1:CMMI一级,完成级。在完成级水平上,企业对项目的目标与要做的努力很清晰。项目的目标得以实现。因此,任务是完成了。 但是由于任务的完成带有很大的偶然性,企业无法保证在实施同类项目的时候仍然能够完成任务。企业在一级上的项目实施对实施人员有很大的依赖性。
- L2:CMMI二级,管理级。在管理级水平上,企业在项目实施上能够遵守既定的计划与流程,有资源准备,权责到人,对相关的项目实施人员有相应的培训,对整个流程有监测与控制,并与上级单位对项目与流程进行审查。企业在二级水平上体现了对项目的一系列的管理程序。这一系列的管理手段排除了企业在一级时完成任务的随机性,保证了企业的所有项目实施都会得到成功。
- L3:CMMI三级,定义级。在定义级水平上,企业不仅仅能够对项目的实施有一整套的管理措施,并保障项目的完成;而且,企业能够根据自身的特殊情况以及自己的标准流程,将这套管理体系与流程予以制度化。这样,企业不仅能够在同类的项目上得到成功的实施,在不同类的项目上一样能够得到成功的实施。科学的管理成为企业的一种文化,企业的组织财富。
- L4:CMMI四级,量化管理级。在量化管理级水平上,企业的项目管理不仅仅形成了一种制度, 而且要实现数字化的管理。对管理流程要做到量化与数字化。通过量化技术来实现流程的稳定性,实现管理的精度,降低项目实施再质量上的波动。
- L5:CMMI五级,优化级。在优化级水品上, 企业的项目管理达到了最高的境界。企业仅仅能够通过信息手段与数字数手段来实现对项目的管理, 而且能够充分利用信息资料,对企业在项目实施的过程中可能出现的次品予以预防。能够主动地改善流程,运用新技术,实现流程的优化。
- 由上述的五个台阶我们可以看出,每一个台阶都是上面一阶台阶的基石。要上高层台阶必须首先踏上较低一层台阶。企业在实施CMMI的时候,路要一步一步地走。一般地讲,应该先从二级入手。在管理上下功夫。争取最终实现CMMI的第五级。
2、解释 PSP 各项指标及技能要求:
- 阅读《现代软件工程》的 PSP: Personal Software Process 章节。 http://www.cnblogs.com/xinz/archive/2011/11/27/2265425.html
- 按表格 PSP 2.1, 了解一个软件工程师在接到一个任务之后要做什么,需要哪些技能,解释你打算如何统计每项数据? (期末考核,每人按开发阶段提交这个表)
- 表格中即展示出了接到一个任务之后,从头到尾应该做的事情
- 至于技能,需要对自己的能力有所了解,从而能够预估自己完成任务的时间,同时需要了解软件工程的许多设计模式,从而才能够比较好的设计,然后要有技术能力以及自学能力,至少需要自己应该怎么做,不知道的时候要知道应该可以咨询谁,当编码工作完成后,需要有测试能力,这些都是一些硬实力;同时也是需要许多软实力的,比如说,要有自控能力,要能坚持,要对编码有兴趣等等。
- 对于统计每项数据,在开发过程中的这些东西都可以以文档或者代码形式呈现,而后面的一些报告,可以在过程中持续跟进,以及在结束后队自己进行一个反思,进行反馈总结。