当软件规模比较小时,系统分析师所完成的工作是把真正的业务需求(这个需求不是指客户简单所说的哪一个功能,而是需要去挖掘的,可能是潜在的但又是系统必需的,条例清楚、逻辑清晰的业务功能,而且需求不仅仅只是来自业务上的,系统所依赖的运行环境也会产生一些需求)转换成计算机可理解、可实现、可计算的模型。但由于现在的系统规模越来越大,复杂程度越来越高,而且应用领域也越来越广,所以很难由一个工种的人来全面完成这项艰巨的任务。
在具体的软件设计过程中,现在把它分解为由系统分析师与软件架构师合作共同来完成这一任务。其中系统分析师侧重的是前一部分的工作,软件架构师侧重的是后一部分的工作。系统分析师的主要工作内容 包括业务需求分析、系统需求分析、可行性分析以及建模等,其特点是更多地与行业专家、用户沟通,再及时与项目经理(项目管理师)、软件架构师以及老板商 讨,分析项目具备的特点、成本、风险等,考虑实现的模型。系统分析师所面临的往往是有许多不确定性的事件,需要对这些不确定的事件进行分析、总结,使之得 出一个相对可靠的确定性结论或实施方案模型。
软件架构师的主要工作内容就是在系统需求比较清晰的条件下进行系统总体的架构设计,当然 它也可能会涵盖一些系统分析师的工作内容和软件设计师的内容,但其特点是确定性的东西会多一些,力求为系统找到或架构一个最优的模型,这里面虽然可能有很 多创新的成分,但更重要的是如何充分运用现有的各种模型、结构、方案,并根据项目的特点,在各种方案中取长补短,找到一个最好的平衡点和结合点,使之最适 合当前项目的解决方案。所以,软件架构师实际上是使系统细致化、完善化,为拥有更好的可靠性提供保障。
在实际的职责上,软件架构师比系统分析师所站的角度更高一些。在大规模的软件系统中,系统分析师可能就系统的某个子系统进行分析与设计,而软件架构师应该对整个系统的结构负责。
(1) 项目管理师:掌握信息系统项目管理的知识体系,具备管理大型、复杂信息系统项目和多项目的经验和能力;能根据需求组织制定可行的项目管理计划;能够组织项 目实施,对项目的人员、资金、设备、进度和质量等进行管理,并能根据实际情况及时做出调整,系统地监督项目实施过程的绩效,保证项目在一定的约束条件下到 达既定的项目目标;能分析和评估项目管理计划和成果;能在项目管理进展的早期发现问题,并有预防问题的措施;能协调项目所涉及的相关人员。即项目管理师的 主要职责是负责整个项目的实施和控制,协调各种资源(包括组织内部资源和客户资源)。
(2)系统分析师:熟悉应用领域的业务,能分析 用户的需求和约束条件,写出信息系统需求规格说明书,制订项目开发计划,协调项目开发与运行所涉及的各类人员;能指导制订企业的战略数据规划,组织开发项 目;能评估和选用适宜的开发方法和工具;能按照标准规范编写系统分析、设计文档;能对开发过程进行质量控制与进度控制;能具体指导项目开发。即系统分析师 的主要职责是获取并分析用户的需求,形成规范化的文档,指导整个项目的开发,需要与客户不断的交流,熟悉应用领域的业务。
(3)系统 架构师:能够根据用户需求,结合用户应用领域的实际情况,设计正确、合理的软件构架,维护系统构件及其接口,并确保系统构架具有良好的性能;能够对项目进 行系统构架级的描述、分析、设计与评估;能够按照相关标准编写相应的设计文档;具有扎实的理论功底、广博的知识面,能够与系统分析师、项目管理师相互协 作、配合工作。即系统架构师的职责是负责整体的、宏观的系统设计,重点在架构级别上。还要对架构进行描述、分析和评估,属于纯技术性的工作。
从考试难度来看,系统架构设计师是最有难度的,同时,架构设计师也是业界最缺的一个高端职位,因此,其含金量也将是最高的。而且,我个人估计,架构设计师证书的含金量会超过系统分析师,这是因为业界已经深刻认识到架构的重要性,且中小企业紧缺架构设计师。从考试大纲来看,系统架构设计师考试的试题题型和内容将与系统分析师的考试基本重叠或一致,只是内容稍微偏向于架构设计。 其他人的说法: 首先看一下架构师和系统分析员的区别:
1、系统分析员必须考虑自己所设计系统的方方面面,他是系统实现的原始作者,也对系统能否满足客户的技术要求以及产品成本是否可接受起着最直接的作用。
2、架构师一般在软件组织内仅仅是少数人,他们主要负责对产品的架构进行评估以及子系统之间的接口批准上,评估的主要方面集中在系统级的质量属性和成本上,包括:当前架构是否满足可靠性要求、系统架构的可扩展性、可重用性、性能以及基础的公共功能等等。他们必须对系统分析员设计出来的系统进行最初的把关,所以责任重大,也需要经验非常丰富的人来承担。在公司其他部门和Ivar Jacobson的交流中,Jacobson明确的指出,架构委员会不是常设组织,通常都来源于团队的系统分析员,唯一常设的职位通常只有一个主席,其他的成员必须临时来源于系统开发的一线,只有他们最了解系统开发的基本思想。
3、系统成本是架构师和系统分析员最容易忽略的事情,而这个也是他们最基本的职责之一。
接下来看看系统分析员和项目经理的差别:
1、一个不合理的计划往往被归咎于项目经理,但这并不是事实。计划的制定严重依赖于系统分析员所设计系统的部件完成工序,而唯一能对这个作出准确判断的只有系统分析员。所以,计划的最初版本是来源于系统分析员而不是项目经理。项目经理在这方面的主要作用是协助系统分析员制定计划,帮助考虑人员、资源方面的投入情况,并在项目的执行过程中严格监控项目的进度情况。
2、质量目标的制定和计划一样,来源于系统分析员,尤其是性能、可靠性等关键技术指标,而这些的第一跟踪主体也是系统分析员。项目经理在其中的角色,只是协助系统分析员安排各种资源,完成这些目标的测试、跟踪等活动。
3、成本是唯一的需要架构师、系统分析员以及项目经理共同关注并且严格控制的因素,原因很简单,这是大家靠着吃饭的来源。
4、项目其他的非技术方面的因素,则基本都是由项目经理负责搞定,包括合同、人员沟通、采购等等。