**软件体系结构2024年08月27日星期一下午 11:40麦中凡老师的软件工程讲座已经结束,从计算机软件发展的三种计算模式、四种编程模式到软件体系结构到软件工程实践再到软件道德,让我对软件开发这个领域从各个角度开阔了眼界。课已讲完,而我对这么课程的思考却没有结束,好多新的想法和理解不断冲击着我。
今天正好可以借此机会谈谈对这么课程上完后的感想,也算是对自己在这方面知识点的一点整理。
软件从最初的程序到今天的程序加文档,看起来并没有什么变化。然而今天的软件要实现的功能已与昨天不可同日而语,对软件各方面功能和性能的要求决定了软件空前的复杂。
软件的开发已不是简单的写程序,在软件开发的整个生命周期里,从需求分析到设计到编码到测试到维护,编码仅占一小部分。软件的高度复杂也决定了软件开发需要充分的设计,需要研究开发模式,研究体系结构,从宏观和更抽象的层次把握软件的开发,并把这个整个过程付诸于文档的形式记录下来,在软件开发人员与系统设计人员、用户以及其他有关人员之间进行沟通交流,以达成共同的理解。软件开发的侧重点从编码已经转移到需求分析和软件总体架构设计,下面就结合本课程关于软件体系结构的知识和有关资料谈谈我对软件体系结构的理解和认识。
首先,软件体系结构到底是什么?软件体系结构的思想最早是由dijsktra等人提出的,shaw, perry以及wolf等人在80年代末作了进一步的发展和研究。虽然软件体系结构已经成为软件工程的研究重点,但是由于许多研究人员都是基于自己的经验从不同角度不同侧面对体系结构进行刻画,所以目前对软件体系结构存在着许多不同的定义和不同的理解。
perry和wolf等人认为软件体系结构由一组具有特定形式的体系结构元素组成,包括处理元素、数据元素和连接元素三种。garlan&perry则指出,软件体系结构包括一个系统的构件结构、构件间的相互关系、以及控制构件设计和演化的原则和规范等三个方面,shaw和garlan认为,体系结构是对构成系统的元素、这些元素间的交互、他们的构成模式、以及这些模式之间限制的描述。目前一个比较统一的定义就是:
软件体系结构是一个系统的高层结构共性的抽象,是建立系统时的构造模型、构造风格、构造模式。
软件体系结构屏蔽了系统设计和实现时的功能细节,着重于讨论软件系统的总体框架,对软件系统的构造起着指导性的作用。同时, 软件体系结构是系统理解、交流和设计、实现、演化一个系统的基础。
软件体系结构开始于系统的早期设计,主要涉及以下内容:(1)系统框架及组成软件的成分、成分间的功能分配、物理分布等;(2)软件各成分之间的相互作用、相互之间各种约束等。软件成分的进一步复合以及指导软件复合过程的总体模式;(3)系统的功能、性能、设计以及从多种方案及选项中进行选择的决策。
可见,软件体系结构关注的核心恰恰是基于构件的开发方式在系统分析、设计时所必须考虑的问题。
目前在商业软件开发中采用的一些常用软件体系结构有以下几种:
1) 层次体系结构。
所谓层次的概念就是一层一层分割一目了然的处理方式。层次体系结构就是利用分层的处理方式来处理复杂的的功能,层次系统要求上层子系统使用下层子系统的功能,而下层子系统不能够使用上层子系统的功能。一般下层每个程序接口执行当前的一个简单的功能,而上层通过调用不同的下层子程序,并按不同的顺序来执行这些下层程序,层次体系结就是以这种方式来完成多个复杂业务功能的。
层次体系结构主要用于单机系统。
2) c/s(两层)体系结构)
客户机/服务器结构简称c/s结构或两层体系结构,由服务器提**用(数据)服务,多台客户机进行连接。如下图所示:
客户/服务器应用模式的特点是大都基于“肥客户机”结构下的两层结构应用软件。客户端软件一般由应用程序及相应的数据库连接程序组成。服务器端软件一般是某种数据库系统。
当前实际应用中多数服务器就是一台数据库服务器。
3) 浏览器/服务器(b/s)结构。
在当前internet/intranet领域,“浏览器/服务器”结构是当前非常流行的客户机/服务器结构,简称b/s结构。如下图所示。
这种结构最大的优点是:客户机统一采用浏览器,这不仅让用户使用方便,而且使得客户机不存在及安装维护的问题。当然软件开发布和维护的工作不是自动消失了,而是转移到了web服务器端。
在web服务器端,程序员使用脚本语言编写响应页面。
4) 三层次客户机/服务器结构。
三层次客户机/服务器结构是在常规客户机/服务器结构上提出的,系统在客户机和数据库服务器间添加一个应用服务器。
这种体系结构虽然物理结构上是所有主机连接集线器,但只有实际运行是客户机连接应用服务器,应用服务器同数据库服务器通信。客户机同数据库服务器不进行通信连接。其技术特点是业务规则放三层结构中的应用服务器(中间层),其好处是应用系统可以在不影响客户应用程序的情况下对业务规则进行更新。
而且修改存储过程的**时,只要客户端与服务器的接口不受改动的影响,这些修改对客户来说就是透明的。
目前,对软件体系结构所作的研究工作有:软件体系结构表达方式、软件体系结构分类、特定领域软件体系结构框架的研究以及软件体系结构形式化的问题。
最后,在现代软件开发中,软件体系结构已经明确成为一个很重要部分,软件在构造之前的设计中必须明确软件的体系结构,一个好的、合理的软件体系结构是一个软件开发成功的关键。软件体系结构给信息化社会带来的好处已被人们公认,软件体系结构的研究也在进一步的完善和发展,并推动着软件不断的前进和发展。
软件体系结构
课程名称 软件体系结构。课程编号 c304 课程学分 2 适用学科 计算机应用技术。software architecture 教学大纲。一 课程性质。本课程是为计算机应用专业研究生开设选修课。软件体系结构是软件开发设计的高级课程,对培养计算机应用专业研究生今后从事大型软件开发工作有重大意义。二 课...
软件体系结构
课程名称 软件体系结构。课程编号 c304 课程学分 2 适用学科 计算机应用技术。software architecture 教学大纲。一 课程性质。本课程是为计算机应用专业研究生开设选修课。软件体系结构是软件开发设计的高级课程,对培养计算机应用专业研究生今后从事大型软件开发工作有重大意义。二 课...
软件体系结构
一 软件体系结构和框架的定义。软件体系结构的英文单词是 architecture architecture的基本词义是建筑 建筑学 建筑风格。软件体系结构虽然根植于软件工程,但还处于一个研究发展的阶段,迄今为止还没有一个为大家所公认的定义。设计模式 中对框架的定义是框架就是一组相互协作的类,对于特定...