您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 求职简历 > 软件架构设计教程资料
火龙果整理uml.org.cn软件架构设计主讲:周荣辉火龙果整理uml.org.cn软件开发技术的发展第一批计算机诞生~50年代初:由0、1的机器指令编程。50年代初期:用汇编语言编程----最早的软件抽象50年代中期:出现高级语言—FORTRAN。使用算术、逻辑运算,过程调用,循环和条件等编程—编程高级抽象监控程序系统----最早的对硬件的软件抽象。60年代:以过程为基础的块结构编程—ALGOL语言70年代:PASCAL、C语言出现----结构化程序设计自定义数据类型、数据结构----数据抽象操作系统出现----软件开发平台抽象数据库管理系统出现:数据管理抽象80年代:面向对象程序设计----抽象数据类型封装、继承、多态90年代:WINDOWS操作系统、可视化编程、Internet、分布式计算、分布式数据库、组件技术、代理、……火龙果整理uml.org.cn新的发展趋势1、WebService依靠SOAP(简单对象访问协议)消息,借助于XML的强大描述能力,以及松散藕合的协议体系,各个WebService端点可以无障碍的通讯,这些端点大到可以是IBM的390大型机,小到PDA手持设备,甚至是智能的手表,通讯可以跨越硬件、操作系统、虚拟机平台等等。2、网格计算(GridComputing)利用互联网把分散在不同地理位置的电脑组织成一个“虚拟的超级计算机”,其中每一台参与计算的计算机就是一个“节点”,而整个计算是由成千上万个“节点”组成的“一张网格”,所以这种计算方式叫网格计算。这样组织起来的“虚拟的超级计算机”有两个优势,一个是数据处理能力超强;另一个是能充分利用网上的闲置处理能力。火龙果整理uml.org.cn软件抽象层次对软件开发的影响软件开发抽象层次提高的发展趋势是以关注软件开发的技术问题向关注用户应用问题倾斜。汇编语言的出现,使开发人员可以用一组便于理解和记忆的符号来表示计算机可进行的基本运算。高级语言的出现,可以用常规的表达式表示形式和人们解决问题的思维过程来表示对问题的求解。结构化软件设计的核心是以模块作为程序设计的基本单位,可以用模块及模块间的结构来表达问题求解的方案。面向对象软件开发技术用对象作为最基本的元素,采用继承、封装、多态等机制,使软件重用成为可能。软件组件技术实现了对软件最终形式—可执行二进制代码的复用,使软件构件组装成为可能。火龙果整理uml.org.cn软件对环境的依赖性10年前,一个软件就是一个独立的EXE文件,除了需要操作系统环境支持外,不再需要其它环境支持。所有的程序模块都是自己编写,模块之间的调用关系清清楚楚。WINDOWS操作系统和可视化编程出现后,对环境的依赖性明显增加,程序员很难说清楚模块间的调用关系,但大多数程序都在一台计算机上完成运算。Internet出现后,一个用户应用功能的实现,谁也说不清楚使用了哪些硬软件资源,在哪台设备上完成了什么任务。一个软件及其数据可能部署在多台计算机设备上,需要Web服务器、需要安装浏览器软件,需要相应的通信协议支持。软件只有逻辑的概念。在WebService和计算网格环境下,软件的概念将变得更模糊。火龙果整理uml.org.cn软件开发重点的转移面向对象技术、可视化编成技术、组件技术,以及强大的软件工具的支持,使得原来实现起来很复杂、很耗费精力的软件实现技术变得非常简单,并且在某些环境下,可以不编程序代码,或编很少的程序代码,就可实现一个界面美观、可靠性高的软件。另一方面,软件的规模和复杂性越来越大,软件运行环境越来越复杂,使得软件开发的主要精力放在了软件运行基础环境的考虑、软件开发环境的配置、软件开发总体方案的制定、软件架构模式的选择、不同环境中软件元素间通信的实现、软件安装及运行环境的配置等事关全局的问题上。即软件设计已经从关心基本的结构和算法转移到了对宏观结构的认识上;从关注功能的实现转移到了对综合性能的要求上,软件架构的设计成了关注的重点。火龙果整理uml.org.cn软件体系结构的概念软件体系结构和软件架构对应的英文单词都是“Softwarearchitecture”,即它们是意义完全相同的两个中文单词用语。在使用它们时往往带有一种习惯上的差异,通常学术上用“软件体系结构”较多,在软件系统设计上用“软件架构”较多,如在软件公司里,有“软件架构师”的职位,但很难听到“软件体系结构师”的说法。火龙果整理uml.org.cn软件架构的概念在软件架构概念的理解上通常分为两大流派:●组成派:软件系统的架构将系统描述为计算组件及组件之间的交互。●决策派:软件架构是一系列重要决策的集合。火龙果整理uml.org.cn与决策派相关的软件架构定义Booch、Rumbaugh、Jacobson的定义:架构是一系列重要决策的集合,这些决策与以下内容有关:软件的组织、构成系统的结构元素及其接口的选择,这些元素在相互协作中明确表现出的行为,这些结构元素和行为进一步组合所构成的更大规模的子系统,以及指导这一组织—包括这些元素及其接口、它们的协作和它们的组合—架构风格。Woods的观点:软件架构是一系列设计决策,如果作了不正确的决策,你的项目可能最终会被取消。火龙果整理uml.org.cn与组成派相关的软件架构定义Garlan和Shaw的定义:软件架构包括构件、连接件和约束三大要素。构件可以是一组代码(如程序模块),也可以是独立的程序(如数据库服务器)。连接件可以是过程调用、管道和消息等,用于表示组件之间的相互关系。“约束”一般为组件连接的条件。DewaynePerry和AlexWolf的定义:软件体系结构是一组具有一定形式的体系结构元素。这组元素分为3类:负责完成数据加工的处理元素,作为被加工的信息的数据元素和连接元素。连接元素用于把架构的不同部分组合连接在一起。IEEE610.12-1990软件工程标准词汇定义:体系结构是以构件、构件之间的关系、构件与环境之间的关系为内容的某一系统的基本组织结构以及指导上述内容设计与演化的原理。火龙果整理uml.org.cn与软件架构相关的概念—构件广义上,构件是软件系统的结构块单元,是软件功能和承载体。所以,从系统的构成上看,任何在系统中承担一定功能、发挥一定作用的软件体都可以看成是构件。构件可以分为计算构件、数据构件和连接构件。狭义上,把构成软件系统的结构块分为构件和连接件,而构件与连接件在一个软件系统中扮演的角色是可区分的。因此,狭义的构件指与系统设计目标(业务功能需求)对应的结构块(处理单元和数据单元),为狭义的构件之间协同运行穿针引线的结构块称为连接件。构件与连接件的根本区别是:构件有领域业务处理的功能,连接件只起业务构件之间的中介作用火龙果整理uml.org.cn与软件架构相关的概念—构件构件有不同粒度。一个构件可以小到只有一个过程(或函数),也可以大到包含整个应用程序。函数、例程、对象、类库、数据包、服务器、文件等都可以作为一个构件。对应一个软件架构实例来说,用什么粒度的构件来描述软件架构呢?应该从软件“系统”层面上可以把软件分成多少个逻辑上相对独立的计算单元(子系统)。每一个相对独立的计算单元就是一个构件。如果每个子系统又是一个高度独立的系统,又可以以它作为观测的“系统”对象,将其分解为若干个逻辑上相对独立的计算单元,每个计算单元就是一个构件。在不同设计环境中,构件可表现为控件、组件、表、实体、包、设计模式、框架等。火龙果整理uml.org.cn与软件架构相关的概念—连接件连接是构件和构件之间建立和维持行为关联和信息传递的途径。连接包括:实现机制和信息交换协议。1、实现机制硬件层:过程调用、中断、存储、栈等基础控制描述层:过程调用、中断/事件、流、文件、网络等。资源管理调度层:进程、线程、共享、同步、并行、事件、异常、远程调用等。高级抽象层:管道、解释器、转换器、浏览器、组件/中间件、C/S、B/S、ODBC等。2、信息交换协议信息交换协议是连接的规约,是实现有意义连接的保证。最简单的连接是过程调用,过程调用的实现也有协议,如接口参数的顺序和类型、如何把参数放到获得数据的一方能够取得到的地方等。火龙果整理uml.org.cn与软件架构相关的概念—连接件连接件的作用是构件交互的实现。构件之间的交互包括消息或信号量的传递,功能或方法调用,数据的传送和转换,构件之间的同步关系、依赖关系等。在最简单的情况下,构件之间可以直接完成交互,如C语言中函数调用,这时体系结构中的连接件就退化为直接连接语句(没有物理的存在形式,只有概念上的连接件)。在复杂的情况下,构件间的交互需要物理的连接件来实现。常见的连接件有管道(管道过滤器体系结构)、通信协议和通信机制(客户服务器体系结构)等。火龙果整理uml.org.cn与软件架构相关的概念—连接件连接件的表现形式是多种多样的,如一种事先约定,A构件把数据以事先约定文件名和存储格式放到事先约定的位置,B构件就按事先的约定读取数据进行处理。A构件按事先约定实现的文件就是连接件。在系统的功能构造方面,构件是更多的是表现为功能实体,连接件是“使用”什么数据或传递数据。在系统的代码构造方面,构件可能是包、类、对象、过程、函数、方法等不同粒度的软件元素。连接件包括“传递控制到……”、“传递数据到……”、“和……共享数据”、“是……实例”、调用、使用等。火龙果整理uml.org.cn与软件架构相关的概念—连接件连接件的设计已经成为软件开发的关键技术。连接件的设计要考虑的因素包括不同涉众的需求、构件的形式、系统的性能、系统的可维护性、系统的安全性、系统的可靠性等。构件可以以多种形式出现。对于集中数据管理的分布式应用系统,共享后台数据库的不同构件之间的连接件。相互独立的应用系统之间的交互可以用WebService组件、消息中间件实现连接是目前广泛采用的技术。分布式系统采用选定的机制和协议实现连接。与第三方认证的连接、与银行交费系统的连接、与税务系统的连接,都与系统的安全性、涉众利益直接相关,技术非常复杂。C/S、B/S模式的构件之间的连接,都是通过中间件和协议实现。火龙果整理uml.org.cn两种架构设计的区别和联系组成派和决策派关于软件架构概念的区别在于从不同角度来描述对软件架构概念的认识。组成派是从软件架构的最终形态角度来描述软件架构,决策派是从软件架构形成过程来描述软件架构。软件架构最终要用构件、连接件及其约束来描述,这既是决策的主要内容和决策结果,也是软件架构最终的表现形式。这就是他们的共同点。决策的内容范围更广,软件架构不仅注重软件本身的结构和行为,还注重可用性、功能性、性能、重用、可理解性、经济和技术的限制等。任何一项决策都是属于软件架构的内容,有的决策可能与构件、连接件的选择无关。一个软件项目开发可能涉及到多套方案,对方案的选择可能涉及到复杂的因素,需要高层决策者做出有远见的决策这样的决策对系统的开发产生根本性的影响,软件系统最终表现的构件、连接件及其约束的选择是这些决策导致的产物。火龙果整理uml.org.cn实例—一个考试系统的设计决策(1)对于一个考试系统,考试的公正性、可用性、系统性能是考试系统的关键质量属性。1、对公正性的考虑:避免抄袭是重要措施。方案:同一份母卷,产生不同的考试试卷。考生登录后,直接生成考试试卷。2、可用性考虑:考生年龄差异大、工作岗位特殊、有的考生计算机应用水平很低,可能无法输汉字。方案:①考生登录只输数字型考号,登录后显示考生信息进行核实;②客观题机考,主观题可机考,也可笔试(通过投影仪显示主观题)3、系统性能不影响考试进度和考生情绪。前面1、2条的方案属于软件架构的内容,因为它是考试系统设计必须遵循的原则。性能问题难以估计,将逐步解决。火龙果整理uml.org.cn实例—一个考试系统的设计决策(2)1、生成试卷存在的问题:当超过50人考试时,生成试卷遇到性能瓶颈:等待时间长,甚至产生的试卷不完整。原因:生成试卷是对母卷进行随机的大题交换、小题交换、备选答案交换等一系列复杂运算实现,运行时间长,并发操作不
本文标题:软件架构设计教程资料
链接地址:https://www.777doc.com/doc-3607506 .html