1、简单题
(1) 软件工程的定义:
软件工程将系统化、规范化、可度量的方法应用于软件的开发、运行和维护的过程,以及对上述方法进行研究的学科,也是指导计算机软件开发与维护的工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过实践考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。这就是软件工程。
(2)阅读经典名著“人月神话”等资料,解释software crisis、COCOMO模型
software crisis:
软件危机是指落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致计算机软件在它的开发和维护过程中出现一系列严重问题的现象。概括地说,主要包含两方面的问题:如何开发软件,怎样满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。主要表现在以下几个方面:
a.经费预算经常突破,完成时间一再拖延。
b.开发的软件不通满足用户要求。
c.开发的软件可维护性差。
d. 开发的软件可靠性差。
COCOMO模型:
是一种常见的软件规模估算方法,英文全称Constructive Cost Model,中文为结构性成本模型,它是由巴里·勃姆(Barry Boehm)提出的一种软件成本估算方法。这种模型使用一种基本的回归分析公式,使用从项目历史和现状中的某些特征作为参数来进行计算。
COCOMO模型由三个日益详细和准确的表格组成,可以分为三个层次:基本COCOMO,中级COCOMO,详细COCOMO。基本COCOMO适用于快速、早期、粗略的软件成本数量级估计,但由于缺乏考虑项目属性差异的因素而准确性有限。中级COCOMO将成本动因考虑在内,详细COCOMO整合了中级COCOMO的所有特征,并评估了成本动因对软件工程过程的每个步骤(分析,设计等)的影响。
(3) 软件生命周期
软件的生命周期,亦称软件的生存周期。它是按开发软件的规模和复杂程度,从时间上把软件开发的整个过程(从计划开发开始到软件报废为止的整个历史阶段)进行分解,形成相对独立的几个阶段,每个阶段又分解成几个具体的任务,然后按规定顺序依次完成各阶段的任务并规定一套标准的文档作为各个阶段的开发成果,最后生产出高质量的软件。
其典型划分GB8567(4个时期7个阶段):
1)软件分析时期:问题定义、可行性研究、需求分析
2)软件设计时期:总体设计、详细设计
3)编码与测试时期:编码、测试
4)运行与维护时期
(4) 按照SWEBok的KA划分,本课程关注那些KA或知识领域?
本课程关注的KA如下:
1)软件需求(Software Requirements)
2)软件设计(Software design)
3)软件建构(Software construction)
4)软件工程工具和方法(Software Engineering Tools and Methods)
(5)解释 CMMI 的五个级别。例如:Level 1-Initial:无序,自发生产模式。
Level 1 - Initial:初始级,软件过程是无序的,有时甚至是混乱的,对过程几乎没有定义,成功取决于个人努力。管理是反应式的。
Level 2 - Managed:已管理级,建立了基本的项目管理过程来跟踪费用、进度和功能特性。制定了必要的过程纪律,能重复早先类似应用项目取得的成功经验。
Level 3 - Defined:已定义级,已将软件管理和工程两方面的过程文档化、标准化,并综合成该组织的标准软件过程。所有项目均使用经批准、剪裁的标准软件过程来开发和维护软件,软件产品的生产在整个软件过程是可见的。
Level 4 - Quantitatively Managed:量化管理级,分析对软件过程和产品质量的详细度量数据,对软件过程和产品都有定量的理解与控制。管理有一个作出结论的客观依据,管理能够在定量的范围内预测性能。
Level 5 - Optimizing:优化管理级,过程的量化反馈和先进的新思想、新技术促使过程持续不断改进。
(6) 用自己语言简述SWEBok或CMMI(约200字)
CMMI英文全称是Capability Maturity Model Integration,直接翻译就是能力成熟度模型,通俗来说,CMMI可以看作是成功企业如何做好软件的一些习惯、做法、准则等的集合,是如何做好软件的最佳实践的集合。如果企业也能按照CMMI的要求做好,那么企业就很可能成为成功的企业,CMMI里面所有的要求,都是来自于成功企业的最佳实践的,它的先进性我们不必怀疑。
其目的是帮助软件企业对软件工程过程进行管理和改进,增强开发与改进能力,从而能按时地、不超预算地开发出高质量的软件。CMMI为改进一个组织的各种过程提供了一个单一的集成化框架,新的集成模型框架消除了各个模型的不一致性,减少了模型间的重复,增加透明度和理解,建立了一个自动的、可扩展的框架。因而能够从总体上改进组织的质量和效率。CMMI主要关注点就是成本效益、明确重点、过程集中和灵活性四个方面。
2、解释PSP各项指标及技能要求:
(1)阅读《现代软件工程》的 PSP: Personal Software Process 章节。http://www.cnblogs.com/xinz/archive/2011/11/27/2265425.html
(2)按表格 PSP 2.1,了解一个软件工程师在接到一个任务之后要做什么,需要哪些技能,解释你打算如何统计每项数据? (期末考核,每人按开发阶段提交这个表)
表格PSP 2.1如下:
PSP2.1论述设计过程和设计模板,介绍设计方法,并提供了设计模板、但PSP并不强调选用什么设计方法,而强调设计完备性准则和设计验证技术。
它将软件工程师在接到一个任务后要做的事情依次划分为计划,开发,记录时间花费,测试报告,计算工作量,事后总结,提出过程改进计划7个阶段,并且在开发阶段更加具体地分为了分析需求,生成设计文档,设计复审,代码规范,具体设计,具体编码,代码复审,测试阶段。
这使得一个软件工程师需要拥有完成任务所需的知识和经验,技术技能,职业技能。
关于统计数据的问题,首先我们应该按照项目的复杂程度来确定统计时间的单位,并且以此时间单位来对以上表格的各个阶段所需的时间进行相应的规划,然而项目的实施具有一定的动态性,对于这些变动我们需要给予相应的重视。我们可以借助GitHub等云平台来对代码及文档进行管理,有助于组员之间的合作与相互监督,并需要每隔一段时间进行相应的阶段性总结。