1)信息系统综合知识。包括软件架构的概念、软件架构的风格、特定领域软件架构、基于架构的软件开发方法、软件架构评估、软件产品线;设计模式的概念、设计模式的组成、模式和软件架构、设计模式分类、设计模式的实现。
2)系统架构设计案例分析。包括软件架构技术、XML技术、基于架构的软件开发过程、架构模型(风格)、特定领域软件架构、基于架构的软件开发方法、架构评估、软件产品线、系统演化、设计模式。
3)系统架构设计论文。
1)软件架构是具有一定形式的结构化元素,即构件的集合,包括处理构件、数据构件和连接构件。
2)软件架构是软件设计过程中的一个层次,处理算法与数据结构之上的关于整体系统结构设计和描述方面的一些问题。
3)架构问题包括:总体组织和全局控制、通信协议、同步、数据存取、给设计元素分配特定功能、设计元素的组织、规模和性能、在各设计方案间进行选择等。
4)设计好软件架构是保证软件质量的根本措施,具有以下作用:
(1)软件架构是项目干系人进行交流的手段。
(2)软件架构是早期设计决策的体现。
(3)软件架构是可传递和可重用的模型。
1)首要问题是如何表示软件架构,即如何对软件架构建模,可将软件架构的模型分为5种:
(1)结构模型。以架构的构件、连接器和其他概念来刻画结构,并力图通过结构来反映系统的配置、约束、隐含的假设条件、风格和性质等。核心是架构描述语言。
(2)框架模型。侧重于描述整体的结构,主要以一些特殊的问题为目标建立只针对和适应该问题的结构。
(3)动态模型。对结构或框架模型的补充,研究系统“大颗粒”的行为性质,如系统的重新配置或演化。动态可以值系统总体结构的配置、建立或拆除通信信道或计算的过程。
(4)过程模型。过程模型研究构造系统的步骤和过程,因而结构是遵循某些过程脚本的结果。
(5)功能模型。该模型认为架构是由一组功能构件按层次组成,下层向上层提供服务。它可看做是一种特殊的框架模型。
2)Kruchten提出的"4+1"视图模型。
(1)逻辑视图。主要支持系统的功能需求,即系统提供给最终用户的服务。在面向对象技术中,可以用对象模型来代表逻辑视图。
(2)开发视图。也称为模块视图,主要侧重于软件模块的组织和管理。
(3)进程视图。侧重于系统的运行特性,主要关注一些非功能性的需求,例如系统的性能和可用性。
(4)物理视图。主要考虑如何把软件映射到硬件上,通常要考虑解决系统拓扑结构、系统安装和通信等问题。
(5)场景。可看作是那些重要系统活动的抽象,它使4个视图有机联系起来,从某种意义上说场景是最重要的需求抽象。
3)逻辑视图和开发视图描述系统的静态结构,而进程视图和物理视图描述系统的动态结构。
1)软件架构设计的一个核心问题是能否使用重复的架构模式,即能否达到架构级的软件重用。
2)软件架构风格是描述某一特定应用领域中系统组织方式的惯用模式(idiomatic paradigm)。
3)软件架构风格定义了用于描述系统的术语表和一组指导构件系统的规则。
4)通用架构风格分类如下:
(1)数据流风格:批处理序列、管道/过滤器。
(2)调用/返回风格:主程序/子程序、面向对象风格、层次结构。
(3)独立构件风格:进程通信、事件系统。
(4)虚拟机风格:解释器、基于规则的系统。
(5)仓库风格:数据库系统、超文本系统、黑板系统。
1)管道/过滤器,每个构件都有一组输入和输出,构件读输入的数据流,经过内部处理,然后产生输出数据流。
2)管道/过滤器风格优点如下:
(1)使得构件具有良好的隐蔽性和高内聚、低耦合的特点。
(2)允许设计者将整个系统的I/O行为看成是多个过滤器行为的简单合成。
(3)支持软件重用。只要提供适合在两个过滤器之间传送的数据,任何两个过滤器都可被连接起来。
(4)系统维护简单,可扩展性好。新的过滤器可以添加到现有系统中来;旧的可以被改进过的过滤器替换掉。
(5)允许对一些如吞吐量、死锁等属性的分析。
(6)支持并行执行。每个过滤器是作为一个单独的任务完成,因此可与其他任务并行执行。
3)管道/过滤器风格的缺点:
(1)通常导致进程成为批处理的结构。
(2)不适合处理交互的应用。
(3)在数据传输上没有通用的标准,每个过滤器都有解析和合成数据的工作,导致系统性能下降,增加了编写过滤器的复杂性。
4)面向对象风格建立在数据抽象和面向对象的基础上,数据的表示方法和它们的相应操作封装在一个抽象数据类型或对象中。
5)面向对象的系统的优点:
(1)对其他对象隐藏自身的表示,改变一个对象不影响其他对象。
(2)设计者可将一些数据存取操作问题分解为一些交互的代理程序的集合。
6)面向对象的系统的缺点:
(1)通过对象标识进行调用,如果对象标识改变了,就必须修改所有明确调用它的对象。
(2)必须修改所有显示调用它的其他对象,并消除由此带来的副作用。如A使用B,C使用B,那么C对B的使用可能造成对A的影响。
7)基于事件的隐式调用思想是构件不直接调用一个过程,而是触发或广播一个或多个事件。其他构件对此事件进行注册,事件触发导致这些构件中的过程的调用。
8)基于事件的隐式调用系统的优点:
(1)为软件重用提供强大支持,构件注册到系统事件中即可加入到现存系统。
(2)为改进系统带来了方便,替换构件不会影响到其他构件的接口。
9)隐式调用系统的主要缺点:
(1)构件放弃了对系统计算的控制。构件触发事件后,不能确定其他构件是否会响应,不能保证过程被调用的顺序。
(2)数据交换问题。依靠共享的仓库进行交互时,全局性能和资源管理变成了问题。
(3)既然过程的语义必须依赖于被处罚时间的上下文约束,那么关于正确性的推理存在问题。
10)分层系统组织成一个层次结构,每一层为上层服务,并作为下层的客户。
11)层次系统的优点:
(1)支持基于抽象程度递增的系统设计,式设计者可以把一个复杂系统按递增的步骤进行分解。
(2)支持功能增强,因为每一层至多和相邻的上下层交互,所以功能的改变最多影响相邻的上下层。
(3)支持重用。只要提供的服务接口定义不变,同一层的不同实现可以交互使用。
12)层次系统的缺点:
(1)并不是每个系统都可以很容易地划分为分层的模式。
(2)很难找到一个合适的、正确的层次抽象方法。
13)仓库系统及知识库,有两种不同的构件:中央数据结构说明当前状态,独立构件在中央数据结构存储上执行。
14)控制原则的选取产生两个子类:若以输入流某类时间出发进程执行,则仓库是传统型数据库;若中央数据结构的当前状态触发进程执行,则仓库是黑板系统。
15)C2(Component-Connector)架构风格:通过连接件绑定在一起的按照一组规则运作的并行构件网络。
16)C2的特点:
(1)系统中的构件可实现应用需求,并能将任意复杂度的功能封装在一起。
(2)所有构件之间的通信是通过连接件为中介的异步消息交换机制来实现的。
(3)构件相对独立,构件之间依赖性较少。
1)二层C/S架构有三个组成部分:数据库服务器、客户应用程序和网络。
2)服务器负责数据管理,客户程序发送、请求和分析从服务器接收的数据,这是一种胖客户端、瘦服务器的软件架构。
3)二层C/S架构的优点:
(1)系统的客户程序和服务器构件分别运行于不同计算机上,对硬件和软件变化显示出极大适应性和灵活性,易于系统扩充和缩小。
(2)功能构件充分隔离,客户层序集中于数据显示和分析,数据库服务器开发集中于数据管理。
(3)将应用处理任务分布到许多计算机上,节约大量成本。
4)二层C/S架构的缺点:
(1)开发成本高。对客户端软硬件配置要求较高。
(2)客户端程序设计复杂。
(3)信息内容和形式单一,界面基本按数据库的字段解释。
(4)用户界面风格不一。
(5)软件移植困难。
(6)软件维护和升级困难。
(7)新技术不能轻易应用。
(8)客户端计算机可直接访问数据库服务器,则其他程序也可设法访问,数据库安全性降低。
1)三层C/S架构总增加了应用服务器,应用逻辑都在此服务器上。
2)三层C/S架构将应用功能分成表示层、功能层和数据层。
3)表示层是应用的用户接口,担负着用户与应用间的对话功能;功能层相当于应用的本体,将具体的业务处理逻辑编入程序中;数据层是DBMS,负责管理对数据库数据的读写。
4)三层C/S架构的优点:
(1)允许合理划分三层结构的功能,使之在逻辑上保持相对独立性,从而提高系统和软件的可维护性和可扩展性。
(2)允许更灵活有效地选用相应平台和硬件系统,并且这些平台和各个组成部分可以具有良好的可升级性和开放性。
(3)三层C/S架构中,应用的各层可并行开发,各层也可以选择各自最适合的开发语言。
(4)允许充分利用功能层有效地隔离开表示层和数据层,为严格的安全管理奠定了基础。
5)浏览器/服务器(Browser/Server,B/S)风格是上述三层应用结构的一种实现方式。
6)与C/S架构相比,B/S架构有如下优点:
(1)系统安装、修改和维护全在服务器端解决。
(2)用户使用系统达到了零客户端的功能,且自动升级。
(3)踢狗了异种机、异种网、异种应用服务的联机、联网、统一服务的最现实的开放基础。
7)与C/S相比,B/S架构有如下不足:
(1)缺乏对动态页面的支持能力,没有集成有效的数据库处理功能。
(2)系统扩展能力差,安全性难以控制。
(3)在数据查询等相应速度上,要远低于C/S架构。
(4)数据提交一般以页面为单位,数据的动态交互性不强,不利于OLTP应用。
RIA(Rich Internet Application,富因特网应用)
1)Flash/Flax
2)Java
3)BWindows
4)Ajax
5)Laszlo
6)XUL(XML User Interface Language)
7)Avalon
1)正交软件架构由组织层和线索的构件构成。
2)层由一组具有相同抽象级别的构件构成;线索是子系统的特例,有完成不同层次功能的构件组成,每一条线索完成整个系统中相对独立的一部分功能。
3)正交软件架构主要特征如下:
(1)正交软件架构由完成不同功能的n(n>1)个线索(子系统)组成。
(2)系统具有m(m>1)个不同抽象级别的层。
(3)线索之间是互相独立的(正交的)。
(4)系统有一个公共驱动层(一般为最高层)和公共数据结构(一般为最低层)。
4)正交软件架构具有以下优点:
(1)结构清晰,易于理解。(2)易修改,可维护性强。(3)可移植性强,重用粒度大。
1)层次消息总线(Hierarchy Message Bus,HMB)的架构风格基于层次消息总线、支持构件的分布和冰法,构件之间通过消息总线进行通信。
2)消息总线是系统的连接件,负责消息的分派、传递和过滤以及处理结果的返回。
3)各个构件挂接在消息总线上,向总线登记感兴趣的消息类型。消息是构件之间通信的唯一方式。
特定领域软件架构(Domain Specific Software Architecture, DSSA)是在一个特定应用领域中为一组应用提供组织架构参考的标准软件架构,其目标是支持在一个特定领域中多个应用的生成。
DSSA中领域的含义:
(1)垂直域。定义一个特定的系统族,包含整个系统族内的多个系统,结果是在该领域中可作为系统的可行解决方案的一个通用软件架构。
(2)水平域。定义了在多个系统和多个系统族中功能区域的共有部分,在子系统级上涵盖多个系统族的特定部分功能,无法为系统提供完整的通用架构。
2)领域设计。主要目的是获得DSSA。DDSA描述在领域模型中表示需求的解决方案,它不是单个系统的表示,而是能够适应领域中多个系统需求的一个高层次的设计。
3)领域实现。主要目的是依据领域模型及DSSA开发和组织可重用信息。
1)定义领域范围。主要输出是领域中的应用需要满足一系列用户的需求。
2)定义领域特定的元素。编译领域字典和领域术语的同义词词典。
3)定义领域特定的设计和实现需求约束。
4)定义领域模型和架构。
5)产生、搜集可重用的产品单元。
2)DSSA只对某一个领域进行设计专家知识的提取、存储和组织,但可以同时使用多种架构风格;而在某个架构风格中进行架构设计专家知识的组织时,可以将提取的公共结构和设计方法扩展到多个应用领域。
3)DSSA的特定领域参考架构通常选用一个或多个适合所研究领域的架构风格。不同参考架构之间的基础和概念有较少的共同点。
4)架构风格的定义和该风格应用的领域是正交的,提取的设计知识比用DSSA提取的设计专家知识的应用范围要广。
5)DSSA和架构风格是互为补充的两种技术。
1)实验原型阶段。此阶段首要问题是要获得对系统支持的问题域的理解。
2)演化开发阶段。重点在最终产品的开发上。
1)第一个开发周期没有具体明确的目标,一个小组创建图形用户界面,另一个小组创建一个问题域模型。
2)第二个开发周期任务是设计和建立一个软件架构,此软件架构特征如下:
(1)必须足够灵活,能包含现有元素且能包含新增功能。
(2)必须提供一个相当稳定的结构,原型在此实验原型阶段进行演化。
(3)必须支持一个高效的开发组织,允许所有开发人员并行地在原型的基础上进行开发。
3)第二个开发周期细分为5个小阶段:
(1)标识构件:生成类图、对类进行分组、把类打包成构件。
(2)提出软件架构模型。
(3)把已标识的构件映射到软件架构中。
(4)分析构件之间的相互作用。
(5)产生软件架构。