实例介绍
图书馆馆管理系统软件体系结构的设计与研究.pdf
ABSTRACT Software architecture is a structure combined with visually extrinsic character of he software element and the relationship of the elements. Just like computer system structure in the area of the computer engineering, software architecture takes a important part in the modem software engineering, it becomes one of the most research field which develops rapidly in the nearest ten years in the software engineenng The thesis mainly discusses the application of the software architecture in the software engineering. It has been proved that software architecture takes a most important part in the every phase of the software development. It not only can control the complexity of the software and provide higher reusing, but also let developer consider the key designing problem from global view earlier, so it can keep coherence of the entire software system software architecture is the prophase work of the project. The main work stated in the thesis includes ene ally analyzes the function and the meaning of the software architecture and based on this analyzing it expatiates the development of the software architecture in the future 2. The designing theory of the software architecture and the process of the software architecture have been researched including a series of process such as demanding, designing, analyzing, implementing, achieving and maintaining software architecture The architecture of library Management System combine with theory researching is emphasized, including demanding analysis of the project, global analysis of the system, designing static structure model and dynamic behavior model of the system, and achieving some of the models KEY WORDS: Software Engineering, Software Architecture, UML Model designing 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工作和取得的 研究成果,除了文中特别加以标注和致谢之处外,论文中不包含其他人已经发表 或撰写过的研究成果,也不包含为获得天津大学或其他教育机构的学位或证 书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中 作了明确的说明并表示了谢意 学位论文作者签名:赵晓导签字日期:206年8月歹日 学位论文版权使用授权书 本学位论文作者完全了解天津大学有关保留、使用学位论文的规定。 特授权天津大学可以将学位论文的全部或部分内容编入有关数据库进行检 索,并采用影印、缩印或扫描等复制手段保存、汇编以供查阅和借阅。同意学校 向国家有关部门或机构送交论文的复印件和磁盘。 (保密的学位论文在解密后适用本授权说明) 学位论文作者签名,赵吨字 导师签名:线 签字日期:2m0b年8月30日 签字日期:》年8月3日 天津大学硕士学位论文 第一章绪论 第一章绪论 1.1选题背景 随着计算机科学技术领域中的新兴工程学科—软件工程的不断发展,在软 件开发中软件体系结构的设计也就越来越受到人们的重视。过去,与硬件相关的 体系结构起着主导的作用,与软件相关的体系结构在软件的开发过程中却被人们 忽视。而如今大规模应用软件系统比比皆是,软件系统开发的成本以及软件系统 的复杂性不断增加已经打破了软件与硬件以往的平衡。软件体系结构的基本原理 已经悄然进入每一次的软件开发中,而其技术的日趋成熟也为软件开发自身带来 了无夯的益处。 软件体系结构虽脱胎于软件工程,但其形成同时借鉴了计算机体系结构和网 络体系结构中很多宝贵的思想和方法,最近几年软件体系结构研究己完全独立于 软件工程的研究,成为计算机科学的一个最新的研究方向和独立学科分支。软件 体系结构研究的主要内容涉及软件体系结构描述、软件体系结构风格、软件体系 结构评价和软件体系结构的形式化方法等。解决好软件的重用、质量和维护问题, 是研究软件体系结构的根本目的。 近年来随着我国建设数字化图书馆的步伐的日益加快,图书馆管理系统的信 息化已经成为国内图书馆的必经之路。本文在软件体系结构的理论研究基础上所 进行的图书馆管理系统的设计正是适应了这一趋势的发展。通过对图书馆管理系 统体系结构的设计为将来数字化图书馆的建设打下了坚实的基础。 2软件体系结构的国内外发展状况 软件系统的规模在迅速增大的同时,软件开发方法也经历了一系列的变革。 在此过程中,软件体系结构也由最初模糊的概念发展到一个渐趋成熟的理论和技 术 20世纪70年代以前,尤其是在AGOL68为代表的高级语言出现以前,软件 开发基本上都是汇编程序设计,此阶段系统规模较小,很少明确考虑系统结构, 一般不存在系统建模工作。70年代中后期,由于结构化开发方法的出现与广泛 天津大学硕士学位论文 第一章绪论 应用,软件开发中出现了概要设计和详细设计,概要设计的主要任务是通过仔细 分析软件规格说明,适当的对软件进行功能分解,从而把软件化分为模块,并且 设计出完成预订功能的模块结构,详细设计就是详细设计该要设计中分解的每 个模块,确定完成每个模块功能所需要的算法和数据结构。在这种结构化软件 开发中的核心任务是数据流设计和控制流设计,因此,此时软件结构已作为一个 明确的概念出现在系统的开发中。 结构化开发方法给计算机软件行业带来了巨大的进步,在某种程度上缓解了 当时的软件危机,但是到了20世纪80年代初到90年代中期,结构化开发方法 已经不再适合大型软件系统的开发,一种全新的开发方法即面向对象的开发方法 兴起并逐渐成熟。面向对象(0 bject-0 riented,缩写00)方法学的出发点和基 本原则,是尽可能模拟人类习惯的思维方式,是开发软件的方法与过程尽可能接 近人类认识世界解决问题的方法与过程,也就是描述问题的问题空间与实现解法 的解空间在结构上尽可能一致。由于对象是数据与基于数据之上操作的封装,因 而在面向对象开发方法下,数据流设计与控制流没计是对同一对象建模。同时, 面向对象方法还提出了一些其它的结构视图,如在对象建模技术方法中提出了功 能视图、对象视图、与动态视图; Booch方法中则提出了类视图、对象视图、状 态迁移图、交互作用图、模块图、进程图;而1997年出现的统一建模语言UML 则从功能模型即用例图;静态模型包括类图、对象图、构件图和包图;动态模型 包括协作图、顺序图、状态图和活动图;配置模型即为配置图。面向对象软件开 发方法学的提出为软件开发带来了质的飞跃,这就使得软件体系结构的设计与人 类习惯的思维更为一致,软件的稳定性、可维护性和可重用性更进一步提高,成 功开发大型软件系统的可能性也就大大得到提高。 从20世纪驲年代后期一直到现在软件工程领域进入了基于构件的软件开发 阶段,这个阶段的特点是以过程为中心,强调软件开发采用构件化技术和体系结 构技术,要求开发出的软件具备很强的自身适应性,互相操作性、可扩展性和可 重用性。这也正是继承了面向对象的软件开发的特性。在此阶段,软件体系结构 已经作为一个明确的文档和中间产品存在于软件开发过程中,同时,软件体系结 构作为一门学科逐渐受到人们的重视。纵观软件体系结构技术的发展过程,从最 初的“无结构”设计到现行的基于体系结构的软件开发经历了四个不同的阶段 这几个阶段对于软件体系结构的发展起了推波助澜的作用,它必将使得软件体系 结构的设计在整个软件开发的工程中的作用越来越提髙。 天津大学硕士学位论文 第一章绪论 13本论文的主要研究内容 论文作者在完成论文期间重点研究了以下两方面的内容: 深入了解了软件体系结构的兴起与发展并结合自身的认识对软件体系结构 在整个软件开发过程中的意义进行了总结。另外还对软件体系结构的设计原理以 及基于体系结构的软件开发过程进行了一定的研究。最后结合自身的开发经验提 出了一种新的软件体系结构的设计过程。 运用本文提出的新的体系结构设计过程完成了图书馆管理系统体系结构的 整个设计过程,其中包括项目的需求分析、系统的全局分析、系统静态结构模型 设计和系统动态行为模型设计等等。另外还引入了“4+1”模式体系结构设计方 法中的全局分析法,对开发中的组织因素、技术因素和产品因素进行了详尽的分 析,并在分析的基础上制定出指导体系结构的相应策略,从而确保了体系结构设 计的合理性和可行性。最后对所设计出的体系结构的部分模块进行了验证,从而 证明了本文所提出的新的体系结构设计方法具有一定的可行性。 天津大学硕士学位论文 第二章软件体系结构的设计原理 第二章软件体系结构的设计原理 21软件体系结构的定义 在诸如建筑和计算机硬件的设计中,软件体系结构是指整个软件系统构成的 基本和主体形态。在一个发展成熟的领域中,这种结构成为建立和考察系统的总 体指导或基本出发点。软件体系结构定义了局部和整体计算部件的构成,以及这 些部件之间的相互作用关系。软件体系结构的产生也是适应了软件行业的发展要 求的。在经历了软件危机后,人们意识到也需要使用工程化的方法和管理,而不 能是任意软件开发人员的随意想象和自由化的开发。为了避免软件开发的无目的 性,提高软件的质量和利用率,在软件开发中就需要有效的理论作为指导。软件 体系结构作为软件开发中的设计指导思想,无疑对软件开发的成败起着关键的作 用 软件体系结构定义了软件的局部和整体部件的构成,以及这些部件之间的相 互作用关系。部件的内涵是很广泛的,包括客户、服务器、数据库、过滤器、程 序包和过程等。相互作用也包括具有十分复杂的语义和构成的关系、诸如客户/ 服务器访问协议,数据库的访问协议、网络传输协议、异步事件的映射和O悶M等。 除了描述系统的构成和构件的关系外,在系统的功能需求方面体系结构还表达了 系统需求和构件之间的对应关系,这就为系统的后期设计提供了分析和评价的依 据。一般地说,软件的体系结构可以清楚的表达系统的构成部件以及它们之间的 作用关系和语义。这些部件又可以用来构成更大、更复杂和全面的部件或系统。 在理想的情况下,体系结构描述的各个组成成分都是被独立定义的,因此可以在 不同的场合得到重用。体系结构将为它们建立结构和功能规范,经过进一步的完 善,可以将它们组成更大和更复杂的系统,并且是可以高效率稳定运行的软件系 统 22体系结构的设计原理 软件体系结构是建立在几条基本原理之上的,这些原理在软件设计中被广泛 的采用,而且我们也必须遵循这些原理从而使体系结构能够更好的为后期的设计 和实现工作服务。体系结构设计的好坏将直接影响到软件系统开发的成功与 天津大学硕士学位论文 第二章软件体系结构的设计原理 否,为了能够设计出更合理的体系结构,我们在体系结构设计的时候要紧密联系 这些技术,如:抽象、封装、模块化、信息隐藏、耦合与内聚以及层次化。 抽象 人类在认识复杂现象的过程中使用的最强有力的工具就是抽象。人们在实践 中认识到在现实世界中一定事物、状态或过程之间总存在着某些相似的方面。把 这些相似的方面集中和概括起来,暂时忽略它们之问的差异就是抽象。抽象有几 种形式,如数据抽象、对象抽象、实体抽象、行为抽象、过程抽象、虚拟机抽象 等。数据、实体的抽象使得软件操作的对象和参数是针对逻辑结构,而非存储结 构的。行为、过程的抽象使得操作的指派是依据标识而非地址,由此产生了操作 的接口和动态约束描述。在处理系统复杂性方面,抽象起到了重要作用。减少部 件耦合、接口与实现的分离等,都得益于抽象。 抽象的一个重要特性就是可替换性。对象的抽象把具有相同基类的导出类看 作是同类,加上过程抽象带来的在过程名称下的“偷梁换柱”,因此实现了动态 约束,是面向抽象问题而不是实际结构的抽象程序设计得以实现。大量的结构模 式和应用问题都是基于这个思想而得到实现的。随着软件工程的进展,在软件工 程的每一层中的模块都表示了对软件抽象层次的一次精化。在软件体系结构顶层 的模块控制了系统的主要功能并且影响全局;在软件体系结构底层的模块,完成 对数据的一个具体处理,简化了软件的设计和实现,提高了软件的可理解性和可 测试性,并且使软件更容易维护 2.封装 封装是将构成抽象的属性和行为结合在一起,并区分不同抽象的方法。封装 为不同抽象之间提供了明确的界限。封装有利于非功能特性实现,例如可变性和 可重用性。封装包括内部构成和操作服务两个方面。例如,通过对象、模块设计 和访问接口设计分别提供了这两种封装。 3.模块化 模块化主要关心的是如何将一个软件系统分解成子系统和部件,其主要任务 就是决定怎样将构成应用的逻辑结构物理的分割成代码实体。模块化的主要做法 就是在一个系统内引入具有良好定义的分界,依次来处理系统的复杂性。模块的 作用是作为一个应用的功能和责任的物理容器,因此模块化与封装的联系也非常 密切。模块化的引入可以使得大型系统的管理、维护和应用变得更具逻辑性和条 理性,同时也增加了应用设计的灵活性。另外,它对于系统的运行设计和管理调 度也提供了方便。 4.信息隐藏 信息隐减是软件工程的最基本和最重要的原理之一。信息隐藏对用户隐藏了 部件的实现细节,用来更好地处理系统的复杂性和减少各部件之间的耦合。为了 天津大学硕士学位论文 第二章软件体系结构的设计原理 更好地应用,用户不需要知道的细节都应该由部件隐藏起来。封装原理经常被用 来实现信息隐藏的方法。信息隐藏也可以通过接口与实现分离的原理来实现。然 而,部件应该隐减什么取决于具体的应用。在一个应用中客户不需要知道的方面 或许在另外一个应用中就需要看到。例如,在一个应用中为了提高运行性能,可 能需要对某一部件的内部数据结构进行直接的访问;而在另外一个应用中,可能 因为对其性能已经满意了,就不需要对其数据的直接访问了。 5.耦合与内聚 耦合和内聚最初是作为结构化设计方法的部分原理而提出的。耦合强调模块 之间的特征,而内聚强调模块内部的特性。耦合是用来衡量一个模块和另一个模 块的联系的紧密程度的。紧密的耦合就会使系统变得复杂,因为如果一个模块和 另外的模块有很密切的关联的话,这个模块就很难理解、调试、维护。通过弱耦 合部件的设计可以降低系统的复杂性 内聚用来衡量单一模块内功能和元素间联系性的程度。内聚有几种形式。最 期望获得的是功能内聚,它说明一个模块或是部件内的所有元素都协同来提供具 有良好边界的行为。最差的形式是偶然内聚,这种形势将亳无联系的抽象放置到 同一个模块之中。其它形式的内聚还有:逻辑内聚、时间内聚、过程内聚、通信 内聚、顺序内聚和不规则内聚 6.层次化 处理复杂性问题有两种方法,即分而制之的横向分割和分层次处理的纵向分 割。后者是一种把问题分解建立在基础概念和思想上多层次的、从底向上逐步抽 象的分析和表达的结构,每一层处理该层次的问题、服务于该层次的要求。 层次化在软件构造中是一种基本的思想。类和对象是层次化的,操作系统构 造、编译器构造、应用系统构造,无一不是层次化的。同样,软件体系结构也是 层次化的。 还可以对以上原理列表进行新的扩展。例如把面向对象的软件开发作为一个 原理包含在内。然而,这只是其它原理的变形。需要注意的是,并不是所有的原 理都是互补的,有的是相互抵触的。其中一个例子就是接囗与实现分离和引用单 一性原理之间的冲突。使用传统技术,前一原理的实现要求对一个函数至少出现 两个引用,一个在部件的接口部分,另一个在部件的实现部分。这与引用单一性 原理的严格陈述是相悖的。当然,从实现中产生接口定义是一个解决方法,在现 代方法中这得到了应用。其它的原理都是密切联系的,例如抽象和封装。 【实例截图】
【核心代码】
标签:
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论