一. 架构师?
1.1 架构设计涉及范围图
如图所示架构设计说涉及到的范围,首先是对架构支撑的底层平台选择,目前业界流行和通用的就是.Net平台和Java平台(J2EE);然后在平台支持之上做技术相关架构设计(主要会采用面向对象OO,面向方面编程AOP以及面向服务架构设计SOA等思想),在SOA推广上IBM和SUN两家公司尤为突出;在业务不断的变化中、架构的更新中,找到变化中不变的东西,并针对服务、架构制定一系列规范对架构进行有效的管理和成为架构设计的原则;当然,最上层就是善变的业务架构层。
1.2 一个优秀的架构师需要了解的知识
1.操作系统OS:能对操作系统内核有很好的了解和认识,从中吸取设计理念;推荐可以找一个小的linux版本代码阅读内核的实现,去理解“简单”的代码怎样去完成不简单的事情
2.虚拟机技术:去了解虚拟机的实行原理和它所做的工作,如Java的JVM、和.Net的CLR, CLR提交到欧洲标志组织可以阅读文档ECMA-335-CLI
3.计算机语言:一个好的架构师对计算机语言应该有深刻的认识,建议熟悉过程路径:C -> C++ -> C# ,Java
4.开源资源:当然多研究开源架构是提高的必要途径,理解开源架构中设计的思想以什么样的设计思想为出发点,比较它们每个版本升级中的设计变化;资源:JBoss、Spring等Java开源框架,.net方面有5大实用案例架构、以及ASP.NET Starter Kit等,和MS:Enterprise library;
JBOSS 4.0:包括web服务器(servlet/JSP容器,HTML服务器)、EJB2.0容器。完整的纯Java的数据库引擎,(Java消息服务)JMS,JavaMail,和Java事务处理API/Java事务处理服务(JTA/JTS)支持,但是他的面向方面设计(AOP)是它真正突出的部分。JBOSS的AOP架构负责处理AOP,使用了一组命名概念,比如"interceptor," "pointcut," 和“introduction”。一个interceptors编码“拦截器”(intercepts),它把一个对象放到一个被拦截的类中等。
Spring是一个轻量级容器,非侵入式,ioc容器,它所带的包装器使许多不同的服务和框架更易于使用。轻量级容器接受任何JavaBean,而不是只接受特定类型的组件。要了解Spring同时就应该了解Eclipse、Struts、Hibernate之间的衔接应用 Spring: A Developer's Notebook
ASP.NET Starter Kit: 是ASP.NET官方网站推出的一整套ASP.NET解决方案的Demo;是提供给ASP.NET初学入门者的教材!包括了门户、商业站点、社区站点、报表、时间跟踪排程、问题跟踪这6套系统。 在这里,随便也提一下WSS/SPS,具有微软官方支持,是成熟的产品,是通过Web Part扩展的,Web Part将会是ASP.NET发展的一个领域,使用Web Part进行页面的定制是更加人性化的,拖拉的所见即所得效果是Portal Start Kit无法达到了。WSS\SPS是扩展性非常好的系统平台,WSS\SPS的工作区可以无限向下添加,集成Office 2003、Exchange、Biztalk、Content Manager Server......而Portal Starter Kit仅仅是一个单纯的网站演示,虽然也能够布局定制,但仅此而已。
二. 还是需求
万水千山始于脚下,需求始终是一切的第一步!
从两种软件类型入手分别谈一谈,其中采集需求的方法和注意点
2.1 企业信息化软件
企业信息化软件,及软件的最终用户是一个企业,企业希望通过软件项目的采购来达到企业内部管理等流程的信息化;采集这类需求通常有两种情况,其一:
2.1.1 甲方驱动
如ERP,甲方非常了解要他们需要一个什么样的软件,或者通过软件来达到一个什么样的效果。其中从甲方采集需求的采集点注意一下不能遗漏:
•中层领导:--> 从他们这采集业务的流程,因为他们是对甲方公司业务流程最熟练的
•现场人员:--> 从他们这采集业务规则
•高层领导:--> 这个很重要,从他们这采取决策规则,及可以让软件实现知识发现,即以后可成为软件的一个亮点即对公司决策的支持
•信息人员:--> 操作规范,可以提供易用性
乙方需要参加的人员:
架构师(实力所服,让对方放心),需求分析师,开放人员(实现需求的原型化),
UI原型需求化:有三个好处, 需求固化、设计规则明确、开放复用
2.1.2 乙方强势论
由于甲方需求不明确,而乙方在此行业中资历深厚,了解行业标准,这种非常好做事就不多说了。
2.2 需要采集中注意项
1.需求采集的起点:
•找到所有执行者
•找到组织机构
•业务流程
2.需求管理, 这个是必不可少的;
需求稳定化,乙方提供需求详细规格说明书
同时,制定词汇表,如图
3.掌握中间语言,及快速得了解行业规范
2.3 商业化软件
需求采集为行业商用软件,要做到:
收集行业中所有企业得需求
行业规范,最好就是成为行业的领头人成为标准的制定者--> 业务原型
同时要考虑到市场因素,以及竞争对手、市场亮点(有必要时可能采用保存亮点的方式)
也要考虑环境因素,硬件、社会等
三. 领域分析
通过领域分析,获得领域模型;这节内容涉及到UML建模、建模流程、用例切片归包、DSL规范定义领域语言等等一些比较晕的内容!!
领域模型: 切词(名词实体)
实体关系 -->类图 、E-R
实体约束规则(要求精确度)
其中涉及到工作流分析, 以及工作流所涉及到的技术,建议研究工作流: 其一,Vista平台的WWF,其二,开源框架OsWorkflow; 其下图有利于我们理解工作流设计:visual studio 2005中插件DSL支持
3.1 最小建模技术
对于大多数问题而言,只需要20%的UML就可以完成80%的建模工作,所以只需要以下建模中的关键三个元素:
四. 少不了的设计模式
具体的这个就不多说了,应该是不是的对设计模式进行温习、多阅读一些设计模式论文及应用场景实践。使用时注意考虑以下重要几点:
4.1 设计模式应用场景
既是处理变化 --> 原构件基础上增加变化
--> 替代构件
4.2 设计模式的弱点
增加复杂度、 性能有损耗、 模式有可能选择不当、 装配不当、 增加测试难度
4.3 面向对象开放技术今天的核心基础
核心基础: 组件技术、 UML建模技术
组件技术: 大型项目和系统的必经之路
-》需要支持多平台:SOA、 ESB-连接组件
-》拥有大量组件:重用、MDA(模型驱动开发)-快速、廉价组件
-》响应日益复杂的业务操作
-》框架: .net, Java
五. AOP面向方面编程
在架构设计中也要引用AOP设计思想,在整个架构设计过程中横切关注点来达到面向方面编程,现实框架某些功能的统一处理,减少重复。AOP强调通过面向方面的思维方式来进行有效的架构设计,所以AOP设计 ≠ AOP技术, AOP技术是面向方面设计AOP的最佳实现。开源AOP架构研究推荐: JBoss4.0
架构师进行架构设计,要心中有此轴向图从而做到不同纬度对架构进行充分的设计考虑。
六. 架构设计
6.1 主要架构模式
流程处理模式: 以算法和数据结构为中心,由一系列处理步骤、相邻步骤用数据流管道连接。主要用于批处理系统软件
、C/S模式、MVC模式、分层模式
七. SOA
SOA(Service Oriented Architecture 服务导向架构),是一种应用程式架构的概念,将应用程式及资源以重复使用的服务方式呈现,使用标准化的借变相互沟通,借此提供更高弹性、更高效率、及资讯整合的IT环境。SOA是一种用于建构分散式系统的方法,它可以将应用程序以服务的方式提供给终端使用者,也能建构成其他的服务。透过SOA,我们可以将单一的软件开发成为可提供其他应用系统使用的基本元件。
要理解SOA,更重要的得研究ESB(Enterprise Service Bus)企业服务总线,请看另一篇文档的详细介:SOA-ESB企业服务总线概念; 这里就不熬述了