一、软件体系结构概念

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

软件体系结构(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风格
  • 如果设计了某种计算,但没有机器可以支持它运行,那么考虑使用虚拟机/ 解释器体系结构
  • 如果要实现一些经常发生变化的业务逻辑,考虑使用基于规则的系统

软件工程(七)软件系统设计相关推荐

  1. 【软件工程】七、软件系统设计

    一.软件体系结构概念 软件体系结构包括构成系统的设计元素的描述.设计元素之间的交互.设计元素的组合模式以及在这些模式中的约束. 软件体系结构=构件+连接件+约束 构件 构件是具有某种功能的可复用的软件 ...

  2. 软件工程-软件系统设计

    文章目录 软件系统设计 软件体系结构概念 软件设计原则 软件体系结构风格 软件设计过程 Web系统架构设计 数据库选择策略 测试题 软件系统设计 软件体系结构概念 软件体系结构包括构成系统的设计元素的 ...

  3. 软件工程导论—软件与软件工程

    文章目录 1. 软件与软件危机 1.1. 软件的概念和特点 1.2. 软件规模的分类与发展阶段 1.3. 软件危机 1.3.1. 软件危机的表现 1.3.2. 软件危机产生的原因 1.3.3. 软件危 ...

  4. 软件工程之软件需求分析

    软件工程之软件需求分析 一.需求分析任务 1.用户需求 2.系统需求 (1)功能需求 (2) 数据需求 (3) 其他需求 二.需求分析过程 三.用户需求获取 1.研究用户 2. 从调查中获取用户需求 ...

  5. 【软件工程】软件工程系统开发——系统设计概述

    halo~我是bay_Tong桐小白 本文内容是桐小白个人对所学知识进行的总结和分享,知识点会不定期进行编辑更新和完善,了解最近更新内容可参看更新日志,欢迎各位大神留言.指点 软件工程系统开发--系统 ...

  6. 【软件工程】软件与软件危机

    软件与软件危机 一.软件发展历史: 四个时代: **- 程序设计的原始时代(20世纪50年代)** **- 基本软件时代(20世纪50年代末-60年代末)** **- 程序设计的方法时代(20世纪60 ...

  7. 软件系统设计步骤与原理

    软件系统设计步骤与原理 在系统分析阶段,我们已经搞清楚了系统做什么的问题,其中最主要的是需求分析(确定用户需求.功能需求.系统性能.系统安全等方面的需求).数据流图(可以确定数据需求与转换过程):那么 ...

  8. 软件工程导论——4系统设计

    文章目录 系统设计 1.系统设计分为概要设计和详细设计 2.与设计相关的8个概念:抽象.体系结构.设计模式.模块化.信息隐藏.功能独立.细化.重构.其中,着重考察体系结构.模块化.信息隐藏.功能独立. ...

  9. 【软件工程(一)】软件工程概述+软件生命周期模型

    文章目录 软件工程概述 软件的定义 软件的分类 软件工程要素.目标和原则 软件工程知识体系知识域 软件生命周期模型 工程过程 传统模型种类 瀑布模型 演化模型 增量模型 喷泉模型 V模型和W模型 螺旋 ...

  10. 软件工程中软件需求分析

    1.软件工程         随着电子信息化的迅猛发展,软件工程涉及程序程序.语言.数据库.开发工具.设计模式等各方面的内容,主要是用来进行软件研究及软件分析的一门学科,软件工程师是专门进行软件开发的 ...

最新文章

  1. php word转pdf linux,Linux平台中使用PHP把word转pdf的实现方法
  2. Hadoop 2.7集群环境搭建
  3. JavaScript总结(六)
  4. C++ Qt全局异常处理器_QT教程
  5. 阿里云高级技术专家赵伟:安全加速 SCDN 设计与案例
  6. 售价上4000?小米10 曝光:性能强大 值得期待
  7. 如何通过“随航”将iPad用作苹果Mac的第二个显示屏?
  8. Java微信公众号开发之微信公众平台账号申请注册
  9. Android 11 WiFi热点打开与关闭接口
  10. list.sort() 方法可以用函数作 key 的参数
  11. 【NLP开发】Python实现中文、英文分词
  12. Win10系统彻底关闭自动更新方法——亲测有效
  13. Unity下实现弹簧骨骼(Spring Bone)
  14. 软考中级过了就是中级职称吗?
  15. SLAB SLUB
  16. linux中的快捷键
  17. tiledmap 图块属性_tiledmap 可以在图块层的指定格子上添加Sprite吗
  18. dreamweaver html设计,怎么用Dreamweaver设计网页
  19. 在哪里能看到计算机缓存大小,win10系统查看电脑硬盘缓存大小的办法
  20. 通达OA二次开发工程项目管理方案

热门文章

  1. Calico网络选项选择
  2. 帅小伙的MFC VC++ 图片的旋转
  3. Airflow搭建与使用
  4. CGAL笔记之单元格复合体和多面体篇——多面体凸分解
  5. 胃溃疡跟胃胀有关系吗?
  6. 我找不到我的电子邮件从 Outlook 数据文件 (.pst) 导入后,收发功能正常
  7. office 2007 oracle 9,Office 2010与Office 2007用户界面对比赏析
  8. DaleCloud(原NFine)介绍一:开发框架源代码解决方案结构介绍
  9. Thymeleaf基本使用
  10. fanuc机械手臂与基恩士视觉的通讯设定