不可否认,对于简单的应用,采用ASP 或者PHP 的开发效率比采用J2EE 框架的开
发效率要高。甚至有人会觉得:这种分层的结构,比一般采用JSP + Servlet 的系统开发
效率还要低。
笔者从以下几个角度来阐述这个问题。
·开发效率:软件工程是个特殊的行业,不同于传统的工业,如电器、建筑及汽车
等行业。这些行业的产品一旦开发出来,交付用户使用后将很少需要后续的维护。
421
轻量级J2EE 企业应用实战Struts+Spring+Hibernate 整合开发
但软件行业不同,软件产品的后期运行维护是个巨大的工程,单纯从前期开发时
间上考虑其开发效率是不理智的,也是不公平的。众所周知,对于传统的ASP
和PHP 等脚本站点技术,将整个站点的业务逻辑和表现逻辑部混杂在ASP 或PHP
页面里,从而导致页面的可读性相当差,可维护性非常低。即使需要简单改变页
面的按钮,也不得不打开页面文件,冒着破坏系统的风险。但采用严格分层J2EE
架构,则可完全避免这个问题。对表现层的修改即使发生错误,也绝对不会将错
误扩展到业务逻辑层,更不会影响持久层。因此,采用J2EE 分层架构,即使前
期的开发效率稍微低一点,但也是值得的。
·需求的变更:以笔者多年的开发经验来看,很少有软件产品的需求从-开始就完
全是固定的。客户对软件需求,是随着软件开发过程的深入,不断明晰起来的。
因此,常常遇到软件开发到一定程度时,由于客户对软件需求发生了变化,使得
软件的实现不得不随之改变。当软件实现需要改变时,是否可以尽可能多地保留
软件的部分,尽可能少地改变软件的实现,从而满足客户需求的变更?答案
是一一采用优秀的解藕架构。这种架构就是J2EE 的分层架构,在优秀的分层架
构里,控制层依赖于业务逻辑层,但绝不与任何具体的业务逻辑组件藕合,只与
接口楠合:同样,业务逻辑层依赖于DAO 层,也不会与任何具体的DAO 组件相
合,而是面向接口编程。采用这种方式的软件实现,即使软件的部分发生改变,
其他部分也尽可能不要改变。
注意:即使在传统的硬件行业,也有大量的接口规范。例如, PCl 接口、显卡或者
网卡,只要其遵守PCl 的规范,就可以插入主板,与主板通信。至于这块卡内部的实现,
不是主板所关心的,这也正是面向接口编程的好处。假如需要提高电脑的性能,需要更
新显卡,只要更换另一块PCl 接口的显卡,而不是特整台电脑抛弃。如果一台电脑不是
采用各种接口组合在一起,而是做成整块,那将意味着即使只需要更新网卡,也要放弃
整台电脑。同样,对于软件中的一个个组件,当一个组件需要重构时,尽量不要影响到
其他纽件。实际上,这是最理想的情况,即使采用目前最优秀的架构,也会有或多或少
的影响,这也是软件工程需要努力提高的地方。
·技术的更新,系统重构:软件行业的技术更新很快,虽然软件行业的发展不快,
但小范围的技术更新特别快。一旦由于客观环境的变化,不得不更换技术时,如
何保证系统的改变最小呢?答案还是选择优秀的架构。
在传统的Modell 的程序结构中,只要有一点小的需求发生改变,将意味着放弃整
个页面或者改写。虽然前期的开发速度快,除非可以保证以后永远不会改变应用的结构,
否则不要采用Modell 的结构。
软件工程--采用架构的优势
最新推荐文章于 2024-04-06 09:00:00 发布