理解“软件架构师”的工作

理解“软件架构师”的工作
Jack zhai
   
软件架构师是开发软件时在用户需求分析与系统设计阶段的灵魂人物,与传统的系统分析员相比,软件架构师的工作能为接下来的代码设计,以及将来的运行都提供更好的指导。有人把架构师的工作定义为分解系统模块以及定义相互之间的关系,也有人认为架构师就是对软件设计核心环节设计的一系列决策;之所以架构师在现代软件开发体系中越来越重要,还与目前流行的软件开发组织结构有一定的关系。
 
一、           “软件人”面临的困惑:
随着软件行业竞争的加剧,有数据显示一个商业软件推出的周期不能超过九个月。客户为了适应市场的变化,业务流程、运营模式都随市场而不断调整,经常有新业务需要支持,开发周期超过九个月,软件即使推出,也面临“市场淘汰”的危险。纠其原因:对于软件的用户来说,软件不再只是办公文件编辑的工具而已,而是业务运营的支撑平台,本来是客户的业务经营快速多变,也就是常说的商家经营压力,现在直接传递给了软件开发者。从前拼的是经营者的“思路”,现在不仅经营者要拼思路,还要拼 IT 支持部门对经营者新思路的运营支持能力。
如何让软件能够适应快速多变的需求呢?说白了,就是不断修改企业的软件功能与控制流程,软件开发人员也没少下功夫,采用面向对象的重用技术节省代码的编写;采用分层隔离的技术减少需求变化对代码的影响程度;采用业务开发平台技术让用户随意组合自己的业务流程
为了弥补软件开发人员与业务人员思路的差异,可以快速给客户操作体验、形象式沟通,“极限编程”方式成为很多软件开发者的最爱。
极限编程是众多适应需求变化、小版本开发技术的一个代表,其目的就是避免把软件设计的庞大、复杂,尽快推出用户可见的、功能简单的、够用的小版本软件,让用户先用起来,在实践中体验感觉,再逐渐完善。
当新需求的增加造成实现上难逾越时,就采用“重构”技术,局部调整软件架构,如对象的重构、数据库的重构、功能模块的重构 重构就是在不影响外部调用接口的情况下,对局部程序的重新编写。当然,整个软件架构都不适应的时候,就只好推倒重来,重新开发了。走到这一步,该软件的生命周期就终结了。
 
二、新方法带来的新问题:
极限编程是一种软件开发的组织模式,需要管理者对软件系统整体架构有清晰的认识,否则软件的开发过程就会随着用户的需求任意“漫游”,成为永远不能最终交付的“大尾巴”工程。其原因有下面两点:
1 、软件提供的功能不仅与用户的需求有关,还与其服务质量、约束条件有关。约束一般为计算机硬件、系统软件、网络等;服务质量一般为用户对软件的质量要求,如并发支持量、持续性服务等。
极限编程者非常好地关注了用户的需求变化,但适应这些变化要在软件系统整体架构范围内,在约束条件的许可下、服务质量可接受范围内才可以,否则发布的软件是用户就无法接受的,后者也达不到需要的效果。
2 、因为要“敏捷”,很多开发组织者就“缩小”的前期架构设计的时间,在“够用原则”的支持下,简单搭建,甚至对采用的开发工具、中间件、对象的抽象等工作随手捻来,等到了开发的后期,成了烫手的“山芋”,难缠的“鸡肋”,继续保留则用户新需求无法满足,彻底更换则很多工作需要重来,还顾得上什么“敏捷”呢。
 
因此,采用“敏捷”的开发方法的软件团队,对软件架构的设计应该比传统的方式更加关注,这也是目前软件架构师的职业比从前系统分析员还受欢迎的原因。我很佩服 Cisco 65 系列交换机,那个机箱结构经历了几代引擎,兼容性让很多厂家非常羡慕。而有些厂家自己的产品,前后判若两人,相似的产品也很难相互配合,每个产品一个新面孔,真是“麻雀随小,五脏具新”。
如何较为完整地进行软件架构设计,温昱在《软件架构设计》中给出了“五视图法”比较全面。
 
三、五视图架构法:
所谓五视图就是从五个角度给出软件架构设计,避免架构设计是不充分,对软件的开发设计具有全面的指导意义。它把软件架构分为下面五个部分:
Ø  逻辑架构:关注软件功能。系统向用户提供什么样的服务,其重点是用户行为或职责的划分,逻辑架构是从用户的角度看软件结构。功能不仅是用户需求,还包括有关约束、限制条件
Ø  开发架构:关注程序包的生成过程或来源,包括源程序和开发环境 ( 类库、中间件等 ) ,是从开发人员角度看到的软件结构。开发架构与逻辑架构具有多对多的映射关系 ( 功能对应程序,可重用程序对应多个功能 ) 。开发架构考虑开发期的质量属性,如扩展性、重用性、移植性、易理解、易测试等
Ø  运行架构:关注进程、线程、对象等概念,以及相关的同步、并发、通讯问题,是从维护人员角度看到的软件结构。开发架构偏重程序包的静态生成,而运行架构关注运行后的交互。运行架构考虑运行期的质量属性,如性能、可伸缩性、持续可用性、安全性等。
Ø  物理架构:关注软件的安装与部署,是运行架构关注目标程序的动态运行,物理架构重视程序的静态位置。物理架构是软件硬件支撑环境的,是软件单元映射到硬件
Ø  数据架构:关注数据存储,包括格式与传递、同步、复制等,数据的组织与调用。一般是 E-R 图和数据流图的设计
“五视图法”让软件架构师避免了各种因素综合考虑的复杂性,能够根据具体软件的特点重点关注某个架构,降低了设计的难度,在“敏捷”开发组织中,节省时间是重要的。
架构设计的最终目的是为了延长软件的生命周期,更多地“重用”代码,似乎架构设计与“敏捷”,在思路上有些时间的冲突,但架构设计的到位,对软件的实际开发具有指导意义,极大程度地“包容”了用户需求的“漫游”,软件开发才真正变得“敏捷”。

你可能感兴趣的:(敏捷开发,架构师,软件,休闲,五视图)