系统架构师
在一个较大规模的软件组织里,一般都有项目管理师、软件架构师、系统分析师、软件设计师、测试工程师、数据库工程师、程序员、过程改进、质量保证等不同的职位。
在这些职位中,人们容易混淆的是系统分析师和软件架构师。
对于系统分析师的角色,业界有两种观点,一种是把系统分析师当成既懂技术又懂管理的全能冠军,另一种是把系统分析师当作需求分析师,而架构师才是灵魂。
那么,系统分析师与软件架构师在角色方面的分配究竟有什么区别呢?当软件规模比较小时,系统分析师所完成的工作是把真正的业务需求(这个需求不是指客户简单所说的哪一个功能,而是需要去挖掘的,可能是潜在的但又是系统必需的,条例清楚、逻辑清晰的业务功能,而且需求不仅仅只是来自业务上的,系统所依赖的运行环境也会产生一些需求)转换成计算机可理解、可实现、可计算的模型。
但由于现在的系统规模越来越大,复杂程度越来越高,而且应用领域也越来越广,所以很难由一个工种的人来全面完成这项艰巨的任务。
在具体的软件设计过程中,现在把它分解为由系统分析师与软件架构师合作共同来完成这一任务。
其中系统分析师侧重的是前一部分的工作,软件架构师侧重的是后一部分的工作。
系统分析师的主要工作内容包括业务需求分析、系统需求分析、可行性分析以及建模等,其特点是更多地与行业专家、用户沟通,再及时与项目经理(项目管理师)、软件架构师以及老板商讨,分析项目具备的特点、成本、风险等,考虑实现的模型。
系统分析师所面临的往往是有许多不确定性的事件,需要对这些不确定的事件进行分析、总结,使之得出一个相对可靠的确定性结论或实施方案模型。
软件架构师的主要工作内容就是在系统需求比较清晰的条件下进行系统总体的架构设计,当然它也可能会涵盖一些系统分析师的工作内容和软件设计师的内容,但其特点是确定性的东西会多一些,力求为系统找到或架构一个最优的模型,这里面虽然可能有很多创新的成分,但更重要的是如何充分运用现有的各种模型、结构、方案,并根据项目的特点,在各种方案中取长补短,找到一个最好的平衡点和结合点,使之最适合当前项目的解决方案。
所以,软件架构师实际上是使系统细致化、完善化,为拥有更好的可靠性提供保障。
在实际的职责上,软件架构师比系统分析师所站的角度更高一些。
在大规模的软件系统中,系统分析师可能就系统的某个子系统进行分析与设计,而软件架构师应该对整个系统的结构负责。
(1)项目管理师:掌握信息系统项目管理的知识体系,具备管理大型、复杂信息系统项目和多项目的经验和能力;能根据需求组织制定可行的项目管理计划;能够组织项目实施,对项目的人员、资金、设备、进度和质量等进行管理,并能根据实际情况及时做出调整,系统地监督项目实施过程的绩效,保证项目在一定的约束条件下到达既定的项目目标;能分析和评估项目管理计划和成果;能在项目管理进展的早期发现问
题,并有预防问题的措施;能协调项目所涉及的相关人员。
即项目管理师的主要职责是负责整个项目的实施和控制,协调各种资源(包括组织内部资源和客户资源)。
(2)系统分析师:熟悉应用领域的业务,能分析用户的需求和约束条件,写出信息系统需求规格说明书,制订项目开发计划,协调项目开发与运行所涉及的各类人员;能指导制订企业的战略数据规划,组织开发项目;能评估和选用适宜的开发方法和工具;能按照标准规范编写系统分析、设计文档;能对开发过程进行质量控制与进度控制;能具体指导项目开发。
即系统分析师的主要职责是获取并分析用户的需求,形成规范化的文档,指导整个项目的开发,需要与客户不断的交流,熟悉应用领域的业务。
(3)系统架构师:能够根据用户需求,结合用户应用领域的实际情况,设计正确、合理的软件构架,维护系统构件及其接口,并确保系统构架具有良好的性能;能够对项目进行系统构架级的描述、分析、设计与评估;能够按照相关标准编写相应的设计文档;具有扎实的理论功底、广博的知识面,能够与系统分析师、项目管理师相互协作、配合工作。
即系统架构师的职责是负责整体的、宏观的系统设计,重点在架构级别上。
还要对架构进行描述、分析和评估,属于纯技术性的工作。
系统架构师(又称企业架构师或者系统设计师)是一个最终确认和评估系统需求,给出开发规范,搭建系统实现的核心构架,并澄清技术细节、扫清主要难点的技术人员。
主要着眼于系统的“技术实现”。
因此他/她应该是特定的开发平台、语言、工具的大师,对常见应用场景能马上给出最恰当的解决方案,同时要对所属的开发团队有足够的了解,能够评估自己的团队实现特定的功能需求需要的代价。
系统架构师负责设计系统整体架构,从需求到设计的每个细节都要考虑到,把握整个项目,使设计的项目尽量效率高,开发容易,维护方便,升级简单等。
软件系统架构师综合的知识能力包括9个方面,即:
1、战略规划能力。
2、业务流程建模能力。
3、信息数据结构能力。
4、技术架构选择和实现能力。
5、应用系统架构的解决和实现能力。
6、基础IT知识及基础设施、资源调配能力。
7、信息安全技术支持与管理保障能力。
8、IT审计、治理与基本需求分析、获取能力。
9、面向软件系统可靠性与系统生命周期的质量保障服务能力。
作为系统架构师,必须成为所在开发团队的技术路线指导者;具有很
强的系统思维的能力;需要从大量互相冲突的系统方法和工具中区分出那些有效的,那些无效的。
架构师应当是一个成熟的、丰富的、有经验的、有良好教育的、学习快捷、善沟通和决策能力强的人。
丰富是指他必须具有业务领域方面的工作知识,知识来源于经验或者教育。
他必须广泛了解各种技术并精通一种特定技术,至少了解计算机通用技术以便确定那种技术最优,或组织团队开展技术评估。
优秀的架构师能考虑并评估所有可用来解决问题的总体技术方案。
需要良好的书面和口头沟通技巧,一般通过可视化模型和小组讨论来沟通指导团队确保开发人员按照架构建造系统。
系统构架师的职责
系统架构师的职责就是设计一个公司的基础架构,并提供关于怎样建立和维护系统的指
导方针。
具体来讲,系统架构师的职责主要体现在以下几方面:
1 负责公司系统的架构设计、研发工作;
2 承担从业务向技术转换的桥梁作用;
3 协助项目经理制定项目计划和控制项目进度;
4 负责辅助并指导 SA 开展设计工作;
5 负责组织技术研究和攻关工作;
6 负责组织和管理公司内部的技术培训工作;
7 负责组织及带领公司内部员工研究与项目相关的新技术。
8 管理技术支撑团队并给项目、产品开发实施团队提供技术保障。
11 理解系统的业务需求,制定系统的整体框架(包括:技术框架和业务框架)
12 对系统框架相关技术和业务进行培训,指导开发人员开发。
并解决系统开发、运行中出现的各种问题。
系统架构师的目的:
13 对系统的重用、扩展、安全、性能、伸缩性、简洁等做系统级的把握。
系统架构师的工作在于针对不同的情况筛选出最优的技术解决方案,而
不是沉在具体实现细节上。
此外系统架构师是不可培养的,好的系统架构师也许不是一个优秀的程序员,但是不能不懂技术之间的差别,技术的发展趋势,采用该技术的当前成本和后继成本,该技术与具体应用的偶合程度,自己可以调配的资源状况,研发中可能会
遇到的风险,如何回避风险。
这些才是架构师需要考虑的主要内容。
出师表
两汉:诸葛亮
先帝创业未半而中道崩殂,今天下三分,益州疲弊,此诚危急存亡之秋也。
然侍卫之臣不懈于内,忠志之士忘身于外者,盖追先帝之殊遇,欲报之于陛下也。
诚宜开张圣听,以光先帝遗德,恢弘志士之气,不宜妄自菲薄,引喻失义,以塞忠谏之路也。
宫中府中,俱为一体;陟罚臧否,不宜异同。
若有作奸犯科及为忠善者,宜付有司论其刑赏,以昭陛下平明之理;不宜偏私,使内外异法也。
侍中、侍郎郭攸之、费祎、董允等,此皆良实,志虑忠纯,是以先帝简拔以遗陛下:愚以为宫中之事,事无大小,悉以咨之,然后施行,必能裨补阙漏,有所广益。
将军向宠,性行淑均,晓畅军事,试用于昔日,先帝称之曰“能”,是以众议举宠为督:愚以为营中之事,悉以咨之,必能使行阵和睦,优劣得所。
亲贤臣,远小人,此先汉所以兴隆也;亲小人,远贤臣,此后汉所以倾颓也。
先帝在时,每与臣论此事,未尝不叹息痛恨于桓、灵也。
侍中、尚书、长史、参军,此悉贞良死节之臣,愿陛下亲之、信之,则汉室之隆,可计日而待也。
臣本布衣,躬耕于南阳,苟全性命于乱世,不求闻达于诸侯。
先帝不以臣卑鄙,猥自枉屈,三顾臣于草庐之中,咨臣以当世之事,由是感激,遂许先帝以驱驰。
后值倾覆,受任于败军之际,奉命于危难之间,尔来二十有一年矣。
先帝知臣谨慎,故临崩寄臣以大事也。
受命以来,夙夜忧叹,恐托付不效,以伤先帝之明;故五月渡泸,深入不毛。
今南方已定,兵甲已足,当奖率三军,北定中原,庶竭驽钝,攘除奸凶,兴复汉室,还于旧都。
此臣所以报先帝而忠陛下之职分也。
至于斟酌损益,进尽忠言,则攸之、祎、允之任也。
愿陛下托臣以讨贼兴复之效,不效,则治臣之罪,以告先帝之灵。
若无兴德之言,则责攸之、祎、允等之慢,以彰其咎;陛下亦宜自谋,以咨诹善道,察纳雅言,深追先帝遗诏。
臣不胜受恩感激。
今当远离,临表涕零,不知所言。