体系结构课件
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
要提高软件开发效率,提高软件产品质量,必须采用 工程化的开发方法与工业化的生产技术。
在技术上,应该采用基于重用的软件生产技术;在管 理上,应该采用多维的工程管理模式。
第1章 软件体系结构概论 ◇ 构件模型及实现
1.2 构件与软件重用
◎ 构件的定义
构件是指语义完整、语法正确和有可重用价值的单 位软件,是软件重用过程中可以明确辨识的系统;结构 上,它是语义描述、通讯接口和实现代码的复合体。
软件设计的方法?
(1)面向数据流的软件设计方法 (2)面向对象的软件设计方法
“软件体系结构”你可能知道
Client/Server Three-tier MVC ……
“建筑体系结构”
“建筑体系结构”---建筑学
软件工程教育的定位
• 我国软件工程的专业教育与软件人才的链之间 的关系可描述为如下图:
软件设计与体系结构
Software Design &Architecture
软件设计?
软件设计主要针对需求分析过程得到的软件需求规格 说明,综合考虑各种制约因素,探求切实可行的软件解决 方案并最终给出方案的逻辑表示,包括文档、模型等。。
软件设计就可以看作是“对软件将如何被开发出来的一 种描述”。如果把设计作为一个动词,那么软件设计就是 “得到这种描述的活动或过程”。
架构设计师
产品经理 项目管理者
研究生教育
系统分析师 系统设计师 软件开发工程师
程序员
本科教育
大专教育 中专教育
为何要学习软件体系结构?
随着软件系统规模越来越大、越来越复杂,整个 系统的结构和规格说明显得越来越重要。对于软件 项目的开发来说,具有清晰的软件体系结构是非常 重要的。软件体系结构 在软件需求和设计之间架 起了一座桥梁,着重解决软件系统的结构和需求向 实现平坦地过渡的问题。
关于教材
◇ 出版社:清华大学出版社 ◇ 作者:张友生
参考书 1、《软件体系结构理论与实践》冯冲等编著
人民邮电出版社 2004年 第1版 2、《软件体系结构》覃征等编著
西安交通大学出版社 2002年 第1版 3、 希赛网:http://www.csai.cn/
课程内容
◇ 软件体系结构概论 ◇ 软件体系结构建模 ◇ 软件体系结构风格 ◇ 软件体系结构描述 ◇ 基于体系结构的软件开发 ◇ 软件体系结构评估 ◇ 软件产品线体系结构
有资料表明,工业界为维护软件支付的费用占全部硬件 和软件费用的40%-75%。
第1章 软件体系结构概论 ◇ 软件危机的原因
◎ 用户需求不明确 ◎ 缺乏正确的理论指导 ◎ 软件规模越来越大 ◎ 软件复杂度越来越高
1.1 从软件危机谈起
第1章 软件体系结构概论 ◇ 软件危机的原因
1.1 从软件危机谈起
◎ 软件规模越来越大
1.1 从软件危机谈起
随着软件应用范围的增广,软件规模愈来愈大。大型软件 项目需要组织一定的人力共同完成,而多数管理人员缺乏开 发大型软件系统的经验,而多数软件开发人员又缺乏管理方 面的经验。各类人员的信息交流不及时、不准确、有时还会 产生误解。
软件项目开发人员不能有效地、独立自主地处理大型软件 的全部关系和各个分支,因此容易产生疏漏和错误。
软件越做越大---现代软件开发方法学---软件体系结构
SA(Software Architecture)的定义
体系结构 = 组件 + 连接件 + 约束
Architecture = Components + Connectors + Constrains
SA之重要
• 最早指出SA的重要性 的是大师Edsger Dijkstra(1930-2002)
◎ 用户需求不明确
在软件开发完成之前,用户不清楚软件的具体需求;
用户对软件需求的描述不精确,可能有遗漏、有二义 性、甚至有错误;
在软件开发过程中,用户还提出修改软件功能、界面、 支撑环境等方面的要求;
开发人员对用户需求的理解与用户本来愿望有差异。
第1章 软件体系结构概论 ◇ 软件危机的原因
◎ 缺乏正确的理论指导
工作模式也被称为胖客户机模式。
图2 C/S模式原理图
4、浏览器/服务器(Browser/Server,B/S)模式
B/S是3层结构,又称为瘦客户机模式,其原理如图3所示。 B/S模式下的客户机只需安装浏览器软件,如Windows XP系统内嵌 的IE即可,无须开发前端应用程序,这就是瘦客户机模式中“瘦”的 含义;中间层的Web应用服务器,如Microsoft公司的IIS等是连接前 端客户机和后台数据库服务器的桥梁,主要的数据计算和应用都在此 完成,因此对中间层服务器的要求较高,开发中间层应用的技术人员 需要具备一定的编程基础;后台数据库服务器主要完成数据的管理。
“..the larger the project, the more essential the structuring!”(1968)
程序=?
• 程序 = 算法 + 数据结构(1960’s ) • 程序 = 子程序 + 子程序(1970’s )
对象 = 算法 + 数据结构 • 程序 = 对象 + 对象(1980’s) • 程序 = 组件 + 连接件(1990’s) ✓ 连接构件把体系结构的不同部分组组合连接起来
第1章 软件体系结构概论 ◇ 软件危机的原因
1.1 从软件危机谈起
◎ 软件复杂度越来越高
软件不仅仅是在规模上快速地发展扩大,而且其复杂 性也急剧地增加。软件产品的特殊性和人类智力的局限性, 导致人们无力处理“复杂问题”。
所谓“复杂问题”的概念是相对的,一旦人们采用先 进的组织形式、开发方法和工具提高了软件开发效率和能 力,新的、更大的、更复杂的问题又摆在人们的面前。
模型和生命周期模型; (3)介绍软件体系结构的风格(模式); (4)讨论软件体系结构的描述方法,重点介绍软件
体系结构描述语言; (5)讨论基于体系结构的软件开发方法,介绍基于
体系结构的软件过程; (6)讨论软件体系结构评估方法; (7)介绍软件产品线的原理和方法、框架技术,以
及讨论产品线体系结构的设计和演化。
图3 B/S模式原理图
B/S结构的特点:
基于B/S模式的Web网络数据库应用模式主要用于浏览、查询 Internet/ Intranet信息。
但由于面向的是不特定的用户,客户机无须维护和升级。因 此,随着Internet的普及,这种模式逐渐为我们所重视,典型的 例子是Internet上购物等使用的数据库系统,这也是目前开展电 子商务应用的常用模式。
需求分析
软件体系结构
软件设计
《软件体系结构》系统地介绍
✓ 软件体系结构基本原理、方法和实践 ✓ 全面反映软件体系结构研究和应用的最新进展 ✓ 既讨论软件体系结构的基本理论知识,又介绍软件
体系结构的设计及应用实例 ✓ 强调理论与实践相结合
本课程的详细任务包括: (1)介绍软件体系结构的概念、发展和应用现状; (2)讨论软件体系结构建模,包括视图模型、核心
图1 主机/终端体系结构
2、分层体系结构
随着PC的普及和网络的出现,这种单层的体系结构被逐步淘汰,演变为分层 的体系结构。典型的分层体系结构有两种:C/S结构和B/S结构。 客户机/服务器(Client/Server,C/S)模式,两层结构,又称为胖客户机模式, 其原理如图2所示。
图2 C/S模式原理图
1.1 从软件危机谈起
缺乏有力的方法学和工具方面的支持。由于软件不同于 大多数其他工业产品,其开发过程是复杂的逻辑思维过程, 其产品极大程度地依赖于开发人员高度的智力投入。由于过 分地依靠程序设计人员在软件开发过程中的技巧和创造性, 加剧软件产品的个性化,也是发生软件危机的一个重要原因。
第1章 软件体系结构概论 ◇ 软件危机的原因
图3 B/S模式原理图
第1章 软件体系结构概论 ◇ 软件危机的表现
◎ 软件成本日益增长 ◎ 开发进度难以控制 ◎ 软件质量差 ◎ 软件维护困难
1.1 从软件危机谈起
第1章 软件体系结构概论
1.1 从软件危机谈起
◇ 软件危机的表现
◎ 软件成本日益增长
20世纪50年代,软件成本在整个计算机系统成本中所占的 比例为10%-20%。到20世纪60年代中期,软件成本在计算机系 统中所占的比例已经增长到50%左右。
无论是C/S模式还是B/S模式,分层的软件系统体系结构实际
上把一个软件系统分解成了3个主要部分。
➢ 用户表现层:接受用户的请求和操作,将操作信息最终显 示给用户。常见的就是一个IE浏览器中的Web页面,或者是一个 标准的Windows窗体程序。 ➢ 业务逻辑层:业务逻辑层完成业务功能和逻辑。比如,Web 网站中的IIS服务器就是一个业务逻辑层。 ➢ 数据服务层:指后台数据库系统,也可以是各种能够存储数 据的文件。
软件体系结构的发展
伴随不同的软件开发方法,软件体系结构也经历了4个发展阶段。 1、主机/终端体系结构
早期的软件系统采用主机/终端体系结构,如图所示。在大型 主机上部署中央CPU和各种应用系统,典型的系统如批处理、 联机交易等。这种软件系统的体系结构也称为单层体系结构, 所有的功能和操作集中在主机上,终端仅仅是作为输入和输出 设备使用。
第1章 软件体系结构概论 ◇ 软件危机的表现
◎ 软件维护困难
wenku.baidu.com
1.1 从软件危机谈起
由于在软件设计和开发过程中,没有严格遵循软件开发 标准,各种随意性很大,没有完整的真实反映系统状况的记 录文档,给软件维护造成了巨大的困难。
特别是在软件使用过程中,原来的开发人员可能因各种 原因已经离开原来的开发组织,使得软件几乎不可维护。
在软件开发过程中,用户需求变化等各种意想不到的情 况层出不穷,令软件开发过程很难保证按预定的计划实现, 给项目计划和论证工作带来了很大的困难。
盲目增加软件开发人员并不能成比例地提高软件开发能 力。相反,随着人员数量的增加,人员的组织、协调、通信、 培训和管理等方面的问题将更为严重。
第1章 软件体系结构概论 ◇ 软件危机的表现
3、C/S结构的特点
基于C/S模式的网络数据库在前端计算机上要安装专门的应用程序 来操作后台数据库服务器中的数据,前端应用程序可以完成计算和接 收处理数据的工作,后台数据库服务器主要完成数据的管理工作。C/S 模式的优点是速度较快、功能完备,缺点:维护升级很不方便,主要 是基于行业的数据库应用,如股票接收系统、邮局汇款系统等。由于 有多个系统,在每个客户机上就要安装多个前端客户程序,因此这种
✓ 处理构件负责对数据进行加工 ✓ 数据构件是被加工的信息
软件体系结构的发展史
“无体系结构”设计阶段
以汇编语言进行小规模应用程序开 发为特征
萌芽阶段 初期阶段 高级阶段
出现了程序结构设计主题,以控制流 图和数据流图构成软件结构为特征
出现了从不同侧面描述系统的结构模 型,以UML为典型代表。
以描述系统的高层抽象结构为中心,不 关心具体的建模细节,划分了体系结构 模型与传统软件结构的界限,该阶段以 Kruchten提出的“4+1”模型为标志
◎ 软件质量差
1.1 从软件危机谈起
软件项目即使能按预定日期完成,结果却不尽人意。 1965年至1970年,美国范登堡基地发射火箭多次失败,绝大 部分故障是由应用程序错误造成的。
在“软件作坊”里,由于缺乏工程化思想的指导,程序 员几乎总是习惯性地以自己的想法去代替用户对软件的需求, 软件设计带有随意性,很多功能只是程序员的“一厢情愿” 而已,这是造成软件不能令人满意的重要因素。
第1章 软件体系结构概论
1.1 从软件危机谈起
例:美国IBM公司在1963年——1966年开发 的IBM360机的操作系统。这一项目花了5千 人一年的工作量,最多时有1千人投入开发工 作,写出了近100万行源程序。
第1章 软件体系结构概论 ◇ 如何克服软件危机
1.1 从软件危机谈起
人们面临的不光是技术问题,更重要的是管理问题。 管理不善必然导致失败 。
而且,该数字还在不断地递增,下面是一组来自美国空军 计算机系统的数据:
1955年,软件费用约占总费用的18%, 1970年达到60%, 1975年达到72%, 1980年达到80%, 1985年达到85%左右。
第1章 软件体系结构概论 ◇ 软件危机的表现
◎ 开发进度难以控制
1.1 从软件危机谈起
由于软件是逻辑、智力产品,软件的开发需建立庞大的 逻辑体系,这是与其他产品的生产不一样的。