系分 Homework 1

Posted by ONE on March 22, 2018
学号 15331407
姓名 张应鸿

简单题

软件工程

将系统化的、规范的、可度量的方法用于软件的开发、运行和维护的过程,即将工程化应用于软件开发中。

是指导计算机软件开发和维护的工程学科。 采用工程的概念、原理、技术和方法来开发与维护软件, 把经过实践考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,这就是软件工程。


阅读经典名著“人月神话”等资料,解释 software crisis、COCOMO 模型。

软件危机

是指在软件开发及维护的过程中所遇到的一系列严重问题,这些问题皆可能导致软件产品的寿命缩短、甚至夭折。上世纪60年代以来,随着计算机应用需求的驱动,系统软件和应用软件有很大的发展,软件生产的复杂性和高成本,使得大型软件的生产出现很大困难,由此引申出软件危机。

软件开发是一项高难度、高风险的活动,由于它的高失败率,故有所谓“软件危机”之说。软件危机的本源是复杂、期望和改变。这个术语用来描述正急遽增加之电脑的力量带来的冲击和可能要处理的问题的复杂性。从本质上来说,它谈到了写出正确、可理解、可验证的计算机程序的困难。


COCOMO模型

Constructive Cost Model 最初发表于1981年巴里《软件工程经济学》一书中,做为一种在软件项中估算工作量、成本以及时间表的模型。该模型由三个不断深入和详细的层次组成。

  • 第一层,基本COCOMO,适用对软件开发进行快速、早期地对重要的方面进行粗略的成本估计,但因其缺少不同的项目属性(“成本驱动者”)的因素,所以准确性有一定的局限性。
  • 第二层,中级COCOMO,考虑进了这些成本驱动者
  • 第三层,详细COCOMO,加入了对不同软件开发阶段影响的考量

软件生命周期

软件生命周期指软件的产生直到成熟的全部过程。

在早期,生命周期内有问题定义、可行性分析、总体描述、系统设计、编码、调试和测试、验收与运行、维护升级到废弃等阶段,这种按时间分程的思想方法是软件工程中的一种思想原则,即按部就班、逐步推进,每个阶段都要有定义、工作、审查、形成文档以供交流或备查,以提高软件的质量。这是受到了瀑布模型的影响。随着面向对象技术的成熟和其他生命周期模型的出现,这些生命周期设计方法的指导意义逐步减少。软件生命周期人们为开发更好的软件而归纳总结的软件生命周期的典型实践参考。在现代软件领域,软件生产有较大的复杂性和更高的要求,因而没有一定固定的、通用的设计方法,大多数情况下,是依据软件的各类要求,选择合适的软件生命周期设计方法进行开发。


按照 SWEBok 的 KA 划分,本课程关注哪些 KA 或 知识领域?

  • Software requirements 软件需求
  • Software design 软件设计
  • Software construction 软件构造
  • Software testing 软件测试
  • Software maintenance 软件维护
  • Software configuration management 软件配置管理
  • Software engineering management 软件工程管理
  • Software engineering process 软件工程过程
  • Software engineering models and methods 软件工程工具和方法
  • Software quality 软件质量
  • Software engineering professional practice 软件工程专业实践
  • Software engineering economics 软件工程经济
  • Computing foundations 计算机基础
  • Mathematical foundations 数学基础
  • Engineering foundations 工程基础

解释 CMMI 的五个级别。例如:Level 1 - Initial:无序,自发生产模式。

Level 1 - Initial 初始级

无序,无法预测,有时候甚至是混乱的。项目可能会成功,任务完成中存在很大的偶然性,不能担保按时按期完成任务。研发员是者一个级别最关键的因素。

Level2 - Managed 可管理级

具备有对项目的管理能力。能够建立比较基础的项目管理规范,对于项目的实施能够列出相应的计划和流程,并且随着流程的进行可以对此实施监控和控制。

Level3 - Defined 已定义级

已将软件管理和工程两方面的过程文档化、标准化,并综合成该组织的标准软件过程。所有项目均使用经批准、剪裁的标准软件工程来开发和维护软件,软件产品的生产在整个软件过程是可见的。

Level 4 - Quantitatively Managed 量化管理级

数据驱动。分析对软件过程和产品质量的详细度量数据,对软件过程和产品都有定量的理解与控制(管理量化)。能够在定量的范围内预测性能。项目的质量因此保证相对的高质量和稳定。

Level 5 - Optimizing 优化管理级

过程的量化反馈和先进的新思想、新技术促使过程持续不断改进。


用自己语言简述 SWEBok 或 CMMI

CMMI是能力成熟度模型集成。CMMI是美国国防部、卡内基梅隆大学、美国国防工业协会共同开发和研制的,它集成了现存的有助于提高企业管理能力和软件质量的实践。25年来,经过政府和组织的不断实践和完善,CMMI模型卓有成效。

CMMI目的是帮助那些追求高质量、管理能力的企业对软件工程过程进行管理和改进,增强开发、改进、质量监管和盈利能力,使其能够按计划地开发出高质量地软件。

CMMI包含5个等级,初始级、可管理级、已定义级、量化管理级、优化管理级。每个级别表示这个阶段企业的能力和水平。企业根据这个等级对自身进行评估,不断改进和完善。

CMMI还包括几个模型,分别是 CMMI-DEV、CMMI-SVC、CMMI-ACQ、P-CMM\DMM,企业根据自身的能力和水平选择合适的模型并加以改进,提升企业的经营水平。


解释 PSP 各项指标及技能要求:

阅读《现代软件工程》的 PSP: Personal Software Process 章节。 http://www.cnblogs.com/xinz/archive/2011/11/27/2265425.html

按表格 PSP 2.1, 了解一个软件工程师在接到一个任务之后要做什么,需要哪些技能,解释你打算如何统计每项数据? (期末考核,每人按开发阶段提交这个表)

一般来讲,各项数据的用时,可以采用记录开始时间和结束时间来获得。

每当开始一个阶段任务的时候,记录开始时间,结束时记录结束时间,最后用于分析项目的时间占比。

PSP2.1 ACTIONS
估计任务需要的时间 分析任务所需功能,结合以往开发经验,检索资料,了解整个任务的设计和开发难度,确定完成时间
开发  
需求分析(包括学习新技术) 结合相类似的项目分析需求,查看是否需要调研,分析、复查,确认需求
生成设计文档 编写清晰的设计文档,复查审阅
设计复审(和同事审核设计文档) 明确沟通事项,复审过程清晰标明自己的观点
代码规范(为目前的开发制定合适的规范) 选择项目开发合适的代码规范
具体设计 从现有的先进的设计模型中挑选合适的设计方法,形成完整方案
具体编码 按照代码规范,设计方法编码
代码复审 按照代码规范、项目功能、设计思路审查
测试(自我测试,修改代码,提交修改) 测试过程撰写测试报告,报告写下开始时间和结束时间
报告  
测试报告 在测试阶段完成
计算工作量 代码行数、项目用时、项目需求等评判
事后总结,并提出过程改进计划 分析最终展示成果和预期的差别,各个阶段时间占比,完成项目过程的报告等。