本套书汇集了两位作者丰富的软件过程经验、10余位业界杰出人士的亲身体会以及《软件开发》和《计算机语言》杂志中的精彩论文,提出了软件开发过程中的最佳实践方法,指导读者有效而且高效地执行这些过程。同时,作者还综合了统一过程和其他软件过程,形成了一个处理真实世界软件开发和产品需要的更完整、更健壮的统一过程。本套书共有四本,其中介绍的最佳实践方法分别对应统一软件过程的四个阶段:初始阶段、细化阶段、构造阶段、移交和产品化阶段。本书是这套书的第一本,重点介绍与统一软件过程初始阶段有关的最佳实践。本书可以作为软件项目管理人员、软件开发工程师、过程工程师、系统工程师等专业人员的指导用书,也可作为高等院校计算机及相关专业学生的参考书。本书前言近来,在几乎所有的组织中,对软件过程改进的关注越来越多了。这一部分是因为千年虫(Y2K)问题、大规模软件项目的高失败率以及人们渐渐意识到遵循成熟的软件过程是软件项目成功的关键因素。从20世纪90年代中期开始,Rational公司控股和合并了其他一些软件工具公司;随着公司的发展,这些工具所支持的各种过程也被合并成一种开发方法,称为“统一过程”(UnifiedProcess)。是否有可能让整个软件过程自动化?如果有可能,那么Rational公司是否拥有一套完整的工具集?对上述问题我们并不确定。但幸运的是,其他人也在定义软件过程,所以我们还可以从多个角度来看事物应怎样运作。这些过程包括:OPEN联盟的OPEN过程、面向对象软件过程(OOSP)的过程模式以及极限编程(XP)。这些不同的视角可以用来推动统一过程观点,使其更加健壮,结果就产生了一个更能准确反映你所在组织现实需要的增强的统一过程生命周期。因为我们相信《软件开发》中包含的多年收集下来的智慧能够用来充实统一过程—真正将我们产业的最佳实践统一起来,所以我们编写了本系列丛书。为什么软件过程如此重要呢?让我们先设想一下。假如你想请人给你建造一间房子,让两位承包商来竞标。第一位承包商告诉你,通过使用一项最新的建筑技术给你盖房,如果从明天就开始的话,他能在两个星期内就把房子建好,造价只有10万美元。这个承包商手下有一流的木匠和水管工,他们以前用这项新技术建造过一个花园凉棚,他们愿意日夜加班以按期交付你的新屋。而第二位承包商告诉你,她需要先和你讨论你想要建一间什么类型的房子。然后,一旦她确定明白你的需要,她将在一个星期内提供一整套设计蓝图供你审阅和反馈。这个初始阶段只会花你1万美元,当你决定了最终方案,对于其余的工作她将给出详细计划和成本进度。你会觉得选哪个承包商更放心呢?是想马上开始建房的那个,还是先搞清楚要建什么样的房子,再建模型,再详细计划,最后动工修建的那个?显然,后者更有可能成功地交付给你一间符合你实际需要的房子。现在,设想你要构建的是软件—这通常是复杂好几个级别而且远比房子更昂贵的项目,再设想你还是面对两个与前面采取相同方法的承包商。选择哪个你会更放心呢?希望你的回答仍是第二个;她有一个更明智的过程。但不幸的是,实践显示:在大多数时间里,组织似乎喜欢选择第一个承包商的方法;任意删改过程。当然,实践也显示:在我们的产业里,建造大型的、具有关键任务的系统的失败率在85以上。(在这种情况下,项目的失败被定义为严重超出成本预算或已经被彻底取消。)也许这两种现象有一定的关联。实际上,问题甚至更糟。可能你试图造一间房子,而所能用的所有承包商却都只有盖花园凉棚的经验。甚至更糟,他们可能只在热带地区工作过,从来没有处理过霜冻地方的情况,但是你却生活在加拿大偏僻的森林地带中。更进一步说,他们根本不熟悉加拿大政府所规定的各种不同的法规,这些法规完全不同于他们曾经面对的简单常识。这个例子再一次说明,第一个承包商杂乱无章的方法有可能陷入麻烦之中。初始阶段在统一过程的增强生命周期中,初始阶段是5个阶段(初始、细化、构造、移交和产品化阶段)中的第1个阶段,每个软件的发布版本在其生命周期内都将遍历这些阶段。初始阶段的主要目标是为你的项目构造坚实的基础。要实现这点,需要:*证明系统本身和开发/获得该系统的方法是正确的。*描述系统的最初需求。*确定系统的范围。*确定和该系统交互的人员、组织及其他外部系统。*对系统进行最初的风险评价、进度安排以及估算。*对统一过程进行满足确切需要的初步定制。当你回头再想的时候,你所需要做的最重要的事是确保你的系统以及应用于系统的方法都是被证明可行的(即,你有业务用例)。如果项目没有意义,可能是经济方面的原因,可能是技术方面的原因,也可能是可操作性方面的原因。不管是哪个方面的原因,项目都不应该继续。7/8的项目都失败了。如果没有坚实的基础,没有能够运作的架构,没有现实的项目计划以及专业的项目团队,那么你的项目很可能会成为7个失败项目中的一个。本书向读者呈现了业界专家所撰写的描述软件领域最佳实践的文章。本书乃至本系列丛书的一个目标是提供已证实的统一过程所包含技术的可替代方案。另一个目标是弥补统一过程中的一些缺陷。因为统一过程是一个开发过程,而不是软件过程,它不可避免地遗漏或缺少了一些对软件专业人员来说非常重要的概念。幸运的是,《软件开发》杂志的作者们已经对过程范围有了更广泛的了解,并已经为我们弥补了许多缺陷。关于本套丛书本套丛书由四卷组成:第一卷介绍初始阶段,第二卷介绍细化阶段,第三卷介绍构造阶段,第四卷介绍移交和产品化阶段。每卷都可独立成书,但是如果想对整个软件过程有一个完整的认识,你需要通读全套丛书。本套丛书的文章覆盖了整个过程,在每卷之间没有重复。