写点什么

架构师实现架构目标的主要手段(第 2 周学习总结)

用户头像
李德政
关注
发布于: 2020 年 06 月 17 日
架构师实现架构目标的主要手段(第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. 推荐书:《敏捷软件开发——原则、模式与实践》

  • 想要敏捷开发,首选需要有敏捷设计

  • 优秀的程序员:应该是欢迎需求变更的,架构设计就是为了需求变更而设计的。当需求发生变更的时候,才能发挥设计的用途。



发布于: 2020 年 06 月 17 日阅读数: 56
用户头像

李德政

关注

还未添加个人签名 2017.11.30 加入

还未添加个人简介

评论

发布
暂无评论
架构师实现架构目标的主要手段(第2周学习总结)