.

如何保证软件应用系统架构设计结果的可扩展

早期白癜风能治疗么 http://baidianfeng.39.net/a_zczz/210103/8557257.html

软件项目实训及课程设计指导——如何保证软件应用系统架构设计结果的可扩展性和可重用性(下篇)

4、封装软件应用系统中的各个核心功能模块

面向对象技术中的封装性是保证软件应用系统具有良好的模块性的基础,并且封装能够防止软件应用系统中相互依赖性所带来的变动影响——因为封装机制能够避免模块以外的程序代码被随意地访问或者存取模块内部的属性,而软件应用系统的模块化又是软件应用系统可重用性的必要条件。

模块划分时应该要应用“封装核心功能模块”的设计策略,这也是为了能够达到“高内聚”的模块设计目标。高内聚模式能够保证软件应用系统中的各个功能模块既可以各尽其能又能够充分协作,而良好的封装性才可以达到高内聚的系统设计目标。

Java语言中的类定义和包等机制其实就是对面向对象设计技术中的封装机制的具体支持——隐藏实现细节和保护核心的属性不被任意地修改,各种J2EE应用框架技术中所提供的各个接口其实也是对该应用框架本身的封装实现。下图所示为某个软件应用系统中的局部类图的图示,通过各个功能类实现对每个类所代表的问题的属性和方法进行封装。

5、隔离软件应用系统的核心和外围功能模块

软件应用系统中的“核心功能模块”(如银行账户管理系统中的“存钱”、“取钱”和“转账”功能模块)一般是稳定的或者是不频繁变化的,而软件应用系统的“外围功能模块”(如系统的操作界面、数据输入和输出等功能模块)是会发生变化或者需要提供多种不同的实现方式或者操作界面——如Web界面、PC应用程序界面和移动App界面等形式。

因此,为了能够达到“低藕合”的模块设计目标,则必须要将软件应用系统中的“可变功能模块”和“稳定不变的功能模块”相互隔离和分开。下图所示的体现某个应用系统的分层架构设计结果的包图是对前面的分层包图的进一步完善——在业务层和持久层之间再增加一个数据服务层。

为什么要采用这样的设计方案?主要考虑到软件应用系统中的持久层中的数据源有多种形式——数据库系统、XML文件和OfficeExcel等形式、同时连接数据库也可能需要提供多种不同的方式——这意味着软件应用系统中的持久层是“可变”的,而应用系统中的业务处理层中的各个功能组件则是相对稳定的。

因此,需要在软件应用系统的业务层和持久层之间插入一个数据服务层而最终达到将软件应用系统中的业务处理层和持久层相互分离的设计目标。

6、软件应用系统中的各个功能模块的职责应该单一

面向对象设计的五大原则是提高软件应用系统的可维护性和可重用性的基本指导原则,而在面向对象设计的五大原则中涉及“职责单一”方面的设计要求就有程序类的“单一职责原则”和“接口隔离原则”。

遵守程序类的“单一职责原则”不仅可以避免相同的职责分散到不同的程序模块体中——“职责分散”;当然也可以避免一个功能模块承担过多的职责——“职责集中(权利集中的结果是产生权利独裁者)”。

下图所示的某个软件应用系统的UML类图的局部截图中的各个功能类和接口在设计时是遵守面向对象设计的五大原则中的“类的职责单一”和“接口隔离”原则。

俗话说“一个和尚有水喝”是“职责单一”的成功应用,而“三个和尚没水喝”则是“职责分散”所造成的后果。如果保持软件应用系统中的各个功能模块的职责简单和职责清晰,也就越能够提高该功能模块的可重用性。

在机械工业化生产中,读者应该知道螺钉和螺母是重用性最大的零件——什么设备中都需要它们;在电子工业化生产中,电阻和电容也是重用性最大的元器件——什么仪器中也都需要它们。这是为什么呢?因为它们都是“功能(职责)单一”的零部件。

7、如何能够在软件系统架构设计中重用和简化系统架构设计结果

(1)灵活地应用各种应用框架技术

软件应用系统的设计和开发人员经常对相同类型问题的解决方法和功能实现代码进行抽象,并提取成为能够解决某一应用问题的模板形式的程序——这样的模板程序称为应用框架程序。因此,应用框架本身是可重用的、半成品的程序。

在软件系统体系结构设计中,为什么要灵活地应用各种应用框架技术?面向对象编程技术促进了软件应用系统中的代码的可重用性,但是只实现了在功能类代码层次上的重用——可重用的粒度太小、效果也就不太明显!而面向组件编程技术再进一步地完善了面向对象编程技术,并使得软件系统能够以更大粒度的组件形式实现重用,这大大地提高了软件应用系统中的功能代码的可重用度——在更高层次的组件上进行重用。

但面向组件编程技术在系统分析、体系架构和设计思想等方面并不能加以重用或者可重用率并不高,而面向框架的应用开发技术不仅可以达到面向组件编程技术在代码方面的可重用性效果,还能够达到在软件应用系统的体系结构和开发方法等非代码方面的可重用性。

因此,如果在软件应用系统体系结构设计中能够灵活地应用各种应用框架技术,就相当于让别人帮助软件应用系统的开发人员完成了系统设计和开发实现中的一些基础性的工作——能够实现在系统分析、系统设计、功能类的代码实现等多层次的重用。

比如,在软件应用系统的分析抽象层次上,可重用的元素就有子系统、组件和类;而在设计层次上可重用的元素有软件系统的体系结构、子系统体系结构、组件及类和类库等。最终达到软件应用系统的开发方式与工业化中的物质产品的大工业生产方式是一样的实现模式。

(2)合理地应用各种开源框架以重用成熟的软件系统架构设计

当软件应用系统的架构设计师成功地构思了软件应用系统的架构设计后,应该要概括和总结出在本软件应用项目中的一些共性的和经验性的内容,并把它提炼出来。这样将有助于在下次的另一个软件应用系统设计工作中能够重用,以避免软件应用系统的开发人员重复地解决相似的问题——因为每个不同的软件应用系统项目只是有其业务内容和一些实现细节方面的差别。

但问题是,如何能够在系统架构设计方面达到最大化的重用效果?合理地应用各种开源框架是基本的实现手段——因为成熟的应用框架一般都是经过很多开发者使用过的,所以应用框架系统本身的结构设计也应该是比较合理的,同时应用该应用框架的上层软件应用系统本身的扩展性也会很好。因为一个共享的应用架构可以使企业开发团队很方便地分解系统中的复杂问题,从而确定出本软件应用系统项目中哪些功能模块是可以由企业本身(或者开发组)内部解决和具体开发实现的,而哪些功能模块可以使用已有的外部功能服务,以避免重复地开发实现。

(3)采用通用的体系架构设计能够简化系统设计的过程

企业应用系统的体系架构设计不仅要追求设计的可重用性,也需要保证设计出的软件应用系统具有一定的可靠性和安全性——因为企业应用系统对于企业的商业经营和管理来说极为重要,因此所开发出的软件应用系统必须要非常可靠和安全;良好的可用性和可扩展性能够满足企业的需求不断地变化的状况和技术不断地升级的应用环境,软件应用系统必须能够在企业的经营规模和业务功能扩展的情况下,保持合理的性能。只有这样,才能满足企业经营的市场扩展的需要。

下图所示为J2EE系统平台中推荐的多层体系架构通用的分层图示,将整个系统分为客户端和Web容器、EJB容器几个不同的部分,将GUI应用的客户端、Web浏览器客户端和Web响应处理以及企业业务功能处理等分离。




转载请注明:http://www.abachildren.com/xgyy/4077.html