系统分析与设计-Lesson-1-作业

| 分类 作业  | 标签 博客 

系统分析与设计 Lesson 1

1. 简单题

· 软件工程的定义

Software engineering is “(1) the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, that is, the application of engineering to software,” and “(2) the study of approaches as in (1).” – IEEE Standard 610.12

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

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

  软件危机是指落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。

  构造性成本模型(COCOMO,英文全称为Constructive Cost Model)是由巴里·勃姆(Barry Boehm)提出的一种软件成本估算方法。这种模型使用一种基本的回归分析公式,使用从项目历史和现状中的某些特征作为参数来进行计算。

  COCOMO用3个不同层次的模型来反映不同程度的复杂性,他们分别为:

  • 基本模型 (Basic Model)。 是一个静态单变量模型,它用一个以已估算出来的源代码行数 (LOC) 为自变量的函数来计算软件开发工作量。
  • 中间模型 (Intermediate Model)。 则在用 LOC 为自变量的函数计算软件开发工作量的基础上,再用涉及产品、硬件、人员、项目等方面属性的影响因素来调整工作量的估算。
  • 详细模型 (Detailed Model)。 包括中间 COCOMO 模型的所有特性,但用上述各种影响因素调整工作量估算时,还要考虑对软件工程过程中分析、设计等各步骤的影响。

  COCOMO 模型具有估算精确、易于使用的特点。在该模型中使用的基本量有以下几个:

  1. DSI( 源指令条数 ),定义为代码行数,包括除注释行以外的全部代码。若一行有两个语句,则算做一条指令。
  2. MM( 度量单位为人月 ),表示开发工作量。
  3. TDEV( 度量单位为月 ) ,表示开发进度,由工作量决定。

  COCOMO 模型重点考虑 15 种影响软件工作量的因素,并通过定义乘法因子,从而准确、合理地估算软件的工作量。

  但是COCOMO也存在一些很严重的缺陷,例如分析时的输入时优先的,不能处理意外的环境变换,得到的数据往往不能直接使用,需要校准,只能得到过去的情况总结,对于将来的情况无法进行校准等。

· 软件生命周期。

  从时间角度,把整个软件开发周期划分为若干个阶段。

  划分的原则:各阶段的任务彼此间尽可能相对独立,同一个阶段各项任务的性质尽可能相同,从而降低每个阶段任务的复杂性,简化不同阶段之间的联系,有利于软件开发过程的组织管理。受软件规模、性质、种类、开发方法等因素的影响。

  典型划分GB8567(4个时期7个阶段):

  1. 软件分析时期:问题定义、可行性研究、需求分析
  2. 软件设计时期:总体设计、详细设计
  3. 编码与测试时期:编码、测试
  4. 运行与维护时期

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

  按照SWEBOK(Software Engineering Body of Knowledge,软件工程知识体系)的KA(Knowledge Area)划分,本课程关注的知识领域有:

  • Software requirements 软件需求分析
  • Software design 软件设计
  • Software construction 软件构造
  • Software engineering management 软件工程管理
  • Software engineering process 软件工程过程
  • Software engineering models and methods 软件工程模型和方法
  • Software quality 软件质量

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

  1. Level 1 - Initial 初始级:无序,过程不可预测,自发生产模式,成功取决于个人努力。管理是反应式的,可控程度低。
  2. Level 2 - Managed 可管理级:根据项目来建立特定的过程管理,跟踪费用、进度和功能特性。制定了必要的过程纪律,能重复早先类似应用项目取得的成功经验。
  3. Level 3 - Defined 已定义级:已将软件管理和工程两方面的过程文档化、标准化,并综合成该组织的标准软件过程。所有项目均使用经批准、剪裁的标准软件过程来开发和维护软件,软件产品的生产在整个软件过程是可见的。
  4. Level 4 - Quantitatively Managed 量化管理级:分析对软件过程和产品质量的详细度量数据,对软件过程和产品都有定量的理解与控制。管理有一个作出结论的客观依据,管理能够在定量的范围内预测性能。
  5. Level 5 - Optimizing 优化管理级:过程的量化反馈和先进的新思想、新技术促使过程持续不断改进。关注于软件过程的改进和提升。

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

  CMMI(Capability Maturity Model Integration,能力成熟度模型集成,又称软件能力成熟度集成模型),是一个用于描述企业组织中不同的软件项目开发过程的模型框架,也是一个评价企业软件开发能力的规范标准。利用这个模型框架,软件开发企业可以对自己的软件开发过程进行改进以达成高质量、高效率且成本效益高的软件项目开发。CMMI模型包括有五个级别,分别为初始级、可管理级、已定义级、量化管理级和优化级,从左到右级别依次提高,且软件开发的过程域更加详细和完善。企业组织可以向评估组织申请软件能力成熟度认证和评级。

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

· 阅读《现代软件工程》的 PSP: Personal Software Process 章节。

http://www.cnblogs.com/xinz/archive/2011/11/27/2265425.html

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

  一个软件工程师在接到一个任务之后,首先需要进行计划,估计这个任务需要多少时间;然后是进行开发,按软件开发周期,依次进行需求分析(包括学习新技术)、生成设计文档、进行设计复审(和同事审核设计文档)、为目前的开发制定合适的规范、进行具体设计和具体编码、进行代码复审以及测试(包括自我测试、修改代码和提交修改);接着是对任务进行报告,记录时间花费和完成测试报告,计算工作量并进行事后总结,最后提出过程改进计划。

  需要的技能有时间管理的能力(自我管理能力)、软件工程开发过程的模型思想、软件需求分析能力、软件设计思想、软件测试思想、团队沟通合作的能力(表达和交流的能力、与人合作的能力)、把任务按质按量完成的执行力、对具体技术的掌握和动手能力(编码能力)以及学习能力等等。

  就个人而言,可以通过使用看板软件,比如Tower,先大概估计完成每一步所需天数,制定计划和目标(最好预估更多的时间),然后完成任务就在Tower上记录(包括提前完成和延误),最后在项目完成后,在Tower的个人动态记录上计算每步完成的时间,并进行总结统计。


上一篇     下一篇