系统分析与设计

Homewok

Posted by Evan on June 3, 2018

软件架构与框架

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

定义:

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

    区别:

    软件的架构是一个系统草图,是关于软件设计方面的重要的决策,它将软件规范的分为各个部分,并且决定各部分内部结构以及各部分之间的联系。经过开发之后,软件架构可以体现在软件当中。

而软件框架是软件的一部分,它是软件的半成品,为软件提供基础的结构和一些规范约束,然后开发人员在软件框架的基础上进行开发。

联系:

软件架构和软件框架的联系 框架技术和架构技术的出现,都是为了解决系统日益复杂所带来的困难而采取的“分而治之”的思维的结果 - 先大局后局部,就出现了架构;先通用后专用,就出现了框架。架构是问题的抽象解决方案,关注大局而忽略细节;而框架是通用半成品,还必须根据具体需求进一步定制开发才能变成应用系统。

软件架构引导开发人员设计软件框架,是软件框架的重要决策。也就是说软件架构体现在软件框架中。

以你的项目为案例

绘制三层架构模型图,细致到分区

结合你程序的结构,从程序员角度说明三层架构给开发者带来的便利

  • 总的来说,使用三层架构可以做到关系分离、高级服务与低级服务分离、特定于应用的服务与一般性服务分离。三层架构可以减少耦合和依赖性、增强内聚性、提高潜在的复用性并且使概念更加清晰。这可以使得不同层的开发者之间专注于本层开发,而无需考虑除本层以外的开发。在我的程序中,UI层、数据层和服务器层三者之间的耦合度很小,从而使得各层的开发相互独立,大大提高了开发和调试的效率。
  • 封装和分解了相关的复杂性,有利于提供开发效率。在我的程序中,显示租人列表、处理租人项和订单数据,存储交易数据相互分开,数据流得到了有效组织和管理,从而大大减少了开发复杂度。
  • 较低层的复用性较高,为开发者减少了重新开发的麻烦以及代码量。
  • 通过逻辑划分,有利于开发者进行高效的团队开发。
  • 各个层次清晰,每个层次都提供了接口定义:
    • 很容易用新的实现替换原来的层次实现。例如对sql进行性能优化,并不会影响其他层的代码结构。有利于后期维护。
    • 有利于实现切面编程,减轻业务的复杂程度,加快编码效率。
    • 每个层次的定位明晰,业务处理的内容明确。依据层次,可以划分不同的分工。开发人员可以只关注整个结构的其中某一层。
    • 接口定义也提供了良好的可扩展性。
  • 接口设计需要符合对扩展开发,对修改关闭的原则,增强了系统的安全性

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

FLUX结构图:

VUE结构图:

异:

  • 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来存储状态。