软件工程(七)软件系统设计

一、软件体系结构概念

随着软件系统的规模复杂性不断增加,对系统的全局结构设计和规划变得比算法的选择和数据结构的设计明显重要得多。

软件体系结构(Software Architecture)包括构成系统的设计元素的描述、设计元素之间的交互、设计元素的组合模式以及在这些模式中的约束。

软件体系结构 = 构件 + 连接件 + 约束

构件是具有某种功能的可复用的软件结构单元,表示系统中主要的计算元素和数据存储。

连接是构件间建立和维护行为关联与信息传递的途径。连接件表示构件之间的交互并实现构件之间的连接。

二、软件设计原则

设计原则是系统分解和模块设计的基本标准,应用这些原则可以使代码 更加灵活、易于维护和扩展。

  • 抽象是关注事物中与问题相关部分而忽略其他无关部分的一种思考方法。
  • 封装和信息隐藏是指每个软件单元对其他所有单元都隐藏自己的设计决策, 各个单元的特性通过其外部可见的接口来描述。
  • 模块化是在逻辑和物理上将整个系统分解成多个更小的部分,其实质是 “分而治之”,即将一个复杂问题分解成若干个简单问题,然后逐个解决。
  • 系统分解——目标:高内聚、低耦合
  • 复用(Reuse)是利用某些已开发的、对建立新系统有用的软件元素来生成 新的软件系统,其好处在于提高生产效率,提高软件质量

三、软件体系结构风格(一)

软件体系结构风格(Architectural Styles)是描述特定系统组织方式的惯用 范例,强调了软件系统中通用的组织结构。

1.主程序-子程序风格

主程序-子程序风格是结构化程序设计的一种典型风格,从功能的观点设计 系统,通过逐步分解和细化,形成整个系统的体系结构。

2.面向对象风格

  • 系统被看作是对象的集合,每个对象都有一个它自己的功能集合;
  • 数据及作用在数据上的操作被封装成抽象数据类型;
  • 只通过接口与外界交互,内部的设计决策则被封装起来

 3.管道-过滤器风格

管道-过滤器风格把系统任务分成若干连续的处理步骤,这些步骤由通过系统的数据流连接,一个步骤的输出是下一个步骤的输入。

4.以数据为中心的风格

仓库体系结构(Repository Architecture)是一种以数据为中心的体系结构,适合于数据由一个模块产生而由其他模块使用的情形。 

四、软件体系结构风格(二)

1.客户机/服务器结构

客户机/服务器体系结构(Client/Server)是一种分布式系统模型,作为服务器的 子系统为其他客户机的子系统提供服务,作为客户机的子系统负责与用户的交互。

2.两层C/S结构 

  • 胖客户端:客户端执行大部分的数据处理操作(两层C/S结构)
  • 瘦客户端:客户端具有很少或没有业务逻辑

3.三层C/S结构

  • 表示层:包括所有与客户机交 互的边界对象,如窗口、表单、 网页等
  • 功能层(业务逻辑层):包括 所有的控制和实体对象,实现 应用程序的处理逻辑和规则
  • 数据层:实现对数据库的存储、 查询和更新

4.B/S结构

浏览器/服务器(Browser/Server)结构是三层C/S风格的一种实现方式。

 5.集群结构

集群内各服务器上的内容保持一致 (通过冗余提高可靠性与可用性)

集群内各服务器上的内容之和构成 系统完整的功能/数据 (通过分布式提高速度与并发性)

6.MVC结构

模型-视图-控制器(MVC)结构将应用程序的数据模型、业务逻辑和用户界面分别 放在独立构件中,这样对用户界面的修改不会对数据模型/业务逻辑造成太大影响。

 五、软件体系结构风格(三)

事件风格

事件系统是将应用看成是一个构件集合,每个构件直至发生对它有影响的事件时才有所动作。

1.选择广播式

2.观察者模式

 六、软件体系风格选择

  • 层次化的思想在任何系统中都可能得到应用
  • 如果问题可分解为连续的几个阶段,那么考虑使用顺序批处理风格或管道/过滤器风格
  • 如果核心问题是应用程序中数据的理解、管理与表示,那么考虑使用仓库或者抽象数据模型(ADT)/OO风格
  • 如果数据格式的表示可能发生变化,ADT/OO可限制这种变化所影响的范围
  • 如果数据是持久存在的,则使用仓库结构
  • 如果任务之间的控制流可预先设定、无须配置,那么考虑使用主程序-子过程风格、OO风格
  • 如果任务需要高度的灵活性与可配置性、松散耦合性或者任务是被动性的, 那么考虑使用事件系统或C/S风格
  • 如果设计了某种计算,但没有机器可以支持它运行,那么考虑使用虚拟机/ 解释器体系结构
  • 如果要实现一些经常发生变化的业务逻辑,考虑使用基于规则的系统

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值