翻译:worldheart
1. 尽量采用关系数据库。采用关系数据库系统用于持久性。因为关系数据库系统很常见、通过实践证明过的、被标准化、可维护、健壮,并且很好的被第三厂商提供的工具支持。尽管对象数据库更适合于基于对象的系统,但第三厂商提供的工具,比如报表系统、数据仓库系统,并没有提供很好的支持。另外,对象数据库管理系统没有关系数据库系统成熟,所以它设计出的系统可移植性差。最后一点,掌握的关系数据库专业人员也多于了解对象数据库的人员,使得项目更容易展开。
2. 规范化关系数据库。规范化关系数据库的时候不要去考虑对象模型。因为对象模型是短暂的,而数据是持久的。换句话说,很可能存在这样一种情况,即你的关系数据库会比你的面向对象应用的生命周期多于10几年。一个通过正常规范化的数据库可以和任何系统有很好的兼容性,不只是面向对象系统。数据库可以被多种客户访问,并且它的生命会比创建该数据库的系统更长久。
3. 购买报表系统、不要自己开发。不要去开发自己的报表系统,因为这样的开发费用成本特别高,而且很少做得有商业报表系统好。用于查询关系数据库管理系统、以HTML的形式给出结果、所见即所得的开发方式、日程安排等的报表产品已经有商业软件。大部分自己开发的报表系统都达不到预期的效果,最终都被商业产品所取代。
4.用户界面推荐用HTML。通过Servlets或者JSP生成的HTML用户界面比用Java Applets或者具有图形用户界面的应用程序更容易开发、更快的市场响应能力以及更容易维护。JavaScript和Applets用于加强用户界面,但一般情况下除非没有其他的途径最好不要用。图形用户界面给客户提供了更多的选择余地,但图形用户界面的复杂性给项目成本、维护、开发带来了不可忽视的问题。另一方面,用JSP生成的HMTL界面的开发周期更短、更容易维护。另外,HTML界面可以越过防火墙,防火墙在B2B和Internet应用中是一个很严重的问题。
5. 灵活性和性能的考虑。我们在开发系统之前,需要权衡独立于厂商抽象定义所提供的灵活性和特定厂商产品带来的性能。一般情况下,特定厂商开发的产品的执行性能会比独立于厂商抽象定义好,因为特定厂商开发的产品提供了更少的层和抽象。然而,它的灵活性会大打折扣,因为客户一旦选择了特定厂商开发的产品,这样会使得用户很难在不同用户之间选择产品的余地。
6. 掌握技术。技术的学习、研究是我们最为基础的要求。仅仅理解技术是什么和如何运用它们是不够的。为了理解技术的适用范围和局限性,软件专业人员必须研究技术最底层的东西。比如,研究TCP/IP、操作系统、数据库技术、编译器等等。这样将使得你在用具体的技术和什么时候去用具体的技术过程中提供了很好的方式以辅助您的决定。
7. 聘请一位经验丰富的架构师。软件是一项开发代价昂贵、对于公司来讲是巨大的投资的活动,然而我们经常把架构系统的职责交给了不称职的人员。公司不会让簿记员去处理IPO,也不让值夜班人员起草法律条文,同时也不应该让高级程序员架构他们的信息系统。我们需要在商界挑选出最好的架构师。聘请一位经验丰富、成熟、在业界不仅有良好的声誉而且过往业绩很也好的架构师。一定要给优秀的架构师给丰富的薪水。通过这样的方式,您将会避免失败的架构,从而节省了比该架构师多10倍的薪水。
8.没有万能药!无论是EJB、Servlets、CORBA、JMS、还是面向对象技术,他们不可能适合商业问题的各个方面。研究商业问题、理解技术、聘请一位经验丰富的架构师,然后根据系统的需求选择合适的技术。