系统分析与设计

homework7

Posted by Richbabe on June 3, 2018

描述软件架构与框架之间的区别和联系

(1)定义

  • 软件架构:软件架构是一个系统的草图。软件架构描述的对象是直接构成系统的抽象组件。各个组件之间的连接则明确和相对细致地描述组件之间的通讯。设计软件架构就是把系统分解为一些部件,描述这些部件的职责及它们之间的协作行为。
  • 软件框架:软件框架是面向领域(如 ERP、计算领域等)的、可复用的“半成品”软件,它实现了该领域的共性部分,并提供了一些定义良好的可变点以保证灵活性和可扩展性。也就是说软件框架是领域分析结果的软件化,是领域内最终应用的模板,是特定语言和技术的架构应用解决方案。

(2)区别

简单来说,两者的区别在于软件架构不是软件,而软件框架是软件。

  • 软件架构不是软件,而是关于软件如何设计的重要决策。软件架构决策涉及到如何将软件系统分解成不同的部分、各部分之间的静态结构关系和动态交互关系等。经过完整的开发过程之后,这些架构决策将体现在最终开发出的软件系统中;当然,引入软件框架之后,整个开发过程变成了“分两步走”,而架构决策往往会体现在框架之中。
  • 软件框架是一种特殊的软件,由实际的代码构建而成,它并不能提供完整无缺的解决方案,而是为你构建解决方案提供良好的基础,是软件系统、子系统的半成品。软件框架为具体的解决方案提供了基础,提供了基础服务和可扩展点,同时软件框架也建立了一些约束,开发人员在此基础上进行特定业务功能的定制开发。
  • 软件框架是具体语言和技术相关的,而软件架构与具体语言和技术无关。
  • 软件框架是集成了你的代码和多种第三方解决方案的工具,让你聚焦业务逻辑代码而不是技术实现。

(3)联系

软件架构是引导如何设计软件框架的重要决策。它决定了软件系统如何划分,在一定程度上描述了被划分的各个部分之间的静态、动态关系。软件架构的决策体现在软件框架中。

总的来说,软件架构指导软件框架的设计,而软件框架是一种或多种架构的组合的实现。

以你的项目为案例

  • 绘制三层架构模型图,细致到分区 image
  • 结合你程序的结构,从程序员角度说明三层架构给开发者带来的便利

(1)总的来说,使用三层架构可以做到关系分离、高级服务与低级服务分离、特定于应用的服务与一般性服务分离。三层架构可以减少耦合和依赖性、增强内聚性、提高潜在的复用性并且使概念更加清晰。这可以使得不同层的开发者之间专注于本层的开发,而无需考虑除本层以外的开发。在我们的小程序中,UI层、Domain层和Technical层三者之间的耦合度很小,从而使得各层的开发相互独立,大大提高了开发和调试的效率。

(2)较低层的复用性较高,为开发者减少了重新开发的麻烦以及代码量。

(3)通过逻辑划分,有利于开发者进行高效的团队开发。

(4)接口设计符合对外扩展开发,对内修改关闭的原则(即面向对象五大原则中的OCP原则),增强了系统的安全性。

研究VUE与Flux状态管理的异同

(1)VUE的状态管理

Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。

  • 应用级的状态由store集中管理
  • 修改状态的唯一方式是commit同步的mutation
  • 异步逻辑放在action里

(2)Flux状态管理

MVC 中,一个 Model 可以被多个 Views 读取或被多个 Controllers 进行更新。在大型应用中,一个 Model 可能使多个 Views 去通知 Controllers,并可能触发更多的 Model 更新,这样结果就会变得非常复杂。Flux 通过强制单向数据流来解决这个额问题。Flux 使 Views 查询 Stores(而不是 Models),用户交互触发的 Actions 被提交到一个 Dispatcher 中。当 Actions 被派发后,Stores 将会随之更新自己并且通知 Views 进行修改。这些 Store 当中的修改会进一步促使 Views 查询新的数据。即在相对独立的组件中,action -> state -> view 的单向数据流能得到保证。

(3)VUE与Flux状态管理的异同

  • 相同点

Flux 思想是为了解决传统 MVC 架构不能有效解决大型业务中复杂数据流的管理问题而产生的一种软件架构思想。VUE 和 Flux 的状态管理都是基于 Flux 思想的有效实现,通过对数据流进行严格管理来规范数据在 Web 应用中流动方式的框架。

  • 不同点

与Flux对比,最大的区别是Vuex把action细分成了action和mutation,分别应对异步场景和同步场景,由store自身充当dispatcher(负责注册/分发action/(mutation))。即如果把action和mutation看作一层(Flux中的action),则二者的结构完全一致。