Chinaunix首页 | 论坛 | 博客
  • 博客访问: 995234
  • 博文数量: 186
  • 博客积分: 10020
  • 博客等级: 上将
  • 技术积分: 1676
  • 用 户 组: 普通用户
  • 注册时间: 2006-08-14 17:08
文章存档

2011年(5)

2009年(11)

2008年(2)

2007年(111)

2006年(57)

我的朋友

分类: LINUX

2007-10-13 17:18:53


1、什么是软件生命周期?请列举4种有代表性的软件生命周期模型。
答:软件生命周期是说软件象人一样有生命,有出生、成长(开发)、发展(维护)、衰老和死亡。软件的死亡就是被废弃和过时。这个阶段称为软件生命周期。例如:the waterfall model, 瀑布模型,rapid prototyping model, 快速原型模型,incremental/iterative development, 增量/迭代模型,spiral model, 螺旋模型。
2. The waterfall model is often criticised for not being an adequate model for the software life cycle. Explain this major criticism by providing two scenarios illustrating the shortcomings, and very briefly sketch how the model can be improved.
(瀑布模型经常被批评对于软件生命周期来说是不充分的模型,举2个例子来说明它的不足,并简要的说出如何改进这种模型。)
答:对于瀑布模型的批评主要是说它过于简化,具体表现在各个阶段不能清楚的被划分;常常发生早期阶段的产品缺陷在晚期才被发现导致灾难性的后果;当在编码阶段发现问题再去修改文档的时候,巨大的工作量使人望而却步;很难在现实中严格的遵守;对需求的变更没有考虑,而这在现实中几乎是必然发生的;可运行的版本在生命周期的末尾颁布,客户需要有足够的耐心;容易陷入导阻塞状态。
 
 
3、State the Spiral model of the software process by drawing an annotated chart.Briefly relate the spiral model to the classical waterfall model. Say which goal software engineers probably have had in mind when they came up with the spiral model.
(用有注释的图表描述螺旋模型,简述螺旋模型与瀑布模型的关系,说明工程师们在提出螺旋模型时主要考虑哪些目标)
答:图如右侧所示,说明如下:
客户交流:建立有效沟通;
计划:定义资源、期限等;
风险分析:评估技术和管理的风险;
构建/发布:构建、测试、安装、提供用户支持;
客户评估:得到反馈。
然后客户继续和开发者进行交流,循环往复。
螺旋模型与瀑布模型:
Couples iterative nature of prototyping with controlled and systematic aspect of the linear sequential model(将原型法的迭代特性和线性顺序模型的可控性和系统性结合在一起)
A simplified spiral model is as a waterfall model with each phase preceded by risk analysis.(一个单一化的螺旋模型可以被看作每个阶段前都带有风险分析的瀑布模型。
 
工程师提出螺旋模型主要考虑:
(1)      为了降低项目实施风险。
(2)      为了在实施大型系统过程中,较快看到系统原型。
4、The spiral model of development includes explicit consideration of risks at all stages of the lifecycle. Why is risk management so important? (螺旋模型在生命周期的各阶段都包括的明确的关于风险的考虑事项。为什么风险管理如此重要?)
答:因为风险在整个项目周期是一直存在并且无法完全避免的,失控的风险会导致项目的失败。风险管理就是为了提前考虑到可能的风险,使风险一旦成为现实,造成的损失最小化。螺旋模型中在每个阶段开始之前都考虑风险,这样的风险管理可以使可以发现的部分风险得到避免,无法完全避免的风险得到控制,成为可控风险,当出现不可控的重大风险时,及时终止项目,使损失的可能降到最小。
 
5、Select two of the process models we have discussed in this course.Describe the two models, differentiating them where appropriate.For each model, give an example of an application domain or problem area where you think that process model will be effective, justifying your answer.(选择两种模式,对比描述它们。对每个模型,给出1个应用范围或问题领域中的例子,在这个领域中,所选择过程模型是有效的,证明你的选择是正确的)
答:(PPT 24-49)自己选两个裁剪一下吧。例子根据Use编吧。
Model Type
 Advantages/Use
 Disadvantages
 Example
 
Built-and-Fix Model
 在设计中不用规范,只需要构造一个产品重复运行的能够满足客户需求的程序即可。
 不利于各种规模的软件开发
 
 
Waterfall 瀑布模型
 过于简单(见第2题)
 仅仅对好理解的项目才可用
 
 
V-model
 有利于大的软件模型
 
 
 
Rapid Prototyping Model
快速原型模型
 能够快速的跟踪客户的需求,加快开发的过程
 
 经常会出现把工作中间版本的软件做为最后版本的情况,使得该模型不能正常的执行
 
 
Rapid Application Develop
-ment(RAD)
 能够快速及时的解决软件开发中出现的问题,以商业目标为中心,可以大大的提高工作效率。
 需要大量的人力资源
如果需求不能模块化,这个方法将是不适用的。
如果需要优化,这个方法也是不适用的。
 
 
Incremental Model增量模型
 把线性模型和原型开发模型结合起来,产生发布增量,产品的设计、实现、集成和测试是一个系列的行为,当前的开发版本能够快速的传达给客户,从而使得客户可以尽早用到好的完整的产品。当资源不够的时候也能够及时的开发出产品,同时,增量也有助于管理技术风险。
 
 
 
Spiral Model 螺旋模型
 application in large systems and software
used well as a risk reduction mechanism
 controllability (demands high risk assessment and expertise)
has not been applied as much (little history)
 
 
Full Spiral Model
 
 
 
 
Component Assembly Model组件装配模型
 当重用是一个开发目标的时候给模型比较有效,同时也能够减小风险
 寻找组件,确定组件是否是可重用的,以及组件模型的适应性都是比较困难的
 
 
Concurrent Development Model共同开发模型
 可以在不同地点并发的开发软件
 
 要以网络为基础
 
 
Formal Methods Model
形式化方法模型
 当开发数学规范的时候适用该过程。
可以通过数学分析发现模糊性、不完整性、不一致型。
 过分的耗费时间,需要大量的教育,无法和客户交流
 
 一般在客户特别要求的时候才适用
 
 
 
6、简单叙述Software Engineering Layers的组成及各层特点。
答:软件工程层由4层组成:
(1)      质量关注层Quality Focus:是软件工程的基石。
(2)      过程层Process:定义一个框架,作为项目和技术性为管理和控制的基础。
(3)      方法层Methods:描述技术上怎样构建软件。
(4)      工具层Tools:提供对过程和方法的自动化支持。
7、从Generic View来看有哪些软件工程活动,简单列举几种Umbrella Activities。
答:从通用的观点来看有如下软件工程活动:
(1)      定义阶段:包括系统或信息工程,需求分析和项目计划
(2)      开发阶段:包括软件设计、编码和测试
(3)      维护阶段:包括纠正、适应、增强和预防
伞型活动列举如下:
(1)      项目跟踪和控制PTC
(2)      正规技术审查FTR
(3)      软件质量保证SQA
(4)      软件配置管理SCM
(5)      文档准备和编制DPP
(6)      管理软件重用
(7)      风险管理
8、What is meant by the term ‘software process’ and what common activities would you expect to find within a software process framework? ("软件过程"这个词意味着什么?在软件过程框架中会有哪些基本活动?)
答:“软件过程”是指一系列行为、方法、实践和转变,人们用它们来开发和维护软件和相关的软件产品。因此,软件过程意味着:
(1)      一系列生产软件产品的行为
(2)      开发和维护软件的一系列步骤
(3)      为了人们应用方法和工具完成任务而设定的技术和管理框架
软件过程框架中的基本活动有:
框架行为(分布在所有得软件工程行为中)主要包括:
(1)      工作任务
(2)      项目里程碑
(3)      软件产品及其发布版本
(4)      质量保证点
伞型活动(贯穿在整个软件工程生命周期中)包括:
(1)      软件质量保证;
(2)      软件配置管理;
(3)      软件度量或量度
9、什么是软件过程建模/定义?为什么要建模/定义软件过程?软件过程定义中的常见问题有哪些?Why is process improvement unlikely to occur unless an organisation defines and manages its processes? 为什么说一个组织如果不去定义并管理他的过程,"过程改进"就不可能发生。
答:软件过程建模就是在软件系统的开发和维护过程中关注人和过程的形式、原因以及抽象的描述。软件过程定义由增加和组织过程模型的信息的行为组成,这些行为保证软件过程可以被实施。当一个过程有描述关于做什么、谁来做、需要什么材料和生产怎样的产品之类的信息的文档时,它就是被定义的。一个软件过程的定义可以建立一个应用工具、方法和人来完成任务的计划。
强调软件建模的目的是为了对软件过程更好的理解和管理。
建模能够允许对软件过程的细节进行全面的审视,允许提炼和开发软件过程,可以使得管理者即见树木,又见森林。
灵活性允许模型是灵活的和可扩展的。
Enactment使得管理者和开发者能够都是用模型,支持计算机辅助手段。
而量度是过程控制的前提。
软件过程定义中的常见问题有:
(1)    过大的压力称为障碍;
(2)    可用性差
(3)    不好的设计,往往违背好的定义原则
(4)    缺少图形
(5)    有序的定义
(6)    过期或者不能使用的软件过程
 
因为一个组织要改进它的过程,它首先要知道自己有哪些过程,进行的状态如何,所以必须要进行过程定义,否则过程改进就成为无源之水,无本之木。
 
10、软件过程模型/定义有哪些层次?哪些类型?哪些模式?各自有什么特点?你认为三者应如何组合更适合实际企业中的过程定义任务。
答:软件过程模型/定义分为以下几个层次:
(1)    通用层次的模型(象软件生命周期模型),它是基于过程的观点建立的,对执行序列比较敏感;
(2)    广泛的模型(适用于软件过程建模),它定义任务的结果、度量和检查点。
(3)      原子的模型,它强调工具和规范,是比较特定的模型。
分为以下几个类型:
(1)    描述性的:定义和描述一个存在的模型,通常是事实执行的模型;
(2)      预期性的:规定一个过程并且解释该过程应当如何使用,它不描述过程中不允许的行为。
分为以下几个模式:
(1)    起始模式
该模式假定用户几乎没有经验,包括了培训材料和过程指导与学习到的教训;
(2)    中等模式
该模式假定用户有一些过程的经验,包括过程指导和学习导的教训。
(3)    专家模式
该模式假定用户很有经验,过程尽可能的简捷和精确,不是适用详细的按部就班的过程,而是适用过程模型、检查点、形式描述、表格等。不需要培训材料和开始信息。
 
结合方式:
 
     
11、在本课程中重点讲解了哪两种软件过程建模方法?它们各自的优缺点和实用范围如何?
答:本课程重点讲的两种软件过程建模方法:ETVX 和IDEF0
 
 ETVX
 IDEF0
 
Comparison and Contrast
 基于任务的
对广泛的或者原子的建模适用
可能非常复杂
 基于函数的
对通用的或者广泛的建模比较适用
是用户友好的
 
Pros
赞成的
 直观的任务观点
 直观易用
 
实现非常细化
 给出好的过程观点
 
可用于安排职责
 可以被自动化工具执行
 
Cons
反对的
 需要高层规范
 可以用行为说明而不用函数
 
不便于使用框图
 对任务需要借用其他方式的帮助
 
可能很复杂
 分辨概念及其作用非常困难
 
不清晰的流程
 
 
应用范围
 过程的模型行为
基于任务的
能够在各个级别上使用
 基于函数的
通用和广泛级别的建模
顶层的图能够被分解
 
 
12、什么是CMM?请简要描述CMM所定义的5个成熟度级别的特点。对于一个公司而言,不断提升CMM成熟度级别有什么好处?
答:CMM是一个描述有效软件过程的关键要素的框架。
第一级:初始的过程:随意的过程,成功依赖于英雄。
第二级:可重复的过程:管理项目的观察和跟踪,稳定的计划,具有产品基线
第三级:已经定义的过程:已经定义和学术化的软件过程,可以提供产品的质量控制;
第四级:已经管理的过程:产品质量计划,对可度量的软件过程进行跟踪;
第五级:优化的过程:持续的过程成熟度改进
给企业带来的好处是:
       CMM 对软件组织的指导可以促使企业控制软件开发和维护的过程,演进软件工程文化,使得管理水平得到提高。CMM描述了一个把一个组织从一个随意型的、过程很不成熟的软件企业逐步变成成熟的、纪律严明的企业经历的路径。
 
13、在CMM中,什么是KPA?哪些KPA是由项目负责实施的?哪些KPA是由组织负责实施的?KPA与CMM成熟度级别之间有什么对应关系?
答:KPA就是关键领域(要素),是在执行过程和达到一系列对加强过程能力很重要的目标的过程中一组相关的行为。对于一个满足该KPA的组织必须达到该KPA规定的所有目标。
由项目负责实施的KPA包括:
(1)    需求管理RM
(2)    软件项目计划SPP
(3)    软件项目跟踪和监督SPTO
(4)    软件子承包的管理SSM
(5)    软件配置管理SCM
(6)    集成软件管理ISM
(7)    软件产品工程SPE
(8)    内部小组协调IC
(9)    对等审查PR
(10)量化过程管理QPM
(11)软件质量管理SQM
(12)缺陷防范DP
 
由组织负责实施的KPA是:
(1)    软件质量保证SQA;
(2)    组织过程关注OPF
(3)    组织过程定义OPD
(4)    培训程序TP
(5)    技术变更管理TCM
(6)    过程变更管理PCM
 
KPA与CMM成熟度级别之间对应关系:
Level
 Characteristic
 Key Process Areas
 
(5) Optimizing
 
 持续的过程能力改进           
 过程变更管理
技术变更管理
缺陷防范
 
(4)Managed 
 产品质量计划
已量度的软件过程的跟踪
 软件质量管理
量化过程管理
 
(3) Defined                                                
 已经定义和学术化的软件过程来提供产品的质量控制
 对等审查
内部小组协调
软件产品工程
集成软件管理
培训程序
组织过程定义
组织过程关注
 
(2)Repeatable
 管理项目的观察和跟踪,稳定的计划,具有产品基线
 软件配置管理
软件质量保证
软件子承包管理
软件项目跟踪和监督
软件项目计划
需求管理
 
(1) Initial
 随意的过程,成功依赖于英雄。
 人
 
 
14、What is the purpose of the Personal Software Process (PSP) and Team Software Process (TSP)? Describe the relationship between the PSP ,TSP, and CMM。(什么是PSP、TSP的目的/用途。描述PSP、TSP、CMM之间的关系。)
答:团队软件过程TSP的目的是改善团队性能,关注团队和产品;
       个人软件过程PSP的目的是改进个人技巧,关注纪律和个人。
       CMM的目的则是改善组织能力,关注管理。
PSP、TSP、CMM之间的关系是:
(1)    PSP展示出个人努力对过程规则的应用和有效性;TSP把在PSP中收到训练的程序员组合成团队来实施工程的任务;CMM则描述了软件工程和管理实践,预期的给出过程改进目标、路径和优先级,它的KPA都是描述了应该做什么;
(2)    PSP和TSP定义的是一个过程,而不仅仅是目标,也就是说,它们进一步的描述了怎样做,而不仅仅是做什么。
CMM改善组织的成熟度,关注的是管理;TSP改善的是团队性能,关注的是产品和团队;PSP改善的是个人技术和纪律,关注的是个人。
本文仅为提供更多信息,不代表新浪BLOG同意其观点或描述。如需转载请注明出处。
 关闭阅读模式 
阅读(1205) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~