系统分析与设计--学习笔记2


一. CMU 与美国国防部合作提出 CMM/CMMI 模型,解决了美国国防部什么问题? 它对软件产业的作用是什么?

(1)CMM,为能力成熟度模型。为了满足美国联邦政府评估软件供应商能力的要求,美国卡内基-梅隆大学的软件工程研究学院(CMU SEI)牵头,发布了一份能力成熟框架(Capability Maturity Framework)以及一个成熟度问卷(Maturity Qestionnaire)。CMM认证的评估方法是一种诊断工具,它借助识别其现行过程的优劣使一个组织能了解其软件开发能力,把这些优缺点与CMM对照起来,安排软件改时计划的优先顺序,并把注意力集中关注到最有利的软件改进上,以及给出其现行过程的成熟度等级和业务目标。CMMI即软件能力成熟度模型集成,也是由美国国防部与卡内基-梅隆大学和美国国防工业协会共同开发和研制的,其目的是帮助软件企业对软件工程过程进行管理和改进,增强开发与改进能力,从而能按时地、不超预算地开发出高质量的软件。

(2)软件过程改善是当前软件管理工程的核心问题, 50多年来计算机的发展使人们认识到要高效率、高质量和低成本地开发软件,必须改善软件生产过程。基于模型的过程改进是指用采用能力模型来指导组织的过程改进,使之过程能力稳定的进行改善,该组织也能变得更加成熟。而CMM/CMMI为改进一个组织的各种过程提供了一个单一的集成化框架,新的集成模型框架消除了各个模型的不一致性,减少了模型间的重复,增加透明度和理解,建立了一个自动的、可扩展的框架,因而能够从总体上改进软件开发组织的质量和效率。

 

二. 简述瀑布模型、增量模型、螺旋模型(含原型方法)的优缺点。

(1)瀑布模型

u 优点

为项目提供了按阶段划分的检查点;

当前一阶段完成后,您只需要去关注后续阶段;  

可在迭代模型中应用瀑布模型。 

u 缺点

在项目各个阶段之间极少有反馈;

只有在项目生命周期的后期才能看到结果;

通过过多的强制完成日期和里程碑来跟踪各个项目阶段。

(2)增量模型

u 优点

整个项目的资金不会被提前消耗,因为首先开发和交付了主要功能和高风险功能;

每个增量交付一个可操作的产品;

每次增量交付过程中获取的经验,有利于后面的改进,客户也有机会对建立好的模型作出反应;

采用连续增量的方式,可把用户经验融入到细化的产品,这比完全重新开发要便宜;

“分而治之”的策略,使问题分解成可管理的小部分,避免开发团队由于长时间的需求任务而感到泪丧;

更易于控制用户需求,因为每次曾两开发的时间很短;

由于不是一步跳到未来,所以用户能逐步适应新技术;

风险分布到几个更小的增量中,而不是集中于一个大型开发中。

u 缺点

若软件可拆卸度不高,开发人员全局把握水平不高;

用户不同意分阶段提交产品,或者开发人员易过剩。

(3)螺旋模型(含原型方法)

u 优点

设计上的灵活性,可以在项目的各个阶段进行变更;

以小的分段来构建大型系统,使成本计算变得简单容易

客户始终参与每个阶段的开发,保证了项目不偏离正确方向以及项目的可控性;

随着项目推进,客户始终掌握项目的最新信息,从而他或她能够和管理层有效地交互;客户认可这种公司内部的开发方式带来的良好的沟通和高质量的产品。

u 缺点

很难让用户确信这种演化方法的结果是可以控制的;

建设周期长,而软件技术发展比较快,所以经常出现软件开发完毕后,和当前的技术水平有了较大的差距,无法满足当前用户需求。

 

三.简述 RUP 的三大特点,其中哪些内容体现了用户驱动的开发,哪些内容体现风险驱动的开发?

(1)RUP最重要的它有三大特点:

a. 软件开发是一个迭代过程 

b. 软件开发是由用例(Use Case)驱动的 

c. 软件开发是以架构设计(Architectural Design)为中心的

(2)第二个特点,即软件开发是用例驱动的体现了用户驱动的开发;第三个特点,即软件开发是一个迭代过程体现了风险驱动个的开发。

 

四.RUP 四个阶段的划分准则是什么?关键的里程碑是什么?

(1)用时间的准则,RUP划分的四个阶段:先启阶段、精化阶段、构建阶段和产品化阶段。

(2)每个阶段的结果都是一个里程碑,里程碑是一个时间点,在这个时间点上必须做出重要的决策,达到一些关键的目标:

a. 先启阶段结束时是第一个重要的里程碑,即生命周期目标(Lifecycle Objective)里程碑,用于评价项目基本的生存能力。

b. 精化阶段结束时是第二个重要的里程碑——生命周期构架(Lifecycle Architecture)里程碑,它为系统的结构建立了管理基准,并使项目小组能够在构建阶段中进行衡量。

c. 构建阶段结束时是第三个重要的里程碑——初始运作能力(Initial Operational)里程碑,该里程碑决定了产品是否可以在测试环境中进行部署。

d. 在产品化阶段的终点是第四个里程碑——产品发布(Product Release)里程碑。此时,要确定目标是否实现,是否应该开始另一个开发周期。

 

五.IT 项目管理中,“工期、质量、范围/内容” 三个元素中,在合同固定条件下,哪个最容易与客户达成妥协?理由... ...

软件项目的开发有其自身的特点。我个人觉得这三要素的重要程度依次如下

1、时间:最重要,决定着切入市场的时机。

2、成本:决定时间和质量。

3、质量:二八法则(满足客户的核心需求,定时升级,打补丁)。

答:工期是最容易与客户达成妥协的,项目启动时三要素维持的是一个等边三角形,随着项目的推进这个三角形的夹角肯定会变形,因为每一个要素的变化都会影响其他两个元素,导致夹角的变化。而做为项目经理的职责就是掌控这个三角形维持着一个合理的角度。在一个项目中,客户往往关心的是质量;而老板掌控着资源,也就是决定着成本;只有时间才是项目经理唯一可以完全掌控的要素。

 

六.RUP 为企业按固定节奏生产、固定周期发布软件产品提供了依据,为什么?

答:因为在RUP中,软件开发生生命周期根据时间和RUP的核心工作流划分为二维空间。

时间维从组织管理的角度描述整个软件开发生命周期,是RUP的动态组成部分。它可进一步描述为周期(Cycle)、阶段(phase)、Iteration(迭代)。核心工作流从技术角度描述RUP的静态组成部分,它可进一步描述为行为(activities)、工作流(workflow)、产品(artifact)、角色。在时间维上,为了能够方便地管理软件开发过程,监控软件开发状态,RUP把软件开发周期划分为Cycles,每个Cycle生成一个产品的新的版本。每个Cycle都依次由四个连续的阶段(pahse)组成,每个阶段都应完成确定的任务。

 

七.(可集体讨论)讲述软件开发中 1-2 个有效的敏捷实践,以及依据。

敏捷开发中的测试流程实践

1. 介绍项目实例

项目介绍:根据一家在线 B2B 公司的要求,我们将为其开发一款类似于谷歌的搜索服务。作为 Web Service,该服务可以内嵌于网页中。当用户输入关键词并选择商户的类型和位置后,系统会返回具体商户的列表(参见图 1)。

 

图1. 项目实例图

 

典型的敏捷开发和测试活动参见下表。它主要由三部分构成,从最初的用户故事设计和发布计划,到几次 Sprint 周期的迭代开发和测试,以及最后的产品发布阶段。每个时间段都有相应的测试活动。通常 Sprint 周期被分成两类:特征周期(Feature Sprint)和发布周期(Release Sprint)。特征周期主要涉及新功能的开发和各类测试。发布周期则会结合计划,确定新版本功能,然后对最新的功能进行测试。

 

在迭代的 Sprint 周期中,开发部分可以根据传统步骤分成编码和单元测试、重构和集成。需要指出的是,重构和集成是敏捷开发的 Sprint 迭代中不可忽视的任务。如果在新的 Sprint 周期中要对上次的功能加以优化和改进,必然离不开重构和集成。

在每个 Sprint 周期结束前,测试团队将提交针对该 Sprint 周期或者上个 Sprint 周期中已完成的功能的验收测试(在实际项目中,测试团队的进度通常会晚于开发团队)。这样一来,开发团队可以运行验收测试来验证所开发的功能目前是否符合预期。当然,这个预期也是在迭代中不断变化和完善的。当产品的所有功能得以实现,测试工作基本结束后,就进入了发布周期。此时,测试团队的任务相对较多。

 

 

八.(可集体讨论)选择一个可追溯到初始版本的软件,如“知乎”,你认为实现当初类似“stack-overflow”这类问答模式的软件,需要多少人,多少月?

答:从Quora来说,由于他们的开发团队

1. 代码提交后的互相审查,48个开发者总共会进行大概 100+ 次代码提交,并且大多数流程都会在  1  至 2 天内进行审阅。这个“一周”的长度是在仔细讨论后定下的 —— 它既长到足够审阅者们自由安排审阅时间,也短到可以及时阻止低质量代码可能带来的,被其他人阅读并使用的后果。实际操作中,我们也考虑到了许多开发者会有一个以“星期”为周期而安排的工作时间表。

2. 为防止代码审阅出现交叉修改的混乱局面,他们会有专门的数据分析师——如果原来没有的话——被自动加到审阅名单里。事实上,他们的工具也可以很简单地添加其它的关于代码审阅人的规则。

3. 定期组织“整顿周(Cleanup weeks)”——在这些整顿周里,一些指定团队——有时也会是整个公司——把所有的时间都花在清楚那些不用的旧代码上。这些定期活动减少了大家在“常规工作”和“整顿工作”中切换所需花费的时间和精力,也让整顿旧代码变得更为有趣,带来更多的社交价值。

总结:因此类似“stack-overflow”这类问答模式的软件,以Quora为例,大概需要50人,2-4个月的开发时间。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值