架构师实现架构目标的主要手段(第 2 周学习总结)
1.如何破局?
主动提出架构问题,承担架构工作。
尝试编写架构方案,让高手进行方案评审,持续改进。
超越现状:从更高的维度思考
架构师:要成为团队中技术最好的人。
让别的程序员依赖你写的代码,编写基础的代码,demo等。
架构师技术一定要过硬,给别人提供基础性代码、服务,能解决别人解决不了的难题。
把握好工作节奏,不能被其他人乱推动,就要求你能考虑的更长远,想清楚。
UML关键点:能表达出来想法,能让相关者理解设计意图。
架构文档一般结构:
背景
功能和用途说明
流程图设计文档
类图设计文档等
关键内容说明等
2. 软件开发简史:从编程的历史看编程的本质和未来
莱布尼兹期望将各种事物通过一种逻辑语言进行描述,然后用一种可执行演算规则的机器进行计算,就可以计算出事物的各种结果。
编程的目的是:用计算机来解决现实世界的问题
编程的过程即:在计算机所能理解的“模型(解空间)”和现实世界(问题空间)之间,建立一种联系。
编程语言是一种“抽象”机制,问题是对“谁”来抽象;
一般过程:领域问题(分析抽象)-->模型(设计、抽象)-->软件系统
编程的核心要素:人(劳动者),客观业务领域(劳动对象),计算机(劳动工具)
3. 面向对象编程和面向对象分析
Booch对对象的描述:对象具有状态、行为和标识。
状态:表明每个对象可以有自己的数据
行为:表明每个对象可以产生行为
标识:表明每个对象都区别于其他的对象(唯一的地址)
面向对象编程不是使用面向对象的编程语言进行编程,而是利用多态特性进行编程。
面向对象分析是将客观世界,即编程的业务领域进行对象分析
充血模型和贫血模型
领域驱动设计DDD
4. 框架(frameworks)
框架是用来实现某一类应用的结构性程序,是对某一类架构方案可复用的设计与实现。
如同框架结构的大厦框架
简化应用开发者的工作
实现了多种设计模式,使应用开发者不需要花太大的力气,就能设计出结构良好的程序来
不用领域的框架:
微软公司的MFC框架
Java的GUI AWT框架
开源的框架MyBatis,Spring
Web服务器:Tomcat等
框架 VS 工具
框架调用应用程序代码 VS 应用程序代码调用工具
架构师用框架保证架构的落地(架构选型等)VS 架构师用工具提高开发效率
5. 软件设计的“臭味”
软件设计的最终目的,是使软件达到“强内聚,松耦合”
易扩展
更强壮
可移植
更简单
与之相反,一个“不好”的软件,会发出如下“臭味”
僵硬
脆弱
不可移植
导致误用的陷阱
晦涩
过度设计,copy-paste代码
架构师要清楚设计原则和设计模式,设计出模块划分清楚的系统
6. 面向对象设计
原则一:开闭原则(OCP)
原则二:依赖倒置原则(DIP)
什么是依赖倒置?
- 模块或包的依赖关系
- 开发顺序和职责
好莱坞原则: Don't call me, I'll call you.
倒转的层次依赖关系: 你不要去调用框架,框架回去调用你
原则三:Liskov替换原则(LSP)
凡是使用父类的地方,一定可以用子类替换
原则四:单一职责原则(SRP)
原则五:接口隔离原则
7. 推荐书:《敏捷软件开发——原则、模式与实践》
想要敏捷开发,首选需要有敏捷设计
优秀的程序员:应该是欢迎需求变更的,架构设计就是为了需求变更而设计的。当需求发生变更的时候,才能发挥设计的用途。
版权声明: 本文为 InfoQ 作者【李德政】的原创文章。
原文链接:【http://xie.infoq.cn/article/d34801f5850a29660a5290a5b】。文章转载请联系作者。
评论