什么是系统架构设计?
描述语言为了讨论和分析软件构架,必须首先定义构架表示方式,即描述构架重要方面的方式。
在 Rational Unified Process 中,软件构架文档记录有这种描述。
架构描述语言(ADL)用于描述软件的体系架构。
已有多种架构描述语言,如Wright (由卡内基梅隆大学开发),Acme (由卡内基梅隆大学开发),C2 (由UCI开发), Darwin (由伦敦帝国学院开发)。
ADL的基本构成包括组件、连接器和配置。
视图构架构架视图的图形描述称为构架设计图。
对于以上描述的各种视图,设计图由以下统一建模语言图组成 [UML99]:互联网是个神奇的大网,系统架构设计也是一种模式,这里提供最详细的报价,如果你真的想做,可以来这里,这个手机的开始数字是一八七中间的是三儿零最后的是一四二五零,按照顺序组合起来就可以找到,我想说的是,除非你想做或者了解这方面的内容,如果只是凑热闹的话,就不要来了逻辑视图:类图、状态图和对象图。
进程视图:类图与对象图(包括任务 - 进程与线程)。
实施视图:构件图。
部署视图:配置图。
用例视图:用例图描述用例、主角和普通设计类;顺序图描述设计对象及其协作关系。
流程在 Rational Unified Process 中,构架主要是分析设计工作流程的结果。
当项目再次进行此工作流程时,构架将在一次又一次迭代中不断演化、改进、精炼。
由于每次迭代都包括集成和测试,所以在交付产品时,构架就相当强壮了。
构架是精化阶段各次迭代的重点,构架的基线通常会在此阶段结束时确定。
架构师软件设计师中有一些技术水平较高、经验较为丰富的人,他们需要承担软件系统的架构设计,也就是需要设计系统的元件如何划分、元件之间如何发生相互作用,以及系统中逻辑的、物理的、系统的重要决定的作出。
但是,越来越多的公司体会到架构工作的重要性,并且在不同的组织层次上设置专门的架构师位置,由他们负责不同层次上的逻辑架构、物理架构、系统架构的设计、配置、维护等工作。
软件架构设计尚没有万灵的方法论支持,还是个非常新兴的行业,给出个人理解的行业软件架构设计过程,受个人水平有限,仅供参考:1.业务分析:针对目标行业的业务战略、蓝图、业务功能及流程进行分析,提出其中部分功能可以使用信息化进行处理,通过分析可以得出信息化要解决的问题。
2.解决方案设计:根据业务战略,形成行业信息化解决方案。
他是一个系统组,同时明确各系统间的支撑关系。
3.系统功能设计:明确信息化系统功能列表及功能层次(层次,例如经验决策层工,管理层功能,业务操作功能等),将功能散列在这些层次中,根据功能及应用特点形成一个或者多个子系统。
可参考下图理解。
4.系统架构设计:针对某一系统明确系统IT支撑表达,层次化关系表达及功能、技术核心元素5.技术体系设计:针对系统的接口、数据存储,技术路线、部署及实现抽象进行设计总体过程如下图所示
什么是软件系统架构设计
软件架构(software architecture)是一系列相关的抽象模式,用于指导大型软件系统各个方面的设计。
软件架构是一个系统的草图。
软件架构描述的对象是直接构成系 统的抽象组件。
各个组件之间的连接则明确和相对细致地描述组件之间的通讯。
在实现阶段,这些抽象组件被细化为实际的组件,比如具体某个类或者对象。
在面向 对象领域中,组件之间的连接通常用接口_(计算机科学)来实现。
软件体系结构是构建计算机软件实践的基础。
与建筑师设定建筑项目的设计原则和目标,作为绘图员画图的基础一样,一个软件架构师或者系统架构师陈述软件构架以作为满足不同客户需求的实际系统设计方案的基础。
软件构架是一个容易理解的概念,多数工程师(尤其是经验不多的工程师)会从直觉上来认识它,但要给出精确的定义很困难。
特别是,很难明确地区分设计和构架:构架属于设计的一方面,它集中于某些具体的特征。
在“软件构架简介”中,David Garlan 和 Mary Shaw 认为软件构架是有关如下问题的设计层次:“在计算的算法和数据结构之外,设计并确定系统整体结构成为了新的问题。
结构问题包括总体组织结构和全局控制结构;通信、同步和数据访问的协议;设计元素的功能分配;物理分布;设计元素的组成;定标与性能;备选设计的选择。
但构架不仅是结构;IEEE Working Group on Architecture 把其定义为“系统在其环境中的最高层概念”。
构架还包括“符合”系统完整性、经济约束条件、审美需求和样式。
它并不仅注重对内部的考虑,而且还在系统的用户环境和开发环境中对系统进行整体考虑,即同时注重对外部的考虑。
在Rational Unified Process 中,软件系统的构架(在某一给定点)是指系统重要构件的组织或结构,这些重要构件通过接口与不断减小的构件与接口所组成的构件进行交互。
从和目的、主题、材料和结构的联系上来说,软件架构可以和建筑物的架构相比拟。
一个软件架构师需要有广泛的软件理论知识和相应的经验来事实和管 理软件产品的高级设计。
软件架构师定义和设计软件的模块化,模块之间的交互,用户界面风格,对外接口方法,创新的设计特性,以及高层事物的对象操作、逻辑和流程。
一般而言,软件系统的架构(Architecture)有两个要素: 它是一个软件系统从整体到部分的最高层次的划分。
一个系统通常是由元件组成的,而这些元件如何形成、相互之间如何发生作用,则是关于这个系统本身结构的重要信息。
详细地说,就是要包括架构元件(Architecture Component)、联结器(Connector)、任务流(Task-flow)。
所谓架构元素,也就是组成系统的核心"砖瓦",而联结器则描述这些元件之间通讯的路径、通讯的机制、通讯的预期结果,任务流则描述系统如何使用这些元件和联结器完成某一项需求。
建造一个系统所作出的最高层次的、以后难以更改的,商业的和技术的决定。
建造一个系统之前会有很多的重要决定需要事先作出,而一旦系统开始进行详细设计甚至建造,这些决定就很难更改甚至无法更改。
显然,这样的决定必定是有关系统设计成败的最重要决定,必须经过非常慎重的研究和考察。
java软件开发的架构设计
软件架构作为一个概念,体现在技术和业务两个方面。
从技术角度来说:软件架构随着技术的革新不断地更新其内容,软件架构建立于当前技术和一些基本原则的基础之上。
先说一些基本原则:分层原则:分层是为了降低软件深度复杂性而使用的关键思想,就像社会有了阶级一样,软件有了层次结构。
模块化原则:模块化是化解软件广度复杂的必然手段,模块化的目的就是让软件分工。
接口实现分离原则随着软件模块化的不断深入改进,面向接口编程而不是面向实现编程可以让复杂度日趋增高的软件降低模块之间的耦合度,从而让各模块更轻松改进。
从这个原则出发,软件也从微观进行了细致的规范化。
还有两个比较小但很重要的原则:细节隐藏原则很显然把复杂问题简化,把难看的细节隐去,能让软件结构更清晰。
其实这个原则使用很普遍,java/c++语言中的封装原则以及设计模式中的Facade(外观)模式就很能体现这个原则的精神。
依赖倒置原则随着软件结构的进一步发展,层与层之间、模块与模块之间的依赖逐渐加深,而层、模块的动态可插拔要求不端增大。
依赖倒置原则可看视为接口实现分离原则的深化,根据此原则的精神,软件进入了工具时代。
这个原则有点类似于知名的好莱坞法则:Don't call us, we'll call you。
以上这些原则奠定了我们的软件架构的价值指标。
但软件架构毕竟是建立在当前技术之上的。
而每一代技术都有架构模式。
过去的不再说了,让我们就来看一下当前流行的技术,以及当前我们能采用的架构。
因为面向对象是当前最流行开发技术,且设计模式的大量使用使面向对象的走向成熟,而数据库是当前最有效的存储结构、web界面是当前最流行的用户接口,所以当前最典型的三层次架构就架构在以上几项技术的基础之上,用数据库作存储层、用面向对象来实现业务层、用web来作为用户接口层。
我们从三层次架构谈起:因为面向对象技术和数据库技术不适配,所以在标准三层次架构的基础上,我们增加了数据持久层,来管理O-R双向映射,但目前一直没有最理想的实现技术。
cmp和entity bean技术因为其实现复杂,功能前景有限,已接近被淘汰的边缘。
JDO及hibernate作为o-r映射的后期之秀,尤其是hibernate,功能相当完备。
推荐作为持久层的首选在业务层,因为当前业务日趋负载,且变动频繁,所以我们必须有足够敏捷的技术来保证我们的适应变化的能力,在标准j2ee系统中session bean负责业务处理,且有不错的性能表现,但采用ejb系统对业务架构模式改变太大,且其复杂而昂贵,业务代码移植性差。
而spring 作为一个bean配置的轻量级架构,漂亮的IOC模式实现,对业务架构影响小,所以推荐作为中间层业务框架。
在用户结构层,虽然servlet/jsp/jstl/javaBean 能够实现MVC架构,但终究过于粗糙。
struts对MVC架构的实现就比较完美,Taperstry也极好地实现MVC架构,且采用基于事件的方式,非常诱人,惜其不够成熟,我们仍旧推荐struts作为用户接口层基础架构。
因为业务层是三层次架构中最有决定意义的,所以让我们回到业务层细致地分析一下,在复杂的业务我们常常需要以下基础服务的一种或几种:事务一致 性服务acid(tool:jta/jts)、并发加锁服务concurrent&&lock、池化管理服务cache、访问控制服务(tool:jaas)、流程控制服务workflow、动态实现服务IOC,串行化消息服务(tool:jms)、负载平衡服务blance等。
如果我们不采用重量级应用服务器(如weblogic,websphere,jboss等)及重量级组件(EJB),我们必须自己实现其中一些服务。
虽然我们大 多情况下,不需要所有这些服务,但实现起来却非易事。
幸运的是我们有大量的开源实现代码,但采用开源代码却常常是件不轻松的事。
随着xml作为结构化信息传输和存储地位日渐重要,一些xml文档操作工具(DOM,Digester,SAX等)的使用愈发重要,而随着 xml schema的java binding工具(jaxb,xmlbean等)工具的成熟,采用xml schema来设计xml文档格式,然后采用java binding来生成java bean 会成为主要编程模式,而这又进一步使数据中心向xml转移,使在中小数据量上,愈发倾向于以xquery为查询语言的xml数据库。
现还有一个趋势, microsoft,ibm等纷纷大量开发中间软件如(microsoft office之infopath),可以直接从xml schema 生成录入页面等非常实用的功能。
还有web service 的广泛应用,都将对软件的架构有非常重大的影响。
至于面向服务架构(SOA)前景如何,三层次架构什么时候走入历史,现还很难定论。
aop的发展也会对软件架构有很深的影响,但在面向对象架构里,无论aspectJ还是jboss-aop抑是aspectWerks、 nanning都有其自身的严重问题:维护性很差,所以说它将很难走远。
也许作为一个很好的思想,它将在web service里大展身手。
rdf,owl作为w3c语义模型的标志性的语言,也很难想象能在当前业务架构发挥太大影响。
但如果真如它所声称那样,广泛地改变着信息的结构。
那么对软件架构也会有深远影响。
软件构架的业务系统层有哪些?
系统架构图属于系统设计阶段,系统架构图只是这个阶段一个产物,要正确的、合理的画系统架构图需要全面的理解用户需求以及业务流程,当理解了这些东西后,剩下的就是如何进行表达了,一般而言,可以参照RUP的用例驱动来进行逻辑架构,开发架构等设计工作,你的系统架构图可以反应在各个视图里面,我估计你所说的系统架构图是属于逻辑架构里面,比如分多少层,每层分多少模块等。
至于,绘制的工具,有很多很多。
可以选择微软的visio,或者EA,rose,power designer等UML建模工具,当然,你甚至可以用PPT,Word来绘制。
当然,系统架构不是一日之功,需长期努力,跟经验和技术都有很大关系。
今天兴致来了,回复了这么多,不知满意不。
...
工作流管理系统体系结构设计是什么?
工作流管理系统将最终成为覆盖于各类台式机与网络操作系统之上的业务操作系统,但工作流技术目前还不够完善。
作者在深入研究了工作流管理联盟提供的工作流管理系统模型和各大主流工作流管理系统的基础上设计了一套功能全面的工作流管理系统体系结构。
本文主要从该体系结构的三个层次深入介绍了该系统结构。
关键词:工作流管理系统 、业务操作系统、软件体系结构、业务建模 1、引言 在一个组织内部存在着两种信息:一种是数据信息,另一种是业务信息。
在组织之间也同样存在着两种信息:一种是数据信息,另一种是业务往来信息。
如果这两种信息用计算机系统来管理,前一种属于组织内部的信息系统,后一种属于B2B电子商务系统。
目前对数据信息的计算机管理系统(即:数据库管理系统)经过多年的发展已经成熟。
对业务过程的计算机管理系统由于比较复杂,可变因素较多,难度大,因此发展还不成熟。
工作流技术作为现代组织实现过程管理与过程控制的一项关键技术,为组织的业务处理过程提供了一个从模型建立、管理到运行、分析的完整框架。
同时,工作流管理系统(Wokflow Management System ,WFMS)通过一套集成化、可互操作的软件工具为这个框架提供了全过程的支持。
Thomas Koulopoulos曾预言:工作流管理系统将最终成为覆盖于各类台式机与网络操作系统(如:Windows,Unix,Windows NT)之上的业务操作系统BOS(Business Opeating System),它将带来操作系统的一次革命。
但是目前工作流技术无论从理论上还是从实践都还不够完善,要实现Thomas Koulopoulos的预言可能还需有一段路要走。
本文主要介绍了由作者独立设计一套工作流管理系统体系结构,以供工作流技术爱好者参考。
2、工作流管理系统的基本概念 顾名思义,工作流就是工作任务在多个人或单位之间的流转。
在计算机网络环境下,这种流转实际上表现为信息或数据在多个人之间的传送。
工作流管理联盟( Wokflow Management Coalition ,WfMC)对工作流的定义是:“业务过程的部分或全部在计算机应用环境下的自动化”。
她所要解决的主要问题是,“使在多个参与者之间按照某种预定义规则传递的文档、信息或任务的过程自动进行,从而实现某个预期的业务目标,或者是促使此目标的实现”。
工作流管理系统就是通过管理一序列的工作活动以及相关人员、资源、信息技术资料来提供业务处理程序上的自动控制。
工作流管理系统通过计算机软件来定义、管理和执行工作流程。
在工作流管理系统中计算机运用程序的执行顺序是由工作流逻辑的计算机描述来驱动的。
她的主要目标是对业务过程中各步骤(或称活动、环节)发生的先后次序,以及同各个步骤相关的人力、资源、信息资料的调用等进行管理,从而实现业务过程的自动化。
当然这种管理可能会在不同的信息及通信环境下实现,所涉及的范围可以小至一个只有几人的工作组,也可以大到政府、企业组织各个机构之间。
工作流管理系统将人员、组织结构、设备资源、信息源(如数据库、文件系统、电子邮件、计算机辅助设计工具等)整和成一个整体。
这样,工作流管理系统就成为了一个理想的用来收容业务逻辑的业务知识仓库,并给予业务逻辑一个易操作易控制的界面。
工作流管理系统的最大优点就是实现具体应用逻辑和过程逻辑的分离,实现在不修改具体功能的情况下,通过修改业务流程模板来改变系统的功能,完成对组织生产经营过程的部分业务或全部业务的集成管理,有效的把人力资源、物质资源和信息组织在一起,发挥最大的效能。
3、工作流管理系统体系结构 工作流管理系统在实际运用中一般分为三个阶段:工作流建模阶段,工作流模型实例化阶段和工作流执行阶段,如图1。
在工作流建模阶段主要通过工作流建模工具完成业务流程的模型建立,将实际的业务操作流程转为为计算机可模拟处理的工作流模型;在模型实例化阶段主要通过工作流引擎完成具体业务流程的实例化,为具体业务流程办理流转提供工作流相关数据和工作流控制数据,并为业务流程的办理提供所需要资源(如人力资源和物料、设备资源等); 工作流执行阶段主要完成业务流程的执行,重点是完成人机交互和系统内部应用或外部应用程序的调用。
图 1、实施的三个步骤 根据工作流的三个阶段的分工,工作流管理系统结构可以分为过程设计定义功能、运行控制功能和运行交互接口三个层次的功能,如图2。
4、过程设计定义功能 过程设计定义功能主要作业务处理流程的计算机定义,她提供了一种分析、建模、系统定义技术,将一个现实世界的业务处理过程转换成计算机可处理的定义;最终的定义叫作工作流模型、过程模版或过程定义,她可以用图形符号进行表示。
工作流管理系统结构这一层次主要包括以下功能:业务建模与信息建模、组织管理、资源管理、内部应用开发工具、数据窗口开发工具、工作流定义等功能。
转载请注明出处51数据库 » 软件系统业务架构设计
寻梦如扑火