系统分析与设计hw1简答

    1、简单题

  • 软件工程的定义

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

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

Software crisis is a term used in the early days of computing science for the difficulty of writing useful andefficient computer programs in the required time. The software crisis was dueto the rapid increases in computer power and the complexity of the problemsthat could not be tackled. With the increase in the complexity of the software,many software problems arose because existing methods were insufficient.

The Constructive Cost Model (COCOMO)is a procedural softwarecost estimation model developedby Barry W. Boehm. The model parameters are derived from fitting a regression formula using data from historicalprojects 

  • 软件生命周期。

软件生命周期(Software Life Cycle,SLC)是软件的产生直到报废或停止使用的生命周期。

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

软件需求,软件设计,软件构造,软件配置管理,软件工程管理,软件工程过程,软件工程工具和方法,软件质量

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

Level 1 Initial :Processes unpredictable

Level 2 Managed :Processes characterized for projects and is often reactive

Level 3 Defined :Processes characterized for the organization and is proactive

Level 4Quantitatively : Process measured and controlled

扫描二维码关注公众号,回复: 1455230 查看本文章

Level 5 Optimizing: Focus on process improvement

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

CMMI即Capacity Maturity Model Integration,是能力成熟度模型集成模型,是一个设想,计划把现在所有现存实施的与即将被发展出来的各种能力成熟度模型,集成到一个框架中去,申请此认证的前提条件是该企业具有有效的软件企业认定证书。其目的是帮助软件企业对软件工程过程进行管理和改进,增强开发与改进能力,从而能按时地、不超预算地开发出高质量的软件。其所依据的想法是:只要集中精力持续努力去建立有效的软件工程过程的基础结构,不断进行管理的实践和过程的改进,就可以克服软件开发中的困难。CMMI为改进一个组织的各种过程提供了一个单一的集成化框架,新的集成模型框架消除了各个模型的不一致性,减少了模型间的重复,增加透明度和理解,建立了一个自动的、可扩展的框架。因而能够从总体上改进组织的质量和效率。CMMI主要关注点就是成本效益、明确重点、过程集中和灵活性四个方面。

CMMI是一套融合多学科的、可扩充的产品集合,其研制的初步动机是为了利用两个或多个单一学科的模型实现一个组织的集成化过程改进。CMMI的本质是软件管理工程的一个部分。软件过程改善是当前软件管理工程的核心问题, 50多年来计算机的发展使人们认识到要高效率、高质量和低成本地开发软件,必须改善软件生产过程。基于模型的过程改进是指采用能力模型来指导组织的过程改进,使之过程能力稳定的进行改善,该组织也能变得更加成熟。

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

  • 阅读《现代软件工程》的 PSP: Personal Software Process 章节。 http://www.cnblogs.com/xinz/archive/2011/11/27/2265425.html
  • 按表格 PSP 2.1, 了解一个软件工程师在接到一个任务之后要做什么,需要哪些技能,解释你打算如何统计每项数据? (期末考核,每人按开发阶段提交这个表)

指标:

a)       项目/任务有多大?

说明项目的大小一般用代码行数 (LineOf Code, LOC) 来表示;也可以用功能点 (function point). 一个重要的指标是: 你在实际产品中写了多少代码, 不包括空行/注释行/单字符行 .

b)       花了多少时间?

可以用小时天,月,年来表示。一组人所花费的时间可以用 (人数*时间来表示,例如某项目花费了10个人·月。 

c)       质量如何?

交付的代码中有多少缺陷?  交付有两个定义

·          Code Complete “代码完成” 的时候交付给测试人员

·         交付到顾客那里去 (在软件交付的时候)

可以用缺陷的数量来除以项目的大小。  例如 5 bugs /KLOC  意味着每千行程序有5个缺陷。

d)       是否按时交付?

在团队工作中稳定,一致的交付时间是衡量一个员工能力的重要方面。

 

技能要求:

1.       知识:  对具体技术的掌握动手能力

例如Java, C/C++/C#, 诊断/提高效能的技术,  device driver, kernel debugger 的掌握;对于某一开发平台的掌握。

2.       经验对问题领域的知识和经验的积累 (例如对于医疗行业的了解对于金融行业的了解)

 

第一点和第二点都可以在很多简历上看到也可以比较容易地检测出来。随着经验的增长一个工程师可以掌握更广泛,更深入的技术和问题领域的知识。

 

3.       通用的软件设计思想,  软件工程思想的提高

这一方面就比较虚,什么是好的软件设计思想什么是好的软件工程思想一个工程师开了博客转发了很多别人的文章这算有思想么另一个工程师坚持任何设计都要画UML 这算有思想么? 我个人比较重视一个程序员原创的博客,  在面试的时候, 我们别空口吹思想,  一起来看看你写的原创博客吧

 

4.       职业技能 (区别于技术技能)

职业技能包括自我管理的能力表达和交流的能力与人合作的能力把任务按质按量完成的执行力这些能力在IT 行业和其它行业都很重要。

 

 

猜你喜欢

转载自blog.csdn.net/qq_40127318/article/details/79561782