4. 对象设计
设计技术以架构规范作指导, 是分析结果的扩充和进一步体现. 分析阶段的域对象模型与技术细节无关, 而对象设计则与技术要素有着密切的关系, 包括平台类型, 语言, 架构开发阶段所选择的提供商. 分析阶段可能只关注目标, 但设计阶段就得脚踏实地了. 除非必须保持基本属性和行为, 否则不要轻易让你的设计受到业务对象的影响.
以架构设计为指导, 详细设计应考虑到所有类的式样, 包括实现细节, 详细的接口, 操作的伪代码或者解释的文字性描述. 说明书要足够详细, 包括模型图, 它提供所有必要的编码信息. 有些开发工具有自动生成的功能, 你可以根据面向对象图表生成代码骨架. 图5和图6分别在较高层次和详细的对象设计层次上图示了一些域模型. 注意由于存根和骨架对于设计师和程序员是透明的因而它们通常不出现在图表中. 我将它们包含在图6中用于阐述EJB基本概念.
IMG upload/forum/20031219172210.jpg[/IMG]
Figure 6. 对项涉及模型: 订单EJB详细设计
在详细的对象设计完成后, 你也就完成了域对象的对象关系映射. 这么做的理由是尽管面向对象方法论现在比较先进, 但最流行, 最成熟的持久化存储还是关系型的. 另外在许多案例中客户先期所用的是关系数据库管理系统, 最好能保留他们的已有投资. 所以将于对象模型转换为关系模型或数据表是很重要的. 有许多容器管理的持久化工具, 但它们还是不能替代好的关系数据库设计.
5.实现
有了好的架构和详细设计后, 实现应该是一个明确的任务。另外,因为我们设计和实现架构原型阶段的纵向联合部分,所以实现阶段应该更没有什么值得惊讶的。在许多组织中,开发者经常过早地到达实现阶段。尤其当管理者盯着开发人员确保在编码,而不是做他们认为在浪费公司时间的其他事情时,这种情况变得更加严重。
结果,不再花数小时或数天绘出UML草图,而是通常在花费数周或数月编码的同时测试自己的想法。由于在这种情况下,所有的架构决定和设计都是在编码阶段做出来的,所以经常过了数月后才发现开发的方向出错了。
6.验证
验证包括测试验证系统按设计要求运行并满足需求。验证过程发生在整个开发生命周期的开发和产品环境中。单元测试、集成测试和用户测试本身就是非常重要的主题。
7.装配和部署
构件装配和解决方案部署在J2EE开发中特别重要。开发和产品环境可能非常不同。如果EJB在系统中,你需要使用供应商特定的工具得到容器自动生成的类,因为,正如我以前指出的,Web和应用程序构件配置对不同的供应商来说是不同的。你也必须考虑要部署的系统是否含有供应商特定代码实现。在可扩展架构中,系统结构应该是稳定的但也应该在不影响整个系统的条件下支持新或老构件的增量部署。
8.运行和维护
在最后阶段,应用程序到了用户手中,你必须给他们提供培训和文档。用户会发现错误并可能要求新特性。你必须适当地改变管理过程来处理这些情况。你不必为了部署一个新构件或取代老构件而关闭一个正在运行的系统。
架构开发过程
知道了必须做出许多架构决定,因此我们必须为架构开发描绘一个过程。对于一个企业来说通常有许多应用项目,它们中的一些可能跨越数年,结果是系统演化包含许多周期。在你的领域里存在着许多跨越多个项目的通用需求。你应该不费力地在它的生命周期或其他项目中使用以前项目周期的可扩展且可重用的架构。为一系列软件应用提供同属结构和行为的通用框架和可重用软件架构是非常需要的。
如果是第一个J2EE项目,架构必须做原型、测试、度量、分析并在迭代中进行推敲。蓝图提供了许多好的设计指导和实践,宠物店示例程序可以作为一个很好的参考架构。最有效地快速、高质量发布好的解决方案的方法是接受和扩展蓝图参考架构并插入你自己的业务构件。你最后要做的就是改造车轮。

