HomeWork 1

1、简单题

软件工程的定义

根据IEEE的定义,a.软件工程是将系统化、规范化、可度量化的方法应用于软件的开发、运行和维护,即将工程化方法应用于软件;b.在a中所述方法的研究。

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

  • software crisis : 即软件危机,是早期计算机科学的一个术语,是指在软件开发及维护的过程中所遇到的一系列严重问题,这些问题皆可能导致软件产品的寿命缩短、甚至夭折。
  • COCOMO模型 : 即构造性成本模型,是由巴里·勃姆提出的一种软件成本估算方法。这种模型使用一种基本的回归分析公式,使用从项目历史和现状中的某些特征作为参数来进行计算。

    软件生命周期

    软件生命周期(SDLC)是软件的产生直到报废的生命周期,周期内有问题定义、可行性分析、总体描述、系统设计、编码、调试和测试、验收与运行、维护升级到废弃等阶段,这种按时间分程的思想方法是软件工程中的一种思想原则,即按部就班、逐步推进,每个阶段都要有定义、工作、审查、形成文档以供交流或备查,以提高软件的质量。

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

    ACM与IEEE Computer Society联合修定的SWEBOK(Software Engineering Body of Knowledge)提到,软件工程领域中的核心知识包括:
  • software requirements (软件需求)
  • software design (软件设计)
  • software construction (软件建构)
  • software engineering management (软件测试)
  • software maintenance (软件维护与更新)
  • software configuration management, SCM (软件构型管理)
  • software engineering management (软件工程管理)
  • software development process (软件开发过程)
  • software engineering tools and methods (软件工程工具与方法)
  • software quality (软件质量)

本课程关注软件设计、软件测试、软件构型管理、软件工程管理、软件开发过程、软件质量等核心知识。

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

  • Level 1 - Initial:无序,自发的生产模式。
  • Level 2 - Repeatable:有基本的项目管理过程,制定必要规律,管理化制度的生产模式。
  • Level 3 - Defined:软件管理及工程过程化、标准化,完善培训和评价制度的生产模式。
  • Level 4 - Managed:分析度量数据,控制生产流程,管理预测性能的生产模式。
  • Level 5 - Optimizing:量化反馈、持续更新、改善流程,集中精力改进过程的生产模式。

    用自己语言简述 SWEBok 或 CMMI (约200字)

  • SWEBok : SoftWare Engineering Body Of Knowledge,软件工程知识体系,是由多个行业成员和团体合作建立的一种国际标准,用于说明软件工程知识体系指南。建立SWEBok的目标在于促进世界范围内对软件工程的一致观点,阐明软件工程相对其他学科的位置并确立它们的界限,刻画软件工程学科的内容,提供使用知识体系的主题,为开发课程表和个人认证与许可材料,提供一个基础。SWEBok的知识领域在前面的问题中已经回答,到目前为止的版本一共定义了15个KAs,而与SWEBok相关的学科则有计算机工程,计算机科学,管理,数学,项目管理,质量管理,软件人类工程学,系统工程。
  • CMMI : Capability Maturity Model Integration,即能力成熟度模型集成(也有称为:软件能力成熟度集成模型),是一套融合多学科的、可扩充的产品集合, 其研制的初步动机是为了利用两个或多个单一学科的模型实现一个组织的集成化过程改进。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, 了解一个软件工程师在接到一个任务之后要做什么,需要哪些技能,解释你打算如何统计每项数据? (期末考核,每人按开发阶段提交这个表)

表格PSP 2.1如下
Alt text
需要做的事情如上表。
需要的职业技能为

  • 自我管理的能力;
  • 团队执行能力;
  • 时间管理能力;
  • 对应的编程技术能力;

如何统计数据:
对每一项的数据进行分开统计,在统计的过程中注意统计有效时间而不是全部时间,而在计量单位上可以使用推荐的每人每月工作量来统计。