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

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

作者: superkmi | 来源:发表于2023-02-09 18:41 被阅读0次

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

    一、关于软件架构设计

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

    二、 软件架构风格

    • 软件架构风格是描述某一特定应用领域中系统组织方式的惯用模式。
    • 软件架构风格反映了领域中众多系统所共有的结构和语义特性,并指导如何将各个模块和子系统有效地组织成一个完整的系统。
    • 软件架构风格包括:
    风格 描述
    数据流风格 批处理序列、管道/过滤器
    调用/返回风格 主程序/子程序、数据抽象、面向对象、层次结构
    独立构件风格 进程通信、事件驱动的系统
    虚拟机风格 解释器、基于规则的系统
    仓库风格 数据库系统、黑板系统、超文本系统
    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. 设计模型分类
    • 创建型模型,用于创建对象:
    • 工厂模式
    • 抽象工厂模式
    • 单例模式
    • 建造者模式
    • 原型模式
    • 结构型模式,用于处理类或对象的组合:
    • 适配器模式
    • 桥接模式
    • 组合模式
    • 装饰器模式
    • 外观模式
    • 享元模式
    • 代理模式
    • 行为模式,用于描述类或对象的交互以及职责的分配:
    • 责任链模式
    • 命令模式
    • 解释器模式
    • 迭代器模式
    • 中介者模式
    • 备忘录模式
    • 观察者模式
    • 状态模式
    • 策略模式
    • 模板方法模式
    • 访问者模式

    六、软件架构和设计模式

    • 相同点:
    • 都是处理一些抽象概念间的关系。
    • 不同点:
    • 设计模式是领域无关的,解决某些抽象问题。
    • 软件架构针对要解决的问题,是领域相关的。
    • 可以通过对问题领域的分析、分解,找到与解决问题相匹配的模式,把各种模式结合在一起构件整个系统架构。

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/fklqhdtx.html