`

软件架构师的职责

 
阅读更多
架构师的职责
架构师需要参与项目开发的全部过程,包括需求分析、架构设计、系统实现、集成、测试和部署各个阶段,负责在整个项目中对技术活动和技术说明进行指导和协调。
架构师主要职责有4条:
1、确认需求
    在项目开发过程中,架构师是在需求规格说明书完成后介入的,需求规格说明书必须得到架构师的认可。架构师需要和分析人员反复交流,以保证自己完整并准确地理解用户需求。
2、系统分解
    依据用户需求,架构师将系统整体分解为更小的子系统和组件,从而形成不同的逻辑层或服务。随后,架构师会确定各层的接口,层与层相互之间的关系。架构师不仅要对整个系统分层,进行“纵向”分解,还要对同一逻辑层分块,进行“横向”分解。
    软件架构师的功力基本体现于此,这是一项相对复杂的工作。
3、技术选型
    架构师通过对系统的一系列的分解,最终形成了软件的整体架构。技术选择主要取决于软件架构。
Web Server运行在Windows上还是Linux上?数据库采用MSSql、Oracle还是Mysql?需要不需要采用MVC或者Spring等轻量级的框架?前端采用富客户端还是瘦客户端方式?类似的工作,都需要在这个阶段提出,并进行评估。
架构师对产品和技术的选型仅仅限于评估,没有决定权,最终的决定权归项目经理。架构师提出的技术方案为项目经理提供了重要的参考信息,项目经理会从项目预算、人力资源、时间进度等实际情况进行权衡,最终进行确认。
4、制定技术规格说明
    架构师在项目开发过程中,是技术权威。他需要协调所有的开发人员,与开发人员一直保持沟通,始终保证开发者依照它的架构意图去实现各项功能。
    架构师与开发者沟通的最重要的形式是技术规格说明书,它可以是UML视图、Word文档,Visio文件等各种表现形式。通过架构师提供的技术规格说明书,保证开发者可以从不同角度去观察、理解各自承担的子系统或者模块。
架构师不仅要保持与开发者的沟通,也需要与项目经理、需求分析员,甚至与最终用户保持沟通。所以,对于架构师来讲,不仅有技术方面的要求,还有人际交流方面的要求。
3.3 架构师的误区
1、架构师就是项目经理
    架构师不是项目经理。项目经理侧重于预算控制、时间进度控制、人员管理、与外部联系和协调等等工作,具备管理职能。一般小型项目中,常见项目经理兼架构师。
2、架构师负责需求分析
    架构师不是需求分析员。需求分析人员的工作是收集需求和分析需求,并与最终用户、产品经理保持联系。架构师只对最终的需求审核和确认,提出需求不清和不完整的部分,他会跟需求分析员时刻保持联系。架构师是技术专家,不是业务专家。

3、架构师从来不写代码
    这是一个尚存争论的问题。目前有两种观点:
观点1:架构师不写代码,写代码纯体力活,架构师写代码大材小用。架构师把UML的各种视图交给开发人员,如果有不明确的地方,可以与架构师随时沟通。
观点2:架构师本来自于程序员,只是比程序员站的层面更高,比程序员唯一多的是经验和知识,所以架构师也免不了写代码。
    我个人觉得这两种说法是与架构师的出身和所处的环境有关。
    架构师首先是一个技术角色,所以一定是来自于技术人员这个群体,比如系统架构师,多是来自于运维人员,可能本身代码写得并不多,或者说写不出来很漂亮的代码。软件架构师多是来自于程序员,有着程序员的血统和情怀,所以在项目开发过程中,可能会写一些核心代码。我们的理想是架构师不用写代码,但事实上有时候过于理想。架构师写不写代码,可能取决于公司的规模、文化、开发人员的素质等现实情况。另外,架构师也不是跟程序员界限分得那么清楚,按照能力也有高中低之分,写不写代码不是区分两者的根本标准。
3.4 架构师的基本素质
周星驰有个片子《喜剧之王》,剧中的尹天仇整天揣着本《演员的自我修养》,一个好演员不仅需要天赋,也需要一定的理论指导,无师自通的人毕竟是少数。架构师的成长过程也是这样。从普通程序员到高级程序员,再到架构师,是一个经验积累和思想升华的过程。经验积累是一个方面,素质培养是另一个方面,两者相辅相成,所以我觉得有必要把架构师的所要具备的素质罗列一下,作为程序员努力的方向。
1、沟通能力
    为了提高效率,架构师必须赢得团队成员、项目经理、客户或用户认同,这就需要架构师具有较强的沟通能力。沟通能力是人类最普遍性的素质要求,技术人员好像容易忽略,想成为架构师就不能忽略。千万不要抱着这样的观念:怀才跟怀孕似的,时间久了总会被人发现的。还是天桥上卖大力丸的哥们说得对:光说不练假把式,光练不说傻把式。看看你周围的头头脑脑们,哪一个不是此中高手,我们千万不要鄙视,认为这是阿谀奉承、投机钻营,凡事都要看到积极的一面,“沟通”的确是一种能力。我认为自己是一个略内向的人,因为我是农村出来的孩子,普通话都说不好,以前或多或少带有点自卑感,幻想着是金子总会发光,所以在职业生涯中吃了不少亏。现在,我深深懂得了沟通的重要性,我会很主动地跟同事们,跟老大们不定时地沟通,感觉工作起来顺畅多了。
    这一条我认为最为重要,所以排在首位。我甚至认为下面几条都可以忽略,唯一这一条得牢记,而且要常常提醒自己。
2、领导能力
      架构师能够推动整个团队的技术进展,能在压力下作出关键性的决策,并将其贯彻到底。架构师如何来保证这种执行力?这就需要架构师具有领导能力。
    架构师的领导能力的取得跟项目经理不太一样。项目经理主要负责解决行政管理,这种能力与技术关系不大,他有人权和财权,再扯上一张“领导”的虎皮,采用“胡萝卜加大棒”的方式,基本上可以保证执行力。架构师在项目里面可能更多地使用非正式的领导力,也就是我们常说的影响力,里面包括个人魅力、技术能力、知识传递等等。
3、抽象思维和分析能力
    架构师必须具备抽象思维和分析的能力,这是你进行系统分析和系统分解的基本素质。只有具备这样的能力,架构师才能看清系统的整体,掌控全局,这也是架构师大局观的形成基础。你如何具备这种能力呢?一是来自于经验,二是来自于学习。架构师不仅要具备在问题领域上的经验,也需要具备在软件工程领域内的经验。也就是说,架构师必须能够准确得理解需求,然后用软件工程的思想,把需求转化和分解成可用计算机语言实现的程度。经验的积累是需要一个时间过程的,这个过程谁也帮不了你,是需要你去经历的。但是,如果你有意识地去培养,不断吸取前人的经验的话,还是可以缩短这个周期的。这也是我写作此系列的始动力之一。
4、技术深度和广度
   架构师最好精通1-2个技术,具备这种技术能力可以更加深入的理解有关架构的工作原理,也可以拉近和开发人员的距离,并形成团队中的影响力。
   架构师的技术知识广度也很重要,需要了解尽可能多的技术,所谓见多识广,只有这样,才可能综合各种技术,选择更加适合项目的解决方案。有的人说,架构师技术广度的要求高于技术深度的要求,这是很有道理的。
总而言之,一句话:架构师是项目团队中的技术权威。

面向过程和面向对象这两个基本概念,不仅架构师需要非常清楚,程序员、设计师也要非常清楚,这也是系统分析、设计和编码最基本的常识。我接触的程序员,很多人只停留在一种“似是而非”的程度,这是不行的,想要继续前进,就得把基础夯实,所以我觉得很有必要先回回炉,补补课。
分享到:
评论

相关推荐

    软件架构师教程,系统架构师讲义

    《软件架构师教程》是一本全面且深入的指南,旨在帮助读者掌握软件架构设计的核心概念、原则和实践。作为系统架构师考试的重要参考资料,这本书涵盖了高级软件架构师所需的知识点,同时也是系统分析师提升专业能力的...

    软件架构师工作的职责.pdf

    以下是基于给出的文件内容,对软件架构师职责和任职资格的详细解释: 1. **职责解析**: - **需求理解和业务分析**:软件架构师需深入理解客户需求,将业务需求转化为可行的技术解决方案。 - **架构设计**:在...

    软件架构师工作的职责.docx

    以下是基于给出的文件内容,对软件架构师职责和任职资格的详细解释: 1. **职责:** - **需求理解和架构设计**:软件架构师需要深入理解客户业务需求,根据这些需求制定应用或产品的架构设计。他们需要与客户沟通...

    架构师的职责

    软件架构——架构师的职责 一、架构师定义 架构师负责设计系统整体架构,从需求到设计的每个细节都要考虑到,把握整个项目,使设计的项目尽量效率高,开发容易,维护方便,升级简单。架构师的主要责任是提供开发...

    高级软件架构师培训讲义

    《高级软件架构师培训讲义》是一份针对高级软件架构师的专业学习资料,涵盖了软件架构设计的多个核心领域。这份讲义旨在提升架构师的设计能力,帮助他们更好地理解和实施复杂的软件项目。 首先,讲义从“架构师与...

    软件架构师职业解读

    在"软件架构师职业导读"这份资料中,可能会涵盖这些方面的基础知识和实践技巧,帮助初学者或有意从事这一职业的人更好地理解软件架构师的角色和职责,提供明确的职业发展指导。通过深入学习和实践,你可以逐步成为一...

    软件架构和架构师

    - **职责**: 软件架构师在整个软件开发过程中扮演着关键角色,他们的职责包括但不限于: - 确定软件架构的整体框架。 - 定义软件组件及其交互机制。 - 确保软件架构符合业务需求和技术目标。 - 指导开发团队遵循...

    做一回软件架构师

    在IT行业中,软件架构师是一个至关重要的角色,他们负责规划、设计和指导软件系统的构建,确保系统的可扩展性、稳定性、可维护性和性能。本文将深入探讨“做一回软件架构师”这一主题,旨在帮助读者理解软件架构设计...

    软件金领架构师

    软件金领架构师是软件工程领域中的核心职位,它不仅要求架构师拥有深厚的技术功底,还...软件架构师是软件项目成功的关键角色,他们不仅需要具备深厚的技术功底,更需要不断学习和适应新环境,以适应快速变化的IT行业。

    软件架构师教程

    《软件架构师教程》是一份全面且深入的学习资源,旨在帮助读者掌握软件架构设计的核心理念与实践技巧。作为软件开发中的关键角色,软件架构师负责规划、设计和指导软件系统的构建,确保系统的可扩展性、可维护性和高...

    软件架构师的12项修炼.docx

    软件架构师的角色与职责包括制定软件系统的整体结构和技术实现方案,制定项目计划和技术方案,与项目经理、系统分析师、软件工程师、测试工程师等多个团队成员紧密合作,确保软件系统的质量和性能达到预期目标。...

    软件架构师培训课程全套讲义

    《软件架构师培训课程全套讲义》是一份深入且全面的教育资源,专为那些渴望提升自身在软件架构设计领域技能的人士所准备。这个讲义涵盖了软件架构的各个方面,旨在帮助学习者理解并掌握作为软件架构师所需的关键知识...

    软件架构师入门教程,成功架构你的软件

    作为软件开发领域的关键角色,软件架构师承担着设计和指导软件系统整体结构的重要职责。本教程旨在帮助初级软件工程师掌握软件架构的基础知识,逐步提升到架构师的水平。软件架构是软件开发过程中的核心环节,它决定...

    软件架构师的工作职责.docx

    软件架构师的工作职责 软件架构师是软件开发过程中的核心成员,他们需要参与基础框架的架构设计、重构、优化,根据业务规划及技术规划制定应用架构方案。软件架构师的工作职责可以分为四个方面: 1. 软件架构设计...

    软件架构师考试历年真题2014-17年

    首先,我们要理解软件架构师的角色和职责。软件架构师是负责设计和规划软件系统整体结构的专业人士,他们需要具备深厚的编程基础,对各种软件开发模型和框架有深入的理解,同时还需要具备良好的项目管理能力,能够...

    2022软件架构师工作职责.docx

    在2022年的背景下,随着互联网技术的飞速发展,软件架构师的工作职责变得更加复杂且多元化。 首先,软件架构师需要参与基础框架的架构设计。这包括选择合适的架构风格,如微服务、SOA(面向服务的架构)或事件驱动...

Global site tag (gtag.js) - Google Analytics