初学架构方法
为什么需要架构?
一个复杂的系统,如果没有架构设计,直接上手开发,开发人员想到哪开发到哪,很可能开发过程中就会发现最开始考虑不全面,开发没办法进行下去,需要重复修改设计,造成时间的浪费;或者是设计得不合理,导致性能低下,扩展性不足。同时由于系统由多个人协作开发,没有架构设计,每个开发人员对于功能的理解也都不尽相同,会导致开发过程混乱,沟通成本高。所以开发前,进行架构设计,对功能模块划分清晰,落实架构文档的编写,尤其重要。
架构设计的方法
最常用的就是通过UML(Unified Modeling Language,同一建模语言)进行建模,把现实世界的业务领域问题映射到计算机世界的领域设计模型中,以图形的方式描述软件的概念。
UML模型4+1视图
逻辑视图:设计的对象模型
开发视图:描述了在开发环境中软件的静态组织结构
物理视图:描述了软件到硬件的映射,反映了部署特性。
过程视图:捕捉设计的并发和同步特征
场景视图:描述场景用例的视图,跟所有视图相关,每个视图可以加入场景视图用例。
为什么需要这么多视图?
因为一个系统参与方可能不止开发人员,还有提供需求的业务人员,老板,客户,或者是负责系统运维,部署的支持人员等等,单一的视图无法反应整个系统的设计,表达架构,需要从多个维度去展示整个系统设计。
UML的十种模型图
其中又分为静态图与动态图,静态图通过描述类、对象和数据结构以及它们之间存在的关系,来描述软件要素种不变的逻辑结构。动态图通过描绘执行流程或者实体状态变化的方式,来展示软件实体在执行过程种变化的过程。
静态图
用例图
对象图
类图
组件图
包图
部署图
动态图
协作图
序列图(时序图)
活动图
状态图
在实践中,其中比较常用的有七种,分别是类图,组件图,序列图,活动图,状态图,部署图,用例图。
一般在需求分析阶段使用的比较多的是用例图,序列图,组件图,部署图
概要设计阶段则是序列图,活动图,组件图,部署图
详细设计阶段的是类图,序列图,活动图、状态图
推荐使用的工具
Visio:可以通过visio画uml类图,序列图,状态图,尤其是序列图,线能自动吸附到激活的元素上面,感觉比ProcessOn方便很多。但遗憾的是我使用的版本没有找到部署图跟组件图的模板,不然用visio就够了。
ProcessOn:UML所有模板都有,可以全部都在上面画,优点是可以在网页上画图,不需要下载软件,比较轻便,模板种类多,美观。缺点是不付费的话有文件限制。
总结
我们光有设计的想法是不行的,开发一个系统不是一个人的事,需要各个相关方的参与,我们需要与其他各个参与到系统的相关方进行沟通,把我们脑海中的架构设计想法通过UML模型图进行表达出来,UML多种模型视图,能让各个相关方详细了解到我们的架构设计,从而进行有效的协作,确保系统能按我们设计的预期进行开发,部署,运行。
评论