07系统架构师成长之路
软件构架的定义
• Bass, Celments, and Kazman Software Architecture in Practice, Addison-Wesley 2003 – “一个程序或计算系统的软件构架是指该系统的一个 或多个结构,它由软件组件,这些组件的外部可见特 性以及这些元素之间的关系组成。” – 外部可见特性指其他元素对该元素所做的各种假设 – 构架定义了软件元素 – 系统可能而且确实由多个结构组成
从复用层次看技术发展路线
函数/类:1-4年(仅供参考, 如果有人指导,这个时间会 缩短很多) 把重复的代码用一个单独的 单元或者类来归集,形成了 函数/类的方式重用 模块/引擎:5-6年 对工作流引擎、报表引擎等 通用模块进行研究,研究分 析经典开源产品 框架/平台:7-...年 选择一个框架、或平台,开 始研究、思考,一定要结合 发展目标
软件系统架构实践
中国信息化培训中心
课程目录
一、系统架构概述 二、系统架构之三分过程 三、系统架构之四入策略 四、系统架构之六大战术 五、系统架构之案例探究 六、系统架构之评估体系
七、系统架构师成长之路
七、系统架构师成长之路
1、不断学习
2、经历不同阶段 3、对学习的认识 4、软技能 5、理解架构定义 6、理解“架构师” 7、架构发展趋势
软件业务需求入门
why what how
组织或客户的高层次目标 给用户带来的业务价值 实现的软件功能
七、系统架构师成长之路
1、不断学习 2、经历不同阶段
3、对学习的认识
4、软技能 5、理解架构定义 6、理解“架构师” 7、架构发展趋势
知识=基本功
– 设立目标,并制定切实可行的学习计划 – 找到学习的方向 – 从书本获得系统化的知识,懂得如何看书 – 试用优秀的商业、开源软件和工具 – 订阅blog – 写blog,养成总结思考的习惯 – 积极分享,乐于交流 – 能够阅读英文资料和书籍
培养“软区域”的三个步骤: 1. 学会平静的对待生活中的不完美之处,适应自己的情绪,了解如
何让它们自然宣泄出去 2. 学习如何把不完美的地方转换成我们的优势,激发我们的创造力 3. 自我激励,不管外部条件是否有激励性,找到一种激发最佳状态
的情绪,学习如何在我们的意识中制造一些波动来激励我们前进
七、系统架构师成长之路
不断学习
不学习
学和习
� 所谓学习是由“学”和“习”构成。想到学比较容易,然而,运用 起来并非容易-连很多高手都承认并不像想象的那样真正理解
� 架构。掌握任何一项技能且达到 “无人出其左右”的地步,需要 至少10000个小时。习之所以难,因为必须经过大量的实践才能 做到真正理解。人不做事不会遇到问题,如果做事的时候竟 然没有遇到问题 -那不是在做事,那是在做梦。不遇到问题就
七、系统架构师成长之路
1、不断学习 2、经历不同阶段 3、对学习的认识 4、软技能 5、理解架构定义
6、理解“架构师”
7、架构发展趋势
软件架构师的定位
• 系统架构师的职责: • 一、理解系统的业务需求,制定系统的整体框架(包括:技术框架和
业务框架) • 二、对系统框架相关技术和业务进行培训,指导开发人员开发。并解
• 找到抄袭源 • 主题抄袭,
求同存异 • 组合抄袭 • 由抄到偷 • 不断修改
信息系统开发平台OpenExpressApp
如何读好书:读书的四个层次
• 基础阅读: 认图、认字、认句、认文
• 检视阅读: – 粗浅的阅读 – 有系统的略读或粗读
• 分析阅读: – 倾听一本书:找出一本书在谈什么 – 诠释一本书:与作者达成共识 – 评论一本书:形成自己的观点
• 交流、讨论、博弈、质疑 – 对构思中的方案不断提出质疑,避免漏洞 – 广泛听取各层面的意见,开拓思路 – 反复质疑、逐步完善已有的设计构思
• 在动手实现之前验证设计方案的正确性
45
软件架构师的思维方式
• 基于框架的思维 – 架构设计的层次(Enterprise, Application, etc) – IT 的生命周期(What, Why, Where, How, When, etc) – 成功经验以及方法论的指导
软件架构目的
随着人们对软件工程的深刻理解,将架构进行充分的强调 是很自然的,正如人们越来越强调系统的需求分析,从而 有了领域工程师和领域专家的概念一样。其实强调软件架 构的最主要的目的有3个: – 重用:人们希望系统能够重用以前的代码和设计,从而 提高开发效率; – 扩展:人们希望在系统能够保持结构的稳定的前提下很 容易地扩充功能和性能,希望能够“以静制动“ – 简洁:常言道,简洁就是美,好的架构一定易于理解, 易于学习,易于维护,人们希望能够通过一个简洁的架 构来把握系统;
1、不断学习 2、经历不同阶段 3、对学习的认识 4、软技能 5、理解架构定义 6、理解“架构师”
7、架构发展趋势
把软件框架提升到开发平台
软件框架,解决了非技术问题的重用性问题;但是不要让所 有软件功能都开发出来,应该在软件架构中选择一些成品, 让不同的功能选择最合适的开发模式。
软件开发平台的目的就是跟进一步提升软件架构的重用能力, 将多个软件产品整合应用到软件架构中,比如说:流程引擎、 消息引擎、报表引擎、企业服务总线等等。
决系统开发、运行中出现的各种问题。
• 系统架构师的目的: 对系统的重用、扩展、安全、性能、伸缩性、简洁等做系统级的把
握。
• 系统架构师能力要求: 一、系统架构相关的知识和经验。 二、很强的自学能力、分析能力、解决问题的能力。 三、写作、沟通表达、培训。
44
软件架构师在干什么?
• 思考、思考、再思考 – 深入理解、准确把握建设的业务需求 – 分析所有可见的问题、障碍、风险 – 充分参考已有的成功方案,降低风险
• 1-n年(破) • 工作多年(离)
– 在很多情况下将自己定位在一个更高的层次上去看问题,要把自己的视野 拓宽,做事时要回归应有的定位。
时间管理
软件=商业+架构+流程+组织 BAPO
软件产品线工程成熟度(BAPO)
商 业
单项目
架 独立开发 构
过
初始级
程
组 织
项目
有意识
基础设施 可管理级
重用
可管理
守-破-离
创造发展剑招的过程,有守、破、离三阶段。 最初学剑时固须顺从老师所教,把它熟练体会, 变成自己的东西,以后突破老师的教导原则, 招式心法,而如有新的心得,则离开师傅, 创成新招。
宫本武藏 《五轮书》
• 0-1年 (守) – 会用工作中所用的技术 – 掌握工作中所用的技术 – 精通工作中所用的技术
• 方法 – 选择研究重点 先从架构角度 分离关注点,分人或者迭代进行研究重点 – 重点研究选择 对决定后的选择 进行重点研究,从案例、产品、模型、应用等多个角 度去考虑这些重点 – 验证实践选择 考虑如实现和应用这些重点
我是这样偷着做架构的
Bad artists copy; Good artist steal -毕加索
思考
知识+实践+思考=智慧
– 多反思改进,进行个人回顾 – 随时记录脑子思考的内容 – 用图、总结表达思考的结果 – 换位思考,站在别人的角度思考问题 – 思考本质内容,锻炼抽象思维能力
心态
知识+实践+思考+心态=学习
– 主动的、快乐的、有价值的、终身学习 – 乐于接受新东西并勇于尝试、乐于分享 – 学习工作化、工作学习化 – 问题提出只是第一步,解决问题更为重要 – 贵在坚持,生命不息学习不止 – 追求卓越,严格要求自己,不满足现状 – 空杯心态
七、系统架构师成长之路
1、不断学习 2、经历不同阶段 3、对学习的认识
4、软技能
5、理解架构定义 6、理解“架构师” 7、架构发展趋势
技术研究之道
• 学习 – 为什么要学习(why) 学历代表过去,经验代表现在,学习能力代表未来 – 学什么(what) 学以致用 – 怎么学(How) 高胖高(先深度再广度,再深度,依次螺旋)。只要认定what是好的 ,可以通过主动、被动、强迫三种方式去学习。
七、系统架构师成长之路
1、不断学习
2、经历不同阶段
3、对学习的认识 4、软技能 5、理解架构定义 6、理解“架构师” 7、架构发展趋势
◇软件架构师-- 名人堂
◇软件架构师——成长路线
架构师能力模型
� 2005年澳大利亚墨尔本著名教授Keith Frampton发表论文
�专业技术技能 �商业经验 �沟通技能 �平衡决策能力 �多任务处理能力 �规划能力 �驱动能力
1、不断学习 2、经历不同阶段 3、对学习的认识 4、软技能
5架构一词是舶来品,是architecture的中文翻译,其英文的本意是来 源于建筑行业的建筑艺术、建筑(风格)和结构,引入到软件领域 里面来以后,并没有一个统一的定义。有的人将架构定义为:功能 +设计+构造手段,我们可以通俗的理解为:总体设计和总体结构 。(组件+交互)
�
没有解决问题的机会,也就没有机会成长。
Malcolm Gladwell 心理学家
内容
经历的不同阶段 个人的一些工作方式和心得 内容较多,不能全部细讲,会推荐一些书籍
尽量不涉及具体技术 更多的关注软技能的一些心得
每个人方法都不一样,选择适合自己的 内容没有病毒,就算没帮助也不会误人子弟
知识
–给自己找一个师傅
– 不一味学习技术语言,要关注思想 – 把自己放在没有退路,强制自己学习 – 不浮躁,广度和深度上平衡发展 – 对复杂系统的分析、抽象和建模是开发人员
的核心技能
实践
知识+实践=技能
– 一次只做一件事情 – 将学习成果应用在实际工作中 – 停止空谈,开始行动 – 战胜拖拉,现在就做 – 要善于发现问题本质 ,并敢于解决问题 – 能够自己写一个框架,或者参与开源工具开发 – 及时求助 – 关注团队问题,及时沟通