软件项目实训及课程设计指导——可扩展性和可重用性是面向对象架构设计的主要目标
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件项目实训及课程设计指导——可扩展性和可重用性是面向对象架构设计的主要目标
1、什么是合理的软件应用系统的系统架构设计
软件应用系统的设计人员经常会陷入一种困惑,面向对象系统架构设计结果的评价标准是什么?也就是说,什么是好的软件应用系统的系统设计或者不好的系统设计结果!
作者认为,软件应用系统的架构设计乃至整个软件应用系统的设计不存在“好”和“坏”之分,而只有“合理”和“不合理”之区别。因为软件应用系统设计的结果是要满足多种不同的应用要求,而往往这些应用要求之间可能是相互矛盾的。
因此,软件应用系统的设计人员必须要采用“中庸”的设计解决方案——综合考虑不同的应用要求、并尽可能地满足各个方面的应用要求或者合理地进行取舍。
什么是合理的软件应用系统的系统架构设计?合理的系统架构设计结果应该能够满足如下几个基本的要求,而满足了这些基本的要求,才有可能保证本软件应用系统的体系架构设计结果达到高内聚低耦合的系统设计目标。
1)可扩展性(Extensibility)
2)可重用性(Reusability)
3)灵活性(Flexibility)
4)可插入性(Pluggablity)
其中的可插入性是指能够容易地将软件应用系统中的一个功能模块抽出,同时也能够将另一个有同样接口的功能模块加入到该软件应用系统中以替换原有的功能模块。
而可扩展性是指软件应用系统本身能够根据外界需求的变化不断地调整和完善以适应外界需求的变化——也就是能够循序渐进地进行软件应用系统功能的扩展、并且也能够满足企业对软件应用系统的逐步升级的需要。
下图所示为某个软件应用系统持久层中的各个组件的设计和实现方案的图示,在数据库操作组件和各个数据库连接具体实现组件两者之间添加一个数据库连接接口,并在该接口中包含数据访问操作组件中所需要的各种数据库连接的服务方法的定义,而某个具体的数据库连接组件则实现这个接口。
此时数据库访问操作组件则只需要调用数据库连接组件接口中的服务来实现对数据库的各种连接功能,两者都只依赖于数据库连接组件的接口。如果数据库连接的具体实现要求发生变化,只需要再提供另一个数据库连接实现组件就可以满足这些变化——比如当软件应用系统应用MySQL数据库系统时,则只需要提供一个连接MySQL数据库系统的数据库连接组件实现类,而如果软件应用系统最终应用MS SQLServer数据库系统时,则只需要提供一个连接MS SQLServer数据库系统的数据库连接组件实现类。
如下示图为某个BBS论坛应用系统中的系统持久层系统架构设计中针对不同类型的业务处理数据设计出不同的数据库访问操作DAO组件的UML类图的局部截图,为了保证本BBS论坛系统能够适应不同的物理数据库系统的应用环境的变化,各个不同的数据库访问操作DAO组件都依赖关联数据库连接的接口ConnectDBBean。
2、什么是不合理的软件应用系统的系统架构设计
什么是不合理的软件应用系统的系统架构设计?为什么会出现不合理的系统架构设计?如何避免出现不合理的系统架构设计?希望读者多深入思考这些问题,一个不合理的软件应用系统的系统架构设计结果的主要表现如下:
1)缺乏灵活性——很难在软件应用系统中添加新的功能模块,因为对软件应用系统中的每一处的修改就会影响到软件应用系统中其他多个不同的功能模块,产生“牵一发而动全身”的影响效果,该软件应用系统的体系架构设计是僵化的!
2)脆弱性——对软件应用系统中的某个模块进行修改后,却导致软件应用系统中的另一个关联的模块也要发生被动地变化和修改,产生“多米诺骨牌”式的连锁修改!
3)不可重用性——软件应用系统中的某些功能模块很难在别的软件应用系统中被重新使用,因为不能将它从现有的软件应用系统中独立地提取出来,产生类似“拔出萝卜带出泥”的状况!如下示图为某个Web应用系统中的Web页面实现的代码局部截图--HTML标签和Java处理逻辑代码混杂在一起。
下图所示为某个软件应用系统持久层中的各个组件的不合理的设计和实现方案的图示,从下图中所示的数据库操作组件和数据库连接组件之间的关系来看,两者产生了紧密的藕合关系。一旦数据库连接组件有了任何变化(比如连接的方式或者数据库系统类型等),数据库操作组件都有可能会受其影响而需要被改动——意味着该软件应用系统的系统持久层缺乏灵活性和太脆弱,也就意味着该软件应用系统的系统架构设计存在一定的缺陷!
3、为什么要保证软件应用系统的体系架构设计结果具有良好的可扩展性
企业推广或者应用信息化系统的基本目的是希望能够提高企业的竞争力,但企业随着业务的发展,如新增业务功能的处理、新增服务渠道等或者由于技术本身的不断进步等方面的各种原因,原有的软件应用系统可能不能完全再满足企业目前经营的新的应用要求。
当然,对于软件应用系统的使用者也不希望抛弃原有的软件应用系统,如果重新再开发新的软件应用系统,这将会增加用户方企业的经营成本。而是希望能够在原有的软件应用系统的基础上,进一步完善原有的软件应用系统的功能和进一步地增加新的功能——延续软件应用系统的生命期。
一个合理的软件应用系统的系统架构设计的结果是能够适应用户方的“变化”的要求,并且所添加的扩展功能模块都可在原有的软件应用系统的系统架构的基础上加以扩展实现的——设计人员应该要保证软件应用系统中分层中的每一层中的各个功能组件都能够扩展。
如果软件应用系统的体系架构设计本身是僵化的,也就是不具有良好的可扩展性,软件应用系统在升级的过程中将不可避免地要改变原来的软件应用系统的系统架构。而软件应用系统的体系架构的重新调整和完善,不仅会增加软件应用系统代码维护的工作量,也还会带来技术和成本等方面的风险。
如下示图为某个BBS论坛系统的整体架构设计示例图,该BBS论坛系统采用Struts +Spring +Hibernate架构所组成。这样的架构设计首先是多层非分布式的构架,上图展示了软件应用系统的分层以及每一层中所采用的技术和对应的框架,并且各层将存在于同一个Web容器中。