欢迎来到天天文库
浏览记录
ID:38816047
大小:297.50 KB
页数:45页
时间:2019-06-19
《第一章UML与设计模式》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、软件体系结构建模——UML与设计模式前言:什么是软件体系结构?从“体系结构”的英文单词理解它的含义architecture(建筑、建筑学)是最古老的艺术之一,也是一门最古老的工程学科,它研究建筑的风格、建筑的组成元素、这些元素的组织结构以及之间的相互关系。同样,体系结构研究和描述系统元素的结构规划,包括它们如何互相适应、如何协作,以满足系统的需求。很难给出软件体系结构的定义,因为不能描述出,对于不同领域和不同规模的系统,哪些设计细节是重要的。2.软件体系结构在软件开发中的地位体系结构连接了系统需
2、求和实现,它处在领域分析、需求分析、风险分析之后,而在详细设计、编码、集成和测试之前。通过对一大批软件产品开发的观察,得出结论,一个产品是否成功,一个重要因素是,是否拥有能被投资者和开发小组成员很好理解的(在适当细节层次上)、好的软件体系结构。尽管拥有一个好的体系结构并不能保证产品符合需求,但设计不当的或者定义错误的体系结构是绝对不能使产品满足需求的。3.软件体系结构的特点软件体系结构是指一个系统的有目的的设计和规划,这个设计规划既不描述活动,也不描述如何开发产品,它只描述系统的组成元素及其相互的
3、交互、协作。软件的不可见性容易导致软件体系结构的隐含性,于是很多人不重视软件体系结构,很少有软件专业人员认真评价软件体系结构的健壮性和质量。软件体系结构是一种帮助管理复杂性的抽象化的工具,所以,它应该以相对较粗的粒度定义并描述系统元素,应该描述元素如何满足系统需求,包括哪些元素为哪些功能负责、它们之间如何交互、它们与外界如何交互以及对运行平台的依赖性。通过对大量软件项目的体系结构的研究,发现它们有着一些共性和规则,这就是:包含截然不同的视图。有的专家把这些视图归纳为概念视图、模块视图、执行视图和代
4、码视图。概念视图和应用领域的联系最为紧密,在概念视图中,问题和解决方案主要是通过领域术语来考虑的。模块视图中,系统被划分为子系统和模块,强调的是如何用现有的软件平台以及技术来实现概念视图中的解决方案。执行视图中,模块被映射为运行时平台所提供的元素,比如内存的使用和硬件的分配,强调的是运行平台的控制流。代码视图中,要决定执行视图中的运行实体如何映射为部署构件(例如,可执行构件),要决定模块视图中的模块如何映射为源文件。执行视图和代码视图之间有一个松散的连接,一个执行视图中的运行时刻实体在代码视图中通
5、常有一个对应的文件,但并不是任何一个运行时刻实体都有对应文件,例如线程。一个软件体系结构的架构过程中,尽管架构师没有明确地把体系结构视为不同的视图,但实际上他已经使用了这些视图。使用这些视图的原因是:把系统分解为不同的视图,可以帮助人们管理复杂的系统。因此,在我们的开发实践中,有意识地、按顺序地运用这些视图,可以帮助我们有条不紊地组织开发过程。以上视图的划分方法适合应用于大型企业信息系统的体系结构架构过程。从我们的主要需要出发,我们将使用一种简化了的视图划分方法,既只把体系结构划分为概念领域和系统
6、领域两种视图,我们以后的开发实例将按照这两种领域的顺序来建立体系结构。4.相关术语软件体系结构风格(例如管道、过滤器)设计模式:设计模式有时和体系结构相关,有时和详细设计相关,区别的方法是看它是描述体系结构元素之间的交互,还是描述体系结构元素内部的结构与交互。软件体系结构描述语言ADL(例如UML)第一部分UML及其应用实例第一章UML简介在本章中,你将学习如下内容:为什么需要UML?UML的诞生。各种UML图。为什么使用UML提供的不同类型的图对我们来说很重要?UML(UnifiedModeli
7、ngLanguage,统一建模语言)是一种可视化的建模语言,它能让系统构造者用标准的、易于理解的方式建立起能够表达出他们想象力的系统蓝图,并且提供了便于不同的人之间有效地共享和交流设计结果的机制。交流思想是极为重要的。在UML出现以前,系统开发往往是无计划的议题。系统分析员尽力去获取客户的需求,用某种他自己能够理解(但客户不一定总能理解)的表示法来产生需求分析文档,然后将这个分析转交给—个程序员或者一个程序员小组,并且期待着最后所开发出的系统正是客户所需要的。由于系统开发是—项人力活动,因此在开发
8、过程的每个阶段中都很可能潜伏着错误。系统分析员可能没有正确理解客户的需求。他编制的文档存户可能不能理解。系统分析的结果对程序员来说可能很不明确,随后程序员据此构造出的程序很可能不仅难以使用而且根本不是客户所需要的最初问题的解决方案。1.1在纷繁复杂中寻求解决问题的办法在计算机时代的早期,程序员们在编制程序之前几乎很少对手头问题进行详细的分析。通常他们一开始就自底向上地编写程序,随着时间的进展代码不断扩充。在今天这样一个高商业风险的社会里,这样做被证明是不适当的。随着世界变得越来越复
此文档下载收益归作者所有