系统分析与设计_lesson1

1、简答题

(1)软件工程的定义

  软件工程是:
  (1)将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护,即将工程化方法应用于软件;
  (2)在(1)中所述方法的研究

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

  software crisis即软件危机,这是早期计算机科学的一个术语。六十年代以来,随着计算机应用需求的驱动,系统软件和应用软件有很大的发展,如操作系统,编译系统和大型应用软件等。由于软件生产的复杂性和高成本,使大型软件的生产出现了很大的困难,即出现软件危机。软件危机的本源是复杂、期望和改变。这个术语用来描述正急遽增加之电脑的力量带来的冲击和可能要处理的问题的复杂性。从本质上来说,它谈到了写出正确、可理解、可验证的计算机程序的困难。
  COCOMO即构造性成本模型,是由巴里·勃姆(Barry Boehm)提出的一种软件成本估算方法。这种模型使用一种基本的回归分析公式,使用从项目历史和现状中的某些特征作为参数来进行计算。COCOMO由三个不断深入和详细的层次组成。第一层,“基本COCOMO”,适用对软件开发进行快速、早期地对重要的方面进行粗略的成本估计,但因其缺少不同的项目属性(“成本驱动者”)的因素,所以准确性有一定的局限性。“中级COCOMO”中考虑进了这些成本驱动者。“详细COCOMO”加入了对不同软件开发阶段影响的考量。

(3)软件生命周期。

  软件生命周期(Software Life Cycle,SLC)是软件的产生直到报废或停止使用的生命周期,把整个软件生存周期划分为若干阶段,使得每个阶段有明确的任务,使规模大,结构复杂和管理复杂的软件开发变的容易控制和管理。
  典型划分GB8567(4个时期7个阶段):
    1. 软件分析时期:问题定义、可行性研究、需求分析
    2. 软件设计时期:总体设计、详细设计
    3. 编码与测试时期:编码、测试
    4. 运行与维护时期

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

如下:

  • 软件需求(Software requirements)
  • 软件设计(Software design)
  • 软件建构(Software construction)
  • 软件测试(Software test)
  • 软件维护与更新(Software maintenance)
  • 软件构型管理(Software Configuration Management, SCM)
  • 软件工程管理(Software Engineering Management)
  • 软件开发过程(Software Development Process)
  • 软件工程工具与方法(Software Engineering Tools and methods)
  • 软件质量(Software Quality)

(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字)

 笔者认为,软件工程要成为合理的工程学科和一个被认可的职业,在一个核心知识体系上达成一致就非常重要,毫无疑问,SWEBok的诞生做到了,这是所有学科的关键里程碑。
 1993年,IEEE-CS和ACM为把软件工程建设成为一个专业,建立了IEEE-CS/ACM联合指导委员会。随后,该指导委员会被软件工程协调委员会(SWECC)替代。SWECC给出了“软件工程职业道德规范”、“本科软件工程教育计划评价标准”和“软件工程知识体”(SWEBOK)。
 SWEBOK全面描述了软件工程实践所需的知识,为开发本科软件工程教育计划打下了基础。

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

阅读《现代软件工程》的 PSP: Personal Software Process 章节,按表格 PSP 2.1, 了解一个软件工程师在接到一个任务之后要做什么,需要哪些技能,解释你打算如何统计每项数据?

表格PSP2.1告诉我们一个软件工程师在接到一个任务后要做:
1.计划:

  • 估计这个任务需要多少时间

2.开发:

  • 分析需求
  • 生成设计文档
  • 设计复审 (和同事审核设计文档)
  • 代码规范 (为目前的开发制定合适的规范)
  • 具体设计
  • 具体编码
  • 代码复审
  • 测试(包括自我测试,修改代码,提交修改)

3.记录时间花费
4.测试报告
5.计算工作量
6.事后总结
7.提出过程改进计划
8.如何统计每项数据
9.纪录时间

而做到这些需要的技能有:
1.眼光,有放眼整个任务流程的眼光,不局限于当前
2.知识,没有足够的理论没办法进行任何开发
3.动手能力,空有知识不动手也只是纸上谈兵
4.耐心律己的心态,记录时间花费,工作量等

每项数据的统计方式:
利用一些可编写在线文档平台(代码管理平台:Github;数据管理平台:博客、石墨文档等),每一项数据在开始和结束的时候都会自动记录,这样既可以上传进度,又可以供他人监督。

你可能感兴趣的:(系统分析与设计,软件工程,计算机科学,计算机)