J2EE培训 百分网手机站

J2EE项目开发10大风险盘点

时间:2018-04-22 09:48:42 J2EE培训 我要投稿

J2EE项目开发10大风险盘点

  当你开始着手组织一个企业级Java项目的时候,就如同开始同时轮回地扔好几个魔术小球: 业主关系处理、持续而漫长的设计开发过程,以及保持健全与完整性,等等。每一个“小球”都会带来其固有的风险,有些显而易见,有些则不易发现。尽管如此,所有这些风险都是完全可以避免的。下面yjbys为大家准备了一篇分析了威胁到企业级Java项目成功的10大风险, 并一一列出了风险规避的策略方法。

J2EE项目开发10大风险盘点

  在过去这段时期里,我担任过程序员、高级设计师以及架构设计师等工作,见识过很优秀的企业级Java项目,也见识过不好的,甚至很"丑陋"的项目。有时候我会自己问自己,为什么一个项目可以取得成功,而另一个却走向失败?很难定义出某种规则或标准来表明各个不同的项目应该如何成功,J2EE项目也并不例外。但与此相反的是,我们可以从各个角度和层次上去考察项目失败的原因,如果很好地避开了这些风险,项目就可以取得成功。在本文中,我将提出排名前10位的企业级Java项目风险,供读者参考。

  在各种各样的风险中,有些风险只是延缓了项目的进度,有些带来了一些不必要的工作,而另一些则会把成功的可能性彻底地消除。不过,如果预先有了足够的准备和清醒的认识,那么并没有不可避免的事情。这好比如果你是一名旅行者,你清楚地知道前面的道路在什么方向,做了充分的准备,又有一位清楚知道哪里有危险的向导,这样就会比较顺利地到达自己的目的地。

  本文采用了以下结构来描述风险:

  风险名称:风险的标题(使用粗体)

  项目阶段:在哪个项目阶段会发生风险情况

  影响阶段:会影响到以后的哪些阶段

  症状: 风险产生时的症状

  规避方案:如何规避风险或者把其对项目的影响降低到最小程度

  备注: 风险相关的补充说明和提示

  通过对企业级Java项目的仔细考察,本文将J2EE项目过程分解为以下几个阶段:

  ·提供商选择: 在开始你的J2EE项目之前,要选择最合适的提供商,从应用服务器到开发工具组合,一直至工作期间享用的咖啡的厂商。

  ·设计: 在遵照一系列严格的规范和软件工程方法的前提下,可以开始进行足够充分的设计,然后再很自然地进入开发阶段。在开发之前,要周全地考虑好正在做什么,以及如何往下做的问题。另外,我使用了一些设计模板来确信在进入开发之前,已经想到了所有的问题和可能的解决方案。但是,我有时也在该阶段做一些编码,有时候这样做可以回答一些问题,有效地判断出性能上和模块划分上的问题。

  ·开发: 也就是程序开发阶段,选择一些好的开发工具,进行精良的设计等等,在这个阶段将显示其优越性,并且可以给开发带来很大的帮助。

  ·稳定性/负载测试:在该阶段,系统架构师和项目经理应该冻结住产品特性,并把焦点放在质量以及产品参数(允许的并发用户数量,故障恢复情况,等等)上。质量和性能在该阶段应得到足够的重视。当然,最好应该避免在前阶段写出不良的运行缓慢的代码而到本阶段来作很多的修改。

  ·成熟期:这不是一个真正的项目阶段,而是一个固定的准备阶段。过去潜伏的错误(来自于糟糕的设计和开发、错误的厂商选择)可能出现并影响你的系统。

  OK,以下让我们进入 top 10 项目风险!

  --------------------------------------------------------------------------------

  风险1:没有真正理解 Java, EJB, 和J2EE

  这个问题可以分解为3个部分,以便于分析。

  描述: 没有真正理解Java

  项目阶段:开发

  影响阶段:设计、稳定性测试、成熟期

  对系统性能的影响:可维护性、可扩展性、性能

  症状:

  重复开发了JDK核心API中的功能或类

  不懂得以下列表中的某些项(这只是一些主题或者实际例子而已):

  垃圾收集器 (train, generational, incremental, synchronous, asynchronous)

  对象在何时能被进行垃圾收集 -- dangling references

  使用的继承机制及其权衡

  over-riding和over-loading方法

  为什么java.lang.String (在这里用你所中意的类代替) 提供的性能不好

  Java中的pass-by参考语义和EJB中pass-by值的语义的比较

  使用 == 或者使用equals() 方法 for nonprimitives

  在不同平台上Java线程的运行顺序方式(例如是否是抢先方式的)

  新线程和本地线程的比较

  Hotspot技术(以及为什么旧的性能调整技术降低了Hotspot 的优化效果)

  JIT,以及什么时候好的JIT变得不好(未安装的JAVA编译器,以及你的代码运行得刚够良好)

  API搜集

  RMI

  规避方案:

  你需要不断改进Java方面的知识,尤其是深入了解Java的优势和不足之处。Java的存在价值已经远不止是一种语言,理解平台(JDK及工具等)也是同样重要的。具体地说,你应该是经过认证的Java程序员,如果你不是的话,也许你有时会为还有那么多不知道的内容而感到惊讶。另外,你可以加入Java的邮件列表。以前我曾加盟过的每一个公司都加入了这样的邮件列表,从同行中学到技术,这将是你最好的资源。

  备注:

  如果你或者你的团队中的成员不真正了解编程语言和平台,怎么还能保持成功的希望呢?强干的Java程序员之于EJB和J2EE,就象是鸭子之于水一样。与此相反,比较弱的、没有经验的程序员只能开发出质量低劣的J2EE应用程序。

  描述: 没有真正理解EJB

  项目阶段:

  设计

  影响阶段:

  开发、稳定化

  对系统的影响:

  维护

  症状:

  EJB在第一次被调用后没有再被使用到(尤其是stateless session bean)

  没有重复利用价值的EJB

  不理解开发者要做什么,容器提供什么