摘要:
软件架构分析是90年代,在美国国防部的资助下,由美国软件工程研究所(SEI)开发的一种新的软件设计和质量分析方法,深受社会有关各方关注,极具发展潜力。本文扼要地介绍了软件架构分析方法发展概况。软件架构分析涉及若干新概念,涉及软件寿命周期全过程,无法在一篇短文中尽览全貌,有关的重要分析模型和分析方法,将在今后陆续介绍。
关键词:软件架构,软件质量,软件架构分析,‘想定’。
一、概述
从20世纪70年代至今,软件质量始终是计算机科学和软件工程界关注的热点。软件质量涉及软件整个生存期。从软件开发伊始,就应该对软件质量进行监控,早已成为软件工程界的共识。1972年Parrnas提出用模块化和隐蔽的信息实现系统高层分解,以改善系统的适应性和易理解性。1974年Steven et al. 提出模块耦合和内聚概念来分析、比较系统的结构,属于这方面开创性的工作。进入90年代,软件架构与软件质量的内在联系,受到越来越广泛的重视,随即开展了大量的研究工作,取得明显进展,2000年R.Kazman首次使用‘软件架构工程’的名词来强调这些工作的重要性和发展前景。‘软件架构分析’得到与软件有关的各界关注的原因在于,从开发过程来看,软件架构是软件最原始的产品,必然成为制约后继开发和整个软件系统质量的关键。在这个阶段介入,及早进行质量分析和风险控制,显然最具费用效益。
以开发软件CMM模型而知名的美国卡内基梅隆大学软件工程研究所(SEI),在开发和推动软件架构分析方面,再次发挥了关键作用。1993年该所Len Bass等提出了‘软件件架构分析方法’( Software Architecture Analysis Method - 简称SAAM ),成为本领域的先驱。美国国防部对软件架构分析方法高度重视,一直给予专项资金支持。软件架构分析的研究随即迅速扩展到美国软件工程界。
从90年代中期至今,涉及软件架构分析的方法,主要有下列8种
1、软件架构分析方法,简称SAAM (Software Architecture Analysis Method ),1993年由Len Bass和R. Kazman等人提出。
2、基于复杂概述的软件架构分析方法,简称SAAMCS ( SAAM Founded on Complex Scenarios ) 1999年由N.Lassing提出。
3、架构权衡分析方法,简称ATAM ( The Architecture Trade-Off Analysis Method ) 1998年由R.Kazman等人提出。
4、 软件架构评估模型,简称SAEM ( Software Architecture Evaluation Model ),1998年由J.C.Duenas等人提出。
5、基于想定的架构再工程,简称SBAR ( Scenario-Based Architecture Reengineering ) 1998年由P.O.Bengtsson等人提出。
6、综合域扩展软件架构分析方法、简称EASSMI ( Extending SAAM by Integration in the Domain ),1999年由G.Molter提出。
7、用于演变和重用的软件架构分析方法、简称SAAMER( Software Architecture Analysis Method for Evolution and Reusability) 1997年由C.Lung等人提出。
8、架构层软件维护预计法,简称ALPSM ( Architecture Level Prediction of Software Maintenance ) ,1999年由P.O.Bengtsson等人提出。
二、基本概念
软件架构分析,涉及若干没有公认定义的概念和术语,本文将引用一些学术刊物的资料,对这些基本概念作出解释。
1、软件架构
1)L. Bass和R. Kazman的定义
‘系统的结构,它包含软件部件、这些部件的外部可视特征,和它们之间的相互关系’。
这个定义主要着眼于系统的内部性态。多数软件架构分析方法,是以这个定义为基础的。
2)Garlan和Perry的定义
‘程序和系统中部件的结构,它们的相互关系以及控制设计、时间演变的原则和指南’。
这是一个以过程为中心的定义,SAEM以这个定为基础,这个定义在软件架构的描述中,涉及了原则和指南的作用。
3)软件架构的重要性
软件架构在软件开发中的作用体现在以下三方面。
(1) 软件架构是软件各相关方联系的载体。
软件开发涉及许多相关方(Stakeholder)。它们包括顾客、最终用户、项目管理人员、主程序员、编码员、测试员、维护人员等。各类人员从自己的视角,都有独特的见解和要求。一个高质量的软件,必须能够最大限度的满足这些不同的要求。软件架构是沟通各类人员的特殊载体,在各种要求通常存在矛盾的情况下,软件架构又成为协调和沟通各相关方的共同语言。
(2)软件架构代表了系统设计早期一系列重要决策。
首先,软件架构提供了各项功能要求、为各个部件的设计和其相互关系提供了必须遵守的约束。
其次:软件架构为设计工作和维护工作的组织、实施提供了依据。
第三:软件架构可以提出系统应该实现的质量目标。
第四:从软件架构可以预计系统的某些质量属性。
第五:软件架构为培训提供了基础。
第六:软件架构为软件产品维护阶段必要的变更提供分析根据。
(3)一个成熟的软件架构可以为今后开发类似的产品提供参照。
2、软件质量
按ISO 9000-2000的定义,质量是指‘一组固有特性满足要求的程度’。这仅是一个一般性的定义,没有解决软件质量的确切含义。要对软件质量作出定义,必须明确什么是软件的‘一组固有质量特性’。本文给出两个影响较大的解释。
1) McCall的定义:
McCall认为软件质量可从两个层次去分析,其上层是外部观察的特性,其下层是软件内在的特性,McCall定义软件外部质量特性有11个,称之为软件的质量要素,它们是:正确性、可靠性、效率、完整性、可使用性。可维护性、可测试性、灵活性、可移植性、重复使用性、连接性。McCall称软件的内部质量特征为软件的质量属性,共有23个,它们是:完备性、一致性。准确性。容错性。简单性。模块性、通用性、可扩充性、工具性、自描述性、执行效率、存储效率、存取控制、存取审查、可操作性、培训性、通信性、软件系统独立性、机器独立性、通信通用性、数据通用性、简明性。软的内部质量属性通过外部的质量要素反映出来,两类特性之间的关系可用图1表示。
2) IEEE Std 1062-1992附录A的解释(原件中说明:仅作为信息引用)
该附录将软件的质量要素分为两个层次,第一层要素共6个,它们是:效率、功能性、维护性、可移植性、可靠性、可使用性。第二层子要素共21个,它们是时间经济性、资源经济性、完全性、正确性、安全性、兼容性、互用性、可改正性、可扩充性、可测试性、硬件独立性、软件独立性、可安装性、可重用性、无缺陷性、容错性、可用性、可理解性、易学习性、可操作性、易沟通性。
这两个层次要素之间的关系是:
效率:包括时间经济性和资源经济性。
功能性:包括完全性、正确性、安全性、兼容性、互用性。
维护性包括:可改正性、可扩充性、可测试性。
可移植性:包括硬件独立性、软件独立性、可安装性、可重用性。
可靠性:包括无缺陷性、容错性、可用性。
可使用性:包括可理解性、易学习性、可操作性、易沟通性。
3、‘想定’( Scenario )
按照R.Kazmam的解释,‘想定’( Scenario )是指‘用户和开发者和其它相关方对系统应用的期望和不期望的简明描述。这些期望和不期望反映的观点,代表了有关各方对系统质量属性的要求’。一个‘想定’反映了一个终端用户或相关方和系统之间的相互作用和要求。
在软件架构分析中‘想定’具有重要作用,它为架构设计和分析提供依据,是架构分析的基础。想定的作用表现在以下几个方面;
首先:‘想定’可以覆盖系统的若干需求,并使抽象的需求可操作化。
其次:在系统开发的早期,‘想定’可以用来构造软件架构的雏形。
第三:‘想定’可以指导从软件架构到系统实际建造的过渡。
第四:‘想定’在系统建造过程中,可用来控制系统风险和实现追求的质量目标。
第五: 在系统的生存期,软件架构可能需要变动,‘想定’成为分析变动的必要性和评估更新架构合理性的基础。
第六:‘想定’提供了对需求更深刻的理解,帮助用户认识软件产品,便于作出采购决策。帮助完善软件文档,在软件架构层次实现软件的可跟踪性。
‘想定’分为直接想定和间接想定两类。
‘直接想定’从设计系统架构直到系统建造时使用,它代表系统的外部的视角和观点。具体的说,直接想定是由系统接收的外部激励,对激励的处理和最终实现而导出的。
‘间接想定’代表的是对现成架构的改变,例如将系统移植到新的硬件或软件平台,增加新的特性,与新软件的某些部分综合等。
三、软件架构分析评估技术方法分类
软件架构评估技术包括提问法和度量法两类。
提问法针对软件架构提出若干关注的问题,是一种定性分析方法,可以用来分析任何质量属性。提问法包括‘想定’,‘问卷表’和‘检查表’三种形式。
度量法对软件架构作出定量的度量,应用范围没有提问法广泛,它们只能用于特定的领域,回答特定的问题。度量法包括度量、模拟、原型和试验。
表1是各种评估技术特点比较,表格中的阶段一栏是指架构设计的阶段,不是软件开发的阶段。
表 1 :软件架构分析评估技术特点比较
评审方法
|
通用性
|
详细程度
|
阶段
|
评估内容
|
问卷表
|
通用
|
粗糙
|
早期
|
架构特性,
过程
|
检查表
|
特定领域
|
可变化
|
中期
|
架构特性,
过程
|
想定
|
特定系统
|
中等
|
中期
|
架构特性
|
度量
|
通用,
特定领域
|
细致
|
中期
|
架构特性
|
原型,
模拟,
试验
|
特定领域
|
可变化
|
早期
|
架构特性
|
四、软件架构分析方法比较
进行软件架构分析,需要了解各种分析方法的特点,便于比较选择。各种方法的比较通常可以从下列7个方面展开。这个方面是:方法的评估技术、方法关注的质量属性、方法涉及的相关方、方法的实施阶段、停止产生想定的时间、想定对评估的影响,现存知识的可重用性。表2和表3 概括了这7个方面的比较结果。
表2各种分析方法比较
方法名称
比较内容
|
SAAM
|
SAAMCS
|
ESAAMI
|
SAAMER
|
评估技术
|
‘想定’
|
‘想定’
|
‘想定’
|
‘想定’
|
质量属性
|
可更改性
|
灵活性
|
与SAAM类似
|
演变和重用
|
涉及相关方
|
全部
|
全部
|
全部
|
全部
|
SA设计阶段
|
SA最终版本
|
SA最终版本
|
SA最终版本
|
SA最终版本
|
何时停止生成‘想定’
|
如果附加新的‘想定’不再扰动设计
|
定义一个框架,借以发现全部复杂的‘想定‘
|
与SAAM同,但是也要考虑主要的‘想定‘
|
使用一个实用的两步程序
|
‘想定’对评估的影响
|
直接关联
|
直接关联,所有者,版本
|
与SAAM同
|
估计变动需要的费用
|
现有知识的可重用性
|
不考虑
|
不考虑
|
分析模板和可重用SA
|
不考虑
|
表3各种分析方法比较(续)
方法名称
比较内容
|
ATAM
|
SBAR
|
ALPSM
|
SAEM
|
评估技术
|
综合提问和度量技术
|
取决于属性:
‘想定‘、数学模型、模拟
|
‘想定’
|
度量、
|
质量属性
|
多质量属性
|
多质量属性
|
可更改性
|
质量模型
|
涉及相关方
|
全部或仅对设计者
|
设计者
|
设计者
|
无关
|
SA设计阶段
|
最终版本或反复改进过程
|
与SA设计综合进入过程改进和再工程
|
设计阶段用于预计适应性和完善性维护。
|
SA的最终版本
|
何时停止生成‘想定’
|
使用特定的标准质量属性问题
|
定义完全的或代表性的‘想定’集合
|
对期望的维护任务定义一套‘想定’
|
无关
|
‘想定’对评估的影响
|
与SAAM类似
|
优化或完成
|
估计所影响的部件规模和程度
|
无关
|
现有知识的可重用性
|
一套预封装的,有已知解决方法的分析和问题
|
不考虑
|
不考虑
|
无关
|
五、软件架构分析的应用及展望
从90年代中期开始,美国软件工程研究所投入了大量的资源用于软件架构分析的研究,进入21世纪,在该所软件架构分析已经成为与CMM模型并列的一个热门课题。在SEI的带动下,美国的软件工程界同样表现出极大的兴趣,根据资料报道,软件架构分析已经进入了工程应用阶段。仅以SEI的报道为例,1999年,该所用架构分析方法分析了网络代理服务器系统软件,2000年分析了住宅综合电子系统软件、地基指挥控制系统软件,2001年分析了汽车发动机系统软件、企业信息安全系统软件、国家综合测试机构Wargame软件,2003年分析了VANISH软件。
值得注意的是,美国国防部对软件架构分析方法给予的关注,所有有关软件架构分析的基础研究都是在国防部资助下进行。此外在90年代末期,美国国防部提出了研究在装备采办中使用软件架构分析方法的要求。SEI已经完成了三个子课题,它们是1999年完成的‘设备采购中架构分析的应用’,2000年完成的、‘主要系统采办中的架构分析’,2001年完成的‘软件密集系统采办中架构分析的应用’。在涉及与软件有关的装备采办中,架构分析将逐渐成为美国国防部采办活动的一个必要组成部分。
在本文结束时,还需要指出,软件架构分析方法的研究仍有待继续开展,还有若干重要问题需要继续解决。例如本领域涉及的名词术语,很不规范,一个明显的例子是SEI资料中常使用的名词、‘可更改性(Modifiability)’和软件工程中惯用的名词,‘可维护性(Maintenability)’,‘灵活性(Flexibility)’,含义非常接近。此外,在各种架构分析方法大量涌现的同时,怎样将相似的方法综合,使其发挥更大的效能;怎样规范各种分析方法的分析步骤;怎样利用现有的知识和经验,选择‘想定’;进一步研究软件质量预计模型对输入参量的灵敏度等。
主要参考资料来源:
http://www.sei.cmu.edu
分享到:
相关推荐
在IT行业中,软件架构是构建复杂系统的基础,它关乎到软件设计的质量、可维护性、扩展性和性能。本文将深入探讨“软件架构之道”,解析架构思维、架构的本质、思维方法、常见误区、核心理念以及修炼方法,以期帮助...
1. **软件架构的重要性**:介绍软件架构在现代软件开发中的地位和作用,强调其对于构建高质量软件系统的必要性。 2. **架构模式与原则**:讨论常见的软件架构模式及其应用,比如分层架构、微服务架构等,并介绍设计...
- **第8章:软件质量保证** —— 介绍确保软件质量的策略和方法。 - **第9章:软件配置管理** —— 讨论软件配置管理的基本概念和技术。 - **第三部分:传统软件工程方法** - **第10章:系统工程** —— 系统...
DSSA(特定领域软件架构)是一种针对特定问题领域的软件架构设计方法,旨在支持一个产品家族的应用开发。在本文中,作者在负责的国网电力用户用电信息采集系统项目中采用了DSSA技术,这表明DSSA在电力行业的信息系统...
分析与设计概念则着重于软件功能、性能和架构的定义与设计;测试技术涵盖单元测试、集成测试、系统测试和验收测试等多种手段,以确保软件质量。 ### 面向对象的软件工程 随着面向对象编程的兴起,面向对象的软件...
这份文档由李焕然和陈海玲编著,旨在阐述软件的设计思路、技术架构以及实现策略,确保软件在开发过程中遵循良好的工程实践,以满足用户对美食点单平台的高效、稳定、易用的需求。 1. 引言部分(1-1.6) 引言部分...
《系统架构设计师教程》是一本深入探讨系统架构设计与需求分析的专业资料,它涵盖了系统架构设计的核心概念、方法和...通过学习这本书,你可以掌握一套完整的需求分析方法,为构建高质量、高效能的系统奠定坚实基础。
《东北大学软件需求分析与设计PPT》是针对软件工程领域中的一个重要环节——软件需求分析与设计进行深入讲解的教学资料,出自东北大学软件学院。在软件开发过程中,需求分析与设计是基石,决定了项目的成功与否。这...
- **第4章:软件过程和项目的度量** —— 讨论了如何通过度量来评估软件项目的进展和质量。 - **第5章:软件项目计划** —— 阐述了制定软件项目计划的方法和技术。 - **第6章:风险管理** —— 分析了软件项目中...