background image

同的构件是如何组装在一起的

[27]。软件架构师规划系统的角度主要是从自上而下的方式着

手,而软件设计师则多半从自下而上的方式着手。这种从宏观

/微观的角度进行划分,在其

它学科也常看见,如宏观经济学与微观经济学等。这种宏观角度的本质,就是软件架构师专
业领域与其它软件开发人员最根本的区别。
  从宏观的角度,举凡架构规格与决策、排定架构审阅时程、解决所有架构相关的问题、所
有主要技术决策的核准、维护架构规格等都是架构设计的主要工作。通常在项目一开始,需
求与初始分析等工作流程会产生规划的企业流程与预期系统完成的功能。有了这些信息,软
件架构师就能草拟最初的高层架构蓝图,并列出影响架构的可能的因素清单。另外,软件架
构师也要担负估算项目成本的职责,评估项目计划对系统既有基础结构

(infrastructure)与架

构的冲击,以及计算可能付出的成本与所带来的效益。
  除了上述任务以外,检查初期架构规划设计、影响因素与成本,维持与组织架构决策的
一致性也是架构设计师的重要职责之一。这通常要找出制定项目的架构决策与其优先级的判
断基准、定义问题领域、决定可能解决方案的制约条件、确认有关可能解决方法的假设状况以
及辨识模块重用的可能性。软件架构师也必须负责确保需求的达成,以及硬件、软件、基础结
构、性能、安全性、容量、可用性和系统运行、管理与维护等属于系统层次相关技术之间的协调
与平衡。在某些关键时刻,软件架构师也要做出系统与架构在协调、平衡上种种必须当机立
断但又很难判断的决策。
  软件架构师必须设法降低可能的技术风险对系统的冲击。在规划初期,技术风险对一般
人来说通常都是不可知、不可验证也不可测的。风险大多与系统层次的需求有关,有时也会
与组织需求有关。不论任何类型的风险,有经验的架构设计师都可在项目的先期也就是构建
架构时期,预先列出这些可能的风险,然后在后续的开发时期配合开发人员予以适当地处
理与解决。另外,架构设计师也必须领导开发团队,保持与其它成员的良好互动,确保开发
人员是根据架构蓝图来构建系统。
  总之,软件架构师的主要任务就是规划与系统架构层次相关的事务,评估可能的风险
与成本,并有效运用有限的人力、物力资源满足系统层次的需求。优秀的软件架构师是保证
软件系统强大生命力的核心人物。专业架构师能够帮助组织全面研究现有架构和设计模式、
评估系统设计的优缺点和可能存在的风险,通过一系列的专题指导和具体案例帮助组织掌
握先进的、成熟的设计模式,简化复杂的业务逻辑和需求,确定系统最佳方案。在必要的情
况下,还可就特定领域或课题,为开发人员提供定制指导。
  

2.2 软件架构师与系统分析师的区别

  在一个较大规模的软件组织里,一般都有项目管理师、软件架构师、系统分析师、软件设
计师、测试工程师、数据库工程师、程序员、过程改进、质量保证等不同的职位。在这些职位中,
人们容易混淆的是系统分析师和软件架构师。对于系统分析师的角色,业界有两种观点,一
种是把系统分析师当成既懂技术又懂管理的全能冠军,另一种是把系统分析师当作需求分
析师,而架构师才是灵魂。那么,系统分析师与软件架构师在角色方面的分配究竟有什么区
别呢

?

  当软件规模比较小时,系统分析师所完成的工作是把真正的业务需求

(这个需求不是指

客户简单所说的哪一个功能,而是需要去挖掘的,可能是潜在的但又是系统必需的,条例
清楚、逻辑清晰的业务功能,而且需求不仅仅只是来自业务上的,系统所依赖的运行环境也
会产生一些需求

)转换成计算机可理解、可实现、可计算的模型。但由于现在的系统规模越来

越大,复杂程度越来越高,而且应用领域也越来越广,所以很难由一个工种的人来全面完
成这项艰巨的任务。
  在具体的软件设计过程中,现在把它分解为由系统分析师与软件架构师合作共同来完
成这一任务。其中系统分析师侧重的是前一部分的工作,软件架构师侧重的是后一部分的工