2018-6-3-lesson13

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

软件架构:

  • 定义:软件架构就是把系统分解为一些部件,描述这些部件的职责及它们之间的协作行为

  • 软件架构并不仅仅关注软件本身的结构和行为,还注重其他特性:使用、功能性、性能、弹性、重用、可理解、经济以及技术的限制和权衡等。

  • 当软件工程具一定规模时,软件开发不完全是以数据结构+算法的形式存在,而是基于技术选择和用户需求等众多因素将软件“分而治之”,架构师的主要任务是将软件分割成不同的模块,并定义模块之间的接口。

框架:

定义:框架是特定语言和技术的架构应用解决方案

  • 框架是具体语言和技术相关的
  • 框架是一种或多种架构的组合的实现
  • 框架是集成了你的代码和多种第三方解决方案的工具,让你聚焦 业务逻辑代码 而 不是技术实现

开发人员通过软件框架行为调整机制,将领域中具体应用中所特有的软件模块绑定到该软件框架的可变点上,从而得到了最终的应用系统,这个过程称为软件软件框架的例化,软件框架的存在使得开发人员将主要的精力放在系统所特有的模块的开发上,从而提高软件的生产率和质量。

软件框架的行为调整机制是指如何针对具体的应用调整该框架的可变部分、如何在可变点加入特定应用模块所采用的方法和规则

总结:

  • 为了尽早验证架构设计,或者处于支持产品线开发的目的,可以将关键的通用机制甚至整个架构以框架的方式进行实现;
  • 业界(及公司内部)可能存在大量可供重用的框架,这些框架或者已经实现了软件架构所需的重要架构机制,或者为未来系统的某个子系统提供了可扩展的半成品,所以最终的软件架构可以借助这些框架构造

以你的项目为案例

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

structure

三层架构带来的便利:

  • 三层架构使得整个软件的层次很清晰,并且模块化分明。这样使得程序员们可以分别开发各自的模块而不会相互影响。
  • 这种低耦合性能够大大提高程序员的开发效率。
  • 每个模块都是可扩展的并且重用性强。
  • 因为模块化明确,所以可以比较方便轻易地替换原有的模块。
  • 后期的维护成本比较低,出现问题也只需要修改相应模块,而不用卷土重来

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

Flux 状态管理:

异:

  • Flux是一种前端状态管理架构思想,专门解决软件的结构问题。基于Flux的设计思想,出现了一批前端状态管理框架。
  • Vue的状态管理是通过Vuex来实现的,而Vuex是基于Flux设计思想的一个状态管理框架。
  • Flux分为四层,分别是view、action、dispatcher和store,而它的数据流顺序为: View发起Action -> Action传递到Dispatcher -> Dispatcher将通知Store -> Store的状态改变通知View进行改变
  • Vuex的核心为:

    • state:存放多个组件共享的状态(数据)
    • mutations:存放更改state里状态的方法,用于变更状态,是唯一一个更改状态的属性
    • getters:将state中某个状态进行过滤,然后获取新的状态,类似于vue中的computed
    • actions:用于调用事件动作,并传递给mutation
    • modules:主要用来拆分state vuex的数据流顺序为: View调用store.commit提交对应的请求到Store中对应的mutation函数 -> store改变(vue检测到数据变化自动渲染)

      同:

  • 由于Vuex是基于Flux开发的,因此它们思想上是相同的。

  • Flux和Vuex都是通过store来存储状态。