架构设计学习笔记1

    Hi,这是我的第一篇博客,我是一个热爱编程,崇尚科学的人,开始写博客,是因为想把自己学习的知识分享给大家,同时也希望能与各位进行交流,不同进步,程序员,话不多说,直接开始,呵呵!

    这段时间,因为业务要求,开始学习一些架构设计方面的东西,以前写代码,都按业务需求,进行开发,会有涉及设计,但不规范,很多东西没有系统学习,总有些不足的地方,因此,买了本架构相关的书学习,在此,写下我的学习过程,如果有误,或者有其他经欢迎交流,呵呵!

   一、软件架构概念

1、软件架构概念的分类

书中把软件架构概念分两大流派:

  • 组成派:软件系统的架构将系统描述为计算组件及组件之间的交互
  • 决策派:软件架构是在一些重要方面所做出的决策的集合

booch、rumbaugh和jacobson的定义:软件的组织,构成系统的结构元素及其接口的选择,这些元素在相互协作中明确表现出的行为,这些结构元素和行为元素进一步组合所构成的更大规模的子系统,以及指导这一组织----包括这些元素及其接口、它们的协作和它们的组合---架构风格。

woods观点:软件架构是一系列设计决策,如果做了不正确的决策,你的项目可 能最终会被取消

Garlan和Shaw的定义:架构包括组件、连接件和约束三大要素。组件可以是一组代码(例如程序模块),也可以是独立的程序(例如数据库服务器)。连接件可以是过程调用、管理和消息等,用于表示组件之间的相互关系。“约束”一般为 组件连接时的条件。

perry和wolf的定义:软件架构是一组具有特定形式的架构元素,这些元素分为三类:负责完成数据加工的处理元素、作为被加工信息的数据元素及用于把架构的不同部分组合在一起的连接元素

boehm定义:软件架构包括系统组件、连接件和约束的集合,反映不同涉众需求的集合,以及原理的集合。其中的原理,用于说明由组件、连接件和约束所定义的实现时,是如何满足不同涉众需求的。

IEEE定义:架构是以组件、组件之间的关系、组件与环境之间的关系为内容的某一系统的基本组织结构,以及指导上述内容设计与演化的原理

Bass定义:某个软件或计算机系统的软件架构是该系统的一个或多个结构,每个结构均由软件元素、这些元素的外部可见属性、这些元素之间的关系组成。

 2、概念思想的解析

 组件和组件之间有交互关系,架构=组件+交互

1)以下为熟悉的MVC架构:

组件:Model、View、Controller

交互:View创建Controller后,Controller根据用户交互调用Model的相应服务,而Model会将自身改变通知View,View则会读取Model的信息以更新自身

2)软件架构是一系列有层次的决策,架构属于设计,但并非所有设计都属于架构。架构涉及的决策,往往对整体质量、并行开发、适应变化等方面有着重大影响。

架构设计过程是一棵决策树

切分类决策:

技术选型类决策:

3)举一例子,设计一个硬件设备调试系统

(1)理解需求---些时软件系统是黑盒子

从需求中理解主要支持的功能和目标,高性能

(2)首轮决策---此时软件系统被高层切分

(3)继续决策--此时软件系统被切分成更小单元

4)系统、子系统、框架都可以有架构:真实的软件其实是“由组件递归组合而成”的。

 

 

猜你喜欢

转载自www.cnblogs.com/roylamsdreamsky/p/12312289.html
今日推荐