其他
从方法到思维:什么是应用逻辑架构的正确姿势?
The fundamental organization of a system, embodied in its components, their relationships to each other and the environment, and the principles governing its design and evolution.
职责明确的模块或者组件
组件直接的关联关系非常明确
需要有约束和指导原则
目的:指导用户使用产品,所以模块的聚合是从用户视角出发的
受众:使用产品的人
包含的内容:阐述产品功能模块的能力:比如一辆汽车,方向盘有什么功能,方向盘的按钮上各区域的功能是什么,仪表盘分成哪些功能模块,每个功能模块有什么作用,油门踏板有什么作用,刹车踏板有什么作用。但是也不排除有些高阶用户需要明确知道变速箱的齿比等信息,所以在产品功能架构图上也可以描绘出来。
命名:这里命名需要考虑如何取一个吸引人的名字(同时又能表达产品的能力)来吸引我们的用户前来使用,比如说以前经常有产品套用“纳米”,又有产品套用“绿色”等等。
目的:研发人员和业务人员理解业务内在的概念和联系。
受众:研发人员和业务人员,主要是给规划业务的人使用。
包含的内容:业务能力,能力中的子能力。
目的:指导软件的研发。
受众:研发人员,各层级架构师,各层级技术管理者。
包含的内容:阐述架构中各模块的职责:如系统模型,技术模块,技术模块的关系,技术模块的核心抽象,如何用设计模式来让架构符合软件设计原则,等等。如果拿汽车举例,那就是发动机模块中包含了哪些子模块(活塞,曲轴,连杆,缸体,缸盖,等等)发动机模块和变速箱模块之间的关联关系是什么,如何协同工作,和底盘的关联关系是什么,如何协同工作。发动机,底盘,变速箱,电子系统在整辆汽车中的职责,关系,约束是什么。这些都是用来指导汽车研发的。而不是指导用户如何使用这辆汽车的。
命名:这里的命名需要朴实无华,精准的描述出职责,华而不实反而让技术的同学无法理解这到底是什么玩意,导致实施的时候职责放错地方,挖下大坑让后人来填。
模块
依赖
约束
分析阶段,也是我们常说的问题空间领域建模,关键的一步是业务概念模型的输出,而业务概念模型输出的前置条件是从需求中分解出合理的用例集合。
设计阶段,也是我们常说的解决方案空间建模,以及应用逻辑架构。
什么地方应该用演绎,什么地方应该用归纳呢?
使用演绎的时候应该使用何种具体方法呢?
使用归纳的时候应该使用何种具体方法呢?
一是有可能我们的理解是不到位的,导致用错了名词,这个我们前面的文章中也提到过了。
二是这个结果也只是一个粗略的结果,需要进一步精化。
应用逻辑架构的作用:我们把前面那个例子再搬过来:如果拿汽车举例,那就是发动机模块中包含了哪些子模块(活塞,曲轴,连杆,缸体,缸盖,等等)发动机模块和变速箱模块之间的关联关系是什么,和底盘的关联关系是什么,发动机,底盘,变速箱,电子系统在整辆汽车中的职责,关系,约束是什么。这些都是用来指导汽车研发的。而不是指导用户如何使用这辆汽车的。
目的:所以系统模型和应用逻辑架构都是用在软件设计阶段,其目的是用来指导软件的研发。
受众:逻辑架构的受众有哪些呢?一般是这些人:研发人员,各层级架构师,各层级技术管理者,总的来说他们都是架构的设计者和实现者。
如果真的要想学习东西,而且想学的更快更深入,就要关注自己如何集中注意力,要思考自己的思考方式,研究自己的研究方式。