首页 考试吧论坛 Exam8视线 考试商城 网络课程 模拟考试 考友录 实用文档 缤纷校园 英语学习 | ||
2010考研 | 自学考试 | 成人高考 | 专 升 本 | 法律硕士 | MBA/MPA | 中 科 院 | ||
四六级 | 商务英语 | 公共英语 | 职称日语 | 职称英语 | 博思 | 口译笔译 | GRE GMAT | 日语 | 托福 | ||
雅思 | 专四专八 | 新概念 | 自考英语 | 零起点英、法、德、日、韩语 | 在职申硕英语 | ||
在职攻硕英语 | 成人英语三级 | ||
等级考试 | 水平考试 | 微软认证 | 思科认证 | Oracle认证 | Linux认证 | ||
公务员 | 报关员 | 报检员 | 外销员 | 司法考试 | 导游考试 | 教师资格 | 国际商务师 | 跟单员 | ||
单证员 | 物流师 | 价格鉴证师 | 银行从业资格 | 证券从业资格 | 人力资源管理师 | 管理咨询师 | ||
期货从业资格 | 社会工作者 | ||
会计职称 | 注会CPA | 经济师 | 统计师 | 注册税务师 | 评估师 | 精算师 | 高会 | ACCA | 审计师 | ||
法律顾问 | 会计证 | ||
一级建造师 | 二级建造师 | 造价师 | 监理师 | 安全师 | 咨询师 | 结构师 | 建筑师 | 安全评价师 | ||
房地产估价师 | 土地估价师 | 设备监理师 | 岩土工程师 | 质量资格 | 房地产经纪人 | 造价员 | ||
投资项目管理 | 土地代理人 | 环保师 | 环境影响评价 | 物业管理师 | 城市规划师 | 公路监理师 | ||
公路造价工程师 | 招标师 | ||
执业护士 | 执业医师 | 执业药师 | 卫生资格 |
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技术偶合到那些功能模块中。