存储 频道

与技术无关?资深讲师讲述软件架构原则

  【Tech.Ed 2009 特别报道】精英聚首,践出真知!11月5日-11月7日,IT168与您一道共享IT技术盛会微软Tech.Ed 2009(专题链接:http://app.focus.it168.com/teched2009/index.html)。更多精彩,尽在IT168!

  不夸张的说,一个软件的灵魂在于设计架构。好的软件架构师不只是一位受到尊敬的资深技术人员,通常也是策略制定和组织协调的高手,称职的顾问与领导者。这是因为软件架构规划与设计主要是以宏观的角度切入系统架构,软件工程师和程序员所考虑的是单个构件的功能,而软件架构师必须从全局的角度理解软件项目的业务目的和期望结果。


“面向动态业务的 解决方案架构”讲演现场

  看起来,软件架构层面的工作似乎没有太多的技术层面的工作,实际上,软件架构师必须对所有的技术问题了然于胸。本次TechED大会上,资深软件架构师王健向大家讲述了自己在多年软件架构师工作经验中的感受,以及进行软件架构时通常的实用原则。


“面向动态业务的 解决方案架构”主讲王健

  王健有二十多年IT经验和多年工业界工作经验。曾是Lucent和Avaya的资深解决方案架构师,和Microsoft的资深咨询顾问。在北美工作二十年后,王健于2007回到北京Microsoft负责企业级解决方案开发咨询。王健的专长是:分布式架构设计,SOA架构设计,和企业级解决方案架构设计。

  王健认为,目前业务开发工作和业务的需求相差甚远,往往一个需求,业务部门提出来,但需要几个月之后才能开发出来,IT永远滞后于业务发展。

  IT面临的最大挑战之一是如何使解决方案满足企业目前的需求和未来的发展。在这里我们将讨论如何设计解决方案的架构使其满足企业发展的需求,包括支持应用的互操作,提供高度灵活的扩展性,提高应用性能,保证高可靠性和高可用性。事实上,这些问题是最优秀的软件开发团队都会遇到的问题,但好的架构师能够尽可能的避免软件开发团队无用的重复工作,避免软件因为初期架构不合理,而需要重新开发的情况出现。


软件架构必须满足业务动态发展的需要

  王健认为架构设计的意义就在于:掌握用户事例(use case)、提供一个连接业务需求与技术实现之间的桥梁,并找出实现用户事例的软件和IT基础架构方案;定义一个节构化的解决方案以满足全部的技术和运维需求, 并针对某些需求进行优化,如:性能、安全性、易管理性 …。同时,王健列出了软件架构开发的几大原则,包括:

  减少是开发工作的开销和时间
  用松散遇合方式实现服务集成
  做到可配置\可自适应\可扩展\可靠\可管理
  敏捷开发\测试驱动
  复用高效的设计模式(分层架构,SOAP,ESB,虚拟化和云服务器)

  谈到如上的原则,王健解释道,我们最常见的情况是,一个编程的高手,认为很多程序都可以通过自己开发出来,看起来很节约成本,但实际上,这个功能市场上已经有了成熟的解决方案。而自己开发出来的程序往往不可避免的会存在应用的小问题,开发周期是一方面的成本,还需要很长时间的使用测试周期,在软件开发的角度,其实并不是值得推广的方案。

  另外一方面,各个程序之间的关联,尽量采用松耦合的形式进行信息集成,而不一定要采用紧密的方式进行关联,这样有助于程序模块的进一步扩展。

  综合来说,软件架构师必须设法降低可能的技术风险对系统的冲击。在规划初期,技术风险对一般人来说通常都是不可知、不可验证也不可测的。风险大多与系统层次的需求有关,有时也会与组织需求有关。不论任何类型的风险,有经验的架构设计师都可在项目的先期也就是构建架构时期,预先列出这些可能的风险,然后在后续的开发时期配合开发人员予以适当地处理与解决。另外,架构设计师也必须领导开发团队,保持与其它成员的良好互动,确保开发人员是根据架构蓝图来构建系统。

  总之,软件架构师的主要任务就是规划与系统架构层次相关的事务,评估可能的风险与成本,并有效运用有限的人力、物力资源满足系统层次的需求。优秀的软件架构师是保证软件系统强大生命力的核心人物。专业架构师能够帮助组织全面研究现有架构和设计模式、评估系统设计的优缺点和可能存在的风险,通过一系列的专题指导和具体案例帮助组织掌握先进的、成熟的设计模式,简化复杂的业务逻辑和需求,确定系统非常好的方案。在必要的情况下,还可就特定领域或课题,为开发人员提供定制指导。

0
相关文章