【系统分析与设计】1


1简单题

1.1  软件工程的定义

From Wiki: 

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

按照IEEE对软件工程的定义,软件工程是:

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

(2)  对(1)中所描述方法的研究。

 

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

1)   software crisis(软件危机)

From Wiki: 

Software crisis is a term used in the early days of computing science for the difficulty of writing usefuland efficient computer programs in the required time. The software crisis wasdue to 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.

software crisis是一个早期计算机科学的术语,用来指在难以规定时间内完成有用且高效的计算机程序的现象。软件危机的根源,是计算机能力的急速增长,以及出现了各种高度复杂、无法解决的问题。

软件的大量需求与软件生产力效率之间、软件系统的复杂性与软件开发方法之间,尖锐的矛盾导致软件开发与维护过程中出现了一系列严重问题,这就是软件危机。 

《人月神话》中,作者谈到大型软件开发的成本随着规模指数性增加,在缺乏一定的方法论的情况下开发大型软件,可能会导致难以预料的后果(比如软件极端复杂、难以按时交付、或者bug百出等等)。而加入更多的人力往往非但不能使开发难度下降,还可能会让进度变得更加延后。

software crisis原因有:系统分析不足,开发周期管理不善,开发过程缺乏规范,质量控制标准规程滞后,软件维护计划被忽视,软件企业的作坊式管理等。

它的主要表现是:软件开发成本日益增长,软件开发进度难以控制,用户对“已完成”系统不满意现象经常发生,软件产品的质量不可靠,软件的可维护程度低,软件开发生产率跟不上硬件的发展和人们需求的增长,软件缺少适当的文档资料等。

 

2)   COCOMO 模型(构造性成本模型

COCOMO(constructive cost model),即构造性成本模型。是由巴里·勃姆提出的一种参数化的软件成本估算方法,作为一种在软件项中估算工作量、成本以及时间表的模型。COCOMO使用一种基本的回归分析公式,把项目的某些特征作为参数来进行计算,通过建立一个数字模型预测项目成本。

COCOMO模型重点考虑15种影响软件工作量的因素,通过定义乘法因子准确估算软件的工作量。在COCOMO模型中,工作量调整因子(EAF)代表多个参数的综合效果。每个参数(定为“很低、低、正常、高、很高”,对应值在0.5至1.5之间)都作为乘数,参数的乘积作为成本方程中的系数。

针对不同程度的复杂性,COCOMO通过三个不同层次的模型来反映:

1)    基本模型:适用对软件开发进行快速、早期地对重要的方面进行粗略的成本估计,但因其缺少不同的项目属性,准确性有一定的局限性。

2)    中间模型:相较于基本模型考虑进了更多属性因素(如成本驱动者)。

3)    详细模型:加入了对不同软件开发阶段影响的考量。

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

 

1.3  软件生命周期

From Wiki: 

In software engineering, a software developmentprocess is the process of dividing software development work into distinct phasesto improve design, product management, and project management. It is also knownas a software development life cycle. The methodology may include thepre-definition of specific deliverables and artifacts that are created andcompleted by a project team to develop or maintain an application.

软件生命周期的概念:计算机软件有一个孕育、诞生、成长、成熟、衰亡的生存过程,及软件的生命周期(也称软件开发生命周期SDLC或软件开发过程)。

Systems Development Life Cycle(SDLC) ,即软件生命周期,是软件的产生直到报废的生命周期。软件生命周期以“各个任务彼此间尽可能相互独立,同一阶段各项任务的性质尽可能相同”为原则,被划分为若干阶段,每个阶段有明确的任务,从而降低每个阶段任务的复杂性,简化不同阶段之间的联系,使规模、结构和管理复杂的软件开发过程得到适当的控制和管理。

典型划分为4时期7阶段:

1)    软件分析时期:问题定义、可行性研究、需求分析

2)    软件设计时期:总体设计、详细设计

3)    编码与测试时期:编码、测试

4)    运行与维护时期

软件生命周期存在多种模型,如瀑布模型,快速原型模型,螺旋模型等。

 

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

1)    Software requirements (软件需求)

2)    Software design(软件设计)

3)    Software construction(软件构造)

4)    Software engineering tools andmethods(软件工程工具与方法)

 

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

1)    Level 1 – Initial(初始级)

软件过程是无序的,对过程几乎没有定义,进度、预算、功能和质量等方面不可预测,自发生产模式,管理是反应式的。

2)    Level 2 – Repeatable(可重复级)

过程实现:

制度化:建立了基本的项目管理过程来跟踪费用、进度和功能特性;

纪律化:制定了必要的过程纪律;

可重复:能重复早先类似应用项目取得的成功经验。 

3)    Level 3 – Defined(已定义级)

过程实现标准化,并综合成该组织的标准软件:所有项目均使用经批准、剪裁的标准软件过程来开发和维护软件,软件产品的生产在整个软件过程是可见的。

4)    Level 4 – Managed(量化管理级)

过程实现定量化:分析对软件过程和产品质量的详细度量数据,对软件过程和产品都有定量的理解与控制。管理有一个作出结论的客观依据,管理能够在定量的范围内预测性能。

5)    Level 5 – Optimizing(优先管理级)

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

 

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

CMMICapability MaturityModel Integration),即软件能力成熟度集成模型,是以成本效益、重点明确、过程集中和灵活性为主要关注点,把现在所有现存实施的、以及即将被发展出来的各种能力成熟度模型集成为一个单一的集成化框架的评判模型

CMMI消除了各个模型的不一致性,减少了模型间的重复,增加透明度和理解,从而有效帮助软件企业对开发软件的过程进行管理和改进,同时增强自身的开发和改进能力,使他们能准时有效高质量地开发出软件,是软件行业十分必要的一个资质认证。

CMMI提供了两种模型表述方式:

1)    连续式:描述过程的能力成熟度的模型,分为过程管理、项目管理、工程、支持4个子过程域。

2)    阶段式:描述组织的能力成熟度的模型,分为初始级、受管理级、已定义级、定量管理级、持续优先级5个级别。

 

 

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

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

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


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

由表PSP 2.1可知,软件工程师在拿到项目后需要做主要分如下七个阶段:

1)    计划:估计这个任务需要多长时间

2)    开发:分析需求;生成设计文档;设计复审;代码规范;具体设计;具体编码;代码复审;测试

3)    记录时间花费

4)    测试报告

5)    计算工作量

6)    事后总结

7)    提出过程改进计划

所需技能:代码能力、项目开发经验、通用的软件设计思想,以及自我管理能力、自我约束力、执行力、表达能力、团队合作能力等等。

统计数据方法:先根据PSP 2.1建立表格,然后将任务的每个阶段所花费的时间记录入表,以此完成数据的统计。

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值