《软件工程之美》材料地址:https://time.geekbang.org/column/article/90508
为什么软件项目需要架构设计?
一、 复杂软件项目的两个特点
- 需求不确定(参见需求分析部分的讲义)
- 技术复杂
(1)需求让技术复杂
(2)人员会让技术变复杂
(3)技术本身也是复杂的
(4)要让软件稳定运行是复杂的
二、架构设计解决技术复杂性问题
- 架构设计可以降低满足需求和需求变化的开发成本。
架构设计通过对系统抽象和分解,把复杂系统拆分成若干简单的。比如分层架构,将UI界面和业务逻辑分离。 - 架构设计可以帮助组织人员一起高效协作。
系统分拆后,开发人员可以各自独立完成功能模块,最后通过约定好的接口协议集成。 - 架构设计可以帮助组织好各种技术。
用合适的编程语言和协议,把框架、技术组件、数据库等技术或者工具有效的组织起来。 - 架构设计可以保障服务稳定运行。
架构设计,就是通过组织人员和技术,低成本满足需求以及需求的变化,保障软件稳定高效运行。
什么是架构设计
- 架构设计的目标,是用最小的人力成本来满足需求的开发和响应需求的变化,用最小的运行成本来保障软件的运行。
比如微服务架构、前后端分离、分层设计 - 架构设计的方法,就是组织人员和技术把系统和团队拆分,并安排好切分后的排列关系,让拆分后的部分能通过约定好的协议相互通信,共同实现最终的结果。
如何做好架构设计
第一步:分析需求
第二步:选择相似的成熟的架构设计方案
在选择好架构方案后,还需要考虑选择什么语言和开发框架。
第三步:自顶向下层层细化
- 部署架构
- 分层和分模块
- API 设计、数据库设计、模块的设计
第四步:验证和优化架构设计方案
推荐学习材料
- O’Reilly 《Software Architecture Patterns》
- 阮一峰老师《软件架构入门》
- 《架构师之路》
- 《图解:从单个服务器扩展到百万用户的系统》
- 《以“前浪微博”场景为例,谈谈架构设计流程四步曲》
- 《架构整洁之道》
我的留言
老师,我们正好在考虑SOA架构,研究esb、api gateway等。前几天我写了篇文章发在博客上了,请老师点评。谢谢。《从巨石应用到微服务应用,从ESB到APIGateway,从前后端分离到中台出现,九九归一,Rest要一统天下?》, https://blog.youkuaiyun.com/alva_xu/article/details/89052040