当前位置:文档之家› 软件体系结构的特点与研究进展

软件体系结构的特点与研究进展

软件体系结构的特点与研究进展
软件体系结构的特点与研究进展

第19卷第4期 重庆师范学院学报(自然科学版) 2002年12月Vol.19No.4 Journalof Chongqing NormalUnivers ity(Natural Science Edition) Dec.2002

软件体系结构的特点与研究进展

张广泉1,2

(1.重庆师范学院数学与计算机科学系,重庆400047;

2.中国科学院计算机科学国家重点实验室,北京100080)

摘 要:软件体系结构是软件工程的一个重要研究领域,它提供了软件系统的高层抽象。文章阐述了软件体系结构的产生背景和基本概念,以及体系结构描述语言(ADL)、求精方法和特定领域体系结构(DSSA)等主要研究内容;

分析了软件体系结构与传统开发方法、O-O方法、设计模式、软件复用、净室技术以及统一建模语言(UML)等其它软件工程技术方法的联系和区别。

关键词:软件体系结构;体系结构描述语言;求精;特定域体系结构;设计模式;复用;净室;UML

中图分类号:TP311 文献标识码:A 文章编号:1001-8905(2002)04-0001-06 The C haracteristics of Software Architecture and the Progress of Its Study

ZHA NG Guang-quan1,2

(1.Dept.of Mathematics and Computer Science,Chongqing Normal University,Chongqing400047;

2.State Key Lab.of Computer Science,The Chinese Academy of Sciences,Beijing100080,China)

A bstract:Software architecture is an important research area in software engineering.It provides a high-level abstraction of a soft-

ware system.In this paper,first,the background and fundamental conception of soft ware architecture are introduced.Several main topics,such as architecture description languages(ADL),refinement methods and domain-specific soft ware architecture(DSSA) and so on,are discussed.Finally,the relation and distinction bet ween software architecture and other soft ware en gineering technolo-gies,such as traditional development methods,O-O methods,design pattern,software reuse;clean room technology,and unified modeling language(U M L),are analyzed.

Key words:soft ware architecture;architecture description lan guage;refinement;domain-specific software architecture;design pat-tern;reuse;cleanroom;unified modeling language

20世纪60年代,随着计算机在工业、商业、科研和国防等领域的广泛应用,计算机程序的规模愈来愈大,其复杂性也急剧增加,软件开发和维护过程遇到了一系列难以解决的严重问题,如软件价格高、难以控制开发进度、工作量估计困难、软件质量低、错误多、且修改和维护十分困难等等;针对这种所谓的“软件危机”现象,1968年在德国Gar mish召开的NATO(北大西洋公约组织)计算机科学会议上,F.Bauer首先提出“软件工程”概念,其目标是采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术和方法结合起来,从而解决或缓解软件危机。在另一方面,软件危机也促使人们深入探讨程序和程序开发过程的规律,建立严密的理论,以期能用来指导软件开发实践,从而促进了软件方法学特别是形式化方法的研究[1]。

软件工程与软件方法学二者密切相关,既有联系、又有区别,一方面它们研究的侧重点不同,软件工程研究侧重传统工程学科,最终目的是把软件生产变成一门制造工程,而研究软件方法学的目的是寻求科学方法的指导,把软件开发活动置于坚实的理论基础上。另一方面,它们之间又相互影响、相互渗透,软件工程需要方法学的依据和指导,而方法学也依赖软件工程特别是环境工具来发挥实际效用。三十多年来,人们不断从

收稿日期:2002-08-08

资助项目:国家自然科学基金(60073020);国家“十五”863高科技计划(2001AA113200);重庆市应用基础研究项目;中国科学院计算机科学国家重点实验室、运筹学与控制论市级重点实验室资助项目。

作者简介:张广泉(1965-),男,江苏连云港人,重庆师范学院数学与计算机科学系副教授,博士后。主要从事软件工程与形式化方法研究。

上述两方面探索新的软件开发方法和技术,期望通过好的方法和工具来提高软件生产率和质量,软件体系结构即是20世纪90年代软件工程领域出现的一个新的研究分支。

软件设计在相当大的程度上可与建筑设计相类比,在古今中外建筑设计中,有诸多如欧洲的“歌特式”、“巴洛克式”、“维多利亚式”,中国的“园林式”、“宫廷式”等不同结构风格的建筑。同样在软件设计上,经过多年的理论探索和工程实践,也逐渐形成了一系列不同结构风格的软件体系结构。如UNIX 操作系统中的管道-过滤器(pipes -filters )风格、分布式系统中典型的客户 服务器(client -server )风格以及通信系统中的分层(layer )结构等[2]

。根据1999年IE EE AW G P1471的定义,所谓软件体系结构,它是软件系统的高层抽象,描述整个系统的结构和行为模型,标识了主要的系统组件、组件之间的交互———连接件、组件和连接件如何结合在一起的约束与配置关系(见图1)。图2描述了客户 服务器(C S )风格的体系结构,其中组件Client 与Sever 通过连接件RPC (远程过程调用)协议通信

。 图1 软件体系结构示意图 图2 客户 服务器体系结构

软件体系结构可看作是软件结构研究的继续,最早可追溯到20世纪60年代操作系统大师们对OS 和其它复杂软件系统的论述(如T .H .E 和Unix 的论述),如Dijkstra 和Parnas 等对软件的组织和结构的研究,F .Deremer 和H .Kron 认识到编写大型程序和编写小型程序的活动是不同的,提出用模块互连语言(module inter -connection language )来表示程序的总体结构。后来,Parnas 、B oehm 等人对兆程序设计(mega -programming )和程序族(progra m family )的讨论再次引发有关软件体系结构的讨论。真正展开对软件体系结构的一般理论的研究则是始于D .E .Perry 和A .L .W olf 于1992年在AC M SI GSOFT Software Engineering Notes 发表“Foundations for the Study of Software Architectur e ”一文后。从那时起,在每年一届的国际软件工程会议上基本都有关于软件体系结构的研究文章。

1 软件体系结构主要研究内容

目前软件体系结构已发展为软件工程领域的一个独立的分支,是软件工程的一个新的研究方向。其主要研究内容如下。

1.1 软件体系结构描述语言(ADL )

体系结构描述是软件体系结构研究的一个核心问题[3]。目前体系结构描述方法可分为非形式化、半形

式化和形式化三类方法。

图表法是一种典型的非形式方法,它采用矩形框和连线来表示体系结构(如图1、图2)。该方法虽然直观、易理解,但没有分析工具,无法对系统进行各种特性分析。半形式方法有模块互连语言(MIL )、软构件描述法等;MIL 用模块接口来描述系统交互,它将系统的配置描述与系统的组成分解开,这一点比模块化编程语言更能满足组装和配置的某些特性。MIL 对于模块化程序设计和分段编译等效果明显,由于它仅支持编程中的块间交互,对高层次的体系结构的描述和处理能力有限。

体系结构描述语言(ADL )采用形式化方法描述体系结构,通常以一形式化语言(如CSP 、Z 、时序逻辑等)作为它的底层语义模型,并为软件系统的概念体系结构建模提供了具体语法和概念框架,还有一系列基于底层语义的工具支持体系结构的表示、分析、演化和设计。由于ADL 不但是形式化描述体系结构的基本工具,而且也是对体系结构进行求精、验证、演化和分析的前提和基础。因此,目前对软件体系结构的研究主要集

中在体系结构描述语言方面[3,4]。目前常见的一些ADL 有Wright 、Rapide 、Unicon 、Aesop 、Dar win 等。

1.2 软件体系结构求精

ADL 是对软件体系结构的形式化描述,它只关心软件系统的高层结构,不关心实现细节。因此在对系统抽象描述之后,一个十分重要的任务就是如何将其分层细化、逐步求精为具体的可实现的软件体系结构。这里上层与下层之间存在一种形式上的抽象映射,低层通过这种映射应保留高层的属性。

2重庆师范学院学报(自然科学版) 第19卷

这里体系结构的求精与早期的程序逐步求精不仅在实现细节的层次级别上不同,而且在实现方法上前者也要比后者复杂得多,这是因为抽象的软件体系结构(风格)通常是简单易理解的,而具体的软件体系结构因为要考虑实现的问题而很复杂,因而在不同抽象层次的软件体系结构之间的映射通常没有明确的规定,即使有,一般也是不完备的。因此很难检查相邻两层体系结构之间求精过程的语义一致性,也难以对体系结构的性质(如连接的安全性、公平性)进行分析和验证。

传统的求精采用行为替换方法,Rapide 即采用此方法对体系结构进行求精:如果能找到一个有效的从系统X2到X1的抽象映射,则X2可以代替X1。该方法的特点是下层的具体表示不应产生上层抽象表示不能表示的任何行为和性质,即求精不能破坏系统的基本结构。例如:如果在抽象软件体系结构中两个组件之间没有连接件,则就断定它们之间不交互,因而求精时就不能引入连接件使之交互。由于在实际求精过程中,有时用户并不会把一些细节和性质(如无死锁性、活性等)描述出来,而是把它们放到更低的实现层中,因此行为替代方法有时并不太确切。

针对上述不足之处,20世纪90年代中期,D .Garlan 提出一种基于风格的求精方法,即在不同的体系结构之间定义一组求精规则,若两个不同的体系结构(风格)满足这些规则,则认为其中一个是另一个的求精。这样可以用其中一个风格的实例代替另一个风格的实例。该方法的优点是,在风格这一层次的分析比实例层的分析更强大,因为在风格上所做的一些分析可以为同一风格的多个实例复用,避免了一些复杂的细节,如公式证明等;但在另一方面,该方法也有很大的局限性,如不能运用一些与具体实例有关的特性来分析系统的性质。

基于组件的求精方法从体系结构的基本元素———组件入手,首先将系统作为一个抽象的组件,根据功能需求描述组件的规范(即静态语义),然后,选择合适的体系结构风格,对抽象组件进行分解,生成若干组件以及它们之间的交互,对这一层包含的组件进一步的分解,形成第二层的设计,就这样一层一层地分解下去,直到最后不可分解为止。在这种方法中,组件被分为两部分:外部界面与内部结构。外部界面用组件的规范来表示,它刻画了组件“做什么”;内部结构也就是实现这个组件的逻辑功能的体系结构,它包括下层的组件以及它们之间的交互,它刻画了组件“怎么做”。由前者向后者转换,即构成软件开发过程的一步过渡,这样的逐层过渡就构成了软件开发的逐步求精过程。

基于组件的求精方法十分合适于具有分层嵌套结构组件的软件系统。文献[2]通过一个实例(航天部771所开发的一个为航天应用程序提供底层服务支持的实时操作系统平台———SZR TOS 实时操作系统内核),进一步说明了如何应用此方法。

1.3 特定域软件体系结构(DSSA )

特定域软件体系结构(domain -specific software architecture )是一个领域中所有应用系统所共有的体系结构,是针对领域模型中的领域需求给出的解决方案,也是识别、开发和组织特定领域可复用组件的基础。这是目前软件体系结构与实际应用相结合的一个重要的、有效的途径。在国内外的金融、MIS 、CI MS 和军事等领域中都已开始注意开发特定域的软件体系结构和集成框架的重要性。

在一个领域中,不同系统及不同版本之间的体系结构基本相似,而且有许多组件甚至是相同的,因此非常有利软件复用。域分析是常用的DSSA 开发技术,所谓域分析是指“在研究已有系统及其开发过程、领域专家知识、基本理论、领域新技术的基础上,鉴别、收集、组织和表示相关领域知识的过程”。

软件开发实际上是从问题域向最终解决方案逐步映射和转换的过程。特定域软件体系结构和软件体系结构风格分别从问题域和软件解决方案两个方向提供若干经过考虑的候选转换路径。

除上述研究内容外,软件体系结构的研究主要还包括以下几个方面:

(1)体系结构的形式化基础。这一领域通过对体系结构的形式化模型

[4]、体系结构风格、体系结构描述

语言的形式化语义等方面的研究来解决体系结构描述的不精确性问题。(2)体系结构分析技术。这一领域的研究者正在为确定体系结构的性质开发新的技术,特别是在以下方向争取取得进展:理解体系结构限制与体系结构能力,以进行专门化分析。

(3)基于体系结构的软件开发方法。研究如何将体系结构平滑地集成到更广泛的软件开发的方法和过程中,如集成到以兆程序设计为中心的软件开发过程中。

(4)体系结构恢复和再工程。对大型系统来说,在其漫长的生命周期中,具有处理现有代码的能力非常重要。即研究如何从现有系统中提取体系结构的设计,统一相关体系结构设计,对特定域组件和框架的抽3第4期 张广泉:软件体系结构的特点与研究进展

4重庆师范学院学报(自然科学版) 第19卷

象、泛化和实例化。另外,还有不断增长的对解决互操作性的研究趋势,即检测组件的不匹配和解决不匹配的技术。

(5)体系结构的工具和环境。在用符号和模型来刻划软件体系结构特征的条件下,有可能用新工具和环境来支持体系结构的设计。目前的工作主要致力于体系结构的分析工具,体系结构的设计环境和应用程序生成器。

(6)实例研究。大量的体系结构设计实例的研究正不断涌现,包括体系结构开发中成功的经验以及不成功的教训。这些工作有助于加深理解体系结构设计时的真正花费和困难所在,同时也提供了一个问题模型或范例,使得其他研究者可以以此精确地衡量他们的技术和工具的有效性。

2 软件体系结构与其它软件工程技术方法的关系

2.1 传统软件开发方法

传统的软件开发方法从开发风范上可分自顶向下和自底向上两大类方法。其中自顶向下方法源于结构程序设计,结构程序设计方法的核心就是逐步求精和自顶向下。自顶向下方法提供了从高层次(问题定义)到低层次(编程实现)的分层分解的决策策略及方式,并在具体的开发方法中给出相应的描述工具和设计步骤。典型的自顶向下方法包括结构化方法(Yourdon的SA SD SP方法、SADT方法)、Parnas方法、面向数据结构方法(JSD DSSD方法)等。自底向上方法与自顶向下方法相反,它首先从系统实现的最基础部分着手,由简单到复杂,逐层向上构造,直到得到所要的软件系统。如代码级的软件复用可看成是一种自底向上方法。

软件体系结构与上述传统软件开发方法在设计层次、表示和描述内容上,二者之间均有显著的区别。

(1)传统软件开发方法关心的是算法和数据结构的设计,而体系结构的设计关心的是一个大型系统的组织结构。(2)传统方法的系统描述基于定义-引用关系,通常在源代码中明确地描述代码的引用以及依赖关系;而体系结构的描述基于组件及其相互间的交互,通过组件和连接件的配置关系来描述系统。

2.2 面向对象方法

面向对象方法包括面向对象分析、设计和实现等,是目前得到软件工程界公认的主流软件开发技术,其研究高潮始于20世纪80年代后期,到如今相继出现了数十种面向对象的方法,影响较大的有十余种,其中Yourdan和Coad的OOA OOD、Booch-93方法、J.Rumbaugh的OMT-2(面向对象建模技术)和Jacobson的OOSE (面向对象软件工程)是最具代表性、得到广泛认可的几种方法。

软件体系结构与面向对象方法既有许多共性,也有各自不同的侧重点。一方面,面向对象是软件体系结构中的一种十分重要的体系结构风格[5],而软件体系结构中的组件和连接件在适当情况下也可用对象和类进行描述;另一方面,大多数面向对象方法侧重于软件生命周期的需求分析和系统实现阶段,而软件体系结构则侧重于设计阶段前期的规划。

从软件复用的角度,面向对象方法通过继承和聚束方式所支持的复用似乎更接近代码一级的软件复用,而基于体系结构的软件复用则偏向系统和设计等高层次复用。

2.3 设计模式

设计模式(design pattern)是近年来面向对象领域的一个研究热点。设计模式概念来自20世纪60年代一位建筑师(C.Alexander)提出的“建筑设计模式”,建筑师利用它可以方便地复用以往成功的建筑设计和结构,从而降低成了问题的复杂度,提高了工作效率。受Alexander模式概念启发,近年来软件开发领域开始关注和研究软件的设计模式。所谓模式,是指从某个具体的形式中得到的一种抽象,在特殊的非任意性的环境中,该形式不断地重复出现。特定环境、问题和解是模式的三要素。如所有算法都可看作是编程领域的设计模式,文献[6]介绍了面向对象设计中23种常见的设计模式,给出每个模式的应用特定环境、解决方案、优缺点、局限性以及示例问题等。设计模式提供了成熟的面向对象的设计经验,大大推动了面向对象方法的发展。目前其应用和研究范围已经不局限于面向对象这一领域,广泛用于不同应用领域(如GUI、networ king 等)的软件开发过程中。

软件开发模式按层次高低和粒度大小可分为体系结构模式、设计模式和程序模式三种。因而较设计模式而言,软件体系结构概念要更宏观一些,其抽象层次和应用范围也要更高、更广泛一些。

软件体系结构可以不十分依赖具体的应用领域,而设计模式一般与欲解决的问题域更靠近一些;体系结构模式也称为体系结构风格,由于软件体系结构不依赖具体应用领域,对一个特定的体系结构风格而言,可

能有多种具体的应用模式。因此,一个具体的设计模式可将其对应的体系结构风格作为一个分析应用的框架。

在软件开发中,可将两者结合起来,首先从软件体系结构层次上对系统整体抽象性能进行分析、推理和验证,然后在此基础上,选择和应用具体的设计模式。

2.4 软件复用

为了加快软件开发进度,提高软件质量和生产率,在软件开发过程中,尽可能重复使用已有的软件元素(通常称为“构件”,包括源代码、设计、规约、体系结构等),此即所谓的软件复用(reuse )(又称软件重用)技术,它可以大大减少软件开发所需的费用和时间,且有利于提高软件的可维护性和可靠性。

作为解决“软件危机”的一种可能技术途径,早在1968年的NATO 软件工程会议上,D .Mcllroy 就首次提出可复用库的思想,1983年Freeman 对软件复用给出了详细的定义:“在构造新的软件系统的过程中,对已存在的软件人工制品的使用技术”。软件人工制品可以是源代码片断、子系统的设计结构、模块的详细设计、文档和某一方面的规范说明等。目前常用的是小粒度的代码级复用(如各种函数库等),但这种复用会由于不同实现语言的差别或不同厂家编程语言的差别(如VC 和B C ),而难以在不同的开发团队之间复用;而中粒度的组件级复用(如微软的各种C OM 组件)可以克服上述困难,能够消除命名冲突和语言冲突,提供了一种跨语言、跨平台的代码复用;更大粒度上的软件复用则是在分析 设计层次上,可以使软件开发能在最短时间内构造出一个稳定的系统框架,如各种设计模式、框架(framework )的复用。软件复用涉及到领域工程、再工程(reengineering )、逆向工程、各种构件技术(构件的获取、表示、检索、组装等)和构件库等相关技术。

软件体系结构与软件复用之间有十分密切的关系,软件复用是软件体系结构研究的主要目标之一。软件体系结构提高了软件复用的抽象层次和复用粒度,为高层次、大粒度的软件复用提供了有力的支持。软件体系结构支持多级复用,既支持较大构件的复用,如子系统的复用,也支持构件集成框架复用,体系结构风格则是体系结构一级的复用。

基于体系结构的软件复用技术包括软件产品线、领域分析、特定域软件体系结构、软件设计样本和软件框架技术等。

2.5 净室技术

“净室(cleanroom )”一词源于半导体工业生产硬件的净室。在硬件生产过程中,严格的工程过程预防了缺陷的产生,而不是事后再去排除故障。净室技术通过设计和测试中的质量认证来保证软件开发的正确,是一种在软件开发过程中强调在软件中建立正确性的需要的方法[7]。管理者和技术小组借助净室技术,可对软件开发项目进行智能控制,要求开发的每一步骤和工作进度的每一状态都是绝对“干净”的,在第一次正确地书写代码增量并在测试前验证它们的正确性来避免对成本很高的错误消除过程的依赖。

净室技术与形式化方法有着密切的关系,净室理论基础来自数学,H .Mills 等人在20世纪80年代初首次将函数理论和统计学应用于软件的设计、测试和认证中,因而净室技术可看作是形式化方法特别是形式验证在软件工程中的应用,也可以说是形式化方法和常用开发方法相结合使用的一个实例。

净室技术与C MM (软件过程能力成熟度)模型也有密切的关系。C MM 模型是美国C MU SEI 的W .S .Humphrey 等人在1987年前后提出的[8],主要用于软件过程评估和软件开发能力评价,它将软件过程改进(SPI )的进化步骤组织成五个成熟度等级:1级为初始级;2级为可重复级;3级为确定级;4级为管理级;5级为优化级。等级越高,软件开发组织的成熟度也越高。CMM 模型开发之初主要面向大规模的软件组织,用于软件质量的宏观管理。为了在小项目和个人软件的开发中也能应用C MM ,W .S .Humphrey 等人又相继提出了个体软件过程(PSP )和小组软件过程(TSP )。PSP 为软件开发人员提供了一个规范的个人开发框架,它和TSP 结合使用,可以有效地帮助软件工程师开发所谓“零缺陷”或接近“零缺陷”的产品。净室技术与C MM 模型两者之间是兼容的、相互支持的。C MM 模型主要关注管理和组织方面,而净室则主要关注技术和工程实践方面。1996年,CMU SEI 定义了净室参考模型(CR M ),交将净室技术映射到CMM 的管理过程中。

净室技术与软件体系结构也有密切的关系。软件体系结构定义了主要组件和它们之间的关系,而净室提供了一个过程来准确定义体系结构的功能性语义———是什么组件以及它们之间有什么关系。净室状态盒和明盒中高层的内部设计关系到系统主要组件以及它们之间的关系,净室技术是对软件体系结构的进一步明确。

5第4期 张广泉:软件体系结构的特点与研究进展

6重庆师范学院学报(自然科学版) 第19卷

2.6 统一建模语言UML

由于面向对象的分析与设计是从建模开始的,故建模语言一直是面向对象方法的一个研究焦点。20世纪80年代以来,相继出现了多种面向对象的建模语言,用户很难判断和区别这些语言各自的优缺点和相互间的差别,难以找到一种恰当的适合自己需要的建模语言。基于此,20世纪90年代中期,三位世界著名的面向对象技术专家G.Booch、J.Rumbaugh和I.Jacobson通力合作,在他们自己提出的Booch方法、OMT方法和OOSE方法等三种方法的基础上,推出统一建模语言UML[9]。作为一种可视化的图形建模语言,UML提供了9种基本模型视图,用于支持从需求分析开始的软件开发全过程。这9种模型图可以分为以下五类。

第一类是用例图,它从用户角度描述系统的功能,并指出各功能的操作者。

第二类是静态图,包括类图和对象图。其中类图用于定义系统中的类,包括描述类之间的联系以及类的内部结构,即类的属性和操作。对象图所使用的表示符号与类图几乎完全相同。一个对象图是类图的一个实例。

第三类是行为图,描述系统的动态组成对象间的交互关系。一种是状态图,它描述一类对象的所有可能的状态以及事件发生时状态的转移条件。另一种称作活动图,它描述为满足用例要求所要进行的活动以及活动间的约束关系。使用活动图可以很方便地表示并行活动。

第四类是交互图,描述对象之间的交互关系。一种称之为时序图,用以显示对象之间的动态合作关系。它强调对象之间消息发送的顺序,同时也显示对象之间的交互过程。另一种是协作图,它着重描述对象间的协作关系。二者很相似,如果强调时间和顺序,应当使用时序图;如果强调通信关系,则可以选择协作图。

第五类是实现图,包括组件图和配置图。组件图描述代码组件的物理结构以及各组件之间的依赖关系。配置图定义系统中软硬件的物理体系结构。

UML作为一种定义良好、易于表达、功能强大且普遍适用的建模语言,可以用于软件体系结构的建模。软件设计人员为了降低软件体系结构建模的复杂度,从多个不同的视图来描述软件体系结构,通过每一视图来描述软件体系结构的某个侧面及不同的特点,然后将多个视图结合在一起则可较全面地反映软件体系结构的内容和特征。文献[10]提出了一个“4+1”的视图模型。“4+1”模型从五个不同的视角包括概念(逻辑)视图、模块(开发)视图、过程视图、物理视图和场景视图来描述软件体系结构,它可通过UML来描述。其中场景视图可由UML中的用例图和活动图来表示;逻辑视图可由UML中的类图来描述系统静态结构,交互图(时序图、协作图)可描述系统动态结构;物理视图可由UML中的配置图来描述系统的拓扑结构;模块视图可由UML中的组件图来表示;过程视图可由UML中的状态图来表示。

致谢:感谢合作导师唐稚松院士对作者及本文的指导和建议。

参考文献:

[1]张广泉.关于软件形式化方法[J].重庆师范学院学报(自然科学版),2002,19(2):1-4.

[2]张广泉.软件体系结构与XYZ E[D].中国科学院博士后研究工作报告[R].北京:中科院软件研究所,2000-05.

[3]ZHANG G Q.A Soft ware Architecture Description Approach Based on XYZ E[A].日本软件协会,澳门软件研究中心,中国国家基

金委.Proc of7th Symp on Future Soft Tech[C].International Acadcmic Publisher,2002.

[4]赵会群,王国仁,高远.软件体系结构抽象模型[J].计算机学报,2002,25(7):730-736.

[5]张广泉.软件体系结构:概念、风格与描述语言[J].重庆师范学院学报(自然科学版),2000,17(3):1-5.

[6]GAMMA E,HELM R,JOHNOSON R,et al.Design Patterns:Elements of Resuable Objected Orinted Software[M].Englewood Cliffs NJ:

Addison-Wesley,1995.

[7]PROWELL S J,TRAMMELL,LINGER R C,et al.Cleanroom Soft ware Engineering:Teachnology and Process[M].New York:Prentic Hall,

2000.

[8]何新贵.软件能力成熟度模型[M].北京:清华大学出版社,2000.

[9]刘超,张莉.可视化面向对象建模技术———标准建模语言UML教程[M].北京:北京航空航天大学出版社,2000.

[10]KRUCHEN P B.The4+1View Model of Architecture[J].IEEE Software,1995,12(6):42-50.

(责任编辑 李若溪)

软件体系结构期末大题

软件体系结构-期末大题

————————————————————————————————作者:————————————————————————————————日期: ?

1.基于构件的软件开发的优势是什么? 基于构件的软件将软件开发的重点从程序编写转移到了基于已有构件的组装,更快地构造系统,减轻用来支持和升级大型系统所需要的维护负担,从而降低了软件开发的费用2.尝试用自己的语言介绍Kruchten的“4+1”模型。 Kruchten 提出了一个"4+1"视图模型,从5个不同的视角包括包括逻辑试图、进程视图、物理视图、开发视图、场景视图来描述软件体系结构。每一个视图只关心系统的一个侧面,5个试图结合在一起才能反映系统的软件体系结构的全部内容。

3.在希赛公司的一个财务管理系统,财务部要客户提供………… 4.不同的体系结构风格具有各自的特点、优劣和用途。试对管道-过滤器风格、事件驱动风格、分层系统、C2风格和基于消息总线的风格进行分析比较。P52-56 (1)管道和过滤器 特点: @使得软构件具有良好的隐蔽性和高内聚、低耦合的特点; @允许设计者将整个系统的输入输出行为看成是多个过滤器的行为的简单合成;

@支持软件重用。只要提供适合在两个过滤器之间传送的数据,任何两个过滤器都可被连接起来; @系统维护和增强系统性能简单。新的过滤器可以添加到现有系统中来;旧的可以被改进的过滤器替换掉; @允许对一些如吞吐量、死锁等属性的分析; @支持并行执行。每个过滤器是作为一个单独的任务完成,因此可与其它任务并行执行?缺点:①通常导致进程成为批处理的结构。 ②不适合处理交互的应用。 ③因为在数据传输上没有通用的标准,每个过滤器都增加了解析和合成数据的工作,这样就导致了系统性能下降,并增加了编写过滤器的复杂性。 (2)

软件开发项目规划时,SA、SD与SE的区别与重要性

做软件开发项目规划时, 常会碰到助理问我一个问题, SA,SD和SE的差别在那里? 这个问题我以前也有过, 还颇为困扰, 系统分析和系统设计及系统工程到底有什么差别? SA和SD的工作又有何不同? 这两者的养成教育又有何差异?在过去, SA,SD及SE的确很难区分, 甚至这些角色常常会透过软件工程师来混合发展。随着IT领域的发展, SA,SD及SE渐渐的成为了大型项目必需要的专业分工, 这三者间是有相当的差异的, 不管是养成过程, 甚或是未来的发展, 都大相径庭, 而要成为一名称职的PM, 是要能区分出这三者的差异, 才能妥善的安排工作的。 [SA System Analysis,系统分析师] SA是System Analysis 的缩写, 一般称为系统分析, 主要的工作就是透过一系列的分析工作, 把客户想要的结果产生方式, 以各种文件表达出来, 让开发团队可以根据这些文件实作出这个结果。 这样的解释比较文绉绉一点, 用个通俗一点的方式比喻, 就像是要做出一道宫保鸡丁时, 就会有食谱一样, 里面会介绍需要的材料及做菜的顺序, 然后里面也会强调要以怎样手法才能产生出某种效果, 以促进色香味。 这样的过程里, SA是较为偏重于在工作流程和处理逻辑的, 透过SA, 开发团队才可以理出整个系统的架构, 一种做事的脉络, 以及系统和工作间的关连性, 最重要的, 是这些结果都会被SA呈现在文件中, 而非放在少数人的脑袋里。 SA不仅止是要针对计算机里的东西去运作及规划, 还包括了现实世界里的实体流程及组织。在很多的情况下, 配合新系统的组织及流程, 是要由SA来执行的。总结起来, 在一个开发案里, SA执行以下的工作: ? 藉由系统需求书, 使用者的现有标准作业流程来建立出符合期望的新作业流程及搭配流程的系统功能及模块规划 ? 依据功能及模块规划案, 定出初步的数据库内容及系统与使用者间的权限搭配规范 ? 定出各个软件零件的规范, 如对象, 函数库, ...等等 ? 设计新的标准作业流程, 并把系统功能或模块绑入这些流程中 ? S.A依据客户的环境及需求, 寻找合适的SD来搭配 而SA也有以下的特色: ? 对于系统在怎样的环境及用什么开发工具, 并不十分在意, 良好的S.A产生出来的文件, 使用不同的开发工具都应该可以完成, 产生相同的结果, 但那一种最合适, 由SD决定 ? SA偏重于流程及执行逻辑的表达 ? SA着重于软件逻辑, 对开发工具的学习并不是十分重要, 所以会一种语言即可, 主要是以该语言工具来实践逻辑观。 ? SA一定要有全局观, 也就是不能拘泥于一个角度或是一个局部去思考问题, 这一点是寻找优秀SA时最

软件体系结构期末考试

北京工业大学2014 - 2015学年 第二学期模拟试题 考试课程:软件体系结构I 考试日期:2015年5 月20日 学院:软件学院专业:软件工程 学号:姓名:成绩: 一填空题(共30 空,每空 1 分) 1. 软件或程序是由软件工程人员设计与开发,使计算设备发挥计算潜能,________ 的逻辑层次组织。 2. 软件体系结构(Software Architecture)-- 是软件产品设计的思想和系统的蓝图;是 对软件产品_______的规划和_______的设置;是定义软件系统组件(Components)或构建块(Building Blocks)的重要工具;用于 -- 实现对一个软件系统的构成进行_________的划分 -- 所形成和采用的工程化规范,是指导软件后续过程方方面面组成的模型。 3.软件开发中的面临若干问题:1)软件固有的复杂性;2)软件开发的随意性;3)周期 长,代价高,质量低的问题;软件体系结构设计是软件产品及大型信息系统工程实现中最重要的环节和关键技术之一,解决从软件的__________到系统实现(代码)的有效和平坦过渡。 4.软件产品的工业化生产:是指建立流水线型的软件产品生产线,是指按_____、标准 化的规范和规则(软件生产规范)来编写和实现各种各样的适应于多环境的软件___,通过软件体系结构来确定各个软件组件如何部署到开发架构模式中,组装成达到期望的软件产品。 5.体系结构设计方法的发展中,软件程序开发经历了如下的阶段 -- 功能分解法 (计算任务) -- 结构化程序设计 (以数据为中心) -- _________________ -- _________________ -- 基于 SOA 的程序设计 (以服务为中心)。 6. 一个现代软件产品生产过程如下图表示,请在带___________的方框中,填上相应的组 件名称

论UML在程序开发中的重要作用

经典的软件工程思想将软件开发分成5个阶段:需求分析\系统分析与设计;系统实现\测试及维护五个阶段。 序言 如果想搭一个狗窝,备好木料、钉子和一些基本工具(如锤子、锯和卷尺)之后,就可以开始工作了。从制定一点初步计划到完成一个满足适当功能的狗窝,可能不用别人帮助,在几个小时内就能够实现。只要狗窝够大且不太漏水,狗就可以安居。如果未能达到希望的效果,返工总是可以的,无非是让狗受点委屈。 如果你要建造一座高层办公大厦,若还是先备好木料、钉子和一些基本工具就开始工作,那将是非常愚蠢的。因为你所使用的资金可能是别人的,他们会对建筑物的规模、形状和风格做出要求。同时,他们经常会改变想法,甚至是在工程已经开工之后。由于失败的代价太高了,因此必须要做详尽的计划。负责建筑物设计和施工的是一个庞大的组织机构,你只是其中的一部分。这个组织将需要各种各样的设计图和模型,以供各方相互沟通。只要得到了合适的人员和工具,并对把建筑概念转换为实际建筑的过程进行积极的管理,将会建成这座满足使用要求的大厦。如果想继续从事建筑工作,那么一定要在使用要求和实际的建筑技术之间做好平衡,并且处理好建筑团队成员们的休息问题,既不能把他们置于风险之中,也不能驱使他们过分辛苦地工作以至于精疲力尽。 奇怪的是,很多软件开发组织开始想建造一座大厦式的软件,而在动手处理时却好像他们正在仓促地造一个狗窝。 有时你是幸运的。如果在恰当的时间有足够的合适人员,并且其他一切事情都很如意,你的团队有可能(仅是可能)推出一个令用户眼花缭乱的软件产品。然而,一般的情况下,不可能所有人员都合适(合适的人员经常供不应求),时间并不总是恰当的(昨天总是更好),其他的事情也并不尽如人意(常常由不得自己)。现在对软件开发的要求正在日益增加,而开发团队却还是经常单纯地依靠他们唯一真正知道如何做好的一件事——编写程序代码。英雄式的编程工作成为这一行业的传奇,人们似乎经常认为更努力地工作是面对开发中出现的各种危机的正常反应。然而,这未必能产生正确的程序代码,而且一些项目是非常巨大的,无论怎样延长工作时间,也不足以完成所需的工作。 如果真正想建造一个相当于房子或大厦类的软件系统,问题可不是仅仅编写许多软件。事实上,关键是要编出正确的软件,并考虑如何少写软件。要生产合格的软件就要有一套关于体系结构、过程和工具的规范。即使如此,很多项目开始看起来像狗窝,但随后发展得像大厦,原因很简单,它们是自己成就的牺牲品。如果对体系结构、过程或工具的规范没有作任何考虑,总有一天狗窝会膨胀成大厦,并会由于其自身的重量而倒塌。狗窝的倒塌可能使你的狗恼怒;同理,不成功的大厦则将对大厦的租户造成严重的影响。 不成功的软件项目失败的原因各不相同,而所有成功的项目在很多方面都是相似的。成功的软件组织有很多成功的因素,其中共同的一点就是对建模的采用。 一、项目开发中模型是什么以及建模的重要性。 那么,模型是什么?简单地说:

软件体系结构课程报告

《软件体系结构》 一、课程性质与目的 通过本课程学习,旨在达到以下目标: 1帮助学生掌握需求分析的流程、方法以及技巧; 2帮助学生了解软件体系结构的基本概念,初步掌握中大型软件系统构架的分析与设计方法; 3使学生了解构建系统的目的是为了满足组织的需求,认识软件行业和开发组织在系统设计及其最终成败所起的作用,提高软件设计的基本素养; 4使学生了解常用软件设计模式的使用场景,解决方案; 5引导学生认识系统的性能、可用性、安全性等质量属性都是受软件构架制约的,或者说这些属性的实现影响着设计师的设计选择; 二、设计内容 下面题目将作为实习题贯穿需求分析和软件体系结构设计部分,以1人为一组,任选其中一个问题。采用适当的需求分析方法获取初步需求,题目选择如下: 问题A. 图书馆管理(R.A.Kemmerer) 一个小型图书馆管理系统,需完成以下工作: 1.借书,还书; 2.在图书馆中增加/删除一本书; 3.按照作者名或专业领域检索一批书; 4.找出被某位读者借出的一批书; 5.找出最近借走某本图书的读者. 该系统有两类用户:图书管理员与普通读者.功能4可供普通读者查找他们自己借出的书目.功能1,2,5只供图书管理员使用. 该系统必须满足以下限制: 1.馆中所有未借出的书籍能够供读者随时借阅. 2.在同一时刻,一本书不能既被借出,又可供借阅.

3.一个读者一次借出的书籍数目不能超过预定值. 问题B. 保温系统(S.White) 如果主开关置于”加热”状态,保温系统的控制器负责开关锅炉,监视锅炉系统的燃油流量和燃烧状态,进而调节进入房间的热量流.当室内温度降至(T r-2)0C以下,控制器启动锅炉.这里,T r是用户设置的理想室温. 锅炉启动过程如下: 1.控制器向锅炉的马达发信号. 2.控制器监视马达速度.马达达到正常操作速度时,启动点火并打开油阀. 3.控制器监视水温,一旦水温达到预定值,发信号打开水流循环阀.热水开始在室内循 环. 4.如果发生异常情况,燃油流量指示器和光感器向控制器发信号.此时控制器发信号关 闭系统. 5.一旦室内温度达到(T r +2)0C,控制器首先关闭油阀,延迟5s后关闭锅炉马达. 系统必须满足以下限制: 1.锅炉停机后重启必须延迟5min. 2.在主开关关闭或油阀关闭5s内应指示锅炉停机. 问题C. 字符串格式化(https://www.doczj.com/doc/2313225093.html,i) 给定非负整数MAXPOS和包含空格与换行作为分隔符的字符集.对字符串S,称两分隔符之间或分隔符到S的结尾处的非空字符串为字. 程序以有穷字符串为输入,输出满足以下条件的字符串: 1.如果输入串包含长度为MAXPOS+1的字,则输出串为一空格. 2.如果输入串的任何MAXPOS+1个相邻字符至少含有一个分隔符,则: 2-1 输入串的所有字以相同的次序出现在输出串中;并且,输出串不含有未在输入串中出现的字; 2-2 此外,输出串满足以下限制: 2-2-1 输出串中不出现前导和后导分隔符,也不出现相邻的分隔符. 2-2-2 任何MAXPOS+1个相邻字符中含有一个换行符; 2-2-3 对于输出串中的任意子串S,如果: (1) S的长度不超过MAXPOS;

软件体系结构总结

第一章:1、软件体系结构的定义 国内普遍看法: 体系结构=构件+连接件+约束 2、软件体系结构涉及哪几种结构: 1、模块结构(Module) 系统如何被构造为一组代码或数据单元的决策 2、构件和连接件结构(Component-And-Connector,C&C) 系统如何被设计为一组具有运行时行为(构件)和交互(连接件)的元素 3、分配结构(Allocation) 展示如何将来自于模块结构或C&C结构的单元映射到非软件结构(硬件、开发组和文件系统) 3、视图视点模型 视点(View point) ISO/IEC 42010:2007 (IEEE-Std-1471-2000)中规定:视点是一个有关单个视图的规格说明。 视图是基于某一视点对整个系统的一种表达。一个视图可由一个或多个架构模型组成 架构模型 架构意义上的图及其文字描述(如软件架构结构图) 视图模型 一个视图是关于整个系统某一方面的表达,一个视图模型则是指一组用来构建 4、软件体系结构核心原模型 1、构件是具有某种功能的可复用的软件结构单元,表示了系统中主要的计算元素和数据存储。 2.连接件(Connector):表示构件之间的交互并实现构件

之间的连接 特性:1)方向性2)角色3)激发性4)响应特征 第二章 1、软件功能需求、质量属性需求、约束分别对软件架构产生的影响 功能性需求:系统必须实现的功能,以及系统在运行时接收外部激励时所做出的行为或响应。 质量属性需求:这些需求对功能或整个产品的质量描述。 约束:一种零度自由的设计决策,如使用特定的编程语言。 质量原意是指好的程度,与目标吻合的程度,在软件工程领域,目标自然就是需求。 对任何系统而言,能按照功能需求正确执行应是对其最基本的要求。 正确性是指软件按照需求正确执行任务的能力,这无疑是第一重要的软件质量属性。质量属性的优劣程度反映了设计是否成功以及软件系统的整体质量。 系统或软件架构的相关视图的集合,这样一组从不同视角表达系统的视图组合在一起构成对系统比较完整的表达

软件体系结构的质量特性

软件体系结构的质量特性 摘要:众所周知的是,为了降低风险和减少构建软件系统的困难,人们在软件开发过程的早期应该首先考虑质量问题。此外,系统的结构驱动着整个开发过程。 备用的结构中非功能性质量需求的实现决定了选择衔接整个系统的便利结构。这一议题在可靠的变革的应用程序构建中非常重要。软件开发的思想并没有在这一重要阶段给与很多细节关注。这篇文章详述了软件体系结构的质量特性,并且介绍了一种基于??? ??????标准的技术。???模型的质量特性被精炼成为一种属性。而这种属性可被度量以增加体系结构的信息。我们的技术通过比较各自的质量属性的值从一组候选中挑选出适当的体系结构。并以一个关于监制系统技术应用程序为例说明。我们的方法有助于在体系结构分析过程中正确选择的决定。它可以很容易的被并入一般软件开发的过程或者一种特别的体系结构设计思想。 简介:在软件开发早期阶段以非功能需求为目标的质量需求极大的影响了软件系统的体系结构。但是,系统核心功能需求的提取在初始的系统结构的确定上扮演着重要的角色。另一方面,质量需求在软件设计阶段需要平衡 ??????? ?? ?●? ?????。仅仅在最近,精确的软件体系结构设计的重要性(并不是局限于笔纸图画符号的设计方式)为了可靠的系统结构而蓬勃的发展起来 ????????? ?? ?●??????? ?????? ?????? ? ?◆????? ??????。那些包括 ??????◆????? ????????●???? ????????? ???●???? ????????? ??◆????●??? ??? ? ??●????? ???◆?? 现代的应用软件需要一个早期的体系结构 的 定义来满足可维护行和可靠性之类的质量需求。这些对于在架构之下的软件系统全部功能性需求目标的完成是至关重要的。特殊的,使用网络服务的新的信息系统,比如基于网络的电子商务应用程序,没有过多关心软件工程的时

软件工程在软件开发中的作用

软件工程在软件开发中的作用 1、定义项目成功的标准 在项目的开始,要保证风险承担者对于他们如何判断项目是否成功有统一的认识。经常,满足一个预定义的进度安排是唯一明显的成功因素,但是肯定还有其他的因素存在,比如:增加市场占有率,获得指定的销售量或销售额,取得特定用户满意程度,淘汰一个高维护需求的遗留系统,取得一个特定的事务处理量并保证正确性。项目计划目标定义,包括进度,成本和质量(PP) 2、识别项目的驱动、约束和自由程度 每个项目都需要平衡它的功能性,人员,预算,进度和质量同标。我们把以上五个项目方面中的每一个方面,要么定义成一个约束,你必须在这个约束中进行操作,要么定义成与项目成功对应的驱动,或者定义成通向成功的自由程度,你可以在一个规定的范围内调整。相关的详细信息,请参照我的《创建一种软件工程文化》(Creating a software Engineering Culture)(Dorset House,1996)中的第一章。项目的假设和约束(PP) 3、定义产品发布标准 在项目早期,要决定用什么标准来确定产品是否准备好发布了。你可以把发布标准基于:还存在有多少个高优先级的缺陷、性能度量、特定功能完全可操作、或其他方面表明项目已经达到了它的目的。不管你选择了什么标准,都应该是可实现的、可测量的、文档化的,并且与你的客户指的“质量”一致。项目的具体验收标准(PP) 4、沟通承诺 尽管有承诺不可能事件的压力,从不作一个你知道你不能保证的承诺。和客户和管理人员沟通哪些可以实际取得时,要有好的信誉。你的任何以前项目的数据会帮助你作说服的论据,虽然这对于不讲道理的人来说没有任何可真正的防御作用。沟通计划,关键依赖和承诺(PP) 5、写一个计划 有些人认为,花时间写计划还不如花时间写代码,但是我不这么认为。困难的部分不是写计划,困难的部分是作这个计划——思考,沟通,权衡,交流,提问并且倾听。你用来分析解决问题需要花费的时间,会减少项目以后会带给你的意外。项目计划(PP) 6、把任务分解成英寸大小的小圆石 英寸大小的小圆石是缩小了的里程碑。把大任务分解成多个小任务,帮助你更加精确的估计它们,暴露出在其他情况下你可能没有想到的工作活动,并且保证更加精确、细密的状态跟踪。工作结构分解WBS (PP) 7、为通用的大任务开发计划工作表 如果你的组经常承担某种特定的通用任务,如实现一个新的对象类,你需要为这些任务开发一个活动检查列表和计划工作表。每个检查列表应该包括这个大任务可能需要的所有步骤。这些检查列表和工作表将帮助小组成民确定和评估与他/她必须处理的大任务的每个实例相关的工作量。项目进度计划(PP) 8、计划中.在质且控制活动后应证百赐改工作

软件设计与体系结构实验报告

(此文档为word格式,下载后您可任意编辑修改!) 福建农林大学计算机与信息学院 实验报告 课程名称:软件设计与体系结构 姓名:陈宇翔 系:软件工程系 专业:软件工程 年级:2007 学号: 指导教师:王李进 职称:讲师 2009年12月16日

实验项目列表

福建农林大学计算机与信息学院实验报告 学院:计算机与信息学院专业:软件工程系年级:2007 姓名:陈宇翔 学号:课程名称:软件设计与体系结构实验时间: 实验室田实验室312、313 计算机号024 指导教师签字:成绩: 实验1:ACME软件体系结构描述语言应用 一、实验目的 1)掌握软件体系结构描述的概念 2)掌握应用ACMESTUDIO工具描述软件体系结构的基本操作 二、实验学时 2学时。 三、实验方法 由老师提供软件体系结构图形样板供学生参考,学生在样板的指导下修改图形,在老师的指导下进行软件体系结构描述。 四、实验环境 计算机及ACMESTUDIO。 五、实验内容 利用ACME语言定义软件体系结构风格,修改ACME代码,并进行风格测试。 六、实验操作步骤 一、导入Zip文档 建立的一个Acme Project,并且命名为AcmeLab2。如下图: 接着导入ZIP文档,导入完ZIP文档后显示的如下图:

二、修改风格 在AcmeLab2项目中,打开families下的TieredFam.acme.如下图: 修改组件外观 1. 在组件类型中,双击DataNodeT; 在其右边的编辑器中,将产生预览;选择Modify 按钮,将打开外观编辑器对话框。 2. 首先改变图形:找到Basic shape section,在Stock image dropdown menu中选 择Repository类型. 3. 在ColorLine Properties section修改填充颜色为深蓝色。 4. 在颜色对话框中选择深蓝色,并单击 [OK]. 5. 修改图形的边框颜色为绿色 7. 单击Label tab,在Font Settings section, 设置字体颜色为白色,单击[OK] 产生的图形如下图:

软件设计与体系结构期末复习整理解读

1面向对象编程中是如何体现封装性的? 封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。 2重载和重写的含义 重载是发生在一个类中,方法名相同,参数不同 重写(覆盖)是子类继承父类,子类可以通过重写的方法隐藏继承的方法 3 什么是接口回调,过程细节是什么? 概念:把可以实现某一接口的类创建的对象的引用赋给该接口声明接口变量,那么该接口变量可以调用被类实现(重写)的接口方法。 4试举例说明什么是组合关系和依赖关系 组合(关联)关系:A类中成员变量是用B类声明的对象。公司--职员 依赖关系:A类中某个方法的参数是用B类声明的对象,或某个方法返回的数据类型是B类的对象 5抽象类和接口,区别是什么?如何应用 抽象类:抽象类中有抽象方法;抽象类中不能用new运算符创建对象;抽象类的对象做商转型对象 接口:(1)接口中只可以有public权限的抽象方法,不能有非抽象方法; (2)接口由类去实现,即一个类如果实现一个接口,那么他必须重写接口中的抽象方法 (3)接口回调 区别:接口中只有常量,不能有变量;抽象类中既可以有常量也可以有变量; 抽象类中也可以有非抽象方法,接口不可以。 应用:定义抽象方法:public abstract void 方法名(); 在子类实现抽象方法:public void 方法名(){} 接口:public interface 接口名{}接口只负责定义规则,不负责任何实现;实现交给实现接口的类 (6)面向对象的六条基本原则包括: 开闭原则,里式代换原则,单一职责,依赖倒转、迪米特法则(接口隔离)。 (7)什么是设计模式? 设计模式是从许多优秀的软件系统中总结出的成功的可复用的设计方案。是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性 (8)什么是框架?框架与模式的区别有哪些? 框架是针对某个领域,提供用于开发应用系统的类的集合。 区别:层次不同、范围不同、相互关系

软件构架、架构和框架的区别

软件构架、架构和框架的区别 nizhigang2000的文章 软件框架(Software Framework)介绍 面向某领域(包括业务领域,如ERP,和计算领域,如GUI)的、可复用的“半成品”软件,它实现了该领域的共性部分,并提供一系列定义良好的可变点以保证灵活性和可扩展性。可以说,软件框架是领域分析结果的软件化,是领域内最终应用系统的模板。 随着软件规模的扩大、应用的广泛和软件复用技术的发展,以子程序或类(Class)为单位的软件复用有许多不足:(1)子程序库日趋其庞大以致于使用人员难以掌握,(2)大多数类粒度很小,且其自身往往不能完成有用的功能。这一问题迫使人们在复用中将一组类(或模块)及其交互作为一个整体来考虑,由此出现了软件框架。 软件框架至少包含以下组成部分: (1)一系列完成计算的模块,在此称为构件。 (2)构件之间的关系与交互机制。 (3)一系列可变点(也称热点,Hot-spots,或调整点)。 (4)可变点的行为调整机制。 开发人员通过软件框架的行为调整机制,将领域中具体应用所特有的软件模块绑定到该软件框架的可变点,从而得到最终应用系统,这一过程称为软件框架的例化(instantiation)。通过软件框架的使用,开发人员可将主要精力放在应用所特有的模块的开发上,从而大大提高了软件生产率和质量。 软件框架的行为调整机制是指如何针对具体的应用调整该框架的可变部分、如何在可变点加入特定应用模块所采用的方法和规则。行为调整机制可分为四种: (1)模板参数化。软件框架提供代码自动生成工具,该工具根据用户设置的参数自动生成所需的代码。 (2)继承和多态。通过面向对象中的子类继承和重载,在子类中加入新的功能或改变父类的行为。 (3)动态绑定。在运行时刻动态绑定所需的对象服务,可通过软件模式技术实现。 (4)构件替换。通过替换框架中可插拔的构件来加入业务特定的功能, 不同于一般的可复用软件制品,软件框架的一个显著特点是逆向控制(Inversion of Control),在复用过程中,前者需被显式调用,控制是在应用特定的模块中,软件框架则不然,应用开发人员只要将应用特定的模块绑定到框架内,框架则根据自己的交互机制自动调用该模块,控制由框架负责。 软件框架有很多种。按其应用的范围可分为: (1)系统基础设施框架。用于简化系统级软件的开发,如操作系统、用户界面、语言处理等,典型例子为MacApp, Microsoft’s MFC等。 (2)中间件集成框架。用于组装分布式应用和构件,典型例子为Microsoft’s DCOM, JavaSoft’s RMI, OMG’s CORBA等 (3)企业应用框架。用于各类应用领域,如电信、制造业、金融等。 按其表现形态可分为: (1)白盒框架。支持白盒复用,大型的类库或子程序库通常均提供白盒框架来协助复用。(2)黑盒框架。支持黑盒复用。中间件集成框架一般为黑盒框架。 构架和架构也就是通常所说的软件体系结构(software architecture).体系结构一般包括三个部分:构件,用于描述计算;连接器,用于描述构件的连接部分;配置,将构件和连接器组成一个有

需求分析在软件开发过程中的重要性

龙源期刊网 https://www.doczj.com/doc/2313225093.html, 需求分析在软件开发过程中的重要性 作者:陆丽 来源:《电脑知识与技术》2012年第21期 摘要:软件工程中的需求分析是软件生命周期中一个非常重要的过程,它决定着整个软件项目的质量,也是整个软件开发的成败所在。该文主要讨论软件开发过程中需求分析的关键技术及应用实例,并提出一些有探索性的问题。 关键词:软件工程;需求分析;用户方成员;项目管理者 中图分类号:TP271文献标识码:A文章编号:1009-3044(2012)21-5113-03 目前,计算机软件业得到了快速发展,但是软件业所呈现出来的劣势已经不容忽视,它正严重制约着我国IT业的发展。软件开发中的劣势主要表现在:软件的开发和维护缺乏正确的方法,系统运行满足不了用户的需求,软件产品的质量存在大量的漏洞。而事实证明,造成这些后果的主要原因是:在软件开发的初始阶段,项目的需求分析做得不够深入细致,也没有实行有效的需求工程管理。大量的实例表明,软件需求分析是决定软件质量的基础,也是一个软件开发项目成败的关键。软件的需求分析作为一个软件项目开发的第一阶段,其重要性很突出。软件的需求分析是指,理解用户方对目标软件在性能、功能、设计等方面的需求。通过对用户方提出的具体问题的理解与分析,抽象出问题涉及的信息功能及行为的逻辑模型,并最终形成需求文档,因此构成软件开发生命周期的需求分析阶段。 目前,高校的计算机专业都设置了软件工程这门课程,专门的软件培训机构也加大了对软件工程人才的培养,目的都在于建立学生的软件开发基础,熟练掌握软件工程中需求分析的技术,提高学生软件开发的能力。通过对软件工程知识的系统学习以及参与的一些案例开发,该文提出在软件需求分析过程中的一些有效措施。 1确定各方成员,获取用户需求,减少不利因素对需求分析的影响 需求分析的第一步是全面熟悉该软件项目的所有相关人员,明确需求分析方成员和用户方成员。通过系统分析人员和用户方成员的多次交流和沟通,最终确定对目标软件的综合要求,以及确定如何实现用户方的需求和软件最终应达到的标准。在做需求调查时,应避免不利因素的影响,分析者必须从该软件项目的细节问题出发,逐步细化软件的功能,然后做一份详细设计方案,提炼出各种不同的软件元素,并找出各元素之间的联系,预测该软件项目是否存在片面性或可能导致不满足用户需求的情况。该过程中,如果有问题,需与用户再进行交流,确定软件最终的设计方案,并定义目标系统的详细逻辑模型。另外,在做项目的需求分析时,还应主动建立用户方单位的人事组织、业务关系,并用结构图画出单位的组织结构,还应当在单位组织结构图基础上画出全体项目成员的结构图,以便更好更全面地进行需求调研分析,发现问题适时调整,进而确保需求分析的高度准确性。

《软件体系结构》课程报告

武汉工商学院 学生姓名:刘伟 学号:14404036 班级:14数据处理实验班指导教师:喻晓 2017年 4月 27日

目录 1. 软件体系结构设计与应用概述 (1) 1.1软件体系结构设计与应用现状 (1) 1.2本系统使用的技术概述 (1) 2. 软件体系结构分析 (3) 2.1软件体系结构风格 (3) 2.2“4+1”视图角度分析系统 (3) 2.3用例图 (5) 2.4类图 (6) 2.5构件图 (9) 2.6从技术角度分析实现的功能 (10) 2.7从系统角度分析实现的功能 (10) 3. 系统测试 (13) 3.1登录注册测试 (13) 3.2后台管理测试 (14) 3.3前台用户操作测试 (16) 总结 (18) 参考文献 (19)

1.软件体系结构设计与应用概述 1.1软件体系结构设计与应用现状 体系结构是以构件、构件之间的关系、构件与环境之间的关系为内容的某一系统的基本组织结构,以及指导上述内容设计与演化的原理。比较上述各种体系结构的定义,可以发现,尽管各种定义都从不同的角度关注软件体系结构,研究对象各有侧重,但其核心内容都是软件系统的结构。并且都涵盖了一些实体:构件、构件之间的交互关系、构件和连接件构成的拓扑结构、设计原理与指导方针。同时,这些实体应该满足一定的限制,遵循一定的设计规则,能够在一定的环境下进行演化。以这些实体为基础,软件休系结构能够从一个较高的层次上反映组成系统的构件、构件之间的交互,以及构件与构件交互所形成的拓扑结构。而且,软件体系结构应能为体系系统开发中的重要设计决策,提供不同角度的视图,便于不同角色人员之间的交流。 软件在进化过程中,对系统的需求会不断发生变化,对于常用的软件体系结构,往往需同步对系统构架进行修改;而正交软件体系结构中,由于线索的正交性,每一个需求变动仅影响某一条线索,而不会涉及到其他线索。这样,就把软件需求的变动局部化了,产生的影响也被限制在一定范围内,因此具有易于构建、便于开发与维护等优势。主要体现在: (l) 结构清晰、易于理解。正交软件体系结构的形式有利于理解。线索功能相互独立,不进行互相调用,结构简单、清晰。构件在结构图中的位置显示了它所实现的抽象级别和功能。 (2) 易修改、可维护性强。线索之间的相互独立性使得对一个线索的修改不会影响到其他线索。因此,当软件需求发生变化时,可以将新需求分解为独立的自需求,然后以线索和其中的构件为主要对象分别对各自需求进行处理,便于软件维护。 (3) 可移植性强,正交结构可以为一个领域内的所有应用程序所共享,这些软件有着相同或类似的层次和线索,可以实现体系结构级的重用。 (4) 结构容易调整。系统功能的增加或减少,只需相应的增删线索组件族,而不影响整个正交体系结构,因此能方便的实现结构调整软件技术概述。 1.2本系统使用的技术概述 (1)MySQL

软件体系结构期末复习题概述

《软件体系结构》期末复习题 简答题: 1、软件体系结构建模的种类有: 结构模型、框架模型、动态模型、过程模型、功能模型。 2、“4+1”视图模型从5个不同的视角包括: 逻辑视图、进程视图、物理视图、开发视图和场景视图来描述软件体系结构。 3、构件:是具有某种功能的可重用的软件模板单元,表示了系统中主要的计算元素和数据存储。 连接件:表示构件之间的交互。 配置:表示构件和连接件的拓扑逻辑和约束。 端口:表示构件和外部环境的交互点。 角色:定义了该连接交互的参与者。 4、画出“4+1”视图模型图,分析各部分的原理和功能。 5、软件体系结构风格: 是描述某一特定应用领域中系统组织方式的惯用模式。 6、软件体系结构 (Software Architecture) 软件体系结构以组件和组件交互的方式定义系统,说明需求与成品系统之间的对应关系,描述系统级别的可伸缩性、能力、吞吐量、一致性和兼容性等属性。软件体系结构由组件、连接件和属性组成。 7、分层系统的优点有: 1)支持基于抽象程度递增的系统设计,使设计者可以把一个复杂系统按递增的步骤进行分解; 2)支持功能增强,因为每一层至多和相邻的上下层交互,因此功能的改变最多影响相邻的上下层; 3)支持重用。只要提供的服务接口定义不变,同一层的不同实现可以交换使用。这样,就可

以定义一组标准的接口,而允许各种不同的实现方法。 8、分层系统的缺点有: 1)并不是每个系统都可以很容易地划分为分层的模式,甚至即使一个系统的逻辑结构是层次化的,出于对系统性能的考虑,系统设计师不得不把一些低级或高级的功能综合起来; 2)很难找到一个合适的、正确的层次抽象方法。 9、 B/S体系结构的优点有什么? 答:1)基于B/S体系结构的软件,系统安装、修改和维护全在服务器端解决。用户在使用系统时,仅仅需要一个浏览器就可运行全部的模块,真正达到了“零客户端”的功能,很容易在运行时自动升级。 2)B/S体系结构还提供了异种机、异种网、异种应用服务的联机、联网、统一服务的最现实的开放性基础。 10、B/S体系结构的缺点有什么? 答:1)B/S体系结构缺乏对动态页面的支持能力,没有集成有效的数据库处理功能。 2)B/S体系结构的系统扩展能力差,安全性难以控制。 3)采用B/S体系结构的应用系统,在数据查询等响应速度上,要远远地低于C/S体系结构。 4)B/S体系结构的数据提交一般以页面为单位,数据的动态交互性不强,不利于在线事务处理(OLTP)应用。 11、DSSA 答案:DSSA就是在一个特定应用领域中为一组应用提供组织结构参考的标准软件体系结构 11、软件体系结构的动态性主要分为: 交互式动态性、结构化动态性、体系结构动态性等三类。 12、请画出基于构件的动态系统结构模型画。 13、软件产品线 产品线是一个产品集合,这些产品共享一个公共的、可管理的特征集,这个特征集能满足选定的市场或任务领域的特定需求。这些系统遵循一个预描述的方式,在公共的核心资源(core assets)基础上开发的 14、SOA 即service-oriented architecture,面向服务架构。它是一个组件模型,它 将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接 口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于 实现服务的硬件平台、操作系统和编程语言。这使得构建在各种这样的 系统中的服务可以以一种统一和通用的方式进行交互。 14、RIA

软件体系结构的特点与研究进展

第19卷第4期 重庆师范学院学报(自然科学版) 2002年12月Vol.19No.4 Journalof Chongqing NormalUnivers ity(Natural Science Edition) Dec.2002 软件体系结构的特点与研究进展 张广泉1,2 (1.重庆师范学院数学与计算机科学系,重庆400047; 2.中国科学院计算机科学国家重点实验室,北京100080) 摘 要:软件体系结构是软件工程的一个重要研究领域,它提供了软件系统的高层抽象。文章阐述了软件体系结构的产生背景和基本概念,以及体系结构描述语言(ADL)、求精方法和特定领域体系结构(DSSA)等主要研究内容; 分析了软件体系结构与传统开发方法、O-O方法、设计模式、软件复用、净室技术以及统一建模语言(UML)等其它软件工程技术方法的联系和区别。 关键词:软件体系结构;体系结构描述语言;求精;特定域体系结构;设计模式;复用;净室;UML 中图分类号:TP311 文献标识码:A 文章编号:1001-8905(2002)04-0001-06 The C haracteristics of Software Architecture and the Progress of Its Study ZHA NG Guang-quan1,2 (1.Dept.of Mathematics and Computer Science,Chongqing Normal University,Chongqing400047; 2.State Key Lab.of Computer Science,The Chinese Academy of Sciences,Beijing100080,China) A bstract:Software architecture is an important research area in software engineering.It provides a high-level abstraction of a soft- ware system.In this paper,first,the background and fundamental conception of soft ware architecture are introduced.Several main topics,such as architecture description languages(ADL),refinement methods and domain-specific soft ware architecture(DSSA) and so on,are discussed.Finally,the relation and distinction bet ween software architecture and other soft ware en gineering technolo-gies,such as traditional development methods,O-O methods,design pattern,software reuse;clean room technology,and unified modeling language(U M L),are analyzed. Key words:soft ware architecture;architecture description lan guage;refinement;domain-specific software architecture;design pat-tern;reuse;cleanroom;unified modeling language 20世纪60年代,随着计算机在工业、商业、科研和国防等领域的广泛应用,计算机程序的规模愈来愈大,其复杂性也急剧增加,软件开发和维护过程遇到了一系列难以解决的严重问题,如软件价格高、难以控制开发进度、工作量估计困难、软件质量低、错误多、且修改和维护十分困难等等;针对这种所谓的“软件危机”现象,1968年在德国Gar mish召开的NATO(北大西洋公约组织)计算机科学会议上,F.Bauer首先提出“软件工程”概念,其目标是采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术和方法结合起来,从而解决或缓解软件危机。在另一方面,软件危机也促使人们深入探讨程序和程序开发过程的规律,建立严密的理论,以期能用来指导软件开发实践,从而促进了软件方法学特别是形式化方法的研究[1]。 软件工程与软件方法学二者密切相关,既有联系、又有区别,一方面它们研究的侧重点不同,软件工程研究侧重传统工程学科,最终目的是把软件生产变成一门制造工程,而研究软件方法学的目的是寻求科学方法的指导,把软件开发活动置于坚实的理论基础上。另一方面,它们之间又相互影响、相互渗透,软件工程需要方法学的依据和指导,而方法学也依赖软件工程特别是环境工具来发挥实际效用。三十多年来,人们不断从 收稿日期:2002-08-08 资助项目:国家自然科学基金(60073020);国家“十五”863高科技计划(2001AA113200);重庆市应用基础研究项目;中国科学院计算机科学国家重点实验室、运筹学与控制论市级重点实验室资助项目。 作者简介:张广泉(1965-),男,江苏连云港人,重庆师范学院数学与计算机科学系副教授,博士后。主要从事软件工程与形式化方法研究。

软件体系结构期末考试试题

软件体系结构-设计模式练习题1 1.面向对象分析与设计中的(1)是指一个模块在扩展性方面应该是开放的,而在更改性方面应该是封闭的;而(2)是指子类应当可以替换父类并出现在父类能够出现的任何地方。 (1) A.开闭原则 B.替换原则 C.依赖原则 D.单一职责原则 (2) A.开闭原则 B.替换原则 C.依赖原则 D.单一职责原则 2.(3)限制了创建类的实例数量,而(4)将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 (3) A.命令模式(Command)B.适配器模式(Adapter)C.策略模式(Strategy) D.单例模式(Singleton) (4) A.命令模式(Command) B.适配器模式(Adapter) C.策略模式(Strategy) D.单例模式(Singleton) 3. (5)设计模式允许一个对象在其内部状态改变时改变它的行为。下图为这种设计模式的类图,已知类State 为抽象类,则类(6)的实例代表了Context 对象的状态。 (5) A.单件(Singleton) B.桥接(Bridge) C.组合(Composite) D.状态(State) (6) A. Context B. ConcreteStateA C. Handle D. State

4.某公司欲开发一门户网站,将公司的各个分公司及办事处信息进行整合。现决定采用Composite设计模式来实现公司的组织结构关系,并设计了如下图所示的UML类图。图中与Composite模式中的“Component”角色相对应的类是(7) ,与“Composite”角色相对应的类是(8) 。 (7) A. Company B. FinanceDepartment C. HRDepartment D. ConcreteCompany (8) A. Company B. FinanceDepartment C. HRDepartment D. ConcreteCompany 5.某软件公司正在设计一个通用的嵌入式数据处理平台,需要支持多种数据处理芯片之间的数据传递与交换。该平台的核心功能之一要求能够屏蔽芯片之间的数据交互,使其耦合松散,并且可以独立改变芯片之间的交互过程。针对上述需求,采用(9)最为合适。 (9) A. 抽象工厂模式 B. 策略模式 C. 中介者模式D. 状态模式 6.某软件公司正在设计一个图像处理软件,该软件需要支持用户在图像处理中的撤销和重做等动作,为了实现该功能,采用(10)最为合适。 (10) A. 单例模式B. 命令模式 C. 访问者模式 D. 适配器模式 7.某互联网公司正在设计一套网络聊天系统,为了限制用户在使用该系统时发表不恰当言论,需要对聊天内容进行特定敏感词的过滤。针对上述功能需求,采用(11)能够灵活配置敏感 词的过滤过程。 (11) A. 责任链模式 B. 工厂模式 C. 组合模式 D. 装饰模式

相关主题
文本预览
相关文档 最新文档