软件架构的相关概念和实践

文章作者 100test 发表时间 2007:03:13 22:19:29
来源 100Test.Com百考试题网


2006年8月底,我有幸参加了一个架构师培训,通过这个培训,清晰了很多概念,结合自己的知识和经验,对公司软件应用系统的架构设计有了很多想法,特撰写本文档,把自己学得的系统架构知识和自己的思考与大家共享,希望对公司设计人员进行设计工作时有所帮助。本文中很多内容都是我个人的观点,我个人技术的深度和广度也不够,肯定会有不少不太严谨的地方。

1. 系统架构知识

1.1. 什么是企业应用

很难给出一个精确定义,不过企业应用一般都有这些特点:

持久化数据

大量的数据

很多人同时访问数据

大量操作数据的用户界面

通常要与散布在企业周围的其他企业应用集成

所以,企业应用一般都比较复杂,架构设计大多都是针对企业应用的。

1.2. 什么是系统架构

“架构”用很多种不同的定义,这些定义很难统一,但基本上有两点都能统一:1)架构是最高层次的分解 2)架构是系统中不易改变的决定。

而通过这次架构培训,我这么定义架构:从核心概念上讲,架构是一套构建系统的规则;从表象上看,软件架构是一套模板,以文档、代码、工具程序等方式表现。(其他更多的软件架构的概念描述,请查看8月24日发的邮件――《软件架构基础知识.doc》)

软件架构的成果是一套模板,这套模板会通过一种方式去组织,这个组织形式也很重要,应该从不同视角去表现,以适合不同人去理解和应用。

1.3. 系统架构设计师干什么

根据系统架构的定义,系统架构师的职责当然是制定软件系统构建规则,不过一般认为,系统架构师的主要职责有:

1) 负责领导和协调整个项目中的技术活动

2) 在个人综合素养方面,系统构架师应该具有领导才能,能够在压力下作出关键性的决策并善始善终;

3) 能够赢得项目经理、客户、用户群体以及管理团队的认同和尊敬,尤其要善于和项目经理紧密协作;

4) 在各个方面都能展现出面向目标的实干作风。在专业技能方面,与其他角色相比,系统构架师通常具有全方位的技能,其见解重在广度,而不是深度。

5) 系统构架师不仅需要具备设计师的各项技能,而且应该具有问题领域和软件工程领域的实践经验,从而有能力在无法获得完整信息的情况下迅速领会问题并根据经验作出审慎的判断。

6) 如果项目较大,系统构架师将是一个团队,上述的关键素质要求可由团队成员来分担,但其中要有一名系统构架师具有足够的权威。

架构师与设计师的职责有所不同,最重要的是架构师工作的关注点是软件系统的全局问题,他是制定软件系统的规则和原则的,对整个软件系统进行规划;设计师相对来说是关注软件系统的局部和具体问题,把架构师的架构设计进行细化。

架构师是由国外引进的一个概念,国外软件开发的几个职位是技术官、架构师、设计师、开发、测试,对应我们公司应该是技术总监、架构师、系统分析员、程序员、测试人员。

1.4. 常用架构设计模式

很多OO设计原则和设计模式同样适用与架构设计,架构中使用这些原则的主要目的是为了使架构具有更好的可维护性和可复用性,并使架构具有稳定性,这些目的也是一个架构的核心价值所在。

模式的定义也不统一,一般是这样的解释,每个模式描述了一个在我们周围不断重复发生的问题以及该问题解决方案的核心。(在古代流传至今的“三十六计”就是三十六个模式,对中国人来说,这可能是让人最容易理解模式概念的一个类比。)使用模式能够减少设计的难度,更能加快设计人员之间交流和沟通。

以下是几个常用的顶层架构设计的模式

1) 分层模式

2) MVC模式

3) 客户/服务器模式

4) 流程处理模式

这些模式的介绍在王玉宝8月24日发的邮件――《软件架构基础知识.doc》中都有清晰的解释,这里不在赘述。

1.5. AOP

AOP是OOP的延续,是Aspect Oriented Programming的缩写,意思是面向方面编程。AOP实际是GoF设计模式的延续,设计模式孜孜不倦追求的是调用者和被调用者之间的解耦,AOP可以说也是这种目标的一种实现。AOP是近两年比较热门的技术,给我们带来了一个新的视角和软件架构方法。

通过使用AOP技术,可以把分散在多个模块中共同的行为分离出来统一编程,减少重复代码。

AOP和OO、SOA一样,都是架构设计中的重要视角。

1) 基本原理

AOP机制一般都需要开发语言和编译器支持,Java和.C#都支持。实现AOP有不同的方法,常见的方法是利用代理机制,其基本原理是为“其他对象提供一种代理,以控制对这个对象的访问”。

2) 常见使用AOP技术的地方

Authentication 权限验证

Caching 缓存

Context passing 内容传递

Error handling 错误处理

Lazy loading 懒加载

Debugging  调试

logging, tracing, profiling and monitoring 记录跟踪 优化 校准

Performance optimization 性能优化

Persistence  持久化

Resource pooling 资源池

Synchronization 同步

Transactions 事务

3) AOP也可以用于封装业务逻辑

比如,进销存软件中,更多模块的功能操作都需要重新计算库存,所以可以把库存计算分离出来,用AOP技术偶合到那些功能模块中。


相关文章


系统分析师软件过程概述:用例建模指南
CIO生涯:“五步走”与“进阶口诀”[3]
系统分析师考点:软件过程
系统分析师软件过程概述:过程重要吗?
软件架构的相关概念和实践
了解有关DB2数据库优化的几条策略
计算机软件水平考试:开源框架思索[3]
计算机软件水平考试:开源框架思索[2]
计算机软件水平考试:开源框架思索[1]
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛