小白学软件架构
什么是软件架构?
软件架构是有关软件整体结构与组件的抽象描述,用于指导大型软件系统各方面的设计。
软件架构可以用下面这张图表示:
每个系统都应该有一个架构,不是说产品经理提出一个需求之后就开始撸代码了的,一定要提前做好架构设计,否则将来的扩展性、维护性都有麻烦。架构会有很多元素组成,这些元素之间也有关系,这个元素可以是类,也可以是模块或者系统。做一个软件系统肯定是有相关方的,比如老板、产品经理、码农、架构师,架构师做架构设计最后要输出一个架构文档,架构文档里面可以包含多个架构视图(用例图、组件图等等,但是架构文档的第一张图应该是部署图,因为部署图是从最高点看的,要先鸟瞰整个系统,再关注细节),不同的架构视图给不同的相关方看,比如你不能把类之间关系的类图拿给老板看,因为他不会关注类之间的关系,关心类之间关系的是码农。
为什么要建模?
模型是一个系统的抽象。
建造桥梁之前需要桥梁设计师设计出模型,我们做软件开发之前也得用模型把软件描述出来,不然你和别人讨论软件系统该怎么开发的时候怎么讨论,总要有一个可以展现的模型,这样大家就可以指着它说,哪儿哪儿有什么需要改进的地方。
建模的工具-UML
我们可以用统一建模语言UML进行建模,之所以称之为语言,是因为语言是用于交流和思考的,我们平时思考的时候心里也在默默念叨,那么UML也是用于交流和架构师自己思考的。
UML模型图主要分为两大类:一类是静态图,一类是动态图。
静态图通过描述类、对象和数据结构以及它们之间存在的关系来描述软件要素中不变的逻辑结构,比如Cat类是Animal类的子类。
动态图通过描绘执行流程或者实体状态变化的方式来展示软件实体在执行过程中的变化过程,比如Dubbo官网上就有服务导出的时序图,描述了服务导出的过程。
静态图又分为:
用例图
对象图
类图(不常用)
组件图
包图(不常用)
动态图分为:
协作图(不常用)
序列图
活动图
状态图
UML模型图中模型元素之间的关系表示可以用如下线条表示:
其中依赖一般是依赖方法中的局部变量,关联是类的字段,继承即extends,实现即implement,聚合是局部组成整体,但是局部和整体生命周期不同,例如车轮聚合成汽车,汽车坏了,车轮可以拿到别的汽车上用。组合是局部组成整体,但是局部和整体的生命周期一致,例如心脏大脑组成一个人,心脏坏了,人也就死了,人死了,心脏也会死掉。
推荐一本书《UML精粹》
版权声明: 本文为 InfoQ 作者【鸠摩智】的原创文章。
原文链接:【http://xie.infoq.cn/article/4054ecdf6ab828fcb32624911】。文章转载请联系作者。
评论