大师兄的信息化管理学习笔记(十一):软件架构与设计模式

大师兄的信息化管理学习笔记(十):面向对象方法
大师兄的信息化管理学习笔记(十二):软件工程过程管理

一、关于软件架构设计

  • 软件架构为软件提供了一个结构,行为和属性的高级抽象。
  • 软件架构属于一种系统草图,确定软件系统划分成哪些模块,明确各模块之间的相互作用,组合起来就是系统的架构。
  • 软件架构的目的是为了解决好软件的复用、质量和维护问题
  • 软件架构研究的主要内容如下:
  • 软件架构的描述
  • 软件架构的风格
  • 软件架构的评估
  • 软件架构的形式化方法

二、 软件架构风格

  • 软件架构风格是描述某一特定应用领域中系统组织方式的惯用模式。
  • 软件架构风格反映了领域中众多系统所共有的结构和语义特性,并指导如何将各个模块和子系统有效地组织成一个完整的系统。
  • 软件架构风格包括:
风格 描述
数据流风格 批处理序列、管道/过滤器
调用/返回风格 主程序/子程序、数据抽象、面向对象、层次结构
独立构件风格 进程通信、事件驱动的系统
虚拟机风格 解释器、基于规则的系统
仓库风格 数据库系统、黑板系统、超文本系统
1. 管道/过滤器模式
  • 每个构件都有一组输入/输出,构件读取输入的数据流,经过内部处理后,产生输出数据流,该过程主要完成输入流的变换及增量计算,通常这些构件称为过滤器
  • 模式优点:
  • 高内聚、低耦合
  • 支持服用
  • 便于维护
  • 支持并行
  • 模式缺点:
  • 需要协调
  • 性能下降
  • 实现复杂
2. 面向对象模式
  • 典型应用是基于构件的软件开发(CBD)。


  • 模式优点:
  • 高度模块化
  • 数据隐藏
  • 代码共享
  • 灵活易维护
  • 模式缺点:
  • 对象之间调用复杂
3. 层次结构模式
  • 层次结构模式采用层次化组织方式,将复杂问题逐步分层。
  • 每一层都为上一层提供服务,并使用下一层提供的功能。
4. 客户/服务器模式
  • 客户/服务器(C/S)模式将应用一份为二,服务器负责数据管理,客户机完成与用户的交互任务。
  • C/S模式适用于分布式系统,得到了广泛的应用。
  • 为了解决C/S模式中服务端负担过重的问题,发展形成了多层C/S模式,即多层应用架构
  • 为了解决C/S模式中客户端更新的问题,发展形成了浏览器/服务器(B/S)模式
5. 事件驱动模式
  • 构件并不直接调用过程,而是触发一个或多个事件。系统中的其他构件可以注册相关事件,触发一个事件时,系统会自动调用注册了该事件的构件过程,即触发事件会导致另一构件中过程的调用。
6. 软件架构设计考虑因素
  • 关系数据库与对象数据库的选择问题。
  • 用户界面选择使用HTML。
  • 灵活性性能的权衡。
  • 技术的选择,成熟技术可规避风险。
  • 聘请经验丰富的架构师。

三、软件架构评估

  • 在架构评估过程中,评估人员最关注的是系统的质量属性
  • 质量属性包括:可用性、可修改性、性能、安全性、可测试性、易用性。
  • 敏感点:一个或多个构件的特性,敏感点只影响一个软件质量属性。
  • 权衡点:影响多个质量属性的特性。
  • 软件架构评估的三种方法:
  • 调查问卷法:请对系统架构有经验的专家对系统架构做出主观评估。
  • 度量法:将软件系统架构量化,通过客观指标来评估架构优劣。
  • 场景评估法:筛选重要场景,根据不同场景中各架构的表现进行评估(ATAM)。
1. 场景评估法
  • 场景评估法从三方面来对场景进行捕述:
场景 描述
刺激(stimulus) 解释或描述项目干系人怎样引发与系统的交互。
环境(environment) 刺激发生时的情况。
响应(response) 系统是如何通过架构对刺激作出反应的。
  • 场景评估法分析软件架构对场景的支持程度,从而判断该架构对这一场景所代表的质量需求的满足程度。

四、软件设计

  • 软件设计是定义一个系统的架构、组建、接口和其他特征的过程,并得到这个过程的结果。
  • 软件设计阶段:
  • 概要设计(软件架构设计):描述软件的组织和结构,标识各种不同的组件。
  • 软件详细设计:详细的描述各个组件,使之能被构造。
  • 软件设计方法:
  • 结构化设计SD:是一种面向数据流的方法,他一SRS和SA阶段所产生的DFD和数据字典为基础,是自顶向下、逐步求精和模块化的过程。
  • 面向对象设计OOD:面向对象方法已可维护性和可用性为设计基础,更接近现实世界、更自然。
  • 软件设计的原则为:高内聚、低耦合
1. 内聚性
  • 内聚性又称块内联系,指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。
  • 内聚按强度递增顺序排序如下:
  • 偶然内聚
  • 逻辑内聚
  • 时间内聚
  • 通信内聚
  • 顺序内聚
  • 功能内聚
2. 耦合性
  • 耦合性也称为块间联系,指软件系统结构中各模块间相互联系紧密程度的一种度量。
  • 耦合程度从低到高排序如下:
  • 无直接耦合
  • 数据耦合
  • 标记耦合
  • 控制耦合
  • 公共耦合
  • 内容耦合

五、设计模式

  • 设计模式代表了最佳实践,它使人们可以方便地服用成功的软件设计。
  • 每一个模式描述了一个不断重复发生的问题,以及改问题的解决方案。
  • 设计模式的基本要素:
  • 模式名称
  • 问题描述
  • 目的
  • 解決方案
  • 效果
  • 实例代码
  • 相关设计模式
1. 设计模式的七大原则
原则 描述
开闭原则
Open CLose Principle
对扩展开放,对修改关闭。
里氏代换原则
Liskov Substitution Principle
任何基类可以出现的地方,子类一定可以出现。
依赖倒转原则
Dependence Inversion Principle
针对接口编程,依赖于抽象而不依赖于具体。
接口隔离原则
Interface Segregation Principle
使用多个隔离的接口,比使用单个接口要好。
迪米特法则
Demeter Principle
一个实体应当尽量少地与其它实体发生相互作用。
合成复用原则
Composite Reuse Principle
尽量使用合成/聚合的方式,而不是使用集成。
单一职责原则
Single Response Principle
设计功能单一的类,不要在一个类中实现多个功能。
2. 设计模型分类
  • 创建型模型,用于创建对象:
  • 工厂模式
  • 抽象工厂模式
  • 单例模式
  • 建造者模式
  • 原型模式
  • 结构型模式,用于处理类或对象的组合:
  • 适配器模式
  • 桥接模式
  • 组合模式
  • 装饰器模式
  • 外观模式
  • 享元模式
  • 代理模式
  • 行为模式,用于描述类或对象的交互以及职责的分配:
  • 责任链模式
  • 命令模式
  • 解释器模式
  • 迭代器模式
  • 中介者模式
  • 备忘录模式
  • 观察者模式
  • 状态模式
  • 策略模式
  • 模板方法模式
  • 访问者模式

六、软件架构和设计模式

  • 相同点:
  • 都是处理一些抽象概念间的关系。
  • 不同点:
  • 设计模式是领域无关的,解决某些抽象问题。
  • 软件架构针对要解决的问题,是领域相关的。
  • 可以通过对问题领域的分析、分解,找到与解决问题相匹配的模式,把各种模式结合在一起构件整个系统架构。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 221,820评论 6 515
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,648评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 168,324评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,714评论 1 297
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,724评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,328评论 1 310
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,897评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,804评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,345评论 1 318
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,431评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,561评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,238评论 5 350
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,928评论 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,417评论 0 24
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,528评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,983评论 3 376
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,573评论 2 359