系统架构师的职责和作用

    【职业名称】

    系统架构师(System Architecture)

    【职业定位】

    系统构架,是对已确定的需求的技术实现构架、作好规划,运用成套、完整的工具,在规划的步骤下去完成任务。

    系统架构师(又称企业架构师或者系统设计师)是一个最终确认和评估系统需求,给出开发规范,搭 建系统实现的核心构架,并澄清技术细节、扫清主要难点的技术人员。他/她主要着眼于系统的“技术实现”。因此他/她应该是特定的开发平台、语言、工具的大 师,对常见应用场景能马上给出最恰当的解决方案,同时要对所属的开发团队有足够的了解,能够评估自己的团队实现特定的功能需求需要的代价。

    系统架构师负责设计系统整体架构,从需求到设计的每个细节都要考虑到,把握整个项目,使设计的项目尽量效率高,开发容易,维护方便,升级简单,等等。

    【工作职责】

    系统架构师的职责就是设计一个公司的基础架构,并提供关于怎样建立和维护系统的指导方针。具体来讲,系统架构师的职责主要体现在以下几方面、

    1 负责公司系统的架构设计、研发工作;
    2 承担从业务向技术转换的桥梁作用;
    3 协助项目经理制定项目计划和控制项目进度;
    4 负责辅助并指导 SA 开展设计工作;
    5 负责组织技术研究和攻关工作;
    6 负责组织和管理公司内部的技术培训工作;
    7 负责组织及带领公司内部员工研究与项目相关的新技术。
    8 管理技术支撑团队并给项目、产品开发实施团队提供技术保障。
    9 理解系统的业务需求,制定系统的整体框架(包括、技术框架和业务框架)
    10 对系统框架相关技术和业务进行培训,指导开发人员开发。并解决系统开发、运行中出现的各种问题。
    11 对系统的重用、扩展、安全、性能、伸缩性、简洁等做系统级的把握。

    系统架构师的工作在于针对不同的情况筛选出最优的技术解决方案,而不是沉在具体实现细节上。此外系统架构师是不可培养的,好的系统架构师也许不是一个优秀的程序 员,但是不能不懂技术之间的差别,技术的发展趋势,采用该技术的当前成本和后继成本,该技术与具体应用的偶合程度,自己可以调配的资源状况,研发中可能会 遇到的风险,如何回避风险。这些才是架构师需要考虑的主要内容。

    另外,还必须注意,架构分为两种,第一种是基础架构的设计规划,例如:OS,硬件,网络,各种应用服务器等等。

    第二种是软件开发设计的架构师,他们负责规划程序的运行模式,层次结构,调用关系,规划具体的实现技术类型,甚至配合整个团队做好软件开发中的项目管理。

    【系统构架师的作用】

    系统架构师该怎么来实现其“架构”企业的职能呢?尤其在设计企业 IT 策略时,该怎样体现架构师的价值?

    这里以实例说明、

    摩托罗拉的副总裁 Toby Redshaw 说,架构师是“IT 策略中的中枢”,而且这一角色对公司的影响确实非常大。当 Toby Reshaw 在 2001 年进入摩托罗拉并担任其策略暨架构副总裁时,他俨然一位购房者对一套摇摇欲坠的公寓进行估价一样。他并不是仅仅只作些表面上的修改,而是拟定了一个重建摩 托罗拉整个基础结构的计划,这个计划可以彻底修整公司的基础建设。 就像一个建筑师设计一幢房子一样,Redshaw 拟出了一张技术构架蓝图,一座技术性的建筑,以便使被他称作“如意大利面条般错乱的应用程序,机器和管线”那些东西变得井然有序。他说,只要选择了正确的 架构策略并用对了人,摩托就可以用比以前更快的速度生产出大量应用软件,而且可以减少维持重叠系统的费用。 Redshaw 说、“如果你连建筑架构都搞不好,就算你的石匠技术再高明,又有什么用?架构师是 IT 策略中的中枢。” 像 Redshaw 这样的系统架构师们在企业内部的影响力非常大。很久以来,虽然他们一直在信息技术部门担任重要职务,但是他们经常受委托提供全面概况分析,并提出一些关于 如何遵照标准执行这些任务的建议,而这些对日常运作的影响极其有限。今天,随着各公司都在寻找重建他们的 IT 系统,使其更能有效节省成本,更灵活的方法,架构师愈来愈被看作是至关重要的因素。

    一个定义明确的架构的目标在于降低运行复杂的运算系统的费用。一个公司可以采用一种特定的数据库配置,如微软的数据库,进而将系统标准化,而不需要让公司的每个部门安装它们自己所需要的数据库服务器。

    Express 的技术架构副总裁 Andy Miller 说:“如果你没有一项强有力的架构策略,人人各行其是,最后以得到六种服务器和软件平台而告终,你的系统变成了大杂烩,而那将使你的费用激增。”把架构师 独立出来有很多好处,比如系统的整体把握,质量上的保障,技术上的先进性,架构的灵活性,高效性,还可有效地降低成本。试想,1 个月薪 1w 的架构师+10 个月薪5k 的工程师,肯定比 11 个月薪 6k 的高级工程师效果要好。一般来说,级别越高的架构师,经验更丰富,争相聘请的人也多,他们也是与公司全部的 IT 策略密切相关的专业人员。

    【系统构架师应具备的能力】

    作为软件开发的设计架构师,那么必须拥有一定的编程技能,同时有高超的学习新的架构设计、程序设计技能。另外,我觉得作为软件架构师,还必须了解一定的 硬件、网络、服务器的基本知识。要不然,你都不知道有些什么材料可以用,你怎么去根据实际情况去规划你的软件架构呢?忽视程序设计能力的持续跟新,是永远 不能够成为一个成功的系统架构师。

    一般来讲,系统架构师应该拥有以下几方面的能力:

    1、具备 8 年以上软件行业工作经验;
    2、具备 4 年以上 C/S 或 B/S 体系结构软件产品开发及架构和设计经验;
    3、具备 3 年以上的代码编写工作经验;
    4、具备丰富的大中型开发项目的总体规划、方案设计及技术队伍管理经验;
    5、对相关的技术标准有深刻的认识,对软件工程标准规范有良好的把握;
    6、对 .Net/JAVA 技 术 及 整 个 解 决 方 案 有 深 刻 的 理 解 及 熟 练 的 应 用 , 并 且 精 通WebService/J2EE 架构和设计模式,并在此基础上设计产品框架;
    7、具有面向对象分析、设计、开发能力(OOA、OOD、OOP),精通 UML 和 ROSE,熟练使用 Rational Rose、PowerDesigner 等工具进行设计开发;
    8、精通大型数据库如 Oracle、Sql Server 等的开发;
    9、对计算机系统、网络和安全、应用系统架构等有全面的认识,熟悉项目管理理论,并有实践基础;
    10、在应用系统开发平台和项目管理上有深厚的基础,有大中型应用系统开发和实施的成功案例;
    11、良好的团队意识和协作精神,有较强的内外沟通能力。

    【系统构架师与其他角色的区别】

    系统构架师与产品经理的关系及区别产品经理通常是指负责产品设计的“专人”。一个优秀的理想的产品经理,应同时具备较高的商业素 质和较强的技术背景。产品经理要有深厚的领域经验,也就是说,对该软件系统要应用到的业务领域非常之熟悉。比如,开发房地产销售软件的产品经理,应该对房 地产公司的标准销售流程了如指掌,甚至比大多数销售人员还要清楚。如果开发的是通用产品,他/她还具备对市场、潜在客户需求的深刻洞察力。

    那么,系统架构师与产品经理有什么不同呢?

    我们不应该把二者混为一谈,这是不少论述和实践常犯的错误。我看来,如果把开发软件比作摄制电 影,产品经理之于系统架构师,就正像编剧之于导演。产品经理虽然要有一定技术背景,但仍应属于“商业人士(business people)”,而系统架构师则肯定是一个技术专家。二者看待问题的立场、角度和出发点完全不同。

    系统构架师与项目经理的关系及区别软件项目经理是指对项目控制/管理,关注项目本身的进度、质量,分配、调动、协调、管理好人、 财、物等资源的负责人。对于软件项目经理来讲,包括项目计划、进度跟踪/监控、质量保证、配置/发布/版本/变更管理、人员绩效评估等方面。优秀的项目经 理需要的素质,并不仅在于会使用几种软件或是了解若干抽象的方法论原则,更重要的在于从大量项目实践中获得的宝贵经验,以及交流、协调、激励的能力,甚至 还应具备某种个性魅力或领袖气质(Charisma)。

    由此可见,项目经理和系统架构师在职责上有很大差异。混同这两个角色,往往也会导致低效、无序 的开发。特别是,从性格因素上讲,单纯的技术人员倾向于忽视“人”的因素,而这正是管理活动的一个主要方面。另外,就像战争中的空军掩护(Air Cover)一样,专职的项目经理能够应付开发过程中大量的偶发事件和杂务,对于一个规模稍大的项目,这些杂务本身就能占用一个全职工作者的几乎全部时 间。在一个项目中,推动项目发展的是系统构架师,而不是项目经理。项目经理的职责只是配合系统构架师,提供各个方面的支持。主要职责是与内外部沟通和管理 资源(包括人)。系统构架师提出系统的总体构架,给出开发指导。一个项目中,项目经理的角色什么?如果他即使管理人员又是设计人员,则必须比别人强,能够 有让别人服的东西。如果他只是项目管理人员,系统构架师有专门人员,就可以不用精通或者说了解 it 各个方面的知识,如果了解更好。另外,如果在一个项目没有人在技术构架上和开发指导上负全部责任,而是每个人都负责一快的架构、分析、设计、代码和实施 等,最后肯定会失去管理。

    系统构架师与系统分析员的关系及区别系统分析员(System analyst)是指对系统开发中进行分析、设计和领导实施的人。一般意思上讲,系统分析员的水平将影响系统开发的质量,甚至成败。但在一个完善的系统开 发队伍中,还需要有业务专家,技术专家和其他辅助人员。所以,系统分析员只是其中的角色之一。但我国许多的 IT 公司,一般只有系统分析员而没有技术专家。系统分析员固然是对特定系统进行分析、设计。所以他的任务、目标是明确的。他只是去执行任务,完成系统的最终设 计。

    系统架构师应该和系统分析员分开,但架构师必须具备系统分析员的所有能力,同时还应该具备设计 员所没有的很多能力。 系统架构师是指导、检督系统分析员的工作,要求系统分析员按什么标准,什么工具,什么模式,什么技术去设计系统的。同时,系统架构师应该对系统分析员所提 出的问题,碰到的难题及时地提出解决的方法。并检查、评审系统分析员的工作。

    【如何评估系统构架师的工作成绩】

    优秀的系统架构师是保证软件系统强大生命力的核心人物。专业架构师能够帮助公司全面研究现有架构和设计模式、评估系统设计的优缺点和可能存在的风险,通 过一系列的专题指导和具体案例帮助公司掌握先进的、成熟的设计模式,简化复杂的业务逻辑和需求,确定系统最适合法人方案。在必要的情况下,还可就特定领域 或课题,为开发人员提供定制指导。通过上面的介绍,我们对系统构架师有了的较深刻的认识,我们明白了系统构架师的地位,作用,工作职责及任职条件,同时还区别出与其他角色的不同,那么如何评估系统构架师的工作成绩,如何识别一个合格的优秀的系统构架师是不难的。

    具体来讲,我们可以通过以下几方面来评估系统构架师的工作成绩:

    1、系统构架师是否是某一技术领域的专家;
    2、系统构架师能否指导分析员的设计工作,发现并指出设计存在的问题并提出解决方法,评审他们的工作;
    3、系统构架师能否指导软件工程师进行开发工作,发现并指出编码存在的问题并提出解决方法,评审他们的工作;
    4、系统构架师能否协助好项目经理制定项目计划和控制项目进度;
    5、系统构架师能否及时有效地解决设计、开发人员所提出的问题,解决技术上的难题;
    6、系统构架师能否制订并规范系统设计和开发文档、工具、模型;能否让其他人员容易理解;
    7、系统构架师能否经常组织并带领公司内部员工研究、学习与项目相关的新技术;
    8、系统构架师能否组织和管理好公司内部的技术培训工作,技术研究和攻关工作;
    9、系统构架师能否组织和管理好公司内部的技术培训工作,技术研究和攻关工作;
    10、系统构架师是否有良好的团队意识和协作精神,有较强的内外沟通能力;
    11、系统构架师是否能管理好技术支撑团队并给项目、产品开发实施团队提供技术保障;
    12、系统构架师所设计的系统架构是否合理,技术是否先进,能否满足客户的要求;
    13、系统构架是否有扩展性,安全性,能否经受压力测试,网络流量在超用户数下如何;
    14、控制系统边界如何处理,瓶颈问题如何解决等;
    15、系统设计前期、中期、后期所要解决的问题,是否有阶段性,里程碑的标识;
    16、是否有分析、识别并尽可能地回避风险,降低风险所引发问题成本的能力;
    17、能否给公司降低开发成本,提高效率;

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/vebasan/archive/2009/11/05/4771900.aspx

猜你喜欢

转载自aniu2008.iteye.com/blog/1026518