避免这10J2EE危机来确保你的企业JAVA项目成功

摘要

在你着手企业级JAVA 项目开发时,你需要像耍杂技掌控手中的球一样来处理一些问题:与工具商之间的关系,漫长的工程——不论是设计还是开发,还是保持健壮性。每一项都会带来固有的危险,一些是明显的,然而另外一些却不是。但所有这些危机均可避免。本文作者分析了10项危机企业级JAVA项目的最大的危险,并大致指出了避免它们的办法。(4,500字——此处是指英文字数)

By Humphrey Sheil


作者:Humphrey Sheil
原文出处:http://java.sun.com/developer/technicalArticles/J2EE/projectdangers/
翻译:gooing 2005-01-18
http://blog.csdn.net/gooing/
感谢金山词霸和薛叉叉,请指正!

在我作为开发者、高级开发者、架构师的经历中,我遇到过好的、差的甚至是丑陋的企业级JAVA项目。当我问自己,是什么使一个项目成功而使另外的失败,我发现很难得到一个完美的答案,就好像很难用成功来定义所有的软件项目。J2EE项目也不例外。因此,项目被分为不同级别的成功或失败。在这篇文章里,我主要想为您——读者朋友——揭示影响企业级JAVA项目的最大的10项危险。

一些危险只是简单的延迟项目进度,一些却是错误的征兆,而还有一些使项目彻底没有成功的希望。尽管如此,如果具有良好的准备,征程开始前相关的知识和熟悉地形的向导,所有的都可避免。

这篇文章结构简单,我会按以下方式来揭示各种危机:

  • 危机的名称
  • 项目阶段(Project phase):危机所出现的项目阶段
  • 所牵连的项目阶段(Project phase(s) affected):大多情况下,这些危机对随后的“项目阶段”有一种顺带(knock-on)的影响
  • 解决:避免危机的方式以及如何最小化它们的影响
  • 注释:有关该危机我想透露的观点,但不适合以前的分类

如上所注,我们将在企业级JAVA项目背景和它的各个重要阶段中检查每一项危险。这些项目阶段包括:

  • 供应商选择:在你启动J2EE工程之前,挑选你的最佳工具组合的过程——不论是应用服务器还是咖啡品牌
  • 设计:不论是严格的瀑布模型还是"code it and see"(试翻译为:编码和运行查看)方式,我对设计都有这样一个观点:我做了充分的设计,因此我可以轻松的进入开发阶段。当我确切知道我在建造什么和如何建造时,我认为我的设计阶段完成。另外,在进入开发阶段之前,我使用设计模板来保证我对我自己问了所有正确的问题并且有了建议的解决方法。然而,我在该阶段同样也不害怕写代码;有时,这是回答问题的唯一方式,执行和模块化( performance or modularity)。
  • 开发:这个阶段早期有大量工作要做。选择好的工具加上一个良好的设计并不总是意味着开发阶段会非常顺利,但的确会很有用。
  • 稳定性/负荷测试:在这个阶段,系统架构师和项目管理员将关注系统健壮性和构建质量,如确保系统的关键统计——并发用户数,失败的情境等。然而,直到这一阶段,代码质量和运行亦不应被忽略。事实上,你不能留一些差的或慢的代码到健壮性阶段来改。
  • 存在阶段[live]:这并不是真正的项目阶段,it's a date set in stone(想了半天也不知道怎么翻译:-{)这是关于准备的阶段,也是以前的错误的鬼怪出没的地方,不论是差的设计、开发还是错误的(开发工具)卖主的选择。

  • 供应商选择:在你启动J2EE工程之前,挑选你的最佳工具组合的过程——不论是应用服务器还是咖啡品牌
  • 设计:不论是严格的瀑布模型还是"code it and see"(试翻译为:编码和运行查看)方式,我对设计都有这样一个观点:我做了充分的设计,因此我可以轻松的进入开发阶段。当我确切知道我在建造什么和如何建造时,我认为我的设计阶段完成。另外,在进入开发阶段之前,我使用设计模板来保证我对我自己问了所有正确的问题并且有了建议的解决方法。然而,我在该阶段同样也不害怕写代码;有时,这是回答问题的唯一方式,执行和模块化( performance or modularity)。
  • 开发:这个阶段早期有大量工作要做。选择好的工具加上一个良好的设计并不总是意味着开发阶段会非常顺利,但的确会很有用。
  • 稳定性/负荷测试:在这个阶段,系统架构师和项目管理员将关注系统健壮性和构建质量,如确保系统的关键统计——并发用户数,失败的情境等。然而,直到这一阶段,代码质量和运行亦不应被忽略。事实上,你不能留一些差的或慢的代码到健壮性阶段来改。
  • 存在阶段[live]:这并不是真正的项目阶段,it's a date set in stone(想了半天也不知道怎么翻译:-{)这是关于准备的阶段,也是以前的错误的鬼怪出没的地方,不论是差的设计、开发还是错误的(开发工具)卖主的选择。

  • 供应商选择:在你启动J2EE工程之前,挑选你的最佳工具组合的过程——不论是应用服务器还是咖啡品牌
  • 设计:不论是严格的瀑布模型还是"code it and see"(试翻译为:编码和运行查看)方式,我对设计都有这样一个观点:我做了充分的设计,因此我可以轻松的进入开发阶段。当我确切知道我在建造什么和如何建造时,我认为我的设计阶段完成。另外,在进入开发阶段之前,我使用设计模板来保证我对我自己问了所有正确的问题并且有了建议的解决方法。然而,我在该阶段同样也不害怕写代码;有时,这是回答问题的唯一方式,执行和模块化( performance or modularity)。
  • 开发:这个阶段早期有大量工作要做。选择好的工具加上一个良好的设计并不总是意味着开发阶段会非常顺利,但的确会很有用。
  • 稳定性/负荷测试:在这个阶段,系统架构师和项目管理员将关注系统健壮性和构建质量,如确保系统的关键统计——并发用户数,失败的情境等。然而,直到这一阶段,代码质量和运行亦不应被忽略。事实上,你不能留一些差的或慢的代码到健壮性阶段来改。
  • 存在阶段[live]:这并不是真正的项目阶段,it's a date set in stone(想了半天也不知道怎么翻译:-{)这是关于准备的阶段,也是以前的错误的鬼怪出没的地方,不论是差的设计、开发还是错误的(开发工具)卖主的选择。

  • 供应商选择:在你启动J2EE工程之前,挑选你的最佳工具组合的过程——不论是应用服务器还是咖啡品牌
  • 设计:不论是严格的瀑布模型还是"code it and see"(试翻译为:编码和运行查看)方式,我对设计都有这样一个观点:我做了充分的设计,因此我可以轻松的进入开发阶段。当我确切知道我在建造什么和如何建造时,我认为我的设计阶段完成。另外,在进入开发阶段之前,我使用设计模板来保证我对我自己问了所有正确的问题并且有了建议的解决方法。然而,我在该阶段同样也不害怕写代码;有时,这是回答问题的唯一方式,执行和模块化( performance or modularity)。
  • 开发:这个阶段早期有大量工作要做。选择好的工具加上一个良好的设计并不总是意味着开发阶段会非常顺利,但的确会很有用。
  • 稳定性/负荷测试:在这个阶段,系统架构师和项目管理员将关注系统健壮性和构建质量,如确保系统的关键统计——并发用户数,失败的情境等。然而,直到这一阶段,代码质量和运行亦不应被忽略。事实上,你不能留一些差的或慢的代码到健壮性阶段来改。
  • 存在阶段[live]:这并不是真正的项目阶段,it's a date set in stone(想了半天也不知道怎么翻译:-{)这是关于准备的阶段,也是以前的错误的鬼怪出没的地方,不论是差的设计、开发还是错误的(开发工具)卖主的选择。

1阐释了这些项目阶段,以及对其有影响的各种因素(尤其是那些“突然的[knock-on]”影响)