主要是管理与技术两方面的能力,管理与技术两手都要硬,而技术是基础。技术不行、退化了,那只好做 PPT 架构师、首席布道师之类的。
技术能力
软件架构师是一位具有一定技术、产品、项目和团队等管理能力的高级程序员(编程高手),通常是一个开发团队里面技术最牛(或者比较牛)的少数几个人之一。架构师自身的技术水平和管理水平不行,常常会把团队带沟里,重要性可想而知。
成为架构师需要较长时间的一线开发经验的积累。单纯看工作年限,一般 3-5 年可成为初级架构师,5-8 年可成为中级架构师,8-10 年以上可成为高级软件架构师,当然这只是大致的估计,具体达到何种水平还要看架构师的实际能力。
经年累月,摸爬滚打,一位优秀的软件架构师需要掌握的技术能力很多,先说几个最基本的。
建模
软件开发领域的建模能力,主要是指抽象的思考能力。
普通码农通常用代码思考,负责一个系统中的几个小模块,所以思维常常局限在低层(low-level)、战术(tactic)的层面,考虑的基本上大多是某个功能、某个模块实现的具体细节与技巧。这是应该而且正常的,是团队合理分工的结果。
而架构师,顾名思义,要负责整个系统的架构,尤其是涉及到一个系统(或子系统)全局的整体设计,所以往往需要高层、上层(high-level)的战略(strategic)层面的思考,这样就必然需要架构师经常进行建模(Modeling),对代码、模块、子系统和系统中的各种静态结构、关系和动态行为、交互等等进行抽象。所以,在架构师的日常工作中,经常看到各种各样的图表、图形符号和模型,是很正常的。
可以说,不会建模,不习惯于用模型思考的程序员,是很难成为一名称职的软件架构师的。这里不得不推荐一下动力节点,他们的教学方式和其他机构截然不同:
这里以全栈教学为主,精通前段后端,程序设计思想,并且培养真实企业项目开发经验
系统分析与设计
前面已经说了,系统分析与设计(System Analysis and Design)的主要技术手段是建模,两者是高度重合的。
编程的四门功课
上图画的是任何软件开发、软件工程必然离不开的四门基本功课(四项基本活动或任务):
1、需求分析
2、设计实现
3、测试验证
4、调试纠错
把这四项活动连起来正好组成一个菱形,所以我也把它们叫作“编程之钻”(The Programming Diamond)。
这四门功课既可以看作是一个团队在整个项目开发过程中所连续从事的必不可少的四项基本活动(团队层面),也可以看作是一名程序员在日常开发中为了实现一个需求而需要完成的必不可少的四项基本任务(个体层面)。
从一个功能的需求分析,到程序设计、编码实现,再到测试确认这个功能的完成,以及发现错误后进行调试定位、代码修改、设计重构或优化,再次进行测试和确认,通过后再选择下一个需求进行分析,如此周而复始。。。这四个基本动作正好构成一个功能开发的小循环,也是每个程序员日常工作的标准核心动作。
那么,为什么普通码农的开发不如编程高手,总是比别人慢,往往也不如别人的好?可能有许多种原因。有一个比较简单的办法能帮你找到开发的瓶颈:评估一下以上这四项任务在你的日常开发中的时间占比。
我这 20 年的观察是,国内许多码农的开发效率低、质量不高,是因为他们往往在 Coding、Debugging 上花去了大量时间(人称 code-and-fix),而在“编程之钻”的需求分析、自动测试、架构设计等其他几个重要方面往往草草带过,占比明显不平衡。
什么原因?因为许多人不知道怎么有效率、高质量地去做需求分析、自动测试、架构设计以及调试除错,以为只有 Coding(编程语言的语法技巧和框架 API 如何使用等)最重要,忽视了其他的软件工程关键实践,于是导致个人整体的开发速度和质量降低,老是提不上去。
而这又是什么原因造成的?因为一方面“软件工程无用论”长期存在,加上浮躁和急功近利的社会风气,影响了人们的观念和意识,导致追求短平快、糙快猛;而另一方面仅通过大学短短的四年,常常很难全面、扎实地学到并掌握“编程之钻”的关键技术,而工作以后又常常忙于加班应付、各种赶工期,缺少足够的时间来学习提高自己的开发水平。
用什么工具画 软件架构设计图
UIDesigner是腾讯用户研究与体验设计部(CDC)设计研发的一款设计类软件,打造一款可以让设计师统一平台和团队协作的平台型设计工具,经过1.0和2.0版本的经验沉淀,我们决定对3.0版本进行全新的架构设计。
开发一个软件系统,前期的架构设计承载着整个软件的设计思想和关键决策,可以说是重中之重。
根据软件架构设计思想,关注分割和交互,好的架构必须使每个关注点相互分离。我们进行了最基本的需求分析,得出两个关注点:一是工具,二是设计绘图,关系如图1所示。
得到最基本的两个关注点后,接着将提取关键需求(包括:关键功能需求、关键质量需求和关键商业需求),根据两个关注点进行架构的细化设计。
一、关注点——工具
这里我们结合UIDesigner的实际需求,提取出属于“工具”范畴的关键功能需求、关键质量需求和关键商业需求。
首先,“工具”的关键功能需求,必须包括:磁盘文件读写、异常捕捉、日志记录、安全性管理;非工具所必须,但是UIDesigner本身所要求的,包括:配置管理、缓存管理、线程服务、服务器和客户端通讯管理、国际化服务。
其次,“工具”的关键质量需求,质量需求包括开发期质量需求和运行期质量需求两部分,经过分析和权衡,UIDesigner的性能主要取决于设计绘图,而稳定性、可扩展性和可维护性才是决定“工具”本身发展的质量需求,因此,对“工具”的质量需求设计将以稳定性、可扩展性和可维护性为主。
最后,“工具”的关键商业需求,因为UIDesigner本身并没有很复杂的业务需求,因此关键商业需求是在设计流程的优化和规范上得到体现,这方面的设计已经属于高层模块和使用流程的设计,对架构的影响非常小,可以暂时性的忽略。
经过关键需求的提取,我们得到了“工具”的设计目标——可以提供通用功能(关键功能需求)的高稳定性、扩展性和维护性的客户端应用。根据此目标,我们采取了DI(Dependency-Injection)和MVP(Model-View-Presenter)结合的架构,概念架构设计如图2所示。
系统架构设计师:软件系统工具有哪些
首先架构师应该有个深厚的编码基础,然后应该熟悉设计模式,用最有效的代码和软件结构实现软件需求。有经验的程序员才会成为优秀的架构师。同时还要掌握把需求分块的能力,培养抽像事物的能力,掌握数据库设计的能力。你也可以通过参加希赛系统架构设计师考试,来具体了解系统架构设计师。
系统架构师的入门知识和教材有哪些?
系统架构师是一个最终确认和评估系统需求,给出开发规范,搭建系统实现的核心构架,并澄清技术细节、扫清主要难点的技术人员。主要着眼于系统的“技术实现”。因此他/她应该是特定的开发平台、语言、工具的大师,对常见应用场景能马上给出最恰当的解决方案,同时要对所属的开发团队有足够的了解,能够评估自己的团队实现特定的功能需求需要的代价。
系统架构师负责设计系统整体架构,从需求到设计的每个细节都要考虑到,把握整个项目,使设计的项目尽量效率高,开发容易,维护方便,升级简单等。
软件系统架构师综合的知识能力包括9个方面,即:
1、战略规划能力。
2、业务流程建模能力。
3、信息数据结构能力。
4、技术架构选择和实现能力。
5、应用系统架构的解决和实现能力。
6、基础IT知识及基础设施、资源调配能力。
7、信息安全技术支持与管理保障能力。
8、IT审计、治理与基本需求分析、获取能力。
9、面向软件系统可靠性与系统生命周期的质量保障服务能力。
软件架构师介绍
软件架构师是软件行业中一种新兴职业,工作职责是在一个软件项目开发过程中,将客户的需求转换为规范的开发计划及文本,并制定这个项目的总体架构,指导整个开发团队完成这个计划。主导系统全局分析设计和实施、负责软件构架和关键技术决策的人员
在技术全面、成熟练达、洞察力强、经验丰富,具备在缺乏完整信息、众多问题交织一团、模糊和矛盾的情况下,软件架构师能迅速抓住问题要害,并做出合理的关键决定的能力 l、具备战略性和前瞻性思维能力,善于把握全局,能够在更高抽象级别上进行思考; 主要包括如下: 1、对项目开发涉及的所有问题领域都有经验,包括彻底地理解项目需求,开展分析设计之类软件工程活动等
2、具备领导素质,以在各小组之间推进技术工作,并在项目压力下做出牢靠的关键决策
3、拥有优秀的沟通能力,用以进行说服、鼓励和指导等活动,并赢得项目成员的信任;
4、以目标导向和主动的方式来不带任何感情色彩地关注项目结果,构架师应当是项目背后的技术推动力,而非构想者或梦想家(追求完美)
5、精通构架设计的理论、实践和工具,并掌握多种参考构架、主要的可重用构架机制和模式(例如J2EE架构等);
6、具备系统设计员的所有技能,但涉及面更广、抽象级别更高; 活动确定用例或需求的优先级、进行构架分析、创建构架的概念验证原型、评估构架的概念验证原型的可行性、组织系统实施模型、描述系统分布结构、描述运行时刻构架、确定设计机制、确定设计元素、合并已有设计元素、构架文档、参考构架、分析模型、设计模型、实施模型、部署模型、构架概念验证原型、接口、事件、信号与协议等。
架构师的主要任务不是从事具体的软件程序的编写,而是从事更高层次的开发构架工作。他必须对开发技术非常了
解,并且需要有良好的组织管理能力。可以这样说,一个架构师工作的好坏决定了整个软件开发项目的成败。
l、领导与协调整个项目中的技术活动(分析、设计和实施等)
2、推动主要的技术决策,并最终表达为软件构架
3、确定和文档化系统的相对构架而言意义重大的方面,包括系统的需求、设计、实施和部署等“视图”
4、确定设计元素的分组以及这些主要分组之间的接口
5、为技术决策提供规则,平衡各类涉众的不同关注点,化解技术风险,并保证相关决定被有效的传达和贯彻
6、理解、评价并接收系统需求
7、评价和确认软件架构的实现 专业技能
软件构架师是技术主管,这意味着除了他要有技术上的技能外,还要有很好的领导才能。构架师的领导能力在团队中和项目质量控制中起着十分重要的作用。
在团队中,构架师是项目的技术总管,他需要有丰富的知识背景,以便作出技术上的决定。相对于构架师来说,项目经理是来管理项目的资源,时间进度和花费的。使用电影制作来做类比的话,项目经理就是制片人(他要确定工作被完成了),而构架师是导演(他需要确定工作被正确的完成)。
软件架构师的必备技能
软件架构在软件项目中的价值,软件架构师在项目管理团队中的定位;
软件架构的发展方向和未来趋势;
平台;
架构与系统的关系,平台与应用的分离;
软件工厂;
面向对象设计的重新解读;
类设计的原则(开闭原则、依赖倒置原则、替换原则、单一职责原则、接口分隔原则、组合复用原则、所知最少原则);
包设计的原则(包内聚和包耦合);
面向对象设计原则与GRASP架构模式;
(1)开发组织架构框架(TOGAF)
(2)架构开发方法(ADM)
(3)模型驱动架构(MDA)
(4)基于用例面向方面软件架构设计(AOSD)
架构设计的原则(可维护性、可扩展性、可重用性、互操作性等);
组件(Component)的设计;
封装(encapsulation)、抽象(abstraction)和委派(delegation)的原则;
应用设计模式来实现好的结构;
设计模式的本质论;
分析创建型模式:单例模式、抽象工厂模式;
分析结构型模式:桥梁模式、装饰模式、适配器模式、代理模式、合成模式;
分析行为型模式:命令模式、观察者模式、状态模式、策略模式、模板方法模式、访问者模式;
设计模式的综合应用;
AOP与OOAD, GOF设计模式关系
案例分析
失败案例的失败原因剖析;
媒体屏、爬虫、编辑器、文件解析器
需求建模(域建模,用例建模)
业务建模
架构建模
应用建模
数据库建模
测试建模
利用UML进行XML建模
电子商务站点的分析设计
软件架构涉及12种服务模式;
中间件的设计
分析SAP的中间件设计思想
分析国内中间件研发状况
MVC模型;
表现层框架设计
(表现层中UIP设计思想、表现层动态生成设计思想、表现层的模块通讯设计思想);
中间层架构设计
(业务逻辑层组件设计、业务逻辑层工作流设计、服务界面设计、业务逻辑层实体设计、Web服务应用场景、业务逻辑层框架);
数据访问层设计(持久层架构设计)
5种数据访问模式、数据访问层组件设计、工厂模式在数据访问层应用、ORM、Hibernate与CMP2.0设计思想、灵活运用Xml Schema、事务处理设计、连接对象管理设计; XML设计、数据架构规划与数据库设计;
企业集成框架设计
(1)解决方案、数据集成、应用(接口)集成及应用服务
(2)EAI参考模型:业务模式、概念模式、逻辑模式、物理模式和实现模式
(3)如何设计企业应用系统集成
(4)深层剖析Web Services
(5)分析微软CRM软件的集成策略;
医疗信息集成系统架构设计;
国内常见的开发团队组织架构分析;
软件生命周期进程模型介绍(【RUP与XP】【Agile与CMMI】【MSF】);
合同、需求、潜在风险、社会因素、法律法规行政因素、管理因素、时间因素、开发力量因素、钱相关因素、延期风险、交付因素、返工因素、等等
风险分类和风险关联性分析;
风险控制手段;
(1)软件的质量建模
(2)评估软件架构质量的价值
(3)怎样改变软件架构的质量
(4)如何评价软件架构
(5)评估软件构架师的能力
(以实际项目案例为背景)
(1)两个千万级行业项目的系统架构设计分析
(2)企业门户站点架构设计
这个是网上截的架构师课程 对比一下 看看有什么不会的 赶紧去学
我想做一名系统架构师。拿到哪些证比较好呢?
系统架构师是一个最终确认和评估系统需求,给出开发规范,搭建系统实现的核心构架,并澄清技术细节、扫清主要难点的技术人员。主要着眼于系统的“技术实现”。因此他/她应该是特定的开发平台、语言、工具的大师,对常见应用场景能马上给出最恰当的解决方案,同时要对所属的开发团队有足够的了解,能够评估自己的团队实现特定的功能需求需要的代价。 系统架构师负责设计系统整体架构,从需求到设计的每个细节都要考虑到,把握整个项目,使设计的项目尽量效率高,开发容易,维护方便,升级简单等。
软件系统架构师综合的知识能力包括9个方面,即:
1、战略规划能力。
2、业务流程建模能力。
3、信息数据结构能力。
4、技术架构选择和实现能力。
5、应用系统架构的解决和实现能力。
6、基础IT知识及基础设施、资源调配能力。
7、信息安全技术支持与管理保障能力。
8、IT审计、治理与基本需求分析、获取能力。
9、面向软件系统可靠性与系统生命周期的质量保障服务能力。
作为系统架构师,必须成为所在开发团队的技术路线指导者;具有很强的系统思维的能力;需要从大量互相冲突的系统方法和工具中区分出哪些是有效的,哪些是无效的。架构师应当是一个成熟的、丰富的、有经验的、有良好教育的、学习快捷、善沟通和决策能力强的人。丰富是指他必须具有业务领域方面的工作知识,知识来源于经验或者教育。他必须广泛了解各种技术并精通一种特定技术,至少了解计算机通用技术以便确定那种技术最优,或组织团队开展技术评估。优秀的架构师能考虑并评估所有可用来解决问题的总体技术方案。需要良好的书面和口头沟通技巧,一般通过可视化模型和小组讨论来沟通指导团队确保开发人员按照架构建造系统。
如何把自己培养成为一名系统软件架构师?!
在技术全面、成熟练达、洞察力强、经验丰富,具备在缺乏完整信息、众多问题交织一团、模糊和矛盾的情况下,软件架构师能迅速抓住问题要害,并做出合理的关键决定的能力 l、具备战略性和前瞻性思维能力,善于把握全局,能够在更高抽象级别上进行思考。主要包括如下:
⒈对项目开发涉及的所有问题领域都有经验,包括彻底地理解项目需求,开展分析设计之类软件工程活动等
⒉具备领导素质,以在各小组之间推进技术工作,并在项目压力下做出牢靠的关键决策;
⒊拥有优秀的沟通能力,用以进行说服、鼓励和指导等活动,并赢得项目成员的信任;
⒋以目标导向和主动的方式来不带任何感情色彩地关注项目结果,构架师应当是项目背后的技术推动力,而非构想者或梦想家(追求完美);
⒌精通构架设计的理论、实践和工具,并掌握多种参考构架、主要的可重用构架机制和模式(例如J2EE架构等);
⒍具备系统设计员的所有技能,但涉及面更广、抽象级别更高; 活动确定用例或需求的优先级、进行构架分析、创建构架的概念验证原型、评估构架的概念验证原型的可行性、组织系统实施模型、描述系统分布结构、描述运行时刻构架、确定设计机制、确定设计元素、合并已有设计元素、构架文档、参考构架、分析模型、设计模型、实施模型、部署模型、构架概念验证原型、接口、事件、信号与协议等。
网上的,你看一下,你自己能做到其中多少???更多
如何才能达到这样的标准呢?
你现在能做什么?你的能力如何?如果这个是长远目标,你要一步一步分解目标,定期检查自己的目标达成情况,然后再一步一步继续去做,不要想着一下子能做到。
有没有具体系统的东东?比如要看哪些书?要会哪些框架?要会哪些负载均衡?
转载请注明出处51数据库 » 软件架构师工具 软件架构师主要是做什么啊
沈阳的大叔



