1.简答题
软件工程的定义
IEEE:软件工程是:1.将系统化的、严格约束的、可量化的方法应用于软件的开发、运行和维护,即将工程化应用于软件;
2.在1中所述方法的研究。
解释 software crisis、COCOMO 模型
software crisis
即软件危机,是早期计算机科学的一个术语,是指在软件开发及维护的过程中所遇到的一系列严重问题,这些问题皆可能导致软件产品的寿命缩短、甚至夭折。软件开发是一项高难度、高风险的活动,由于它的高失败率,故有所谓“软件危机”之说。软件危机的本源是复杂、期望和改变。这个术语用来描述正急遽增加之电脑的力量带来的冲击和可能要处理的问题的复杂性。从本质上来说,它谈到了写出正确、可理解、可验证的计算机程序的困难。如今用来泛指落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。
软件危机其原因,衔接到硬件的整体复杂度,与软件开发流程。危机表现在几个方面:
-
项目运行超出预算。
-
项目运行超过时间。
-
软件质量低落。
-
软件通常不匹配需求。
-
项目无法管理,且代码难以维护。
COCOMO模型
即构造性成本模型,是由巴里·勃姆(Barry Boehm)提出的一种软件成本估算方法。这种模型使用一种基本的回归分析公式,使用从项目历史和现状中的某些特征作为参数来进行计算。从本质上说是一种参数化的项目估算方法,参数建模是把项目的某些特征作为参数,通过建立一个数字模型预测项目成本。
基本COCOMO是一种静态的单值模型,它使用以每千源代码行数(KLoC)来度量的程序大小来计算软件开发的工作量(及成本)。COCOMO可以应用于三种不同的软件项目:有机项目 (相对较小、较简单) 、中度分离项目 (中等规模)、嵌入式项目 。
中级COCOMO对软件工作量的估算使用了程度大小以及一组“成本驱动者”,包括对产品、硬件、人员及项目属性的客观评价。这种扩展包含了四类“成本驱动者”,每个类又有一些小的属性。这四类分别为:产品属性、硬件属性、人员属性、项目属性。
软件生命周期
生命周期是事物发展的客观规律,软件同样存在生命周期。早期的软件生命周期往往是说“软件从计划、需求开始,经历分析设计、实现、部署、维护,直到最后逐渐消亡的”。这是受到了第一个软件生命周期模型—瀑布模型影响,上述语句实质上简要的描述了瀑布型生命周期。 现在的软件生命周期不再只考虑瀑布型生命周期,另外常见的软件生命周期模型有原型模型、螺旋模型、迭代模型。所以现在的软件生命周期说明应当不再包括瀑布型生命周期中的典型阶段。 因此,现在对软件生命周期及软件生命周期模型采用如下定义:
-
软件生命周期是指软件的产生直到成熟的全部过程。
-
软件生命周期模型是指人们为开发更好的软件而归纳总结的软件生命周期的典型实践参考。
软件生命周期(Software Development LifeCycle,SDLC)是指软件的产生直到成熟的全部过程。其中包括可行性分析与开发计划、需求分析、设计 (概要设计和详细设计)、编码实现、测试、运行与维护等活动,将这些活动以适当的方式分配到不同的阶段去完成。软件生命周期被划分为若干阶段,每个阶段有明确的任务,从而使规模、结构和管理复杂的软件开发过程得到适当的控制和管理。
按照 SWEBok 的 KA 划分,本课程关注哪些 KA 或 知识领域?
其中本课程关注的KA如下:
-
软件需求(Software requirements)
-
软件设计(Software design)
-
软件建构(Software construction)
-
软件测试(Software test)
-
软件开发过程(Software Development Process)
-
软件质量(Software Quality)
其中SWEBok中提到的软件工程领域的核心知识有多个,本课程比较关注的为以上的几个。
解释 CMMI 的五个级别
Level 1 - Initial:无序,自发生产模式。
软件过程是无序的,有时甚至是混乱的,对过程几乎没有定义,成功取决于个人努力。管理是反应式的。
Level 2 - Managed : 项目决定过程,主动。
建立了基本的项目管理过程来跟踪费用、进度和功能特性。制定了必要的过程纪律,能重复早先类似应用项目取得的成功经验。
Level 3 - Defined:组织决定过程,被动。
将软件管理和工程两方面的过程文档化、标准化,并综合成该组织的标准软件过程。所有项目均使用经批准、剪裁的标准软件过程来开发和维护软件,软件产品的生产在整个软件过程是可见的。
Level 4 - Quantitatively Managed : 过程可测量,可控制。
量化管理级 分析对软件过程和产品质量的详细度量数据,对软件过程和产品都有定量的理解与控制。管理有一个作出结论的客观依据,管理能够在定量的范围内预测性能。
Level 5 - Optimizing : 专注于过程优化。
量化管理级 分析对软件过程和产品质量的详细度量数据,对软件过程和产品都有定量的理解与控制。管理有一个作出结论的客观依据,管理能够在定量的范围内预测性能。
用自己的语言简述SWEBok或CMMI
CMMI即能力成熟度模型集成是一个过程改进方法,它的目的是帮助组织改进他们的绩效。CMMI可以被用于引导横贯一个项目、一个部门或一个完整的组织的过程改进。确切地说,CMMI是一个过程改进方法,它向组织提供用于有效的过程改进的基本元素。除此之外,CMMI包含5个等级,每个等级都有几个过程域(PA)组成,这几个PA共同形成一种软件过程能力。通过完成该等级中的各种目标,最终能达到该PA的目标。
所有的企业或组织都满足第一等级,但从第二级到第五级,需要根据对应的参数和指标去判断该企业是否满足该等级。等级越高,则能力成熟度越强。企业或组织可根据CMMI来改进、完善自身绩效,为长期发展制定计划和目标,可以认为CMMI在引导企业改进与发展方面有着十分重要的作用。
2.解释PSP各项指标及技能要求
PSP的各项指标如下,其中planning和development下有若干小指标:
Planning(计划)
- Estimate:估计这个任务需要多少时间
Development(开发)
- Analysis:分析需求
- Design Spec:生成设计文档
- Design Review:设计复审(和同事审核设计文档)
- Coding Standard:代码规范(为目前的开发制定合适的规范)
- Design:具体设计
- Coding:具体编码
- Code Review:代码复审
- Test:测试(包括自我测试、修改代码、提交修改)
Record Time Spent(记录时间花费)Test Report(测试报告)Size Measurement(计算工作量)Postmortem(事后总结)Process Improvement Plan(提出过程改进计划)
一个软件工程师在接到一个任务之后,就要按照PSP2.1表中的各项指标以及顺序,展开工作。此时,工程师需要具有必不可少的编程能力、规划时间、对工作进行计划和安排的能力。当然,还需要具备细心、创造力等技能,因为复审是一项相对比较枯燥但却容易出错的环节。最后还需要具备代码测试、修改等优化技能。
我打算以小时为单位,来统计完成每个指标所花费的时间,作为该指标的的具体数据。