《《体系结构》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《体系结构》PPT课件.ppt(107页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、软件设计与体系结构软件设计与体系结构Software Design&Architecture软件设计?软件设计?软件设计主要针对需求分析过程得到的软件需求规格说软件设计主要针对需求分析过程得到的软件需求规格说明,综合考虑各种制约因素,探求切实可行的软件解决方明,综合考虑各种制约因素,探求切实可行的软件解决方案并最终给出方案的逻辑表示,包括文档、模型等。案并最终给出方案的逻辑表示,包括文档、模型等。软件设计就可以看作是软件设计就可以看作是“对软件将如何被开发出来的一对软件将如何被开发出来的一种描述种描述”。如果把设计作为一个动词,那么软件设计就是。如果把设计作为一个动词,那么软件设计就是“得到这
2、种描述的活动或过程得到这种描述的活动或过程”。软件设计的方法?软件设计的方法?(1)面向数据流的软件设计方法)面向数据流的软件设计方法(2)面向对象的软件设计方法)面向对象的软件设计方法“软件体系结构软件体系结构”你可能知道你可能知道nClient/ServernThree-tiernMVCn“建筑体系结构”“建筑体系结构”-建筑学 软件工程教育的定位软件工程教育的定位我国软件工程的专业教育与软件人才的链之间我国软件工程的专业教育与软件人才的链之间的关系可描述为如下图:的关系可描述为如下图:软件开发工程师软件开发工程师架构设计师架构设计师产品经理产品经理项目管理者项目管理者系统分析师系统分析师
3、系统设计师系统设计师程序员程序员研究生教育研究生教育本科教育本科教育大专教育大专教育中专教育中专教育 随着软件系统规模越来越大、越来越复杂,整个随着软件系统规模越来越大、越来越复杂,整个系统的结构和规格说明显得越来越重要。对于软件系统的结构和规格说明显得越来越重要。对于软件项目的开发来说,具有清晰的软件体系结构是非常项目的开发来说,具有清晰的软件体系结构是非常重要的。软件体系结构重要的。软件体系结构 在软件需求和设计之间架在软件需求和设计之间架起了一座桥梁,着重解决软件系统的结构和需求向起了一座桥梁,着重解决软件系统的结构和需求向实现平坦地过渡的问题。实现平坦地过渡的问题。为何要学习软件体系结
4、构?为何要学习软件体系结构?需求分析需求分析 软件设计软件设计 软件体系结构软件体系结构软件体系结构软件体系结构系统地介绍系统地介绍 软件体系结构基本原理、方法和实践软件体系结构基本原理、方法和实践 全面反映软件体系结构研究和应用的最新进展全面反映软件体系结构研究和应用的最新进展 既讨论软件体系结构的基本理论知识,又介绍软件既讨论软件体系结构的基本理论知识,又介绍软件 体系结构的设计及应用实例体系结构的设计及应用实例 强调理论与实践相结合强调理论与实践相结合 本课程的详细任务包括:本课程的详细任务包括:(1)(1)介绍软件体系结构的概念、发展和应用现状;介绍软件体系结构的概念、发展和应用现状;
5、(2)(2)讨论软件体系结构建模,包括视图模型、核心讨论软件体系结构建模,包括视图模型、核心 模型和生命周期模型;模型和生命周期模型;(3)(3)介绍软件体系结构的风格介绍软件体系结构的风格(模式模式);(4)(4)讨论软件体系结构的描述方法,重点介绍软件讨论软件体系结构的描述方法,重点介绍软件 体系结构描述语言;体系结构描述语言;(5)(5)讨论基于体系结构的软件开发方法,介绍基于讨论基于体系结构的软件开发方法,介绍基于 体系结构的软件过程;体系结构的软件过程;(6)(6)讨论软件体系结构评估方法;讨论软件体系结构评估方法;(7)(7)介绍软件产品线的原理和方法、框架技术,以介绍软件产品线的
6、原理和方法、框架技术,以 及讨论产品线体系结构的设计和演化。及讨论产品线体系结构的设计和演化。SA(SoftwareArchitecture)的定义的定义体体系系结结构构=组组件件+连连接接件件+约约束束Architecture=Components+Connectors+Constrains软软件件越越做做越越大大-现现代代软软件件开开发发方方法法学学-软软件件体体系系结结构构SA之重要最早指出SA的重要性的是大师EdsgerDijkstra(1930-2002)“.the larger the project,the more essential the structuring!”(196
7、8)程序程序=?程序程序=算法算法+数据结构(数据结构(1960s)程序程序=子程序子程序+子程序(子程序(1970s)对象对象=算法算法+数据结构数据结构程序程序=对象对象+对象(对象(1980s)程序程序=组件组件+连接件(连接件(1990s)连接构件连接构件把把体系结构体系结构的不同部分组组合连接起来的不同部分组组合连接起来 处理构件处理构件负责对数据进行加工负责对数据进行加工 数据构件数据构件是被加工的信息是被加工的信息 软件体系结构的软件体系结构的发展史发展史“无体系结构无体系结构”设计阶设计阶段段萌芽阶段萌芽阶段以汇编语言进行小规模应用程序开以汇编语言进行小规模应用程序开发为特征发
8、为特征以描述系统的高层抽象结构为中心,不关以描述系统的高层抽象结构为中心,不关心具体的建模细节,划分了体系结构模型心具体的建模细节,划分了体系结构模型与传统软件结构的界限,该阶段以与传统软件结构的界限,该阶段以KruchtenKruchten提出的提出的“4+14+1”模型为标志模型为标志出现了从不同侧面描述系统的结构模出现了从不同侧面描述系统的结构模型,以型,以UML为典型代表。为典型代表。出现了程序结构设计主题,以控制流出现了程序结构设计主题,以控制流图和数据流图构成软件结构为特征图和数据流图构成软件结构为特征高级阶段高级阶段 初期阶段初期阶段关关 于于 教教 材材 出版社:清华大学出版社
9、出版社:清华大学出版社 作者:张友生作者:张友生参考书参考书1 1、软件体系结构理论与实践冯冲等编著、软件体系结构理论与实践冯冲等编著 人民邮电出版社人民邮电出版社 2004 2004年年 第第1 1版版2 2、软件体系结构覃征等编著、软件体系结构覃征等编著 西安交通大学出版社西安交通大学出版社 2002 2002年年 第第1 1版版3 3、希赛网:希赛网:http:/课课 程程 内内 容容 软件体系结构概论软件体系结构概论 软件体系结构建模软件体系结构建模 软件体系结构风格软件体系结构风格 软件体系结构描述软件体系结构描述 基于体系结构的软件开发基于体系结构的软件开发 软件体系结构评估软件体
10、系结构评估 软件产品线体系结构软件产品线体系结构 软件体系结构的发展软件体系结构的发展 伴随不同的软件开发方法,软件体系结构也经历了伴随不同的软件开发方法,软件体系结构也经历了4个发展阶段。个发展阶段。1、主机、主机/终端体系结构终端体系结构 早期的软件系统采用主机早期的软件系统采用主机/终端体系结构,如图所示。在大型终端体系结构,如图所示。在大型主机上部署中央主机上部署中央CPU和各种应用系统,典型的系统如批处理、和各种应用系统,典型的系统如批处理、联机交易等。这种软件系统的体系结构也称为单层体系结构,联机交易等。这种软件系统的体系结构也称为单层体系结构,所有的功能和操作集中在主机上,终端仅
11、仅是作为输入和输出所有的功能和操作集中在主机上,终端仅仅是作为输入和输出设备使用。设备使用。图图1 1 主机主机/终端体系结构终端体系结构 2 2、分层体系结构、分层体系结构 随着随着PCPC的普及和网络的出现,这种单层的体系结构被逐步淘汰,演变为分层的普及和网络的出现,这种单层的体系结构被逐步淘汰,演变为分层的体系结构。典型的分层体系结构有两种:的体系结构。典型的分层体系结构有两种:C/SC/S结构和结构和B/SB/S结构。结构。客户机客户机/服务器(服务器(Client/ServerClient/Server,C/SC/S)模式)模式,两层结构,又称为胖客户机模式,两层结构,又称为胖客户机
12、模式,其原理如图其原理如图2 2所示。所示。图图2 2 C/S C/S模式原理图模式原理图 3 3、C/SC/S结构的特点结构的特点 基于基于C/SC/S模式的网络数据库在前端计算机上要安装专门的应用程序模式的网络数据库在前端计算机上要安装专门的应用程序来操作后台数据库服务器中的数据,前端应用程序可以完成计算和接来操作后台数据库服务器中的数据,前端应用程序可以完成计算和接收处理数据的工作,后台数据库服务器主要完成数据的管理工作。收处理数据的工作,后台数据库服务器主要完成数据的管理工作。C/SC/S模式的优点是速度较快、功能完备,缺点:维护升级很不方便,主要模式的优点是速度较快、功能完备,缺点:
13、维护升级很不方便,主要是基于行业的数据库应用,如股票接收系统、邮局汇款系统等。由于是基于行业的数据库应用,如股票接收系统、邮局汇款系统等。由于有多个系统,在每个客户机上就要安装多个前端客户程序,因此这种有多个系统,在每个客户机上就要安装多个前端客户程序,因此这种工作模式也被称为胖客户机模式工作模式也被称为胖客户机模式。图图2 2 C/S C/S模式原理图模式原理图 4 4、浏览器、浏览器/服务器(服务器(Browser/ServerBrowser/Server,B/SB/S)模式)模式 B/S B/S是是3 3层结构,又称为瘦客户机模式,其原理如图层结构,又称为瘦客户机模式,其原理如图3 3所
14、示。所示。B/SB/S模式下的客户机只需安装浏览器软件,如模式下的客户机只需安装浏览器软件,如Windows XP系统内嵌系统内嵌的的IE即可,无须开发前端应用程序,这就是瘦客户机模式中即可,无须开发前端应用程序,这就是瘦客户机模式中“瘦瘦”的的含义;含义;中间层的中间层的WebWeb应用服务器应用服务器,如,如Microsoft公司的公司的IIS等是连接前等是连接前端客户机和后台数据库服务器的桥梁,主要的数据计算和应用都在此端客户机和后台数据库服务器的桥梁,主要的数据计算和应用都在此完成,因此对中间层服务器的要求较高,开发中间层应用的技术人员完成,因此对中间层服务器的要求较高,开发中间层应用
15、的技术人员需要具备一定的编程基础;后台数据库服务器主要完成数据的管理。需要具备一定的编程基础;后台数据库服务器主要完成数据的管理。图图3 3 B/S B/S模式原理图模式原理图 B/SB/S结构的特点:结构的特点:基基于于B/SB/S模模式式的的WebWeb网网络络数数据据库库应应用用模模式式主主要要用用于于浏浏览览、查查询询Internet/Intranet信息。信息。但但由由于于面面向向的的是是不不特特定定的的用用户户,客客户户机机无无须须维维护护和和升升级级。因因此此,随随着着Internet的的普普及及,这这种种模模式式逐逐渐渐为为我我们们所所重重视视,典典型型的的例例子子是是Inte
16、rnet上上购购物物等等使使用用的的数数据据库库系系统统,这这也也是是目目前前开开展展电电子子商商务应用的常用模式。务应用的常用模式。无无论论是是C/SC/S模模式式还还是是B/SB/S模模式式,分分层层的的软软件件系系统统体体系系结结构构实实际际上把一个软件系统分解成了上把一个软件系统分解成了3 3个主要部分。个主要部分。用用户户表表现现层层:接接受受用用户户的的请请求求和和操操作作,将将操操作作信信息息最最终终显显示示给给用用户户。常常见见的的就就是是一一个个IEIE浏浏览览器器中中的的WebWeb页页面面,或或者者是是一一个个标标准的准的WindowsWindows窗体程序。窗体程序。业
17、业务务逻逻辑辑层层:业业务务逻逻辑辑层层完完成成业业务务功功能能和和逻逻辑辑。比比如如,WebWeb网站中的网站中的IISIIS服务器就是一个业务逻辑层。服务器就是一个业务逻辑层。数数据据服服务务层层:指指后后台台数数据据库库系系统统,也也可可以以是是各各种种能能够够存存储储数据的文件。数据的文件。图图3 B/S3 B/S模式原理图模式原理图 软件危机的表现软件危机的表现 软件成本日益增长软件成本日益增长 开发进度难以控制开发进度难以控制 软件质量差软件质量差 软件维护困难软件维护困难第第1 1章章 软件体系结构概论软件体系结构概论1.1 1.1 从软件危机谈起从软件危机谈起 软件危机的表现软
18、件危机的表现 软件成本日益增长软件成本日益增长 20 20世纪世纪5050年代,软件成本在整个计算机系统成本中所占的年代,软件成本在整个计算机系统成本中所占的比例为比例为10%-20%10%-20%。到。到2020世纪世纪6060年代中期,软件成本在计算机系统年代中期,软件成本在计算机系统中所占的比例已经增长到中所占的比例已经增长到50%50%左右。左右。而且,该数字还在不断地递增,下面是一组来自美国空军而且,该数字还在不断地递增,下面是一组来自美国空军计算机系统的数据:计算机系统的数据:1955 1955年,软件费用约占总费用的年,软件费用约占总费用的18%18%,1970 1970年达到年
19、达到60%60%,1975 1975年达到年达到72%72%,1980 1980年达到年达到80%80%,1985 1985年达到年达到85%85%左右。左右。第第1 1章章 软件体系结构概论软件体系结构概论1.1 1.1 从软件危机谈起从软件危机谈起 软件危机的表现软件危机的表现 开发进度难以控制开发进度难以控制 由于软件是逻辑、智力产品,软件的开发需建立庞大的由于软件是逻辑、智力产品,软件的开发需建立庞大的逻辑体系,这是与其他产品的生产不一样的。逻辑体系,这是与其他产品的生产不一样的。在在软软件件开开发发过过程程中中,用用户户需需求求变变化化等等各各种种意意想想不不到到的的情情况况层层出出
20、不不穷穷,令令软软件件开开发发过过程程很很难难保保证证按按预预定定的的计计划划实实现现,给项目计划和论证工作带来了很大的困难。给项目计划和论证工作带来了很大的困难。盲盲目目增增加加软软件件开开发发人人员员并并不不能能成成比比例例地地提提高高软软件件开开发发能能力力。相相反反,随随着着人人员员数数量量的的增增加加,人人员员的的组组织织、协协调调、通通信信、培训和管理等方面的问题将更为严重。培训和管理等方面的问题将更为严重。第第1 1章章 软件体系结构概论软件体系结构概论1.1 1.1 从软件危机谈起从软件危机谈起 软件危机的表现软件危机的表现 软件质量差软件质量差 软件项目即使能按预定日期完成,
21、结果却不尽人意。软件项目即使能按预定日期完成,结果却不尽人意。19651965年至年至19701970年,美国范登堡基地发射火箭多次失败,绝大年,美国范登堡基地发射火箭多次失败,绝大部分故障是由应用程序错误造成的。部分故障是由应用程序错误造成的。在在“软件作坊软件作坊”里,由于缺乏工程化思想的指导,程序里,由于缺乏工程化思想的指导,程序员几乎总是习惯性地以自己的想法去代替用户对软件的需求,员几乎总是习惯性地以自己的想法去代替用户对软件的需求,软件设计带有随意性,很多功能只是程序员的软件设计带有随意性,很多功能只是程序员的“一厢情愿一厢情愿”而已,这是造成软件不能令人满意的重要因素。而已,这是造
22、成软件不能令人满意的重要因素。第第1 1章章 软件体系结构概论软件体系结构概论1.1 1.1 从软件危机谈起从软件危机谈起 软件危机的表现软件危机的表现 软件维护困难软件维护困难 由于在软件设计和开发过程中,没有严格遵循软件开发由于在软件设计和开发过程中,没有严格遵循软件开发标准,各种随意性很大,没有完整的真实反映系统状况的记标准,各种随意性很大,没有完整的真实反映系统状况的记录文档,给软件维护造成了巨大的困难。录文档,给软件维护造成了巨大的困难。特别是在软件使用过程中,原来的开发人员可能因各种特别是在软件使用过程中,原来的开发人员可能因各种原因已经离开原来的开发组织,使得软件几乎不可维护。原
23、因已经离开原来的开发组织,使得软件几乎不可维护。有资料表明,工业界为维护软件支付的费用占全部硬件有资料表明,工业界为维护软件支付的费用占全部硬件和软件费用的和软件费用的40%-75%40%-75%。第第1 1章章 软件体系结构概论软件体系结构概论1.1 1.1 从软件危机谈起从软件危机谈起 软件危机的原因软件危机的原因 用户需求不明确用户需求不明确 缺乏正确的理论指导缺乏正确的理论指导 软件规模越来越大软件规模越来越大 软件复杂度越来越高软件复杂度越来越高第第1 1章章 软件体系结构概论软件体系结构概论1.1 1.1 从软件危机谈起从软件危机谈起 用户需求不明确用户需求不明确 在软件开发完成之
24、前,用户不清楚软件的具体需求;在软件开发完成之前,用户不清楚软件的具体需求;用户对软件需求的描述不精确,可能有遗漏、有二义用户对软件需求的描述不精确,可能有遗漏、有二义性、甚至有错误;性、甚至有错误;在软件开发过程中,用户还提出修改软件功能、界面、在软件开发过程中,用户还提出修改软件功能、界面、支撑环境等方面的要求;支撑环境等方面的要求;开发人员对用户需求的理解与用户本来愿望有差异。开发人员对用户需求的理解与用户本来愿望有差异。第第1 1章章 软件体系结构概论软件体系结构概论1.1 1.1 从软件危机谈起从软件危机谈起 软件危机的原因软件危机的原因 缺乏正确的理论指导缺乏正确的理论指导 缺乏有
25、力的方法学和工具方面的支持。由于软件不同于缺乏有力的方法学和工具方面的支持。由于软件不同于大多数其他工业产品,其开发过程是复杂的逻辑思维过程,大多数其他工业产品,其开发过程是复杂的逻辑思维过程,其产品极大程度地依赖于开发人员高度的智力投入。由于过其产品极大程度地依赖于开发人员高度的智力投入。由于过分地依靠程序设计人员在软件开发过程中的技巧和创造性,分地依靠程序设计人员在软件开发过程中的技巧和创造性,加剧软件产品的个性化,也是发生软件危机的一个重要原因。加剧软件产品的个性化,也是发生软件危机的一个重要原因。第第1 1章章 软件体系结构概论软件体系结构概论1.1 1.1 从软件危机谈起从软件危机谈
26、起 软件危机的原因软件危机的原因 软件规模越来越大软件规模越来越大 随着软件应用范围的增广,软件规模愈来愈大。大型软件随着软件应用范围的增广,软件规模愈来愈大。大型软件项目需要组织一定的人力共同完成,而多数管理人员缺乏开项目需要组织一定的人力共同完成,而多数管理人员缺乏开发大型软件系统的经验,而多数软件开发人员又缺乏管理方发大型软件系统的经验,而多数软件开发人员又缺乏管理方面的经验。各类人员的信息交流不及时、不准确、有时还会面的经验。各类人员的信息交流不及时、不准确、有时还会产生误解。产生误解。软件项目开发人员不能有效地、独立自主地处理大型软件软件项目开发人员不能有效地、独立自主地处理大型软件
27、的全部关系和各个分支,因此容易产生疏漏和错误。的全部关系和各个分支,因此容易产生疏漏和错误。第第1 1章章 软件体系结构概论软件体系结构概论1.1 1.1 从软件危机谈起从软件危机谈起 软件危机的原因软件危机的原因 软件复杂度越来越高软件复杂度越来越高 软件不仅仅是在规模上快速地发展扩大,而且其复杂软件不仅仅是在规模上快速地发展扩大,而且其复杂性也急剧地增加。软件产品的特殊性和人类智力的局限性,性也急剧地增加。软件产品的特殊性和人类智力的局限性,导致人们无力处理导致人们无力处理“复杂问题复杂问题”。所谓所谓“复杂问题复杂问题”的概念是相对的,一旦人们采用先的概念是相对的,一旦人们采用先进的组织
28、形式、开发方法和工具提高了软件开发效率和能进的组织形式、开发方法和工具提高了软件开发效率和能力,新的、更大的、更复杂的问题又摆在人们的面前。力,新的、更大的、更复杂的问题又摆在人们的面前。第第1 1章章 软件体系结构概论软件体系结构概论1.1 1.1 从软件危机谈起从软件危机谈起 软件危机的原因软件危机的原因 例例:美国美国IBM公司在公司在1963年年1966年开发年开发的的IBM360机的操作系统。这一项目花了机的操作系统。这一项目花了5千千人人一年一年的工作量,最多时有的工作量,最多时有1千人千人投入开发工投入开发工作,写出了近作,写出了近100万万行源程序。行源程序。第第1 1章章 软
29、件体系结构概论软件体系结构概论1.1 1.1 从软件危机谈起从软件危机谈起 如何克服软件危机如何克服软件危机 人们面临的不光是技术问题,更重要的是管理问题。人们面临的不光是技术问题,更重要的是管理问题。管理不善必然导致失败管理不善必然导致失败 。要提高软件开发效率,提高软件产品质量,必须采用要提高软件开发效率,提高软件产品质量,必须采用工程化的开发方法与工业化的生产技术。工程化的开发方法与工业化的生产技术。在技术上,应该采用基于在技术上,应该采用基于重用的软件生产技术重用的软件生产技术;在管;在管理上,应该采用多维的工程管理模式。理上,应该采用多维的工程管理模式。第第1 1章章 软件体系结构概
30、论软件体系结构概论1.1 1.1 从软件危机谈起从软件危机谈起 构件模型及实现构件模型及实现 第第1 1章章 软件体系结构概论软件体系结构概论1.2 1.2 构件与软件重用构件与软件重用 构件的定义构件的定义 构件是指语义完整、语法正确和有可重用价值的单构件是指语义完整、语法正确和有可重用价值的单位软件,是软件重用过程中可以明确辨识的系统;结构位软件,是软件重用过程中可以明确辨识的系统;结构上,它是上,它是语义描述语义描述、通讯接口通讯接口和和实现代码实现代码的复合体。的复合体。/计算圆的面积及周长计算圆的面积及周长class Circle private:float radius;publi
31、c:Circle(float r);float Circumference();float Area();float Circle:Circumference()return 2*PI*radius;构件模型及实现构件模型及实现 第第1 1章章 软件体系结构概论软件体系结构概论1.2 1.2 构件与软件重用构件与软件重用 构件模型的构件模型的三个主要三个主要(main)流派流派 OMG(ObjectManagementGroup,对象管理集团)对象管理集团)的的CORBA(CommonObjectRequestBrokerArchitecture,通用对象请求代理结构)通用对象请求代理结构)S
32、un的的EJB(EnterpriseJavaBean)Microsoft的的DCOM(DistributedComponentObjectModel,分布式构件对象模型)分布式构件对象模型)构件模型及实现构件模型及实现 第第1 1章章 软件体系结构概论软件体系结构概论1.2 1.2 构件与软件重用构件与软件重用 青鸟构件模型青鸟构件模型 构件获取构件获取第第1 1章章 软件体系结构概论软件体系结构概论1.2 1.2 构件与软件重用构件与软件重用 从从现有构件现有构件中获得符合要求的构件,直接使用或作适应中获得符合要求的构件,直接使用或作适应性修改,得到可重用的构件;(性修改,得到可重用的构件;
33、(Microsoft MFCMicrosoft MFC、Sun JavaSun Java类类库)库)通过通过遗留工程遗留工程,将具有潜在重用价值的构件提取出来,将具有潜在重用价值的构件提取出来,得到可重用的构件;得到可重用的构件;从市场上购买从市场上购买现成的商业构件,即现成的商业构件,即COTSCOTS(Commercial Commercial Off-The-ShellOff-The-Shell)构件;)构件;如:利用如:利用eclipseeclipse开发开发Java WebJava Web程序,程序,需安装商业插件需安装商业插件MyeclipseMyeclipse,支持,支持stru
34、tsstruts开发。开发。开发开发新的新的符合要求的构件。符合要求的构件。构件管理构件管理 第第1 1章章 软件体系结构概论软件体系结构概论1.2 1.2 构件与软件重用构件与软件重用 构件描述构件描述 构件分类与组织构件分类与组织 人员及权限管理人员及权限管理 构件管理构件管理 第第1 1章章 软件体系结构概论软件体系结构概论1.2 1.2 构件与软件重用构件与软件重用 构件描述构件描述 构件模型构件模型是对构件本质的抽象描述,主要是为构件是对构件本质的抽象描述,主要是为构件的制作与构件的重用提供依据;的制作与构件的重用提供依据;从从管理角度管理角度出发,也需要对构件进行描述,例如:出发,
35、也需要对构件进行描述,例如:实现方式、实现体、注释、生产者、生产日期、大小、实现方式、实现体、注释、生产者、生产日期、大小、价格、版本和关联构件等信息。价格、版本和关联构件等信息。构构件件的的完完整整描描述述 构件管理构件管理 第第1 1章章 软件体系结构概论软件体系结构概论1.2 1.2 构件与软件重用构件与软件重用 构件分类与组织构件分类与组织 为了查询、利用构件,对置于构件库中的构件进为了查询、利用构件,对置于构件库中的构件进行行分类分类(classify)(classify):关键字分类法关键字分类法 刻面分类法刻面分类法 超文本组织方法超文本组织方法 构件管理构件管理 第第1 1章章
36、 软件体系结构概论软件体系结构概论1.2 1.2 构件与软件重用构件与软件重用 关键字分类法关键字分类法(keywordclassification)将应用领域的概念按照将应用领域的概念按照从抽象到具体从抽象到具体的顺序逐次分解为树状图的顺序逐次分解为树状图 构件管理构件管理 第第1 1章章 软件体系结构概论软件体系结构概论1.2 1.2 构件与软件重用构件与软件重用 刻面分类法刻面分类法(facetedclassification)源于图书馆学。该机制中,定义若干用于源于图书馆学。该机制中,定义若干用于刻画构件特征的刻画构件特征的“面面(facet)”(facet)”。刻面的集合称为刻面的集
37、合称为刻面描述符刻面描述符(facet descriptor)(facet descriptor)。例如:使用下列构件描述符的模式:例如:使用下列构件描述符的模式:function,object type,system type function,object type,system type 刻面的典型值可能是:刻面的典型值可能是:function=copy,from or copy,replace,all function=copy,from or copy,replace,all 构件管理构件管理 第第1 1章章 软件体系结构概论软件体系结构概论1.2 1.2 构件与软件重用构件与软件重
38、用 超文本组织法超文本组织法(hypertextclassification)是一种非线性的网状信息组织方法,以节点为单位,链作为节是一种非线性的网状信息组织方法,以节点为单位,链作为节点之间的联想式关联。点之间的联想式关联。例如:例如:WindowsWindows环境下的联机帮助系统环境下的联机帮助系统(如:如:word文件中文件中help)。构件管理构件管理 第第1 1章章 软件体系结构概论软件体系结构概论1.2 1.2 构件与软件重用构件与软件重用 人员及权限管理人员及权限管理 一般来讲,构件库系统可包括五类用户一般来讲,构件库系统可包括五类用户 即即 注册用户注册用户 公共用户公共用户
39、 构件提交者构件提交者 一般系统管理员一般系统管理员 超级系统管理员超级系统管理员 构件重用构件重用 第第1 1章章 软件体系结构概论软件体系结构概论1.2 1.2 构件与软件重用构件与软件重用 检索与提取构件检索与提取构件 理解与评价构件理解与评价构件 修改构件修改构件 构件组装构件组装 构件重用构件重用 第第1 1章章 软件体系结构概论软件体系结构概论1.2 1.2 构件与软件重用构件与软件重用 检索与提取构件检索与提取构件 基于关键字的检索基于关键字的检索 方法:用户利用界面树状结构逐级寻找需要的关键字方法:用户利用界面树状结构逐级寻找需要的关键字,如:在如:在Visual C+Visu
40、al C+使用使用MSDN,包括包括VC+的帮助文件和的帮助文件和许多与开多与开发相关的技相关的技术文献文献。刻面检索法刻面检索法(1 1)用用户户提提供供要要查查找找的的构构件件在在每每个个刻刻面面上上的的特特征征,生生成成构构件件描述符(构造查询)。描述符(构造查询)。(2 2)利用)利用CASECASE工具在构件库中,查找相应的构件工具在构件库中,查找相应的构件(检索构件检索构件)。(3 3)对构件进行排序,一般按相似程度排序。)对构件进行排序,一般按相似程度排序。超文本检索法超文本检索法 利利用用给给定定的的关关键键字字,在在构构件件说说明明中中进进行行匹匹配配,成成功功后后,列列出出
41、构构件件说说明明,利利用用其其中中的的超超文文本本节节点点,在在不不同同构构件件说说明明文文档档中中跳转,最终选择合适的跳转,最终选择合适的component。例如:例如:WindowsWindows环境下的联机帮助系统环境下的联机帮助系统(如:如:word文件中文件中help)其他检索方法其他检索方法 构件重用构件重用 第第1 1章章 软件体系结构概论软件体系结构概论1.2 1.2 构件与软件重用构件与软件重用 理解与评价构件理解与评价构件 为了准确理解在库中需要使用的构件,要求构件的开发过为了准确理解在库中需要使用的构件,要求构件的开发过程遵循公共软件工程规范,并在程遵循公共软件工程规范,
42、并在componentcomponent文档中,准确说明文档中,准确说明以下内容:以下内容:构件的功能与行为构件的功能与行为 相关的领域知识相关的领域知识 可适应性约束条件与例外情形可适应性约束条件与例外情形 可以预见的修改部分及修改方法可以预见的修改部分及修改方法 对对构构件件可可重重用用的的评评价价,通通过过收收集集并并分分析析构构建建的的用用户户在在实实际重用该构件的历史过程中各种反馈信息来完成。际重用该构件的历史过程中各种反馈信息来完成。包括:重用成功的次数,对构件的修改量,性能度量包括:重用成功的次数,对构件的修改量,性能度量 构件重用构件重用 第第1 1章章 软件体系结构概论软件体
43、系结构概论1.2 1.2 构件与软件重用构件与软件重用 修改构件修改构件 理想的情形是对库中的构件不作修改而直接用于新理想的情形是对库中的构件不作修改而直接用于新的软件项目。的软件项目。但是,在大多数情况下,必须对构件进行或多或少但是,在大多数情况下,必须对构件进行或多或少的修改,以适应新的需求。的修改,以适应新的需求。例如:对函数、运算符重载:例如:对函数、运算符重载:为了减少构件修改的工作量,要求开发人员尽量使为了减少构件修改的工作量,要求开发人员尽量使构件构件的功能、行为和的功能、行为和接口接口设计更为抽象化、通用化和设计更为抽象化、通用化和参参数化数化。#includetemplate
44、/声明一个形式类属参数声明一个形式类属参数TclassARRAYT*set;/定义数组元素集合定义数组元素集合intn;/定义数组元素个数定义数组元素个数public:ARRAY(T*data,inti)set=data;n=i;ARRAY()voidsort();/排序排序intseek(Tkey);/检索检索Tsum();/求和求和;构件重用构件重用 第第1 1章章 软件体系结构概论软件体系结构概论1.2 1.2 构件与软件重用构件与软件重用 构件组装构件组装 基于功能的组装技术基于功能的组装技术 基于数据的组装技术基于数据的组装技术 面向对象的组装技术面向对象的组装技术 将库中的构件经适
45、当修改后相互连接,或者将它们与当前将库中的构件经适当修改后相互连接,或者将它们与当前开发项目中的软件元素连接,最终构成新的目标软件。开发项目中的软件元素连接,最终构成新的目标软件。构件重用构件重用 第第1 1章章 软件体系结构概论软件体系结构概论1.2 1.2 构件与软件重用构件与软件重用 构件组装构件组装 基于功能的组装技术基于功能的组装技术它它要要求求库库中中的的构构件件以以子子程程序序/过过程程/函函数数的的形形式式出出现现,并并且且接接口口说说明明必必须须清晰清晰(如:(如:C C中的库函数)中的库函数),基于功能的组装技术采用基于功能的组装技术采用子程序调用子程序调用和和参数传递参数
46、传递的方式将构件组装起来。的方式将构件组装起来。当当使使用用这这种种组组装装技技术术进进行行软软件件开开发发时时,开开发发人人员员首首先先应应对对目目标标软软件件系系统统进进行行功功能能分分解解,将将系系统统分分解解为为强强内内聚聚、松松耦耦合合的的功功能能模模块块。然然后后根根据据各各模模块块的的功功能能需需求求提提取取构构件件,对对它它进进行行适适应应性性修修改改后后再再挂挂接接在在上上述述功功能分解框架中。能分解框架中。构件重用构件重用 第第1 1章章 软件体系结构概论软件体系结构概论1.2 1.2 构件与软件重用构件与软件重用 构件组装构件组装 基于数据的组装技术基于数据的组装技术 这
47、种组装技术也要求这种组装技术也要求库中构件以子程序形式库中构件以子程序形式出现出现首首先先根根据据当当前前软软件件问问题题的的核核心心数数据据结结构构设设计计出出一一个个框框架架(利利用用数数据据结结构构软软件件结结构构),然然后后根根据据框框架架中中各各结结点点的的需需求求提提取取构构件并进行适应性修改,再将构件逐个分配至框架中的适当位置。件并进行适应性修改,再将构件逐个分配至框架中的适当位置。此此后后,构构件件的的组组装装方方式式它它所所依依赖赖的的软软件件设设计计方方法法不不再再是是功功能能分分解解,而是面向数据的设计方法,例如而是面向数据的设计方法,例如JacksonJackson系统
48、开发方法。系统开发方法。构件重用构件重用 第第1 1章章 软件体系结构概论软件体系结构概论1.2 1.2 构件与软件重用构件与软件重用 构件组装构件组装 面向对象的组装技术面向对象的组装技术 构造法构造法 在在子子类类中中引引进进基基类类的的对对象象作作为为子子类类的的成成员员变变量量,然然后在子类中通过成员变量重用基类的属性和方法。后在子类中通过成员变量重用基类的属性和方法。子类法子类法 将将新新子子类类直直接接说说明明为为库库中中基基类类的的子子类类,通通过过继继承承和和修改基类的属性与行为完成新子类的定义。修改基类的属性与行为完成新子类的定义。例如:例如:P 13P 13 软件重用实例软
49、件重用实例 第第1 1章章 软件体系结构概论软件体系结构概论1.2 1.2 构件与软件重用构件与软件重用 自学自学 P15 P15 背景资料背景资料 第第1 1章章 软件体系结构概论软件体系结构概论1.3 1.3 体系结构的兴起和发展体系结构的兴起和发展 随着软件系统规模越来越大、越来越复杂,整个系统的随着软件系统规模越来越大、越来越复杂,整个系统的结构结构和和规格说明规格说明显得越来越重要。显得越来越重要。对于大规模的复杂软件系统来说,对总体的对于大规模的复杂软件系统来说,对总体的系统结构设计系统结构设计和和规格说明规格说明比起对计算的比起对计算的算法和数据结构算法和数据结构的选择已经变得明
50、的选择已经变得明显重要得多。显重要得多。工人工人-工程师工程师 对软件体系结构的系统、深入的对软件体系结构的系统、深入的研究研究将会成为提高软件生将会成为提高软件生产率和解决软件维护问题的新的最有希望的途径。产率和解决软件维护问题的新的最有希望的途径。背景资料背景资料 第第1 1章章 软件体系结构概论软件体系结构概论1.3 1.3 体系结构的兴起和发展体系结构的兴起和发展 事实上,软件总是有体系结构的,不存在没有体系结构事实上,软件总是有体系结构的,不存在没有体系结构的软件。的软件。模块模块-类类 组件组件-体系结构体系结构 软件体系结构虽脱胎于软件体系结构虽脱胎于软件工程软件工程,但其形成同