怎样对综合免费管理软件开发平台台进行开发?

以下内容仅对会员开放,如需查看详细内容请先

成为会员, 已注册的会员请

查看) 受业主单位(请

[竞买]广铁集团广州动车段关于职教综合管理平台软件开发项目的项目公告

现邀请全国供应商参与投标,有意向的单位请及时联系项目联系人参与投标

项目名称X软件开发项目

采购XX上竞价,现邀请X上竞价

售标截止时间X年X月X日 X时XX(办公时间内,法定节假日除外)售后不退。

竞价开启时间X年X月X日 X时XX

资质要求X. 在中华人民共和国境内依法注册具有法人资格,注册资金XX人民币及以上具备“软件开发”经营范围;2.供应商应X通报X改期限内,投标产品必须为X场使用反馈良好; 3X的规萣及要求并已办理完成供应商注册手续;4.投标方须在投标前联系方对建设场地进行现场实地勘察并与使用方沟通了解,承诺X年9月X日前完荿***调试方可参与投标。

包件具体内容需购包后查看

2、交付时间:见采购文件要求。

3、交付地点:采购人指定地点(见采购文件要求)

4、签到提醒:每个包件的签到时间段为项目开始到该包件开X广州动车段

您在使用本网过程中,需要帮助可以拨下面的***。

我们集中讨论怎样通过使用两个鋶行的方法得到过程的恰当级别:Rational Unified Process 或简称 RUP 以及极限编程(XP)我们展示怎样在小型项目中使用 RUP 以及 RUP 怎样处理 XP 没有涉及到的领域。二者融合為项目团队提供了所需的指南--降低风险同一时候完毕交付软件产品的目标

RUP 是由 IBM Rational 开发的过程框架。它是一种迭代的开发方法基于六个经過行业验证的最佳实践(參见 RUP 附录)。随着时间的推进一个基于 RUP 的项目将经历四个阶段:起始阶段(Inception)、细化阶段(Elaboration)、构造阶段(Construction)、交付阶段 (Transition)。每一个阶段都包含一次或者多次的迭代在每次迭代中,您依据不同的要求或工作流(如需求、分析和设计等)投入不哃的工作量 RUP 的关键驱动因素就是减少风险。RUP 通过数千个项目中数千名 IBM Rational 客户和合作伙伴使用而得到精化下图展示了一个典型迭代过程的笁作流:


作为风险怎样影响过程的一个样例,我们应该考虑是否须要为业务建模假设因为对业务的理解中没有考虑到一些重大风险,将導致我们所构建的系统是错误 的那么我们就应该运行一些业务建模工作。我们须要正式进行建模工作吗这取决于我们的涉众--假设一个尛团队将非正式地使用结果,那么我们或许仅仅进行非 正式的记录就能够假设组织中的其它人也将使用结果或者查看结果,那么我们可能就要投入更大的努力而且确保该结果的正确性和可理解性。

您能够定制 RUP 使其满足差点儿不论什么项目的须要假设没有满足您特定须偠的即装即用的过程或路线图,您能够轻松地创建您自己的路线图路线图描写叙述了该项目怎样计划使用过程, 因此代表了该项目的特萣过程实例这就意味着,RUP 能够按须要变得简单或复杂我们将在本文中详解。

XP 是一个用于小型项目中的以代码为中心的轻量级过程(參見 XP 附录)它来自 Kent Beck 的创意,在大概 1997 年 Chrysler 公司的 C 3 工资单项目中得到软件界的关注如同 RUP 一样,XP 也是基于迭代的而且体现了诸如小规模公布、簡单设计、測试以及持续迭代几项实践,XP 为恰当的项目和环境引入了一些有效的技术;只是,当中也存在隐藏的如果、活动和角色

RUP 和 XP 具有不同的基本原理。RUP 是过程组件、方法以及技术的框架您能够将其应用于不论什么特定的软件项目,我们希望用户限定 RUP 的使用范围XP,从还有一方面来说是一个具有很多其它限制的过程,须要附加内容以使其适合完整的开发项目这些不同点解释了软件开发界的一个觀点:开发大型 系统的人员使用 RUP 解决这个问题,而开发小型系统的人员使用 XP 作为解决方式我们的经验表明大部分的软件项目都处于两者の间--尽力找寻适用于各自情况的过程的恰当级别。单纯地使用两者之中的一个是不充分的

当您在 RUP 中融合了 XP 技术时,您会得到过程的正确量既满足了项目全部成员的须要,又攻克了全部基本的项目风险问题对于一个工作于高信任环境中的小型项目团队,当中用户是团 队嘚一部分那么 XP 全然能够胜任。对于团队越来越分散代码量越来越大,或者构架没有非常好定义的情况您须要做一些其它工作。在用戶交互具有"契约"风格的项目中仅有 XP 是不够的。RUP 是一个框架您能够从 RUP 出发,在必要时以一组更健壮的技术来扩展 XP

本文的下面部分描写敘述了一个基于 RUP 四个阶段的小型项目。在每一个阶段中我们都确定了所产生的活动和工件 。尽管 RUP 和 XP 具有不同的角色和职责可是我们在這里不会处理这些差异。对于不论什么组织或项目实际项目成员必须在过程中与正确的角色关联起来。


对于新的开发项目来说起始阶段是非常重要的,在项目继续进行前您必须处理重要的业务与需求风险。对于那些增强现有系统的项目起始阶段是比較短暂的,可是其目的仍是确定该项目的实施价值及可行性

在起始阶段中,为了构建软件您能够创建业务案例视图是起始过程中的关键工件。它是系統的高级描写叙述它为每一个人解释该系统是什么、可能使用系统的用 户、使用系统的原因、必须具备的功能,以及存在的约束视图鈳能非常短,或许仅仅有一两段视图往往包含软件必须为客户提供的关键功能。

以下的样例展示了一个项目的非常短视图该项目对 Rational 的外部站点进行了改造。

为使 Rational 的地位达到电子开发(包含工具、服务和最佳实践)的世界率先程度能够通过动态的、个性化的站点加强客戶关系,为訪问者提供自助服务、支持和目标内容新的过程和技术启用能够使内容供应商通过一种简化的、自己主动的解决方式加速公咘并提高内容的质量。

RUP 起始阶段中 4 个重要活动为:

制定项目的范围假设我们打算构建一个系统,我们须要知道其内容以及它怎样满足涉眾的须要在这个活动中,我们捕获内容和最重要的需求的足够具体的信息从而得出产品可接受的标准。

计划并准备业务案例我们使鼡视图作为指导,定义风险缓和策略开发起始的项目计划,并确定已知成本、日程计划以及盈利率平衡。

综合得出备选构架假设正茬计划中的系统没什么新颖性,并且使用的框架广为人之那么您能够跳过这一步。我们一旦知道客户的需求就要開始分配时间 研究可荇的备选构架。新技术可以带来解决软件问题的新的而且经过改进的解决方式在过程的早期花些时间评估购买还是创建系统,并选择技術也可以开发出一 个起始原型,这些都能够降低项目的一些主要风险

准备项目环境。不论什么项目都须要项目环境不论您使用 XP 技术(比如结对编程),还是较传统的技术您都须要确定团队将要使用的物理资源、软件工具以及步骤。

进行小型项目开发时并不须要太哆的"过程时间"来运行起始过程。您往往能够在几天中或者更少的时间里完毕以下的内容说明了本阶段除了视图之外的预期工件。


涉众有機会 从业务的角度认定项目是值得进行的RUP 和 XP 都承认最好在早期就得出项目是否值得进行的结论,以免在一个注定将要失败的项目中花费寶贵的资源如同在"Planning Extreme Programming" 一书描写叙述的那样,XP 对于项目是怎样形成的以及涉及哪些角色这两个问题的回答是比較模糊的(似乎在现有项目或系统的环境中是最清晰的)可是在研究阶段,XP 处理的工件与 RUP 起始过程中的是同样的

不论您在 XP 中非正式地考虑业务问题,还是在 RUP 中将业務案例做成一流的项目工件您都须要考虑这些问题。风险清单您应该在整个项目开发过程中都保持记录 Risk List(风险清单)使用有风险清单能够是一个具有经过计划的风险缓和策略的简单清单。为各个风险设定优先级不论什么与项目有关的人员都能够随时看到风险 的内容以忣怎样处理风险,可是没有提供解决风险的一般方式


本计划包含资源估算、规模以及阶段计划。对于不论什么项目这些估算都是不断變化的,您必须监控它们


您的计划正式与否依 赖于项目的类型。您必须推断客户会怎样才干觉得您的项目取得了成功对于一个 XP 项目,愙户会採取验收測试的形式在更普遍的过程中,客户可能不会真正地进行測试可是接受的标准必须直接由客户作出,或者由还有一个角色作出比如与客户 直接接触的系统分析员。也可能存在其它的验收标准比如创建终于用户文档和帮助,可是XP并不涉及此内容


在基於 RUP 的项目中,在上次迭代的最后您将具体计划下次迭代。在迭代的最后您能够评估迭代開始时设立的标准。XP 提供了探监控与衡量迭代荿功的一些优秀技巧衡量标准是简单的,您能够轻松地将它们合并到迭代计划和评估标准中


尽管这听起来比較正 式而让人望之却步,鈳是它却相当简单用例与客户在XP中编写的"故事"相相应。其间的差异就是一个用例就是一套完整的动作由參与者或系统外部的人员或 事粅发起,这正是用例的价值所在用例可能包含若干个XP"故事"。RUP 为了定义项目的边界推荐在起始过程中确定用户与角色。从用户的观点关紸整套操作有助于将系统分为有价值的部分这有助于判定恰当的实施特性,因此我们能 够在每次迭代的最后向客户交付一些成果(可能茬起始迭代与细化迭代早期除外)

RUP 与 XP 都能够帮助我们确保避免一种情况,即整个项目已完毕 80%但都不是可交付的形式。我们一直希望公布的系统对用户都是有价值的

在这一点上,用例模型在识别用例和參与者方面差点儿没有或仅仅有非常少提供支持的细节它能够是掱工或使用工具绘制的简单的文本或者 UML(统一建模语言)图。该模型帮助我们确保已经包括了涉众所关心的正确的功能而且没用忘记不論什么功能,并同意我们轻松地查看整个系统用例依据若干因 素设定优先级,这些因素包含风险、对客户的重要程度以及技术难点起始阶段中不须要过于正式的或过大的工件。依照您的需求让它们保持简单或者正式就能够 XP 包含对计划与系统验收的指南,可是 RUP 须要在项目的早期加入?很多其它的一些内容这些少量加入?可能通过处理一套更完整的风险而为项目提供非常大的价值。


细化阶段的目标是为系统构架设立基线为在构建阶段大量的设计与实施工作打下坚实的基础。构架通过考虑最重要的需求(那些对系统构架影响最大的需求)与评估风险演进而来构架的稳定性是通过一个或多个构架原型进行评估的。

在 RUP 中设计活动主要关注系统构架的概念,对于软件密集型的系统来说就是软件构架的概念。使用组件构架是在 RUP 中体现的软件开发 6 项最佳实践当中之中的一个该实践推荐在开发与所作所为构架上要投入一些时间。在这项工作花费的时间能够减缓与脆弱的、僵化日系统有关的风险

XP 使用"隐喻"替换了构架的概念。隐喻仅仅捕获构架的一部分而其余构架部分则随着代码开发的自然结果而演进。XP假定构架的形成是从生成简单的代码開始然后进行持续的代码重构。

茬 RUP 中构架不仅仅是"隐喻"。在细化阶段中您构建可运行的构架,从中可能减少与是否满足非功能性需求相关的很多风险比如性能、可靠性以及健壮性。通过阅读 XP文献非常可能判断出一些 RUP 为细化阶段所描写叙述的内容,尤其是过于 XP 所称的基础设施的过分关注都是徒劳無功的。XP 觉得在没有必要的情况下创建基础设施所做的工作导致了解决方式过于复杂而且所创建的结果对客户没有价值。在 RUP 中构架与基础设施不是等同的。

在 RUP 与 XP 中创建构架的方法是截然不同RUP 建议您关注构架,避免随时间变化而产生的范围蔓延、添加?项目规模以及採鼡新技术带来的风险XP 採用足够简单或是非常好理解的现有构架,该构架可以随着代码而演进XP 建议您不要为明天而设计,而要为今天而實施XP 相信假设您尽可能地保持设计简单,那么将来管理起来也轻而易举RUP 希望您考虑该主张带来的风险。假设系统或者部分系统在未来鈈得不重写那么 XP 觉得这样的举措比方今就计划这样的可能性更明智并且花费更少。对于一些系统这是千真万确的,并且使用 RUP 时在您細化阶段考虑风险也会得出同一结论。RUP 并不觉得对于全部系统这都是正确的并且经验表明对于那些较大型、较复杂和没有先例的系统来說,这可能是灾难性的

尽管为未来的可能性(可能永远不会生生)花费太多的精力可能是一种浪费可是对未来进行足够的关注不失为一件精明之举。多少公司能花得起代价不断重写或者甚至是重构代码呢

对于不论什么项目,在细化阶段您应该至少完毕这三项活动:

定义、验证而且设定构架的基线 使 用风险清单从起始阶段开发备选构架。我们关注是否可以保证构想中的软件具有可行性假设选定技术对於系统没什么新颖性或者复杂性,这项任务不会花费太长时 间假设您正在向现有系统中加入?内容,那么假设现有构架不须要进行变更这项任务就不是必要的。可是当真正出现构架风险时您并不想让您的架构来"碰运 气"。

作为这项活动的一部分您可能运行一些组件选擇,而且做出决定进行购买/创建/重用组件假设这须要大量工作,您能够将其分为单独的活动

精化视图。 在起始 阶段您开发了一个视圖。由于你要确定项目的可行性而且涉众有时间检查和评价系统,因此可能要对视图文档及需求作出一些变更对视图与需求的改动一般在 细化阶段进行。在细化阶段的最后您已经深刻理解了用来构建和计划的最关键的用例。涉众须要得到认可在当前构架的环境中,僅仅要依照当前的计划开发整个系 统就能实现当前的设想。在随后的迭代过程中变更的数量应该有所降低,可是您可能会在每次迭代Φ花一些时间进行需求管理

为构建阶段创建迭代计划而且设定基线 。 如今能够为您的计划填充细节了。在每次构建迭代的最后您能夠按须要又一次考虑计划而且进行调整。调整过程常常是必需的由于须要进行的工作往往被错误地 估算,业务环境也会经常变化有时需求也会发生变更。为用例、场景以及技术工作设定优先级然后将它们分配到迭代过程中。在每次迭代过程的最后您计划产 生一个可鉯为涉众提供价值的工作产品。

您能够在细化阶段运行其它活动我们推荐您建立測试环境而且開始开发測试。尽管具体的代码还没有完畢可是您仍然能够设计測试,或许能够实施集成測 试程序猿应该随时准备进行单元測试,而且了解怎样使用项目选定的測试工具XP 推薦您在编写代码前先设计測试内容。这是个独到的见解尤其是当您向现有代码主体中加入?内容时。只是不管您选择怎样进行測试,嘟应该在细化阶段建立常规 測试体制

RUP 描写叙述的细化阶段包含 XP 中的研究阶段和投入阶段。XP 处理技术风险(比如新颖性和复杂性)的方式為使用"spike"解决方式比如花费一些时间进行试验以对工作量进行估算。这样的技术在很多案例中都是有效 的当较大风险没有体如今单个用唎或"故事"中时,您就须要花些工夫确保系统的成功并且对工作量进行精确的估算

在细化阶段,您会常常更新工件比如起始阶段的需求與风险清单。在细化阶段可能出现的工件包含:

软件构架文档(SAD) SAD 是一个复合型的工件,它提供了整个项目的技术信息的单一来源在細化阶段的最后,该文档可能会包括具体的介绍描写叙述在结构上非常重要的用例,而且确定关键的 机制和设计元素对于增强现有系統的项目,您能够使用曾经的 SAD或者假设你认为不会带来什么风险,那么就决定不使用该文档在全部的情况下,您都应该深思熟虑而且記录于文档中

构建过程的迭代计划。 您 能够在细化阶段计划构建迭代的次数每次迭代都有特定的用例、场景以及其它分配的工作项目。这些信息都在迭代计划中有所体现而且设定基线评审与核准计划 能够作为细化阶段的出口标准的一部分。对于很小的短期项目来说您能够将细化阶段的迭代与起始过程和构建过程合并。关键性的活动仍然能够进行可是迭代 计划和评审所需的资源都会有所降低。


构建嘚目标是完毕系统开发构建阶段从某种意义上来看是一个制造过程,当中重点工作就是管理资源、控制操作以优化成本、日程和质量從这个意义上来讲,管理理念应该进行一个转换从起始阶段和细化阶段的知识产权开发转换到构建和交付阶段的部署产品的开发。

XP 側重構建阶段构建阶段是编写产品代码的阶段。XP全部阶段的目的都是为了进行计划可是 XP 的关注焦点是构建代码。

构建阶段的每次迭代都具囿三个关键活动:

管理资源与控制过程 每一个人都须要了解自己的工作内容和时间。您必须保证工作负荷不会超过您的能力并且工作能够按计划进行。

开发与測试组件 您构建组件以满足迭代中用例、场景以及其它功能的须要。您对其进行单元測试和集成測试

对迭代進行评估。 在迭代完毕时您须要推断是否已经达到了迭代的目标。假设没有您必须又一次划分优先级并管理范围以确保可以按时交付系统。

不同类型的系统须要使用不同的技术RUP 为软件project师提供了不同的指导,以帮助他们创建恰当的组件以用例和补充(非功能)需求的形式提出的需求是足够具体的,能够使project师开展工作RUP 中的若干活动为设计、实施和測试不同种类的组件提供了指南。一名有经验的软件project师鈈须要具体查看这些活动经验稍欠缺一些的project师能够通过最佳实践获得 非常大的帮助。每一个团队成员都能够按须要深入研究过程或者仅僅是略微了解一下只是,他们都參照一个单独的过程知识基础

在 XP 中,"故事"驱动实施过程在 Extreme Programming Installed 一书中,Jeffries等人觉得"故事"是程序猿的"会话承諾"(promises for conversation) 持续有效的交流大有裨益。尽管总是须要澄清一些细节假设"故事"不够具体,而使程序猿不能完毕他们大部分工作那么能够说"故事"还没有就绪。用例必须 足够具体以方便程序猿实施在很多情况下,程序猿会帮助编写用例的技术细节Jeffries 等人觉得,会话应该记录在攵档中而且附加到"故事"中RUP 也允许这个观点,除了以用例规格说明的形式能够按须要使用非正式的形式。捕获并管理会话的结果是您必須管理的任务

XP 的好处在于构建阶段。对于大多数团队来说都存在适用于他们的"智慧与指南的结晶"。XP 中最显著的实践包含:

測试--程序猿鈈断地随着代码的开发编写測试測试反映了"故事"。XP提倡您首先编写測试这是一项优秀的实践,由于它能够迫使您深刻地理解"故 事"而苴在必要的地方提出很多其它的问题。不论在编写代码之前还是之后一定要编写測试。将它们添?到您的測试包中而且保证每次代码變更时都执行測试。

重构--不断重构系统的结构而不改变其行为能够使其更加简单或灵活。您须要推断对您的团队来说是否存在一个较好嘚实践简单与复杂的判别否因人而 异。有这样一个样例一个项目中的两个非常聪明的project师每晚都要重写对方的代码,由于他们觉得对方嘚代码过于复杂这产生了一个副作用,也就是他们总是干扰 第二天其它成员的工作測试是有帮助的,可是假设他们之间不陷入代码之爭的话那么团队的处境就会更好一些。

结对编程--XP 觉得结对编程能够在更短的时间内创建出更好的代码有证据表明这是正确的 。假设您遵照这项实践就须要考虑很多人文与环境的因素。程序猿愿意对此进行尝试吗您的物理环境能够满足这样的情况吗,即有足够的空间使两个程序猿在一个 单独工作站中有效地工作您怎样对待远程工作或者在其它地点工作的程序猿?

持续集成--集成与构建工作须要持续进荇可能每天不止一次。这是一种确保代码结构完整的非常好的方式它还同意在集成測试过程中进行持续的质量监控。

集体代码全部权--鈈论什么人都能够随时改动不论什么代码XP 依赖这样一个事实,即一组好的单元測试将会降低这项实践的风险让大家将每一件事都搞清楚的优点不能局限在一定的尺度上--是 1 万行代码、2 万行代码还是一定要少于 5 万行?

简单设计--随着重构过程的进行须要不断地改动系统设计使其变更简单。再一次重申您须要推断这项工作进行到何种程度才恰好合适。假设您在细化阶段中花费了必要霎时间来设计构架我们楿信简单的设计将会非常快完毕而且非常快变得稳定。

代码标准--这一直都是一项良好实践标准是什么都没关系,仅仅要您使用它们并且烸一个人都认可就能够

RUP 与 XP 都觉得您必须管理(和控制)迭代过程。衡量标准能够提供较好的计划信息由于它们能够帮助您选择对于您嘚团队来说什么是最适合的。须要衡量三件事:时间、 规模和缺陷这样您就能够获得全部类型您所感兴趣的统计数字。XP 为您提供简单的衡量标准来推断进展而且预測成果这些衡量标准环绕着完毕的"故事"数量、通过測试的数量以及统计中的趋势这些问题。XP 为使用最少量的衡量标准做出了一个优秀的表率由于查看太多并不一定会添加?项目成功的机会。RUP 为您提供了对于您能够衡量的内容以及怎样衡量的指導而且举了有关衡量标准的样例。在全部的情况中衡量标准必须简单、客观、易于搜集、易于表达,而且不 易产生误解

在构建阶段嘚迭代过程中将会产生哪些工件呢?这取决于迭代是处于构建阶段的早期还是后期您能够创建下面工件:

组件--组件代表了软件代码中的┅部分(源码、二进制代码或者可运行程序),或者包括信息的文件比如,一个启动文件或者一个 ReadMe 文件组件还能够是其它组件的聚合,比如由几个可运行程序组成的应用程序

培训资料--假设系统的用户界面比較复杂,那么请在用例的基础上尽早编写用户手冊和其它培训資料的初稿

部署计划--客户须要一个系统。部署计划描写叙述了一组***、測试而且有效地向用户交付产品所需的任务对于 以Web 为中心的系统来说,我们已经发现部署计划的重要性又提高了。

交付阶段迭代计划--临近交付时您须要完毕而且评审交付阶段迭代计划。


觉得代碼就是设计而且设计也就是代码代码与自身总是一致的,这一点是千真万确的我们觉得花费精力进行设计而且沟通设计是非常值得的,而不不过创建代码以下的小故事会说明这一点。

RUP 与 XP 间的差异除了建立构架的方法以外还包含其它方面的不同。当中一点就是关于设計概念的沟通方式XP

一名project师曾有两次这种软件项目经历,设计体如今代码中而且仅仅能在代码中找到设计信息。这两个项目都是关于编譯器的:一个是改进与维护用于 Ada 编译器的优化程序还有一个项目是将一个编译器的前端移植到一个新的平台上,而且连接一个第三方的玳码生成器

编译器技术是比較复杂的,但也是广为人知的在这两个项目中,该project师想要概览编译器(或者优化程序)的设计和实施在烸一个案例中,他都接到一堆源 代码清单大概有几英尺厚,并且被告知"查看这些信息"他本应被提供一些带有支持性文字的构建非常好嘚图。优化程序的项目没有完毕可是编译器项目确实取 得了成功,因为在代码开发过程中进行了广泛的測试所以代码质量非常高。这位project师花费了数天时间研究调试器中的代码以弄明确其作用个人的损失尚在其次, 团队的损失代价就更不值得我们并没有按 XP 所看到的的那样在 40 小时后完毕开发,我们反而花费了大量个人努力来完毕工作

仅仅开发代码带来的主要问题就是不管代码文档编写得多么好,它都沒有告诉您它本身要解决的问题它仅仅提供了问题的解决方式。一些需求文档在最初用户和 开发者继续工作非常长时间以后仍然能够非常好地解释项目的原始目标。为了维护系统您往往须要了解最初项目团队的设计目标。一些高级设计文档都是类似的 --代码常常没有经過高度的抽象所以无法提供不论什么信息以表明总体的系统可以实现什么功能。在面向对象的系统中这一点尤其是正确的,由于只查看里面的 类文件是非常难甚至无法得出运行线程设计文档指导您在后期出现故障时该查看的内容--在后期常常会出现故障。

这个故事说明婲费时间创建与维护设计文档确实会有所帮助这能够减少误解的风险,而且加速开发过程XP 的方式就是花费几分钟勾画出设计的大概内嫆或者使用 CRC 卡片。 可是团队不主张这样而仅仅是进行代码开发。他们有一个隐含的如果那就是任务非常easy,我们已经知道该怎样进行了即使我们成功地完毕了任务,那么下一个新 来的人可能就不会如此幸运RUP建议您多花费一些时间创建并维护这些设计工件。


交付阶段的焦点就是确保软件对于终于用户是可用的交付阶段包含为公布进行产品的測试,在用户反馈的基础上做微小的调整等几方面内容在生命周期的这个时刻,用户反馈主要集中在精确调整产品、配置、***以及可用性等问题上。

较早公布、常常性公布都是非常好的办法鈳是,我们通过公布要达到的目的是什么呢XP 没有清楚地解释这个问题,也没有处理公布商业软件所必须制造问题在内部项目中,您能夠为解决这些问题找到捷径可是即使这样,您仍然须要编辑文档、员工 培训等工作那么技术支持与变更管理又怎样呢?希望现场客户控制这些内容这是可行的吗?Bruce Conrad 在他的 XP 的 InfoWorld 评论 中指出用户并不希望得到的软件总是在持续变更您必须对高速变更软件的利益和变更的劣勢及可能带来的不稳定性进行权衡。

当您决定公布的时候您必须为终于用户提供比代码多得多的东西。交付阶段的活动和工件会指导您唍毕本部分软件开发过程这些活动主要是为了向您的客户提供可用的产品。交付阶段的关键活动例如以下:

确定终于用户支持资料该活动比較简单,您仅仅需提供一个清单就可以可是务必要确保您的组织已准备好对客户进行技术支持。

在用户的环境中測试可交付的产品假设您可以在公司内部模拟用户环境,那是最好只是的否则,就到客户的公司去***软件而且保证其可以执行。您一定不想尴尬哋回答客户:"可是在我们的系统上工作非常正常"

基于用户反馈精确调整产品。假设可能的话在您向有限数量客户交付软件时计划一次戓者多次 Beta 測试周期。假设进行该測试那么就须要对 Beta 測试周期进行管理,而且考虑您"收尾工作"中的客户反馈

向终于用户交付终于产品。對于不同类型的软件产品和公布版本号须要处理很多有关打包、制造和其它产品问题。您肯定不会只将软件拷贝到一个目录中然后向愙户发一封邮件告诉他们软件已经到位了。

与其它阶段一样过程的格式与复杂度都有所不同。只是假设您没有注意部署细节,那么可能导致数周或数月的良好开发工作前功尽弃从而在进入目标市场时以失败告终。

在交付阶段中您能够生成若干工件假设您的项目涉及箌将来的公布(有多少项目没有涉及到呢?)那么您就应该開始为下次公布确定功能和缺陷。对于不论什么项目下列工件都至关重要:

部署计划--完毕您始于构建阶段的部署计划而且将其作为交付的路线图。

版本号凝视--它是一个比較少见的软件产品不包括对终于用户至關重要的指令。能够对其做出计划对于凝视要有一个可用的、一致的格式。

交付阶段资料与文档--这类资料能够採取非常多形式您能够茬线提供全部内容吗?您会进行指导吗您的产品帮助完整而且可用吗?不要觉得您所了解的客户也相同了解。您的成功就在于帮助您嘚客户取得成功


构建软件的工作远远多于编 写代码所工作。一个软件开发过程必须集中处理向用户公布高质量软件的全部必需活动一個完整的过程不必是庞大的。我们通过集中论述项目中的主要活动和工 件已经向您展示了怎样进行一个小型可是完整的过程。假设运行某项活动或者创建某个工件对于缓解项目中的风险是有帮助的那么就请进行。您能够按须要为您 的项目团队和组织使用或多或少的过程囷格式

RUP 和 XP 并不必是互相排斥的。通过结合使用这两种方法您全然能够得到一个过程,帮助您比方今更快地交付更高质量的软件Robert Martin 描写敘述了一个叫做 dX 的过程,他将其作为 RUP 的附属品 它就是一个从 RUP 框架中构建的过程的实例。

一个优秀的软件过程能够使用经业界验证的最佳實践最佳实践已经在真实的软件开发组织中使用,而且经历了时间的考验XP 是眼下广为关注的方法。它以代码为中心并提供了一项承諾:花费最少的过程开销得到最大的生产力。XP 中的很多技术值得在恰当的情况中考虑和採用

XP 关注"故事"、測试和代码--它以一定的深度讨论叻计划,但没有具体阐述怎样获取计划XP 意味着您能够完毕其它一些工作,比如"使用一些卡片进行 CRC 设计或者草拟某种 UML……"或者"请不要生成並不使用的文档或者其它工件"但仅仅是一带而过。RUP 希望您在定制和更新开发计划时只考虑创建实用和必须的东西,而且指出了这些东覀该是什么

RUP 是一个能够处理整个软件开发周期的过程。它关注最佳实践而且经过了数千个项目的洗礼。我们鼓舞研究和发明新的技术鉯产生最佳实践随着新的最佳实践崭露头脚,我们希望将它们纳入 RUP 中


Rational Unified Process,或者简称 RUP提供了软件开发的规律性方法。它是由IBM Rational开发并维护嘚过程产品它为来同类型的项目提供了几种即装即用的路线图。RUP 还提供了一些信息帮助您在软件开发过程中使用其它 Rational 工具,可是它不偠求将 Rational 工具有效地应用于整个组织您也能够将 Rational 工具与其它供应商的产品进行集成。

RUP 为软件项目全部方面提供了指导并不须要您运行不論什么特定的活动或者创建不论什么特定的工件。它仅仅为您提供信息和指南您能够决定将哪些应用于您的组织。假设没有特定的路线圖适合您的项目或者组织RUP 还提供了一些指南来帮助您量身定做你的过程。

RUP 强调採用现代软件开发的一些最佳实践作为一种减少开发新軟件所带来的内在风险的方式。这些最佳实践包含:

3. 使用基于组件的构架

角色--运行的系列活动和拥有的工件
学科--软件project中的关键领域,仳如需求、分析与设计、实施与測试
活动--工件生成与评估方式的定义。
工件--在运行活动中所使用的、生成的或改动的工作产品

RUP 是一个迭代过程,确定了不论什么软件开发项目的四个阶段随着时间的推进,每一个项目都要经历起始阶段、细化阶段、构建阶段和交付阶段每一个阶段包含一次或多次 迭代,当中您能够生成可运行文件可是系统可能不完整(可能起始阶段除外)。在每次迭代过程中您以鈈同的细节级别运行几个学科中的活动。下文是 RUP 的概述图



极限编程(XP) 是由 Kent Beck 在 1996 年开发的一种软件开发学科。它基于四个价值:沟通、简單、反馈和勇气它强调客户与开发团队成员的持续沟通,在开发进程中设立一名现场客户该现场客户决 定创建的内容和顺序。通过持續重构代码并创建最小的非代码工件集合而体现简单很多短期公布和持续单元測试建立了反馈机制。勇气意味着完毕正确的事情即 使並非最流行的事情。它还意味着诚实面对您能做的和不能做的事情

12 个 XP 实践为这四个价值提供支持。它们是:

有计划的开发:通过结合使鼡优先级"故事"和技术估算确定下一版本号的功能。

小版本号:以小的增量版本号常常向客户公布软件

隐喻:隐喻是一个简单、共享的"故事"或描写叙述,说明系统怎样工作

简单设计:通过保持代码简单从而保证设计简单。不断的在代码中寻找复杂点而且立马进行移除

測试:用户编写測试内容以对"故事"进行測试。程序猿编写測试内容来发现代码中的不论什么问题在编写代码前先编写測试内容。

重构:這是一项简化技术用来移除代码中的反复内容和复杂之处。

结对编程:团队中的两个成员使用同一台计算机开发全部的代码一个人编寫代码或者驱动,还有一个人同一时候审查代码的正确性和可理解性

集体代码全部权:不论什么人都拥有全部的代码。这就意味这每一個人都能够在不论什么时候变更不论什么代码

持续集成:每天多次创建和集成系统,仅仅要不论什么实现任务完毕就要进行

每周 40 个小時:程序猿在疲劳时无法保证最高效率。连续两周加班是绝对不同意的

现场客户:一名真实的客户全时工作于开发环境中,帮助定义系統、编写測试内容并回答问题

编码标准:程序猿採用一致的编码标准。

参考资料

 

随机推荐