软件的体系结构与模式(精选9篇)
软件的体系结构与模式 篇1
摘要:本文从三个不同的粒度层次对软件的三类模式:体系结构模式、设计模式和惯用法进行介绍;并针对Java这种面向对象的程序设计语言, 着重介绍了Java的体系结构以及Java的体系结构对其信息安全、语言本身安全性的重要作用。
关键词:体系结构模式,设计模式,惯用法,层次结构,Java
体系结构的概念存在于社会生活的许多方面。如桥梁设计中, 有拱形、板式支撑、吊索、斜拉索等;在计算机硬件体系的设计中, 有单处理器、多处理器、并行计算、网络计算等等。对于软件的体系结构, 目前可供选择的各种结构形态也很多, 如客户/服务器、分布式、层次式、交互式、解释器等等。软件工程专家从这些结构中总结和抽象出一些规律性的知识, 这就是软件的模式。在软件应用开发过程中, 如果能够有意识的遵循这些模式将使我们能够更有效而出色地解决设计问题。由于软件不过是近半个世纪的新生物, 软件的很多思想都源自人类其他行业的知识, 人们对模式的狂热追求, 正从另一个侧面反映了人类对规律的向往和崇拜。人们往往从具体的现象出发, 总结出抽象的规律, 然后又将规律应用到现实中去指导实践。软件行业也同样具有这样的规律性, 因此, 研究软件的模式是十分必要和有意义的。
1 面向模式的软件体系结构
从三个不同的粒度层次将软件的模式分为三大类, 即体系结构模式 (Architecture Patterns) 、设计模式 (Design Patterns) 和惯用法 (Idioms) 。
1.1 体系结构模式
体系结构模式代表了模式系统中最高等级模式。一个特定的软件体系结构可能包含多个模式的应用, 它们为软件系统提供了一个结构化的框架, 具体的细化和实现工作还需要设计模式以及惯用法的支持。
1.2 设计模式
总结目前的设计模式中最经典的23种设计模式, 将它们分类为创建型模式, 结构型模式和行为模式。在系统开发阶段强调这种机制的优势在于:它能使所生成的体系结构更加精巧、简洁和易于理解, 其程度远远超过了未使用模式的体系结构。确实, 体系结构的好坏直接决定了软件系统的命运。而模式的应用可以帮助建立有效的、出色的体系结构。Java语言的简洁性有助于快速掌握设计模式的原理。
1.3 惯用法
惯用法是特定程序设计语言中的低层模式。它主要描述如何在特定语言中解决具体的实现问题。一些基本的数据结构也可以认为是一种最底层的模式, 如堆栈和队列的实现等等。
2 体系结构的层次
一个系统的设计是由许多层次构成的。层次结构实际上是一种“分而治之 (Divide and Conquer) ”的思想, 即将一个粒度由小到大连续的空间分为不同粒度范围类的层次空间。软件的设计同样是层次性的。可分为:结构级, 代码级和执行级。
从软件体系结构的层次性概念出发, 将软件体系结构划分为五个大的层次:软件的硬件层、基础控制描述层、资源级管理调度层、系统结构模式层和领域应用层。
3 以Java为例浅谈其体系结构
J ava语言拥有三大特征:平台无关性、网络移动性和安全性, 而J ava体系结构对这三大特征提供了强大的支持和保证, 下面着重介绍J ava体系结构对支持信息安全的原理和使用方法。
3.1 Java的体系结构
首先Java的源代码Java文件由编译器编译成Java的二进制字节码class文件, 然后由Java虚拟机中的类装载器进行加载, 同时类装载器还会加载Java的原始APIClass文件, 类加载器主要负责加载、连接和初始化这些class文件以后, 就交给虚拟机中的执行引擎运行, 执行引擎将class文件中的Java指令解释成具体的本地操作系统方法来执行, 而安全管理器则将在执行过程中根据设置的安全策略控制指令对外部资源进行访问。
J ava的执行方式不是编译执行而是解释执行, “先编译, 后解释, 再执行”三步走的方式使得Java实现了“一次编写, 到处运行”, 如果Java的应用使用的是100%标准的Java API并且没有直接调用本地方法, 那就可以不加修改地运用在多种平台上, 这样的平台无关性使得在异构的网络环境或者嵌入式方面的应用更方便和现实。Java的网络移动性带来了一种全新的软件模式, 在分布式处理模式的基础之上, 可以将软件和数据通过网络传送到客户端去, 这样确保了客户端有必备的软件来浏览和操纵通过网络传输的数据, Java体系结构支持把单一的执行文件切割成小的二进制字节码文件Class文件, 而这些文件可以按照应用的需要动态连接、动态扩展。
3.2 Java信息安全的必要性
随着互联网应用越来越广泛, 并且互联网其本身独特的资源共享性, 因此能够按照用户需求及时准确获得信息和处理信息的应用对用户而言就相当重要, 这也是Java得以迅速发展和被广泛接受的原因。但同时网络也提供了一条攻击接入计算机的潜在途径, 特别是当用户下载网络软件在本地运行, 这就要求Java能够对病毒/木马的问题加以防范, 对信息以及本地环境进行保护。比如:我们浏览一个网页的时候, 如果没有Java体系结构提供的安全机制, 就很有可能引入了一个怀有敌意的程序造成信息丢失、资料泄密等未知的严重后果。
3.3 Java语言本身安全性
J ava语言的设计者们是在C++的基础上设计出来J ava的, 因此与C++相比它的语法更加简单清晰, 运算符重载、虚拟基础类等在J ava中都没有采用, 并且取消了多重继承而采用实现多个接口的方式。这样能降低开发人员犯错误的机率, 帮助他们写出更安全的代码。
J ava中去除了C++语言中的令人费解、容易出错的“指针”, 用列表、堆、哈希表等结构来代替, 避免了任何不安全的结构。Java也没有索引核查的数组访问, 因为这往往会导致不定的、不可预测的程序操作, 它所有的数组访问都必须先检查是否越界。Java要求所有的变量在初始化以前不能使用, 对于基本数据类型变量都会自动地赋给某个初始值, 避免了未初始化变量获取内存信息。所有这些都使得程序不能访问任意的内存地址, 对于内存中的实体信息只能通过有权限的对象进行访问, 而不会出现象C++那样把类型指针强制转换成内存的指针, 然后通过内存查找的方法找到私有的变量。
J ava分配内存对于开发人员来说是透明的, 开发人员使用ne w方法新建对象, 这时虚拟机就会从堆内存中找到合适的内存空间, 开发人员不需要也不能够进行干预。而对于内存的回收, Java避免了开发人员明确干预对象的回收, 比如C的free或C++的delete命令, 避免了开发人员无意间对内存的破坏。Java采用虚拟机的“垃圾回收”机制来实现内存自动管理, 释放不再被使用的内存资源。Java的内存回收器目的就是找到不再引用的对象, 释放内存空间, 并且需要整理内存的碎片空间, 尽量避免出现"内存不足"的情况。
4 结论
作为一个开放的充满发展潜力的研究和应用方向, 体系结构将成为软件理论和技术的下一个重要的突破点。如何拉近体系结构理论和工程实践的距离, 是实现突破的关键。
软件的体系结构与模式 篇2
报告概况
企业看待和采购软件的方式正在开始发生变化。机构不必购买现场使用的应用程序并在站点托管这个应用程序。机构可以让软件根据需要提供,作为一种服务或者由软件厂商或第三方托管的服务。但是,虽然这些新的模式为如何付费,如何接收和使用应用程序提供了更多的选择,但是,这个词汇的普及在机构中造成了一些混乱,不知道它们是什么和由什么构成的。
这篇报告考察了这个市场的状况。这个市场将提供比传统的软件交付类型更多的好处和新的模式。这篇报告还考察了软件交付模式未来的市场机会,以及这种模式在未来如何扩展达到硬件平台。
关键的研究结果
·随需应变的CRM软件市场在整个将迅速增长,占整个软件服务市场的比例将达到27%,因为随需应变的CRM软件市场的复合年增率高于整个CRM软件市场的增长率,
·有迹象表明,销售收入超过10亿美元的企业将更多地采用软件服务(SaaS)应用程序。一些业内评论人士原来指出,软件服务不会超越中小企业扩展到大型企业。
·Triple Tree和软件与信息行业协会(SIIA)发表的一篇报告发现,随需应变的软件部署速度快50%至90%,拥有总成本比安装的软件便宜5%至10%。
·随需应变的CRM和ERP应用软件市场的增长率将显著高于基于现场的软件市场。这表明,这个市场有高水平的增长潜力。
这篇报告研究的问题包括:
·随需应变这个词汇经常与软件服务互换,但是,它本身还是一个更大的概念,是指机构对客户需求做出更迅速的反应、建立新的合作关系或者对市场变化做出反应的一种新方法。
·厂商生态系统。目前,没有一家厂商在软件服务交付解决方案市场占统治地位。争夺这个市场统治地位的是一些传统的应用程序厂商、基础设施厂商、单纯的软件服务厂商和服务提供商。
软件的体系结构与模式 篇3
关键词:软件体系结构,教学模式,教学方法
1. 前言
软件体系结构作为从软件设计抽象出来的一门新兴学科, 自20世纪90年代后期以来, 已经成为软件工程一个重要研究领域, 目前国内很多高校把软件体系结构课程作为计算机专业的重要专业课, 为了提高软件体系结构课程的教学质量, 不少高校进行了相关的课程建设和教学改革, 但由于该课程的特殊性, 实践效果不够明显, 无法明显提高学生解决实际问题的能力, 因而如何提高软件体系结构课程的教学质量, 是该课程任课教师面临的一道紧迫课题。
2. 软件体系结构课程教学中存在问题
近年来, 在软件体系结构课程教学过程中存在的突出问题是学生普遍觉得该课程的理论性较强, 概念繁多, 内容太抽象, 没有什么与实际相联系的东西, 难以体会软件体系结构在提高软件生产率和解决软件维护问题方面的作用, 无法真正理解软件体系结构的重要性, 从而对该课程缺乏自主学习的积极性。具体原因主要包括以下几个方面。
(1) 理论教学枯燥乏味
在传统的软件体系结构课程的理论教学中, 课堂上主要以教师的理论教学为主, 仅仅讲授软件体系结构的基本概念和基本原理。在这种“填鸭式”教学过程中, 学生往往是被动地接受知识, 死记硬背, 枯燥乏味, 难以激发学生的学习兴趣和学习主动性。近年来, 随着业界人士的研究探讨, 这种情况有所改观, 但并没有真正解决师生互动的问题。
(2) 课程教材更新缓慢
教材是教师开展教学和学生课下自学的主要依据。在软件体系结构课程教学过程中, 往往采用单一的软件体系结构教材, 存在可用性差、更新缓慢、信息量不足等问题, 不能成为学生自主学习、探索和发现的认知工具。此外, 当前软件体系结构领域的研究非常活跃, 各种研究成果不断涌现, 任何一本教材都无法及时反映最新的研究成果。
(3) 实践教学条件欠缺
大多数高校不能为学生提供较好的实践条件, 尤其不能做到实践时间、实践内容和实验设备对学生的真正开放, 使学生理论与实践相结合性差、课内与课外相结合性差, 无法培养学生的实践动手能力。
3. 软件体系结构课程教学模式的改进
(1) 多媒体课堂理论教学
针对传统的“填鸭式”教学过程的弊端, 讲课教师要重视对现代教育技术手段的研究与运用, 全部采用多媒体课件进行授课, 充分发挥多媒体教学形式多样、信息量大、形象直观的优势, 以更加整齐、美观、生动和可重现等方式展现课程内容, 在讲授的过程中加入适量的实际案例, 对重点内容, 采用“精讲多练”, 引入课堂练习和课堂讨论, 提高学生基础知识运用的能力, 使抽象的概念形象化, 使学生加深了对理论和方法的理解, 增强了学生的学习兴趣, 提高理论教学效果。
(2) 案例驱动实践教学
为培养学生自主学习的能力, 在软件体系结构课程设计教学实践过程中采用以下三个主要步骤来进行。
首先是课程设计前的任务布置, 在课程设计之前两周布置课程设计的题目, 将学生提前分好小组, 要求按组完成布置的题目, 学生根据题目进行讨论、查找资料, 进行方案论证, 并写出设计思想与工作步骤、选材原则等等。
其次是课程设计中实战, 要求每组每名学生都必须参与从设计、制作、调试和改进的全过程, 由学生自行确定各自在小组中的分工以及小组成员合作的形式, 然后按照已确立的工作步骤和程序进行工作, 在完成题目设计的同时, 强调合作学习, 强调集体“合作”而非个体“单干”, 这样有助于培养学生的团队协作精神。在此过程中教师扮演的角色就是负责辅导、答疑, 回答和解决学生在实践中遇到的问题。
最后是课程设计总结, 在课程设计结束前, 对设计内容和出现的问题进行总结, 答辩时主要采用学生讲解、演示调试过程、老师提问和小组讨论的方式, 以便深入了解学生对设计内容的掌握情况, 评判设计过程中出现的问题, 学生解决问题的方法等等。
(3) 理论与实践教学的密切结合
在理论教学中, 每一章节都有针对性地设计了教学案例, 并注重案例的趣味性、实用性和易学习性, 使学生可以轻松地将软件体系结构理论运用到生产实践中。在课堂上精讲多练, 启发学生独立思考、调动学生的主观能动性, 鼓励学生多提问题、共同探讨和解决问题, 提高学生的综合应用能力、综合分析问题得能力和解决问题的能力。
4. 跟进教学模式改进的教学手段
教师在改革教学内容、课程体系与教学方法的同时, 也要重视教学手段的改革, 努力将教学内容与教学方法的改革建立在现代教育技术的平台上。
(1) 采用多媒体教学手段, 提高教学效果和教学水平
重视对现代教育技术手段的研究与在教学中运用, 教师要采用多媒体课件进行授课, 充分发挥多媒体教学形式多样、信息量大、形象直观的优势, 以更加整齐、美观、生动和可重现等方式展现课程内容, 使抽象的概念形象化, 使学生加深了对理论和方法的理解, 增强了学生的学习兴趣, 提高了教学效率, 提升了教学效果。
(2) 创造先进的实践条件, 培养学生的学习兴趣和动手能力
充分利用校园网络资源, 为学生创建自主学习的环境、交互式的学习平台;实验室为学生提供基础实验、选作实验与开放实验, 方便了学生的自主学习, 形成了立体化的学习环境;借助多媒体网络课堂, 扩展了学生知识视野, 对激发学生的学习兴趣、促进了教学效果的提高起到了很好的作用。
(3) 增进师生交流沟通, 加强课后教学辅导
在课前和课后, 增进和学生的交流沟通, 了解学生的需求, 调整教学内容、教学方法;加强对学生的教学辅导。除了课间答疑、课后答疑外, 每周还单独安排了答疑课;另外还可以通过教师个人主页进行答疑、讨论、发布资料, 以及采用E-mail、QQ等多种方式, 使教师辅导学生不受时间和空间限制。
参考文献
[1] (美国) 肖.软件体系结构[M].清华大学出版社.2007
软件工程专业能力与课程体系研究 篇4
近年来,中国软件产业总体保持平稳较快发展,企业数量稳步增加,产业规模持续扩大,中国软件产业共实现软件业务收入2.5万亿元,同比增长32.7%。“十二五”时期,我国软件业发展前景广阔。按照工信部的《软件和信息技术服务业“十二五”发展规划》,“十二五”期间,我国软件业将着重发展基础软件、工业软件及行业解决方案等八大重点领域,并实施包括龙头企业培育在内的十大重点工程。从到,中国软件行业收入将年均增长25%以上。预计到20,我国软件业业务收入将达到4万亿元,占信息产业的比重将达到25%,软件出口额达到600亿美元。
随着东莞经济的高速发展和“双转型”的需要,对高素质应用型人才的需求变得尤为迫切。东莞市政府出台的《关于加快发展东莞市现代信息服务业的实施意见》支持发展信息服务业。东莞市现代信息服务业主要包括信息传输服务业、计算机服务业以及软件业三大类,将东莞打造为继深圳、广州后的又一个现代信息服务业基地。东莞的信息产业规划届时将以新显示、新能源、新一代宽带无线移动通信和软件产业“四新一软”发展战略为重点,力挺软件产业,同时大力开展人才培育工程,以产学研相结合的方式,支持各高校开展人才定制培训、综合培训、认证培训、专业课程培训等各项培训,大力培养适合企业发展需要的实用技术型和创新型人才。东莞市政府在《东莞市促进软件产业发展的若干规定》中明确指出:要大力培养符合软件产业要求和掌握规范性开发能力的大批软件技术开发人员。
二、软件工程专业发展概况
随着网络的普及和应用,信息技术不断深入社会生活的方方面面,软件的应用越来越广,软件产业不断扩大,社会需要大量的软件技术人才,系统、规范地培养软件工程人才已受到国内外高等学校、科研院所和企业界的普遍重视。由ACM和IEEE/CS联合工作组组织制定的软件工程知识体SWEBOK、计算教程软件工程卷CCSE于5月正式发布。软件工程专业将根据广东和东莞人才市场需求,以软件领域人才需求调查结果为基本依据,以提高学生的综合职业能力为宗旨,培养具有从事应用软件系统分析、设计、开发、应用、管理与维护的能力,立足东莞、服务广东、面向全国的高素质应用型技术人才。
三、专业能力构成
1.软件工程专业能力。根据教育部计算机课程教学指导委员会发布的《软件工程本科专业规范》能力结构要求,掌握软件工程的知识与技能,具备软件工程师从事工程实践所需的专业能力。主要分为:①获取知识能力:终身学习能力、信息获取能力、适应学科发展的能力等。②应用知识能力:需求分析和建模的能力、软件设计和实现的能力、软件评审与测试的能力、软件过程改进与项目管理的能力、设计人机交互界面的能力、使用软件开发工具的能力等。③创新能力:在基础研发、工程设计和实践等方面具有一定的创新意识和能力。
2.软件行业岗位能力。根据人才培养目标和用人单位对软件工程专业人才的能力需求以及软件开发生命周期各环节技术要求,我们将软件工程专业能力归纳为系统分析、软件设计、软件开发、数据库开发与管理、软件测试、软件技术支持与系统维护等六个方面。①系统分析与管理能力。精通计算机行业的前沿理论,精通代表主流开发思想的程序开发语言,精通建设信息系统所要求的各种具体技术,熟悉应用领域的业务,能分析用户的需求和约束条件,写出信息系统需求规格说明书,制定项目开发计划,协调信息系统开发与运行所涉及的各类人员,能指导制定企业的战略数据规划,组织开发信息系统,能评估和选用适宜的开发方法和工具,能按照标准规范写系统分析、设计文档,能对开发过程进行质量控制与进度控制,能具体指导项目开发。②软件设计能力。针对客户的需要和软件开发项目管理及软件工程的要求,根据设计规格说明书进行软件设计,编写程序设计规格说明书等相应的文档;具有理解需求分析与整体设计能力;模块级详细设计能力及数据库设计能力。③软件开发能力。根据软件产品的需求、理解和分析系统概要设计,进行模块级详细设计,按照规范编写代码,进行单元测试,修改缺陷,提交代码,编写整理技术文档。要求具有较强的`逻辑思维能力,理解面向对象思想;掌握主流开发工具,精通一至两种程序语言,按照规范编写代码;具有数据库开发能力;掌握单元测试、集成测试的方法与技术;编写、整理技术文档的能力。
④数据库开发与管理能力。根据需求进行数据库分析和设计,创建符合规范的数据库,满足系统运行的需要;完成数据库日常维护、备份及恢复,能对数据库性能进行优化。掌握数据库基本原理;熟练掌握一种以上大型数据库系统的应用;具有数据库设计与开发能力;具有数据库备份、恢复及日常维护的能力;具有对数据库性能优化的能力。⑤软件测试能力。根据需求分析和设计规范,对软件进行测试和检验,发现软件的错误或缺陷,对软件产品质量进行客观评价。掌握单元测试和集成测试、功能测试和性能测试的基本方法和步骤;熟悉软件开发过程,掌握软件测试流程和技术;具有编制测试大纲、计划、方案及设计测试用例的能力;熟悉使用常用测试工具;具有测试执行、缺陷跟踪的能力;具有测试管理能力;能够编写测试技术文档的能力。
四、课程体系设计
在课程体系设置时,围绕软件工程专业六种能力的培养,我们如图1所示的课程体系,该课程体系由基础必修课、专业必修课、专业组选课(分方向开设)、专业任选课和专项实践课所组成。为了适应社会需求,我们根据软件工程专业所需要的知识结构和能力结构,经过我们对多家企业的招聘信息、学生就业跟踪、以及与多家企业进行了实地接触和深入访谈,比较全面地掌握了企业用人需求,目前Java和。NET技术为主流技术市场,因此我们在软件工程专业设置了“。NET技术方向”和“JAVA技术方向”,采用“双线分向”教学改革,学生可根据自身能力和职业规划,自主选择其中一个方向作为主修方向,另一个方向以专业选修的方式拓展,学生所学技能更加适应市场的需求。
专业项实践课是为了使学生加深对所学原理的理解和掌握,培养学生综合运用所学知识解决实际问题的能力和创新能力。专项实践课是在每学期的期末进行整周(每周24课时)实训,用来完成1个或几个项目(任务)。主要包括C语言课程设计、数据结构课程设计、计算机网络实验、数据库课程设计微机原理及汇编语言实验、C#课程设计/JAVA课程设计、ORACLE课程设计、ASP.NET课程设计/JSP课程设计、UML统一建模课程设计、Linux综合实验、。NET综合开发/J2EE综合开发、软件开发综合应用。不断增加综合性、设计性实验的比例,提高学生的综合职业能力。另外积极鼓励学生参加各级各类的软件设计竞赛,拓展学生的视野,例如,全国软件设计大赛、大学生电子设计竞赛、软件杯作品大赛和科研项目等。
面向模式的软件体系结构的研究 篇5
模式是软件体系结构的一种方式。当设计一个软件系统时,它们可以进行形象描述。模式支持采用定义属性来构造软件,它提供一个功能行为的基本框架,有助于实现应用程序的功能。本文系统概述了软件体系结构中的模式,以及对模式进行了一个全面深入的探讨。
2. 模式
2.1 什么是模式
软件模式的概念由来已久,软件中的模式起源于建筑,正如Gangof Four在《设计模式》中所说:“尽管Alexander所指的是城市和建筑模式,但他的思想也同样适用于面向对象设计模式。只是在面向对象的解决方案里,我们用对象和接口代替了墙壁和门窗。两者的核心都在于提供了相关问题的解决方案[1]。”
当系统设计师求解一个特殊问题时,他们一般不会发明一种和已有解决方案完全不同的方案来处理这个问题。他们往往会借鉴已解决过的相似问题,并重用其解法的精华部分来解决新的问题。简单而言,是一种针对某一特定的、反复出现的问题的成功的解决方案。就问题本身而言,可以是任意领域和范畴的。可见我们在分析软件系统时,必须考虑问题的可重用性。
在软件领域中,模式被以一种约定的文档形式来表现出来,以便于记录、学习和交流。经验丰富的程序员,可以将他们的知识,通过模式这种更形式化的表述,传递给别人。因而,模式可以看作是一种具体化的、文档化的经验和知识。一个模式是描述一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样,你就能一次又一次地使用该解决方案而不必做重复劳动。每个模式是由三部分组成的一个规则,这个规则描述特定环境(语境)、问题和解决方案之间的关系。简单的说,没有一个模式是独立的实体,每个模式都存在着相互支持,但支持的程度不同:抽象度高的模式可以嵌套抽象度小的模式,同等层次的模式并列存在,而小的模式被嵌入到大的模式之中。
总结来说,一个软件系统结构的模式是描述了一个出现在特定语境中的特殊的再现设计问题,并为它的解决方案提供了一个经过充分验证的通用图式。解决方案图式通过描述其组成组件、它们的责任和相互关系以及它们的协作方式来具体指定。
2.2 模式的分类
随着模式的增多,我们可以在多个领域内定义模式,有些模式有助于把一个软件系统分解成子系统,另一些模式有助于实现特定编程语言中的特殊设计方面。为了细化我们的分类,因此我们把模式分成三种类型:体系结构模式,设计模式和惯用法。下面对这三类模式进行说明。
(1)体系结构模式表示软件系统的基本结构化组织图式。根据一些整体构建原理来建立可行的软件体系结构,我们可以用软件体系结构模式来描述这些原理。它提供一套预定义的子系统,规定它们的职责,并包含用于组织它们之间关系的规则和指南。体系结构模式可作为具体软件体系结构的模板。它们规定一个应用的系统范围的结构特性,以及对其子系统的体系结构施加的影响。所以体系结构模式的选择是开发一个软件系统时的基本设计决策。模型--视图--控制器(MVC)模式是体系结构模式最著名的例子之一。
(2)设计模式提供一个用于细化软件系统的子系统或组件,或它们之间关系的图式。软件体系结构是描述子系统以及它们之间的关系,通常由几个更小的体系结构单元构成。我们用设计模式来描述它们。
它描述通信组件的公共再现结构,通信组件可以解决特定语境中的一个一般设计问题。设计模式是中等规模的模式。设计模式的应用对软件系统的基础结构没有影响,但可能对子系统的体系结构有较大影响。
(3)惯用法是具体针对一种编程语言的低层模式。惯用法描述如何使用给定语言的特征实现组件的特殊方面或它们之间的关系。它们关注设计和实现方面。大多数惯用法是针对于具体语言--它们捕获现有的编程经验。
这种对模式的分类有助于我们为给定的设计问题预先选定潜在有用的模式。体系结构模式可以用在大粒度设计的开始,设计模式可以用在整个设计阶段,惯用法可以用在实现阶段。
3. 模式和软件体系结构
3.1 软件体系结构
软件体系结构的提出源于程序复用的概念,可以说体系结构的复用是最高级别的复用形式。我们将使用软件体系结构的下列定义:软件体系结构为软件系统提供了一个结构、行为和属性的高级抽象,由构成系统的元素的描述、这些元素的相互作用、指导元素集成的模式以及这些模式的约束组成。软件体系结构不仅指定了系统的组织结构和拓扑结构,并且显示了系统需求和构成系统的元素之间的对应关系,提供了一些设计决策的基本原理[3]。
3.2 软件体系结构中的模式
为什么要在软件体系结构中引入模式呢?在组建体系结构过程中,许多被人们广泛采用的体系结构模式如管道和过滤器、层次结构、代理者等,常被用户按照自己的理解并以不同的方式应用到系统开发中。其结果通常是,系统设计人员无法就软件的体系结构达成共识,因而也就无法对系统结构设计方案进行评估、选择与交流,难以指导系统的组建和实现。模式的总结和发展较好地解决了上述问题,它利用软件工程专家在软件开发过程中积累的成功设计经验来指导设计实践。
我们的模式建立在设计者和程序员近三四十年来在软件开发中得到的极其广泛的实际经验基础之上的。我们描述的模式都不是人工构造出来的,它们既不是我们也不是别人构造的———它们是随着时间演化而得到的。软件开发者认识到:使用某个特定方法解决一个问题要比使用其它方法好,因此它们一而再,再而三地使用这种解决方法。
模式同样也明确建立在为结构化程序设计而开发出的许多原理基础之上,模式并非仅致力于对象技术。在20世纪70年代发展起来的许多程序设计原理构成了我们的模式基础。模式的另一个目标是使用可预测的非功能属性建造软件系统,因此模式建造也就基于这样的原则:为重用进行软件开发并且使用重用开发软件,为变更而设计。
4. 结束语
模式为开发具有已定义属性的软件提供了一种有前途的方法,它们把现有的设计知识文档化,有助于我们为设计问题找到适当的解决方案。模式存在于各种不同的规模和抽象之中,并覆盖软件开发的许多不同的和重要的领域。模式彼此交织--我们可以用它们来细化其它较大规模的模式,并且可以将它们组合以解决更复杂的问题,我们关注软件体系结构的重要方面并对现有技术和方法进行补充。总之模式提供了一个“宝盒”来帮组我们构造应用程序的功能需求和非功能需求的软件。
摘要:主要阐述了模式的概念、原理和常用模式的分类,重点研究了软件体系结构中的模式。模式是总结软件开发中现存的、被证明良好的经验,再用来促进好的设计实践,每个模式都是处理一个软件系统的设计或实现一种特定类型的重复出现的问题。
关键词:模式,软件体系结构,软件设计
参考文献
[1]Frank Buschmann,Regine Meunier,Hans Rohnert,Peter Sommer-lad,Michael Stal.Pattern-Oriented Software Architecture Volume1:A System of Patterns[M].北京:机械工业出版社2003.
[2]Jeffrey L.Whitten,Lonnie D.Bentley,Kevin C.Dittman.Sys-tem Analysis And Design Methods[M].北京:高等教育出版社,2001.
浅析几种常见软件体系结构模式 篇6
关键词:软件体系结构,软件体系结构模式,软件开发
软件设计自从计算机诞生之日起, 就存在着显式或是隐式的危机。软件危机的两个最大的问题便是:随着计算机软件技术的日新月异, 软件的规模越来越大, 软件复杂度越来越高。伴随着这两个问题的日益突出, 整个软件系统结构的设计与规格说明便显得比在早期软件开发中占有重要地位的算法选择和计算问题的数据结构更为重要。代码级别的软件复用已经远远不能满足大型软件开发的需求。由此便引入了软件体系结构这一概念。
1 层次体系结构模式
层次 (Layer) 体系结构模式是一种体系结构模式, 它将系统水平分割为多个抽象的层次。TCP/IP网络是层次模式的最著名例子。分层风格的体系结构是将系统组织成一个层次结构, 每一层为上层提供服务, 并作为下层的客户端。在分层风格的体系结构中, 一般内部的层只对相邻的层可见。层之间的连接器 (conector) 通过决定层间如何交互的协议来定义。这种风格支持基于可增加抽象层的设计。这样, 允许将一个复杂问题分解成一个增量步骤序列的实现。由于每一层最多只影响两层, 同时只要给相邻层提供相同的接口, 允许每层用不同的方法实现, 同样为软件复用提供了强大的支持。分层风格的体系结构有许多优点: (1) 支持基于抽象程度递增的系统设计:使设计者可以把一个复杂系统按递增的步骤进行分解; (2) 支持功能增强:因为每一层至多和相邻的上下层交互, 因此功能的改变最多影响相邻的上下层; (3) 支持复用:只要提供的服务接口定义不变, 同一层的不同实现可以交换使用。这样, 就可以定义一组标准的接口, 而允许各种不同的实现方法; (4) 可替换性。但是, 分层风格的体系结构也有弱点: (1) 更改行为的重迭:当对低层的修改由于某种原因影响了高层的时候, 对低层的局部修改必须在多个层次上进行; (2) 降低了效率:上层到下层之间需要进行参数传递/转换等; (3) 不必要的工作:有时底层执行的动作并不全是高层需要的。那么这些多于动作将造成效率的降低; (4) 难以认可层次的正确性粒度。
2 管道与过滤器模式
管道/过滤器 (Pipe/Filter) 风格的软件体系结构中, 每个组件都有一组输入和输出, 组件读输入的数据流, 经过内部处理, 然后产生输出数据流。这个过程通常通过对输入流的变换及增量计算来完成, 所以在输入被完全消费之前, 输出便产生了, 这里的组件被称为过滤器, 这种风格的连接器就象是数据流传输的管道, 将一个过滤器的输出传到另一过滤器的输入。此风格特别重要的过滤器必须是独立的实体, 它不能与其它的过滤器共享数据, 而且一个过滤器不知道它上游和下游的标识。一个管道/过滤器网络输出的正确性并不依赖于过滤器进行增量计算过程的顺序。编译器系统就具备典型的管道系统风格的体系结构。在该系统中, 一个阶段 (包括词法分析、语法分析、语义分析和代码生成) 的输出是另一个阶段的输入。一个著名的例子是传统的编译器。管道/过滤器风格的软件体系结构的一些优点: (1) 不再需要中间文件, 但是也可以使用中间文件; (2) 通过过滤器增加了灵活性。过滤器组件的重用; (3) 流水线的快速原型; (4) 并行处理提高效率。这种结构的弱点是: (1) 共享状态信息或者昂贵, 或者不灵活; (2) 并行处理获得的效率是一种假象; (3) 数据转换额外开销; (4) 错误处理。
3 映像模式
映像模式为动态地改变软件系统的结构和行为提供了一种机制。一个应用程序被分成两个部分:元层次, 提供所选系统属性的相关信息并使软件包含自述信息;基本层次, 包括了应用程序的逻辑。也称为开放实现或元层次体系结构。映像模式体系结构有以下的一些优点: (1) 可以不直接修改源代码而对软件的行为进行修改; (2) 可以更容易地更改软件; (3) 支持更多种类的修改。这种体系结构的一些不足: (1) 元层次修改时, 可能会带来故障; (2) 增加了组件的数目; (3) 效率较低; (4) 并非所有现在的改变都会得到支持; (5) 并非所有的语言都支持这个模式。
4 MVC体系结构模式
MVC (模型-视图-控制器) 是Xerox PARC在八十年代为编程语言Smalltalk-80发明的一种软件设计模式, 至今已被广泛使用。MVC是一个设计模式, 它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。MVC模式的好处: (1) 同一模型的多个视图; (2) 同步化视图; (3) 可插入的视图和控制器; (4) 式样和感觉的可交换性; (5) 框架潜力, 可以开发这个模式的应用程序框架; (6) 控制器和视图之间的联系非常紧密。这个结构的缺点: (1) 增加了复杂性; (2) 潜在的过多的更新因素; (3) 视图和控制器与模型的紧密耦合; (4) 视图中数据访问的低效率; (5) 移植时对视图和控制器的修改是不可避免的; (6) 借用现代的用户接口工具使用MVC的困难性。
5 PAC体系结构模式
PAC体系结构模式以合作agent的层次形式定义了交互软件系统的一种结构。每个agent负责应用程序功能的某一特定方面, 并且由表示、抽象和控制三个组件构成。这种细分将agent的人机交互与其功能内核和它与其他agent的通信分隔开来。
PAC体系结构的一些优点: (1) 事务分离, 不同的语义概念用独立的agent分别表示.每个agent提供它自己的人机交互.允许作为应用程序的每一个语义概念或任务独立于其他语义概念或者任务的数据模型或者用户接口; (2) 支持变化和扩展; (3) 支持多任务。
这种模式也存在着一些不足的地方 (1) 增加了系统的复杂性; (2) 复杂的控制组件, 控制组件负责抽象组件和表示组件之间的通信媒介, 也负责不同的agent之间的通信。控制组件的复杂任务使它的设计变得困难; (3) Agent之间的间接通信使得系统的效率降低。 (4) 可应用性, 应用程序的原子语义概念越小, 那么他们用户接口的相似性越多, 模式的可应用性就越差。
软件的体系结构与模式 篇7
高等职业教育的课程结构体系改革是一项庞大复杂的系统工程,是当前轰轰烈烈开展的高职“工学结合”教育教学改革的终极目标。以计算机软件技术.NET专业方向/J2EE专业方向为例,以上专业以Web应用程序系统设计开发为课程体系主线,其专业课程设置涵盖了面向对象编程(C#、Java)、数据库(SQL Server/Oracle)开发、网络原理与局域网组网技术、Xm技术、Asp.Net技术、Jsp技术、Ajax技术与图像处理、动画制作等专业基础课程和专业技术课程。研究专业课程体系设置如何适应“工学结合”的人才培养模式、体现专业理论“必需、够用”的原则、构建“边做边学”的教学实训环境,对于贯彻教高[2006]16号文件精神、提高教学质量、启动课程建设与改革具有很重要的现实意义。
二、课程体系改革的总体目标
为了实现工学结合人才培养目标,我们设想将高职计算机信息软件专业学生的三年学习过程的目标定位,分为三个阶段,或称三个层次,每一个层次达到或强化一种职业岗位能力。它们是:
第一阶段:面向的职业技术岗位群是:计算机系统的管理与维护,办公自动化,局域网的组网、管理与维护,信息技术支持服务等企事业单位信息化、电子商务等需要的初级IT技术人员。
第二阶段:面向的职业技术岗位群是:数据库管理与维护、网站管理与维护、信息系统管理与维护等企事业单位信息化、电子商务等需要的中等IT技术人员。
第三阶段:面向的职业技术岗位群是:网站规划建设以及管理与维护、信息系统安全、大型数据库的管理与维护等企事业单位信息化、电子商务等需要的高等IT技术人员。
三、课程体系的结构性改革方案
针对以上三个阶段的职业技术岗位群的层次定位,我们将高职软件技术专业的传统课程设置解构分离,重新组合成以下三层架构的课程体系结构。
第一层次是专业基础理论和专业基本技能课程。它们包括:Windows基础、Linux基础、办公自动化软件和设备、微机安装与维护、面向对象程序设计(C#与Winform/Java)、网络原理与局域网组网技术、图像处理与动画制作、数据库原理与应用及其相应的实训课程。
第二层次是专业基础与技术课程。它们包括:Html JavaScript静态网页设计、Xml技术、Jsp开发技术、Asp.Net与A-jax Web开发技术、管理信息系统 (MIS) 、企业资源计划 (ERP) 及其相应的实训课程。Web应用程序系统设计开发是当前高职院校计算机软件、信息等专业贯彻网络编程思想及三层架构概念、培养职业能力的专业主干技术课程。
第三层次是专业实践课程。它们包括:图像处理、动画制作与网页美工技术项目开发实战、Html商业站点项目开发实战、J2EE企业级商业站点项目开发实战、.Net企业级商业站点项目开发实战与.Net+Ajax商业站点项目开发实战等。
项目实战课程的实质涵义是,课程的主要教学模式就是实践。教学的主要过程是先从“立项”开始,从项目入手,项目实战课程对专业教师的教学提出了较高的要求:教师必须要有跟企业合作的项目,或者是自己独立开发的项目。
四、与“工学结合”新课程体系相配套的专业课程建设
从上述三个阶段的职业技术岗位群的层次定位中可以看出,我们在课程体系建设中坚持了课程设置适应区域和IT行业发展的需求和以就业为导向的目标;突出了学生的技术应用能力和学生的岗位职业能力的培养。
实施新课程体系的保障措施是建立突出职业能力培养的课程标准,规范基于工作过程的课程教学的基本要求,按照软件技术开发的规范与流程,采用基于软件产品开发过程的教学设计,提高课程教学质量。因此,高职必须同时启动与“工学结合”新课程体系相配套的课程建设,以保证课程体系改革的顺利进行。课程建设最关键内容有以下四点。
1. 教师队伍建设
高职院校应建设一支由中高级教师、工程师组成的结构合理、人员稳定的专业实践能力较强的教学团队,并聘请企业有生产实践经验的IT技术人员担任实训指导教师。
2. 教学内容及教学项目建设
课程体系中的每一位教师都必须有与企业合作或独立开发的企业级项目,以保证在教学实施过程中全面贯彻、实现“项目教学、任务驱动”的高职高专课程体系和教学模式改革的目标,体现边做边学、工学结合的鲜明特色。
3. 项目化教材建设
教材建设是课程开发建设的重要组成部分。工学结合的项目化课程需要教学团队编写出与工学结合课程体系改革相对应的、以实际项目为主线、以任务实例为载体的项目化教材。
4. 实践实训基地建设
依托本系本专业的企业实训基地,聘请企业技术人员担任项目实战课程和实训指导老师,建设面向生产一线的产、学、研相结合的稳定的实践实训场所。
本文以本专业项目组申请建设的省教育规划课题———《高职软件专业工学结合模式的课程体系研究》为依托,意在探索工学结合模式下教学内容和课程体系改革的一种新的框架和途径。
参考文献
[1]中华人民共和国教育部.关于全面提高高等职业教育教学质量的若干意见.教高16号文件, 2006.
软件的体系结构与模式 篇8
关键词:软件可信性,构件可信性,可信性变化,传播模式,设计结构矩阵
可信软件是指其运行行为及其结果符合人们的预期、满足用户的需求, 在受到操作错误、环境影响、外部攻击等干扰时仍能持续提供服务的软件。近年来, 软件及其运行环境发生了质的变化, 边界开放、规模越来越大、技术环境因素动态多变等特点使得软件系统在可信性方面面临许多新的挑战[1,2]。软件系统投入运行后, 由于环境变化和软件变化可能导致用户对软件有新的可信性要求或者原有可信性发生变化, 而软件可信性要求一个局部的变化往往在整个系统范围内产生一系列难以预料的连锁效应, 从而给软件可信性的变化带来巨大的风险。因此, 分析软件可信性变化影响将有助于软件可信性变化的实现。
软件可信性变化属于软件变化研究的一个分支, 随着软件技术的快速发展以及软件产业要求的不断提高, 软件变化已经成为软件工程领域的研究热点。Bohner[3,4]在论文中给出了软件变化分析的过程框架, 并首次引用“波及效应”一词来形象地描述软件变化的影响;Ahmed Breech[5,6,7]等学者主要从一个软件实体 (函数、变量) 变化对另一个软件实体影响的角度来研究和预测波及范围;Chen[8]等学者则利用面向对象思想, 使用属性和连接去描述包括设计文档、软件组件、外部数据和需等变化项目及其之间的关系, 建立了一个基于对象、面向属性的软件变化影响分析模型;王映辉[9]在Bohner研究的基础上从功能视角, 利用可达矩阵来研究基于构件的软件体系结构演化与影响。从上述文献研究可以看出, 尽管对软件变化影响的研究日益增多, 但大多数学者研究的关注点主要集中在软件的功能变化, 其研究也很少涉及到软件变化传播模式。
针对当前对软件可信性变化影响研究的不足, 本文引入水波式、开花式和雪崩式等三种传播模式来研究软件可信性变化传播。将软件视作构件的组装, 将软件可信性分解到各构件, 从结构的视角, 重新定义了软件可信性;从构件内部、构件之间表征构件可信性的可信属性存在相互依赖关系的视角, 基于设计结构矩阵理论, 构建了软件可信性DSM模型;分析了三种传播模式的特点, 并通过对构件可信属性聚类和划分变化分组在软件可信性变化传播中的不同模式, 对软件可信性变化传播影响进行了刻画分析。
1 软件可信性的内涵
1.1 构件
软件产业的成熟以及软件生产要求的不断提高, 使基于构件的软件开发方法得到了广泛的应用。在基于构件的软件开发方法下, 程序开发模式也相应地发生了根本变化, 软件开发不再是算法+数据结构, 而是构件开发+基于体系结构的构件组装。在体系结构中, 构件是软件系统的构成要素和结构单元, 是软件功能设计、实现和寄居状态的承载体。从系统的构成上看, 任何在系统运行中承担一定功能、发挥一定作用的软件体都可看成构件。作为软件体系结构的构造块, 构件不是独立存在的, 各构件之间具有一定的关联关系, 具有互操作性。
1.2 软件可信性
软件可信性指一个软件系统的行为总是与预期相一致, 它是一种需求分解精化的对功能需求作用的全局性质量约束, 它的一个微小变化往往对整个软件系统产生较大范围内的影响。软件可信性通常用一组相互关联和相互影响的可信属性来描述和评价。可信属性用于描述和刻画软件可信性的若干软件关键性质, 它可被细化成多级子属性。可信属性是软件 (客体) 获得用户 (主体) 对其行为实现预期目标的能力的信任程度的客观依据。主体通过客体所具有一组表达其可信属性的客观能力事实, 从而信任客体的行为能够实现其设定的目标[10]。因此, 若软件可信, 则意味着软件拥有了一系列与软件可信属性相关的能力;反过来, 若软件具有了一系列与软件可信属性相关的能力, 则可以相信该软件能达到其预设的可信性目标。本借鉴文献[10]提出的一个可信属性模型来展现软件可信的内涵, 它用可用性 (Availability) 、可靠性 (Reliability) 、安全性 (Security) 、实时性 (Real Time) 、可维护性 (Maintainability) 和可生存性 (Survivability) 等6个可信属性表示构件或软件的可信性。尽管用户对于各种类型软件可信的期望有所差异, 但软件可信的内涵对于各种类型软件应该是基本一致的。
从上文对构件的描述, 软件可简单的视作组成系统的若干构件以及构件与构件之间交互作用关系的高度抽象, 这样软件可信就表现为组成软件的各个构件可信, 就意味着各个构件拥有了一系列与软件可信属性相关的能力。基于这样的理解, 本文从结构的视角对构件可信性和软件可信性概括定义如下:
定义1 (构件可信性) 构件可信性是指构件的可信能力, 它用一组相互关联和相互依赖的可信属性来表示。由于构件在实现目标和用户期望可信性的不同, 描述和评价其可信性的各构件的可信属性存在差异。
定义2 (软件可信性) 软件可信性是指整个软件系统的可信能力, 它用一组构件可信性来表示, 各构件可信性之间的相互依赖和相互影响的是通过可信属性之间的作用机制来体现。
根据定义2, 软件可信性实质上就高度抽象为组成系统的若干构件的可信属性和各可信属性之间的依赖关系。表征各构件可信性的可信属性, 如可用性、可靠性、安全性、实时性、可维护性和可生存性等可信属性之间的依赖关系是静态存在, 但是, 由于各构件功能和作用的差异, 同样的可信属性之间在不同的构件可能所表现的依赖强度往往有差异。为了提高软件可信性变化传播分析的有效性和减少软件可信性变化实现的复杂性, 本文假设各构件和构件内部的可信属性之间的依赖强度有一个最低阀值, 当可信属性之间的依赖强度高于该阀值时, 其可信属性之间的依赖关系才存在, 否则忽略。
2 软件可信性DSM模型
设计结构矩阵 (Design Structure Matrix, 简称为DSM) 是一个n×n的紧凑矩阵, 它包含了所有构成元素之间的信息依赖关系。系统的元素均以相同的顺序放在矩阵的最左边和最上边, 如果元素和元素之间存在联系, 则矩阵中的ij (i行j列) 元素为●, 否则为空格。设计结构矩阵有助于系统的建模, 因为它能表示一对系统元素间的关系存在与否, 与图形表示相比, 它能为整个系统元素提供整体的紧凑描绘。
目前, DSM已经发展成为基于组件和基于团队应用的静态模型、基于活动和基于参数应用的时间模型等两种类型的模型[11]。前者指同时存在的系统元素;后者指上游活动和下游活动之间的先后顺序。很多学者把DSM应用到设计过程的建模和管理中, 如文献[12]使用DSM表示复杂软件产品中设计元素之间的依赖关系以研究不同软件产品架构之间的差异。DSM为理解和分析复杂的软件可信性提供了简洁而可视的形式, 本文借鉴基于组件的静态DSM模型来表征构件内部可信属性之间和构件与构件的可信属性之间的依赖关系, 并对软件可信性DSM模型概括定义如下:
定义3 (软件可信性DSM模型) 可信性DSM模型是一个n×n阶方阵, 其矩阵的行和列与表示各构件可信性的所有可信属性相对应, 矩阵的维数n代表所有可信属性的个数, 主对角线元素标志着可信属性本身;其它元素用以表示可信属性之间的依赖关系, 其方向性由行和列分别表示, 行对应基于构件的软件可信性模型图中有向边的弧头, 列对应该图中有向边的弧尾, uij表示可信属性uj依赖于可信属性ui, 并用“●”来表示。
设某软件的可信性DSM模型如图1所示, 其中可信属性t1到t6属于构件Comi, 可信属性t7到t12属于构件Com2, 可信属性t13到t18属于构件Com3。从图中, 可以直观的看出构件内部和构件之间可信属性的直接依赖关系。
3 软件可信性变化传播模式分析
3.1 可信性变化传播影响与传播模式
从图1所示的软件可信性DSM模型不难发现, 可信属性之间不仅存在直接依赖, 而且存在间接依赖。如图1所示, 若可信属性t18发生变化, 引起了可信属性t5、t17的变化, t5进而引起了t3、t6变化, t17又引起了t6、t16的变化, t3的变化引起了t11的变化, t16又引起了t5的变化等等, 即由最初可信属性t18变化引起了t5、t17、t3、t6、t16、t11等可信属性的变化, 而且出现了重复与迭代。因此, 软件可信性变化实现初看似乎只需要根据需要对变化的可信属性分别进行实现, 但实际上由于各可信属性是彼此相互影响的, 对某一可信属性的变化会引起一连串其他可信属性的变化, 从而引发在需求变化传播。所有可信属性形成了一个复杂的可信需求变化传播网, 对某一具体可信属性而言, 则是一棵变化传播树, 如图2所示。
为了有效分析软件可信性变化传播, 本文引入文献[13]和文献[14]对机械产品设计变更传播模式的分类来研究软件可信性变化传播的影响。该文献将传播的影响划分为三类, 如图3所示:①水波式传播模式 (ripple propagation) , 即初始变化引起的传播只会引起少量的其他变化, 然后变化数量迅速减少;②开花式传播模式 (blossom propagation) :即起初变化传播引起其他变化大量增加, 如同在“开花期”, 但之后变化数量逐渐减少, 变化传播进入“凋谢期”, 最后传播引起的变化数量可以保持在一个合理的数量上;③雪崩式传播模式 (avalanche propagation) , 即变化传播引起变化数量不断增加, 如同雪崩效应或滚雪球效应, 最后导致变化影响的数量难以控制。
3.2 可信性变化传播模式分析
在图论中, 对于有向图的两个节点u、v, 若存在从节点u到节点v的通路, 则称节点u到节点v是可达的。若一个有向图中的任意两节点都是相互可达的, 则称该有向图为强连通图;若一个有向图的某几个节点导出的子图是一个强连通图, 则称该子图为原有向图的一个强连通分支。
软件可信性变化传播影响问题实际上是软件各构件可信属性之间依赖的“可达性”问题, 而当某几个可信属性处于同一个“强连通分支”时, 则它们中任意一个可信性属性的变化都会对其余的任意一个可信属性产生影响, 因而可以将其聚类为一个分组, 该分组内部的变化都会彼此影响。下面以图1所示的软件可信性DSM模型为例, 分析软件可信性变化传播影响及其传播模式。
将图1所示的软件可信性DSM模型看作一个邻接矩阵, 求取其强连通分支, 并将处在同一个强连通分支内的可信属性聚类为一个变化分组, 最后得到{t3, t15}, {t1, t2, t7, t8, t9, t10}, {t4, t11, t12, t14}, {t5, t6, t16, t17, t18}四个分组。经过聚类形成的变化分组要么在结构组成上是紧密联系在一起的, 要么是在作用上是紧密在一起的。经过重新排列元素顺序, 四个变化分组的DSM如图4所示。将分组内部可信属性和构件的变化依赖关系用有向图表示, 如图5所示。可以将变化分组分为三个层次:
(1) 变化发起分组。该分组的变化会引起其它分组的变化, 但不会受其他分组变化的影响, 如分组{t1, t2, t7, t8, t9, t10}, 对应图5中的分组CG1。
(2) 变化传递分组。该分组的变化既受其他分组的影响, 也影响其他分组, 如分组{t4, t11, t12, t14}和分组{t5, t6, t16, t17, t18}, 对应图5中的分组CG3和分组CG4。
(3) 变化吸收分组。该分组的变化只受其他分组的影响, 而不影响其他分组, 如分组{t3, t15}, 对应图5中的分组CG2。
从软件可信性的组成和作用的角度可以看出, 变化发起分组往往是整个软件可信性中最核心的部分, 其分组内部的可信属性往往是最基础的可信属性。而变化传递分组内的可信属性, 则是结构上连接各构件可信性, 或者作用上协调整个软件可信性实现的可信属性。变化吸引分组内的可信属性, 则大都是结构上处于从属地位, 依赖于软件主要的可信属性。
在实际的软件可信性变化传播过程中发现, 之所以会发生如图3所示的不同模式的变化, 实际上是由于变化传播涉及到不同类型的变化分组的缘故, 总结如下:
(1) 水波式传播模式。由于变化吸引分组自身的变化, 或者变化从初始分组传播到变化吸引分组, 没有变化传递分组参与到变化传播, 会引起水波式变化传播。
(2) 开花式传播模式。如果变化传递分组参与了变化传播, 并且变化传递分组之间没有发生变化传播, 则会引起开花式变化传播。
(3) 雪崩式传播模式。一般是由于变化传递分组之间反复地发生了变化传播, 从而引起了雪崩式变化传播。
因此, 在软件可信性变化管理过程中, 要避免或减少雪崩式的变化传播的发生, 就应该消除或尽可能减少变化传递分组之间的变化传播。
4 结束语
近年来, 随着网络应用软件和嵌入式软件在国民经济高科技各个领域的广泛应用, 这些规模大、复杂程度高的可信软件系统由于应用环境的多变和用户要求的提高, 不但面临着功能需求的不断变化, 而且还经常面临着软件可信性的变化。针对当前对软件可信性变化影响研究的不足, 本文引入水波式、开花式和雪崩式等三种传播模式来研究软件可信性变化传播。将软件视作构件的组装, 将软件可信性分解到各构件, 从结构的视角, 重新定义了软件可信性;从构件内部、构件之间表征构件可信性的可信属性存在相互依赖关系的视角, 基于设计结构矩阵理论, 构建了软件可信性DSM模型;分析了三种传播模式的特点, 并通过对构件可信属性聚类和划分变化分组在软件可信性变化传播中的不同模式, 对软件可信性变化传播影响进行了刻画分析。最后, 通过分析软件可信性变化传播不同模式的内在原因, 为实现软件可信性变化有效管理找到了一种可行的方法。
软件的体系结构与模式 篇9
随着改革步伐的不断加快, 总台的规模迅速扩张, 其下属企业 (部门) 资产组合力度不断加强, 构建一个功能完备的、系统化的综合财务结算平台, 日益显出它的必要性。
资金结算中心是一个依托于总台财务中心及其统管的下属财务机构的衍生部门。它的实现有助于为全台所有部门提供一个实现资金结算便捷化, 准确化的服务平台。借助这个平台可以使现有的财务体系得到以下几个方面的优化发展[1]:
(一) 加强总台资本经营意识, 调剂资金
随着总台企业化改革的进一步深化, 下属公司和部门不断成立。但大多下属机构的经营资金完全依赖于总台的支持, 这就极大地影响了总台的资金周转。总台通过实施财务集中管理后, 以吸收存款的方式, 把下属各部门和公司的分散的和暂时闲置的资金集中起来, 再以发放贷款的形式分配至需要资金周转的下属机构, 从而实现总台内部资金的相互调剂。这样一来, 集团从高至下, 都参与了总台公式化管理, 强化了资本经营。既能有效地加强各级领导对资金时间价值和成本管理的认识, 也可有助推动各机构积极进行经济核算, 使之合理有效地运用内部资金。
(二) 内部监控进一步加强
结算中心的建立, 使得资金在总台分支机构众多, 组织层次复杂, 管理链条长的组织环境下, 对资金的进出合理性, 安全性和效益性进行审查, 将资金的流向, 使用都置于总台的监控下。
(三) 降低集团财务费用支出
通过总台内部资金的融通, 盘活了存置资金, 提高了资金的使用效率, 在同等投入产出的模式下, 对银行以及上级拨款需求减少, 从而降低了因对外借款而付出的利息和可能产生的其他相关费用。内部的资金拆借行为既可满足下属部门公司的长期信贷, 降低总台高负债经营可能性, 增强总台作为企业的活力, 还可以给总台带来一笔由存贷利差产生的可观收入。
(四) 提高总台及下属机构部门的企业信用等级, 丰富融资渠道
在建立内部结算中心后, 总台下属公司不再单独与银行发生信贷行为, 而是通过结算中心以一个户头集中对银行进行信贷行为。银行评估其信用等级不再以下属公司作为考量单位, 总台的经济实力、社会影响、以及政府支持, 提高了下属公司对外信用和融资能力。
(五) 为集团制定企业发展目标和方向提供更为科学合理的依据
资金结算中心可以将各下属部门和公司的财务资金信息集中至总台财务资产部相关财务部门, 使得总台财务部可以根据总台战略规划以及各部门公司的实际情况, 做出适时适量的调整, 更为有效地控制各部门公司的资金成本, 确保其生产经营活动的顺利进行, 进而确保其一切活动都服从于总台的利益规划, 以实现总台目标利润的最大化。
2 构建内部电子资金结算中心网络体系 (注:本文涉及网络体系指计算机局域网网络体系) 构建原则[2]
(一) 完备性。详尽进行相关问题定义, 需求分析, 确保系统功能和数据库信息能够满足各部门日常工作的需要。
(二) 先进性。系统功能构建目标具有较高的技术起点, 以确保系统在其正常寿命期内的技术领先程度。
(三) 安全性。采用现有NC用友财务软件的子模块对接模式, 使用USBKEY身份识别模式, 确保对整个系统使用的安全保证。
(四) 简便性。在保证网络体系功能完备的前提下, 尽可能简化使用流程, 并且确保多功能模糊查询功能, 满足总台不同层次不同人员的工作需要。
(五) 通用性。要能适应财务部门规模变化和人员流动, 并且具有与总台未来业务扩张规模相适应的网络体系。
(六) 可扩充性。从可持续发展的角度, 在构建时, 还必须考虑数据组织, 系统功能和系统结构的不断扩张变化, 既能适应系统不断优化、平滑平台的要求, 同时又可满足与其他系统尤其是与银行网络对接互联的发展要求, 为今后扩充和增强资金结算中心网络体系创造可能性。
3 基于C/S模式的电子资金结算中心网络及组织体系初步构建
C/S又称Client/Server或客户/服务器模式。服务器通常采用高性能的PC、工作站或小型机, 并采用大型数据库系统, 如Oracle、Sybase、Informix或SQL Server。客户端通过安装专用的客户端软件来实现客户端与服务器的数据交换。
总台各部门与子公司、以及有业务往来的公司 (包括银行电子商务系统) 之间, 通过基于C/S模式的电子资金结算中心, 实现实时数据交互, 进而使得总台对各下属机构的资金情况进行实时掌握, 及时按照总台整体规划进行资金资源配置, 最终实现对集团资金的有效管理 (具体见图1) 。
4 基于用友财务软件资金结算中心功能模块以及相应子模块设计
(一) 资金结算中心功能模块设计结构图
(二) 票据管理模块
票据管理是为集团资金结算中心以及各财务部开展集团票据贴现业务等服务的工具。
该模块实现的功能有:为收到票据的部门进行票据登记管理;为各部门提供提前部分或者全部现金支付功能;各部门之间提供票据背书转让功能;集团需要现金时将已经登记的, 未到期的票据传输到银行 (直接通过数据库联结加以实现) 进行贴现;将已经登记的、未到期的票据进行票据抵押, 从银行或其他金融机构取得短期贷款, 到时归还本金, 赎回票据;对下属单位对外开出的票据进行集中登记, 代理下属部门到银行开票, 集中控制支付风险, 在支付前提前预警, 以便纳入集团资金收支计划;集团可为信誉良好或者有在资金结算中心票据提押的下属公司开出商业票据;集团可为下属公司提供提押票据以大换小等业务。
(三) 内部信贷资金管理模块
信贷管理主要用于大中型企业或企业集团的资金管理部门, 对"借贷资金"业务进行管理。本系统与"报账中心"或"资金结算"共同使用, 可实现企业"结算中心"或"内部银行"的结算业务、信贷业务的集中管理。
该模块实现的主要目标有:
(1) 可全面地完成信贷资金管理
信贷资金管理主要指:从外部贷入资金的申请管理;委托贷入资金申请的管理;从外部贷入资金的业务管理;外部资金拆入业务管理;外部委托贷入资金的业务管理;向外部借出资金的申请管理;向外部借出资金的业务管理;外部资金拆出业务管理;外部委托借出资金的业务管理;向外部提供信贷担保的业务管理;从内部企业贷入资金的申请管理;从内部企业贷入资金的业务管理;向内部企业借出资金的申请管理;向内部企业借出资金的业务管理;借贷资金业务的计息管理;合同风险的清分管理;担保物权管理等业务。
(2) 可有效地进行定期存款管理
定期存款管理主要指:向外部存出定期存款的业务管理;收到内部企业定期存款的业务管理;向内部企业存出定期存款的业务管理;定期存款业务的计息管理;合同收付本金、利息及计息可实现"报账中心"或"资金结算"的自动收付款处理;合同计息可实现"总账"核算的自动转账处理;定期存款收付本金、利息及计息可实现"报账中心"或"资金结算"的自动收付款处理;定期存款计息可实现"总账"核算的自动转账处理等业务。
(3) 可进行事中报警、事后统计分析
事中报警、事后统计分析指:合同到期预警、逾期报警;定期存款到期预警、逾期报警;内外部信贷业务统计查询分析等业务。
(四) 资金预算模块
资金预测, 仅指资金需求量预测中的现金流预测。也就是通过现金在时间轴线上将要发生的流入量和流出量, 预测企业某些期间现金缺口 (或过剩) 的一种方法。它的作用是通过资金缺口或盈余预测, 为规划资金的使用, 提供详细资料。
该模块实现的主要目标有:
(1) 可全面地完成资金总量的预测资金总量的预测指:支持资金流入的预测;支持资金流出的预测;支持资金流入、流出的预测;支持固定期间的资金预测;支持滚动期间的资金预测;支持跨公司的汇总资金预测;支持"应收应付"、"信贷管理"、"资金计划"和"票据管理"的系统内自动取数预测等业务。
(2) 可有效地进行资金明细数据的预测
资金明细数据的预测指:支持应收、预付资金的明细数据预测;支持应付、预收资金的明细数据预测;支持贷入资金明细数据预测;支持贷出资金明细数据预测等业务。
当然, 开发这样的一套资金结算中心软件并不能仅仅局限于以上所罗列的功能, 而实际工作也会有更多的需求, 这就要求在实际开发时进一步进行需求调研, 以满足不同部门的实际工作需求。
摘要:资金结算中心目前正在被越来越多的大型企业所接受和广泛应用, 而江苏广电总台作为一个规模宏大、机构庞杂的现代大型企业, 也逐步显露出对资金结算中心网络电算化的需求。本文探讨了基于江苏广电总台现有的财务软件网络平台, 如何去开发设计这样一个以票据管理, 内部资金管理以及资金预算管理为核心的资金结算中心软件模块。
关键词:资金结算中心,C/S模式,票据管理,内部信贷资金管理,资金预算
参考文献
[1]肖琳玲.《完善企业集团财务结算中心的构建》[J].湖南经济管理干部学院学报, 2006.
【软件的体系结构与模式】推荐阅读:
软件体系结构模式07-29
软件课程体系06-08
软件体系架构11-19
软件课程体系10-20
软件体系结构层05-17
软件体系结构选择09-02
软件体系结构期末考试09-08
软件应用体系结构模型08-03