`
kuwoleft
  • 浏览: 1078211 次
文章分类
社区版块
存档分类
最新评论

软件体系结构的重构——定义

 
阅读更多

以前做过一个产品,共分为三层:平台层,应用服务器层,应用层。其中有一个业务流程,实现是在应用层,但它那里的信息不全,需要通过应用服务器层向平台层获取必要的业务数据,然后通过应用服务器层控制业务流程。当时考虑这个结构的时候,主要的出发点就是业务和控制分离,将业务处理从平台层剥离开来。当时,在具体是实施过程中,我们工程师对这种结构抵触心理很强烈。他认为我们的业务开发非常的繁琐,而且经常要贴“狗皮膏药”。

先抛开上面这个实例的设计思路,这里面反映出一个问题:软件开发过程中,软件体系结构同样需要“重构”

结合经典的《重构》,这里简单的写一下软件体系结构重构的定义,原因,设计,方法。仅作抛砖引玉,希望能和大家一起思考。

何谓重构

对软件体系结构的一种调整,目的是在不改变其“外在行为”的前提下,调整其结构,使其易于修改,维护和理解。

为何重构

1、使整个系统易于添加新的功能。为系统添加新功能将会非常的容易。

2、调整系统中各个模块的功能,角色,使整个系统更容易理解。
何时重构

由于系统结构的重构成本非常高,所以要选择一个合适的重构时机。

1、为系统添加功能时重构。此时项目进度压力如果非常大,这放弃此时重构。

2、软件第一个版本开发完毕后重构。在第一个版本开发完毕,第二个版本开发之前,根据第一个版本的开发经验,对系统进行重构。

3、开发出系统原型时进行重构。开发出一个系统的原型的时候,如果发现系统需要重构,这及时的进行,这个时候重构成本较低,但对是否重构决策要求较高。

重构的必要条件

重构之前必须为软件系统建立一个可靠的、自动化的功能测试环境,这样才能有效防止重构带来的危害。好的测试时重构的根本。重构之前,首先检查自己是否有一套可靠的测试机制。这些测试必须有自我检验(selfchecking)能力。

重构与设计

系统架构层次的重构,因为重构的成本相对较高,所以预先设计的程度要相对较深,要尽量考虑系统可能遇到的情况,方案要适当的灵活和强固。尽量减少系统结构的重构。

软件体系结构的重和代码的重构的区别

1、针对的层次不同:一个是系统结构层次的,一个是代码层次的。

2、重构成本不同,系统结构的重构成本相对较高。

3、是否重构的决策者不同。

4、重构的时机不同。

分享到:
评论

相关推荐

    Spring教程  主要内容:介绍Spring的历史,Spring的概论和它的体系结构,重点阐述它在J2EE中扮演的角色。

    (用户持久化类)重构第一步——面向接口编程 8 重构第二步——工厂(Factory)模式 9 重构第三步——工厂(Factory)模式的改进 10 重构第四步-IoC容器 11 控制反转(IoC)/依赖注入(DI) 11 什么是控制反转/依赖...

    重建——改善既有代码的设计

    重构(名词):对软件内部结构的一种调整,目的是在不改变"软件之可察行为"前提下,提高其可理解性,降低其修改成本.重构(动词):使用一系列重构准则(手法),在不改变"软件之可察行为"前提下,调整其结构. 两种...

    人工智能助力未来网络发展.pptx

    人工智能助力未来网络发展 人工智能助力未来网络发展全文共32页,当前为第1页。... 互联网面临安全、扩展、能耗等可持续发展挑战 试验验证是网络研究、设备开发、应用创新的基本方法 体系结构理论创新 关键

    asp.net知识库

    利用自定义属性,定义枚举值的详细文本 Web标准和ASP.NET - 第一部分 XHTML介绍 在ASP.NET页面中推荐使用覆写(Override)而不是事件处理(Event Handler) 常用编码工具类,支持base64,md5,des,crc32 也谈谈技术面试...

    Eclipse权威开发指南2.pdf

    10.2 复习Eclipse体系结构...... 237 10.2.1 Eclipse应用程序类型..... 240 10.2.2 Eclipse的运行..... 241 10.2.3 定义一个Eclipse应用 程序..... 242 10.3 重用Eclipse的时机...... 243 10.3.1 非UI的插件组件......

    Eclipse权威开发指南3.pdf

    10.2 复习Eclipse体系结构...... 237 10.2.1 Eclipse应用程序类型..... 240 10.2.2 Eclipse的运行..... 241 10.2.3 定义一个Eclipse应用 程序..... 242 10.3 重用Eclipse的时机...... 243 10.3.1 非UI的...

    Eclipse权威开发指南1.pdf

    10.2 复习Eclipse体系结构...... 237 10.2.1 Eclipse应用程序类型..... 240 10.2.2 Eclipse的运行..... 241 10.2.3 定义一个Eclipse应用 程序..... 242 10.3 重用Eclipse的时机...... 243 10.3.1 非UI的...

    iphone3开发基础教程

    6.2 多视图应用程序的体系结构 88 6.3 构建View Switcher 88 6.3.1 创建视图控制器和nib文件 89 6.3.2 修改应用程序委托 91 6.3.3 SwitchViewController.h 92 6.3.4 修改MainWindow.xib 92 6.3.5 编写...

    支持多数据库的ORM框架ef-orm.zip

    基于轻量级Criteria API的操作方式,使得对数据库的变更和重构变得非常轻松,解决了SQL语句多对软件维护和移植造成产生的不利影响。 阅读推荐:第3、4章 特点二,将SQL的使用发挥到极致,解决SQL拼凑问题、...

    JAVA上百实例源码以及开源项目

     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...

    JAVA上百实例源码以及开源项目源代码

    Java局域网通信——飞鸽传书源代码 28个目标文件 内容索引:JAVA源码,媒体网络,飞鸽传书 Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java...

Global site tag (gtag.js) - Google Analytics