西安工业大学《软件工程》第四章 软件体系结构基础
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
三层C/S结构的一般处理流程: 结构的一般处理流程: 三层 结构的一般处理流程
输入数据 请求按钮 业务处理请求和 业务处理所需的 全部输入数据 输出数据 全部处理结束 表示层 业务处理程序 业务处理开始
数据存取请求
业务处理结束
SQL 请 求 开 始 数据登录 / 更新 / 读取的请求 DBMS 执 行 SQL SQL 请 求 结 束 数据层
计算机科学与工程学院
软件工程(Software Engineer) 软件工程(Software Engineer)
4.1.3 什么是软件体系结构
总之,软件体系结构的研究正在发展,软件体 系结构的定义也必然随之完善.在以后的文章里, 如果不特别指出,我们将使用软件体系结构的下 列定义: 软件体系结构为软件系统提供了一个结构,行 为和属性的高级抽象,由构成系统的元素的描述, 这些元素的相互作用,指导元素集成的模式以及 这些模式的约束组成.软件体系结构不仅指定了 系统的组织结构和拓扑结构,并且显示了系统需 求和构成系统的元素之间的对应关系,提供了一 些设计决策的基本原则.
业务处理开始
数据存取请求
业务处理结束 数据登录 / 更新 / 读取的结果
数据存取程序 功能层
计算机科学与工程学院
计算机科学与工程学院
软件工程(Software Engineer) 软件工程(Software Engineer)
4.1.2 构件与软件重用 2. 构件 一般认为,构件是指语义完整,语法正确和有可重用 价值的单位软件,是软件重用过程中可以明确辩识的系统; 结构上,它是语义描述,通讯接口和实现代码的复合体. 近年来,构件技术发展迅速,已形成三个主要流派, 分别是IBM的CORBA ,Sun的Java平台和Microsoft的 COM+. 构成一个系统的构件可分为5类: 独立而成熟的构件 有限制的构件 适应性构件 装配的构件 可修改的构件
计算机科学与工程学院
软件工程(Software Engineer) 软件工程(Software Engineer)
4.1.3 什么是软件体系结构 1.软件体系结构的兴起 . 六十年代的软件危机使得人们开始重视软件工程的研 究.起初,人们把软件设计的重点放在数据结构和算法的 选择上,随着软件系统规模越来越大,越来越复杂,整个 系统的结构和规格说明显得越来越重要.软件危机的程度 日益加剧,现有的软件工程方法对此显得力不从心.对于 大规模的复杂软件系统来说,对总体的系统结构设计和规 格说明比起对计算的算法和数据结构的选择已经变得明显 重要得多.在此种背景下,人们认识到软件体系结构的重 要性,并认为对软件体系结构的系统,深入的研究将会成 为提高软件生产率和解决软件维护问题的新的最有希望的 途径.
4.1.5 软件体系结构的现状及发展方向
3. 发展方向 各种ADLs之间的信息互换 设计工具和环境 体系结构再工程
计算机科学与工程学院
软件工程(Software Engineer) 软件工程(Software Engineer)
4.2 通用的软件体系结构
主机/终端结构 两层结构——客户/服务器体系结构 浏览器/服务器结构 三层C/S结构 三层C/S结构应用实例
计算机科学与工程学院
软件工程(Software Engineer) 软件工程(Software Engineer)
4.1.3 什么是软件体系结构
2.软件体系结构的定义 .
Dewayne Perry和A1ex Wo1f曾这样定义:软件体系结构是具有一定形式的 结构化元素,即构件的集合,包括处理构件,数据构件和连接构件. Mary Shaw和David Garlan认为软件体系结构是软件设计过程中的一个层次, 这一层次超越计算过程中的算法设计和数据结构设计. Kruchten指出,软件体系结构有四个角度,它们从不同方面对系统进行描述: 概念角度描述系统的主要构件及它们之间的关系;模块角度包含功能分解与 层次结构;运行角度描述了一个系统的动态结构;代码角度描述了各种代码 和库函数在开发环境中的组织. Hayes Roth则认为软件体系结构是一个抽象的系统规范,主要包括用其行为 来描述的功能构件和构件之间的相互连接,接口和关系. David Garlan和Dewne Perry于1995年在IEEE软件工程学报上又采用如下的 定义:软件体系结构是一个程序/系统各构件的结构,它们之间的相互关系 以及进行设计的原则和随时间进化的指导方针. Barry Boehm和他的学生提出,一个软件体系结构包括一个软件和系统构件, 互联及约束的集合;一个系统需求说明的集合;一个基本原理用以说明这一 构件,互联和约束能够满足系统需求.
软件工程(Software Engineer) 软件工程(Software Engineer)
4.1软件体系结构的概念 4.1软件体系结构的概念
从软件危机谈起 构件与软件重用 什么是软件体系结构 软件体系结构设计原则 软件体系结构的现状及发展方向
计算机科学与工程学院
软件工程(Software Engineer) 软件工程(Software Engineer)
2. C/S结构的一般处理流程 结构的一般处理流程
输入数据 请求按钮 业务处理请求和业务处 理所需的全部输入数据 业务处理开始 数据存取请求 输出数据 全部处理结束 表示层 业务处理结束 业务处理程序
SQL 请求开始
业务处理开始 数据登录/更新/读取的 请求
数据存取请求
DBMS 执行 SQL 业务处理结束 SQL 请求结束 数据层 数据登录/更新/读取的 结果 数据存取程序
计算机科学与工程学院
软件工程(Software Engineer) 软件工程(Software Engineer)
4.2.2 两层结构 两层结构——客户 服务器体系结构 客户/服务器体系结构 客户
1.两层 两层C/S结构 两层 结构
打印机
PWR WI C0 ACT/ CH0 WIC0 ACT/CH0 ETH ACT COL OK ACT/ CH1 ACT/CH1
பைடு நூலகம்
4.1.1 从软件危机谈起
1.软件危机的表现 . 软件成本日益增长 开发进度难以控制 软件质量差 软件维护困难
计算机科学与工程学院
软件工程(Software Engineer) 软件工程(Software Engineer)
4.1.1 从软件危机谈起
2.软件危机的原因 . 用户需求不明确 缺乏正确的理论指导 软件规模越来越大 软件复杂度越来越高
计算机科学与工程学院
软件工程(Software Engineer) 软件工程(Software Engineer)
主机/ 4.2.1 主机/终端结构
早期计算机系统多是单机系统,多个用 户是通过联机终端来访问的,没有网络的 概念.即所谓的主机分时系统.连接的终 端完全没有事务处理的能力,只是输入和 显示信息.所有的事务处理功能完全放在 主机进行.因此主机的负载很重,整个系 统的事务处理能力全部取决于主机.目前, 主机终端模式已逐步被淘汰.
计算机科学与工程学院 软件工程(Software Engineer) 软件工程(Software Engineer)
4.1.4 软件体系结构设计原则
抽象的原则 分而治之的原则 封装和信息隐蔽原则 模块化原则 高内聚和低耦合 关注点分离原则 策略和实现的分离原则 接口和实现分离原则
计算机科学与工程学院 软件工程(Software Engineer) 软件工程(Software Engineer)
计算机科学与工程学院
软件工程(Software Engineer) 软件工程(Software Engineer)
4.1.2 构件与软件重用
1.软件重用 . 软件重用是指在两次或多次不同的软件开发过 程中重复使用相同或相近软件元素的过程. 使用软件重用技术可以减少软件开发活动中大 量的重复性工作,这样就能提高软件生产率,降 低开发成本,缩短开发周期.同时,由于软构件 大都经过严格的质量认证,并在实际运行环境中 得到校验,因此,重用软构件有助于改善软件质 量.此外,大量使用软构件,软件的灵活性和标 准化程度也可望得到提高.
第四章 软件体系结构基础 软件体系结构的开发是大型软件系统开 发的关键环节.体系结构在软件生产线的 开发中具有至关重要的作用,在这种开发 生产中,基于同一个软件体系结构,可以 创建具有不同功能的多个系统.在软件产 品族之间共享体系结构和一组可重用的构 件,可以增加软件工程和降低开发和维护 成本.
计算机科学与工程学院
计算机科学与工程学院
软件工程(Software Engineer) 软件工程(Software Engineer)
浏览器/ 4.2.3 浏览器/服务器结构
B/S本质上也是一种C/S结构,它是传统的两层C/S结构在Web上的发展.相对 于C/S结构而言,B/S结构是把原来在客户机一侧的应用程序模块与显示功能分开,将 应用程序模块单独作为一层放在Web服务器上,客户端只需要安装浏览器就可以了, 这样将系统的业务处理部分统一放在Web服务器上,客户端只起到与用户交互的作用.
数 据 库 服 务 器 1 应 用 服 务 器 I n te rn e t I n tr a n e t
数 据 库 服 务 器 2
... 用 户 1 用 户 2
... 用 户 n 软件工程(Software Engineer) 软件工程(Software Engineer)
计算机科学与工程学院
三层C/S C/S结构 4.2.4 三层C/S结构
其他公用设备 数据库服务器
Print Server
Power/TX Link/Rx LPT1 LPT2 COM
调制解调器
Internet Intranet
用户1
用户2
用户3
用户4
用户5
计算机科学与工程学院
软件工程(Software Engineer) 软件工程(Software Engineer)
4.2.2 两层结构 两层结构——客户 服务器体系结构 客户/服务器体系结构 客户
4.1.5 软件体系结构的现状及发展方向
1. 应用现状 形成研究热点,仍处于非形式化水平 软件体系结构的形式化方法研究 软件体系结构的建模研究 发展基于体系结构的软件开发模型 软件产品线体系结构的研究
计算机科学与工程学院
软件工程(Software Engineer) 软件工程(Software Engineer)
客 户 端 浏 览 器
数 据 库 客 户 端 浏 览 器 W eb服 务 器
数 据 库 服 务 器
计算机科学与工程学院
软件工程(Software Engineer) 软件工程(Software Engineer)
三层C/S C/S结构 4.2.4 三层C/S结构
B/S结构即"瘦客户机"结构,并没有根本解决C/S的问题,一旦客户端增加, 服务器的负担就会加重.而传统的C/S即"胖客户机"结构,虽然网络传输负担减轻 了,事务处理大多在客户机进行,但是软件修改困难,因为它需要修改客户机的程序 和配置,系统管理不便.为了解决上述问题,就产生了三层结构.
4.1.5 软件体系结构的现状及发展方向
2. 研究热点 提供新的软件体系结构描述语言 对软件体系结构的专门知识的整理 提供特定领域的体系结构框架 提供软件体系结构的形式化基础 建立评价软件体系结构的方法
计算机科学与工程学院
软件工程(Software Engineer) 软件工程(Software Engineer)
计算机科学与工程学院
软件工程(Software Engineer) 软件工程(Software Engineer)
4.1.1 从软件危机谈起 3.如何克服软件危机 . 软件工程是用工程,科学和数学的原则与方法研制, 维护计算机软件的有关技术及管理方法.软件工程包括三 个要素: (1)方法.软件工程方法为软件开发提供了"如何做"的技 术,是完成软件工程项目的技术手段; (2)工具.软件工具是人类在开发软件的活动中智力和 体力的扩展和延伸,为软件工程方法提供了自动的或半自 动的软件支撑环境; (3)过程.软件工程的过程则是将软件工程的方法和工 具综合起来以达到合理,及时地进行计算机软件开发的目 的.
输入数据 请求按钮 业务处理请求和 业务处理所需的 全部输入数据 输出数据 全部处理结束 表示层 业务处理程序 业务处理开始
数据存取请求
业务处理结束
SQL 请 求 开 始 数据登录 / 更新 / 读取的请求 DBMS 执 行 SQL SQL 请 求 结 束 数据层
计算机科学与工程学院
软件工程(Software Engineer) 软件工程(Software Engineer)
4.1.3 什么是软件体系结构
总之,软件体系结构的研究正在发展,软件体 系结构的定义也必然随之完善.在以后的文章里, 如果不特别指出,我们将使用软件体系结构的下 列定义: 软件体系结构为软件系统提供了一个结构,行 为和属性的高级抽象,由构成系统的元素的描述, 这些元素的相互作用,指导元素集成的模式以及 这些模式的约束组成.软件体系结构不仅指定了 系统的组织结构和拓扑结构,并且显示了系统需 求和构成系统的元素之间的对应关系,提供了一 些设计决策的基本原则.
业务处理开始
数据存取请求
业务处理结束 数据登录 / 更新 / 读取的结果
数据存取程序 功能层
计算机科学与工程学院
计算机科学与工程学院
软件工程(Software Engineer) 软件工程(Software Engineer)
4.1.2 构件与软件重用 2. 构件 一般认为,构件是指语义完整,语法正确和有可重用 价值的单位软件,是软件重用过程中可以明确辩识的系统; 结构上,它是语义描述,通讯接口和实现代码的复合体. 近年来,构件技术发展迅速,已形成三个主要流派, 分别是IBM的CORBA ,Sun的Java平台和Microsoft的 COM+. 构成一个系统的构件可分为5类: 独立而成熟的构件 有限制的构件 适应性构件 装配的构件 可修改的构件
计算机科学与工程学院
软件工程(Software Engineer) 软件工程(Software Engineer)
4.1.3 什么是软件体系结构 1.软件体系结构的兴起 . 六十年代的软件危机使得人们开始重视软件工程的研 究.起初,人们把软件设计的重点放在数据结构和算法的 选择上,随着软件系统规模越来越大,越来越复杂,整个 系统的结构和规格说明显得越来越重要.软件危机的程度 日益加剧,现有的软件工程方法对此显得力不从心.对于 大规模的复杂软件系统来说,对总体的系统结构设计和规 格说明比起对计算的算法和数据结构的选择已经变得明显 重要得多.在此种背景下,人们认识到软件体系结构的重 要性,并认为对软件体系结构的系统,深入的研究将会成 为提高软件生产率和解决软件维护问题的新的最有希望的 途径.
4.1.5 软件体系结构的现状及发展方向
3. 发展方向 各种ADLs之间的信息互换 设计工具和环境 体系结构再工程
计算机科学与工程学院
软件工程(Software Engineer) 软件工程(Software Engineer)
4.2 通用的软件体系结构
主机/终端结构 两层结构——客户/服务器体系结构 浏览器/服务器结构 三层C/S结构 三层C/S结构应用实例
计算机科学与工程学院
软件工程(Software Engineer) 软件工程(Software Engineer)
4.1.3 什么是软件体系结构
2.软件体系结构的定义 .
Dewayne Perry和A1ex Wo1f曾这样定义:软件体系结构是具有一定形式的 结构化元素,即构件的集合,包括处理构件,数据构件和连接构件. Mary Shaw和David Garlan认为软件体系结构是软件设计过程中的一个层次, 这一层次超越计算过程中的算法设计和数据结构设计. Kruchten指出,软件体系结构有四个角度,它们从不同方面对系统进行描述: 概念角度描述系统的主要构件及它们之间的关系;模块角度包含功能分解与 层次结构;运行角度描述了一个系统的动态结构;代码角度描述了各种代码 和库函数在开发环境中的组织. Hayes Roth则认为软件体系结构是一个抽象的系统规范,主要包括用其行为 来描述的功能构件和构件之间的相互连接,接口和关系. David Garlan和Dewne Perry于1995年在IEEE软件工程学报上又采用如下的 定义:软件体系结构是一个程序/系统各构件的结构,它们之间的相互关系 以及进行设计的原则和随时间进化的指导方针. Barry Boehm和他的学生提出,一个软件体系结构包括一个软件和系统构件, 互联及约束的集合;一个系统需求说明的集合;一个基本原理用以说明这一 构件,互联和约束能够满足系统需求.
软件工程(Software Engineer) 软件工程(Software Engineer)
4.1软件体系结构的概念 4.1软件体系结构的概念
从软件危机谈起 构件与软件重用 什么是软件体系结构 软件体系结构设计原则 软件体系结构的现状及发展方向
计算机科学与工程学院
软件工程(Software Engineer) 软件工程(Software Engineer)
2. C/S结构的一般处理流程 结构的一般处理流程
输入数据 请求按钮 业务处理请求和业务处 理所需的全部输入数据 业务处理开始 数据存取请求 输出数据 全部处理结束 表示层 业务处理结束 业务处理程序
SQL 请求开始
业务处理开始 数据登录/更新/读取的 请求
数据存取请求
DBMS 执行 SQL 业务处理结束 SQL 请求结束 数据层 数据登录/更新/读取的 结果 数据存取程序
计算机科学与工程学院
软件工程(Software Engineer) 软件工程(Software Engineer)
4.2.2 两层结构 两层结构——客户 服务器体系结构 客户/服务器体系结构 客户
1.两层 两层C/S结构 两层 结构
打印机
PWR WI C0 ACT/ CH0 WIC0 ACT/CH0 ETH ACT COL OK ACT/ CH1 ACT/CH1
பைடு நூலகம்
4.1.1 从软件危机谈起
1.软件危机的表现 . 软件成本日益增长 开发进度难以控制 软件质量差 软件维护困难
计算机科学与工程学院
软件工程(Software Engineer) 软件工程(Software Engineer)
4.1.1 从软件危机谈起
2.软件危机的原因 . 用户需求不明确 缺乏正确的理论指导 软件规模越来越大 软件复杂度越来越高
计算机科学与工程学院
软件工程(Software Engineer) 软件工程(Software Engineer)
主机/ 4.2.1 主机/终端结构
早期计算机系统多是单机系统,多个用 户是通过联机终端来访问的,没有网络的 概念.即所谓的主机分时系统.连接的终 端完全没有事务处理的能力,只是输入和 显示信息.所有的事务处理功能完全放在 主机进行.因此主机的负载很重,整个系 统的事务处理能力全部取决于主机.目前, 主机终端模式已逐步被淘汰.
计算机科学与工程学院 软件工程(Software Engineer) 软件工程(Software Engineer)
4.1.4 软件体系结构设计原则
抽象的原则 分而治之的原则 封装和信息隐蔽原则 模块化原则 高内聚和低耦合 关注点分离原则 策略和实现的分离原则 接口和实现分离原则
计算机科学与工程学院 软件工程(Software Engineer) 软件工程(Software Engineer)
计算机科学与工程学院
软件工程(Software Engineer) 软件工程(Software Engineer)
4.1.2 构件与软件重用
1.软件重用 . 软件重用是指在两次或多次不同的软件开发过 程中重复使用相同或相近软件元素的过程. 使用软件重用技术可以减少软件开发活动中大 量的重复性工作,这样就能提高软件生产率,降 低开发成本,缩短开发周期.同时,由于软构件 大都经过严格的质量认证,并在实际运行环境中 得到校验,因此,重用软构件有助于改善软件质 量.此外,大量使用软构件,软件的灵活性和标 准化程度也可望得到提高.
第四章 软件体系结构基础 软件体系结构的开发是大型软件系统开 发的关键环节.体系结构在软件生产线的 开发中具有至关重要的作用,在这种开发 生产中,基于同一个软件体系结构,可以 创建具有不同功能的多个系统.在软件产 品族之间共享体系结构和一组可重用的构 件,可以增加软件工程和降低开发和维护 成本.
计算机科学与工程学院
计算机科学与工程学院
软件工程(Software Engineer) 软件工程(Software Engineer)
浏览器/ 4.2.3 浏览器/服务器结构
B/S本质上也是一种C/S结构,它是传统的两层C/S结构在Web上的发展.相对 于C/S结构而言,B/S结构是把原来在客户机一侧的应用程序模块与显示功能分开,将 应用程序模块单独作为一层放在Web服务器上,客户端只需要安装浏览器就可以了, 这样将系统的业务处理部分统一放在Web服务器上,客户端只起到与用户交互的作用.
数 据 库 服 务 器 1 应 用 服 务 器 I n te rn e t I n tr a n e t
数 据 库 服 务 器 2
... 用 户 1 用 户 2
... 用 户 n 软件工程(Software Engineer) 软件工程(Software Engineer)
计算机科学与工程学院
三层C/S C/S结构 4.2.4 三层C/S结构
其他公用设备 数据库服务器
Print Server
Power/TX Link/Rx LPT1 LPT2 COM
调制解调器
Internet Intranet
用户1
用户2
用户3
用户4
用户5
计算机科学与工程学院
软件工程(Software Engineer) 软件工程(Software Engineer)
4.2.2 两层结构 两层结构——客户 服务器体系结构 客户/服务器体系结构 客户
4.1.5 软件体系结构的现状及发展方向
1. 应用现状 形成研究热点,仍处于非形式化水平 软件体系结构的形式化方法研究 软件体系结构的建模研究 发展基于体系结构的软件开发模型 软件产品线体系结构的研究
计算机科学与工程学院
软件工程(Software Engineer) 软件工程(Software Engineer)
客 户 端 浏 览 器
数 据 库 客 户 端 浏 览 器 W eb服 务 器
数 据 库 服 务 器
计算机科学与工程学院
软件工程(Software Engineer) 软件工程(Software Engineer)
三层C/S C/S结构 4.2.4 三层C/S结构
B/S结构即"瘦客户机"结构,并没有根本解决C/S的问题,一旦客户端增加, 服务器的负担就会加重.而传统的C/S即"胖客户机"结构,虽然网络传输负担减轻 了,事务处理大多在客户机进行,但是软件修改困难,因为它需要修改客户机的程序 和配置,系统管理不便.为了解决上述问题,就产生了三层结构.
4.1.5 软件体系结构的现状及发展方向
2. 研究热点 提供新的软件体系结构描述语言 对软件体系结构的专门知识的整理 提供特定领域的体系结构框架 提供软件体系结构的形式化基础 建立评价软件体系结构的方法
计算机科学与工程学院
软件工程(Software Engineer) 软件工程(Software Engineer)
计算机科学与工程学院
软件工程(Software Engineer) 软件工程(Software Engineer)
4.1.1 从软件危机谈起 3.如何克服软件危机 . 软件工程是用工程,科学和数学的原则与方法研制, 维护计算机软件的有关技术及管理方法.软件工程包括三 个要素: (1)方法.软件工程方法为软件开发提供了"如何做"的技 术,是完成软件工程项目的技术手段; (2)工具.软件工具是人类在开发软件的活动中智力和 体力的扩展和延伸,为软件工程方法提供了自动的或半自 动的软件支撑环境; (3)过程.软件工程的过程则是将软件工程的方法和工 具综合起来以达到合理,及时地进行计算机软件开发的目 的.