1、2020/2/6,成都信息工程学院,1,我国伟大的教育家、思想家 陶行知,提出了“生活即教育”、“社会即学校”、“教学做合一”三大教育主张。 “千教万教教人求真,千学万学学做真人” “有其内必形诸外” “勿以恶小而为之,勿以善小而不为”,2020/2/6,成都信息工程学院,2,什么是“工程”?,定义有很多,通常来说:用最少的代价解决问题 . 目的是处理实际的难题 . 以科学知识为手段 . 建造工具 . 服务于人类 目标:使普通人能做以前只有 专家圣手才能做的事情,2020/2/6,成都信息工程学院,3,工程的进化,2020/2/6,成都信息工程学院,4,工程化的步伐,2020/2/6,成都信息
2、工程学院,5,规范化循环,专门的解决方法,土方法,规范化,模型与理论,新的问题,实践提高,2020/2/6,成都信息工程学院,6,2.2从需求定义到软件体系结构,2020/2/6,成都信息工程学院,7,软件设计的目标和目的,软件需求:解决“做什么”软件设计:解决“怎么做”软件结构设计的任务问题结构(软件需求) 软件结构,映射,2020/2/6,成都信息工程学院,8,2.2.1 什么叫软件的体系结构,软件体系结构,又常被称为构架。 “软件体系结构”你早就知道 Client/Server Three-tier P2P Distributed ,2020/2/6,成都信息工程学院,9,“建筑体系结构
3、”,2020/2/6,成都信息工程学院,10,“建筑体系结构”,2020/2/6,成都信息工程学院,11,SA的定义,后人精简Garlan and Shaw的定义为: 体系结构 = 组件 + 连接件 + 约束 Architecture = Components + Connectors + Constrains,2020/2/6,成都信息工程学院,12,SA之重要,最早指出SA的重要性的是大师Edsger Dijkstra(1930-2002) “the larger the project, the more essential the structuring!”(1968),http:/w
4、ww.cs.utexas.edu/users/EWD/ http:/www.cs.utexas.edu/users/EWD/ewd01xx/EWD196.PDF,2020/2/6,成都信息工程学院,13,程序=?,程序 = 算法 + 数据结构(1960s ) 程序 = 子程序 + 子程序(1970s ) 对象 = 算法 + 数据结构 程序 = 对象 + 对象(1980s) 程序 = 组件 + 连接件(1990s),2020/2/6,成都信息工程学院,14,SA发展,1980s 使用非正式的框图 依靠专家的特定经验 不规范、多样地使用体系结构模式和风格 1990s 认识到了体系结构的价值 开发过
5、程中要求体系结构文档,并开始体系结构评审 产品化、商业化的体系结构标准和组件集成框架开始出现 规范化体系结构设计中的词汇、符号和工具 软件体系结构的书籍和课程 2000s ?,2020/2/6,成都信息工程学院,15,技术进步,每个新的体系结构的诞生,都给技术的进步带来深远影响 WWW 三层结构 CORBA J2EE .NET,2020/2/6,成都信息工程学院,16,什么是软件体系结构,软件体系结构定义了软件局部和总体计算部件的构成,以及这些部件之间的相互作用关系。,2020/2/6,成都信息工程学院,17,架构不是框框应用架构的基本思想,一个架构是一个可复用的设计构件,它规定了应用的体系结
6、构,阐明了整个设计、协作构件之间的依赖关系、责任分配和控制流程。,2020/2/6,成都信息工程学院,18,软件的总体结构主要回答的问题,软件的组成部分 软件的层次关系 模块的内部处理逻辑 模块之间的界面,软件体系结构,软件体系结构包括两部分: (1)过程构件(模块)的层次结构 (2)数据构件,2020/2/6,成都信息工程学院,20,软件体系结构学习主要内容,软件体系结构的有关概念 软件体系结构的层次性 软件体系结构的设计原理,2020/2/6,成都信息工程学院,21,普通部件及其支持的相互作用,2020/2/6,成都信息工程学院,22,软件体系结构可分为四种不同的体系: 概念结构包括部件、
7、互连、原则和性能等 代码结构包括软件的配置管理、系统建造等 模块结构包括模块界面、模块管理、模块控制和一致性等 执行结构包括性能分析、调度分析、动态配置和不同的执行系统之间的接口等,2020/2/6,成都信息工程学院,23,与软件体系结构有关的研究: 体系结构风格(Architecture Styles)表示软件系统的一种特别的基本结构,以及相关的构造方法 设计模式(Design Patterns)构造型模式、结构型模式、行为型模式 框架(Framework)另一种研究和构造软件体系结构的方法,更多的是关于应用领域问题的已建立的系统结构。,2020/2/6,成都信息工程学院,24,好的体系结构
8、,与大多数好的设计一样 是一系列相容的原理和技术的产物,在项目的各个阶段保持一致 在各种变化面前表现出弹性 在产品的整个生命周期中充当向导 重用成熟的工程知识,除了构件,连接件和约束3个最基本的组成元素,软件体系结构还包括端口(port)和角色(role)两种元素。 构件的接口由一组端口组成,每个端口表示了构件和外部环境的交互点。连接件作为建模软件体系结构的主要实体,同样也有接口。连接件的接口由一组角色组成,连接的每个角色定义了该连接表示的交互的参与者。,2020/2/6,成都信息工程学院,26,为什么要进行体系结构开发?,领域内的软件结构一致性好; 建立更加开放的系统; 重用代码大大增加;
9、软件设计人员要专注于对领域的了解,使需求分析更充分; 存储了经验; 允许采用快速原型技术; 有利于在一个项目内多人协同工作; 大粒度的重用使得平均开发费用降低;,2020/2/6,成都信息工程学院,27,好的开始相当于成功一半 设计模式是支撑架构的重要组件 架构设计是骨架,设计模式就是肉 时刻牢记架构设计的目标 1. 最大化的重用: 2. 尽可能的简单明了: 3. 最灵活的拓展性:,框架和设计模式,构件通常是代码重用,而设计模式是设计重用,框架则介于两者之间,部分代码重用,部分设计重用,有时分析也可重用。 有三种级别的重用: (1)内部重用,即在同一应用中能公共使用的抽象块; (2)代码重用,
10、即将通用模块组合成库或工具集,以便在多个应用和领域都能使用; (3)应用框架的重用,即为专用领域提供通用的或现成的基础结构,以获得最高级别的重用性。,设计模式是对在某种环境中反复出现的问题以及解决该问题的方案的描述,它比框架更抽象; 架构可以用代码表示,也能直接执行或复用,而对模式而言只有实例才能用代码表示; 设计模式是比架构更小的元素,一个架构中往往含有一个或多个设计模式,架构总是针对某一特定应用领域,但同一模式却可适用于各种应用。,2020/2/6,成都信息工程学院,30,成功的架构开发需要确定领域专用的“热点” (Hot spot)。应用开发者在框架的基础上进行开发,只须扩展架构的某些部
11、分,“热点”就是在应用领域的一种扩展槽,开发者根据自己的需要填充这些扩展槽 “食谱” (Cookbook)就是描述如何使用架构方法的文档。在“食谱”中包含了许多“烹饪”方法,这些“烹饪”方法相当于一些具体的操作步骤,描述了为解决某一专门问题如何使用架构的详细方法。架构的内部设计和实现细节通常不出现在“食谱”中。,2020/2/6,成都信息工程学院,31,2.3 软件体系结构的风格,软件体系结构风格主要分为两类。 固定术语类:包括全局组织结构,如分层系统,管道过滤器系统,客户/服务系统,黑板系统等,还包括局部化的模式,如模型视图控制等其他面向对象开发的模式。全局化的模式是在软件全局上提供设计方式
12、;而局部化的模式则侧重于软件系统的一小部分,是针对特定问题提供解决方案。,2020/2/6,成都信息工程学院,32, 参数化模型类:这一类别的风格包括对特定应用领域的特定系统组织,它指定了构件及其交互的配置,如词法分析器,类型分析器,优化器和代码生产器,还有一些参考模型,如人机交互框架,通信参考模型,以及在航空、移动机器人等领域的大量特定领域方法。,2020/2/6,成都信息工程学院,33,体系结构风格的最关键四个要素,提供一个设计的词汇表 定义一套配置规则 定义一套解释原则 定义基于这种风格的系统所进行的分析。,2020/2/6,成都信息工程学院,34,2.3.2 常用的软件体系结构风格,1
13、、 管道和过滤器风格 在管道/过滤器风格的软件体系结构中,每个构件都有一组输入和输出,构件读输入的数据流,经过内部处理,然后产生输出数据流。,2020/2/6,成都信息工程学院,36,Three Examples of Data Flow,Batch Sequential(批处理) Pipe-and-Filter(管道) Process Control(控制),2020/2/6,成都信息工程学院,37,Patterns of Data Flow in Systems,2020/2/6,成都信息工程学院,38,Control Flow vs. Data Flow,Control Flow (ty
14、pical case in procedural systems) 主要问题是控制点怎样在程序或系统之间移动 数据可能跟着控制走,但是并不起推动系统运转的作用 关注的核心是计算顺序,2020/2/6,成都信息工程学院,39,Open Loop Control(开环控制),2020/2/6,成都信息工程学院,40,Closed Loop Control(闭环控制),2020/2/6,成都信息工程学院,41,2、仓库风格和黑板风格,仓库(Repositories)风格的体系结构有两种不同的构件组成: (1)中央数据结构,它说明当前状态; (2)独立构件的集合,它对中央数据结构进行操作。,2020/
15、2/6,成都信息工程学院,42,对于系统中数据和状态的控制方法有两种。 (1)输入事务选择进行某种处理,并把执行结果作为当前状态存储到中央数据结构中,这时,仓库是一个传统的数据库体系结构 (2)另一种方法是,由中央数据结构的当前状态决定进行某种处理,这时,仓库是一个黑(blackboard)体系结构。,2020/2/6,成都信息工程学院,43,2020/2/6,成都信息工程学院,44,Where are we?,2020/2/6,成都信息工程学院,45,Example:The Puzzle Metaphor,2020/2/6,成都信息工程学院,46,Example:The Puzzle Met
16、aphor,Data within the blackboard is often structured hierarchically,2020/2/6,成都信息工程学院,47,仓库和黑板,仓库在计算机应用中几乎无处不在 信息共享系统在很多领域有相似的发展趋势,因为有相似的技术和商业压力的激励 黑板是一种特别的仓库,主要用于需要对凌乱的信息进行处理的领域,其控制策略必须是机会主义的,2020/2/6,成都信息工程学院,48,3、数据抽象和面向对象风格,面向对象的风格主要是利用对象的3个特性,即封装特性、继承和多态特性,建立构件对象。对象是一种被称作管理者的构件,因为它负责保持资源的完整性。对象
17、是通过函数和过程的调用来交互的。,Data Abstraction or Object-Oriented,2020/2/6,成都信息工程学院,52,4、客户/服务器风格(C/S结构),三部分组成:中心服务数据系统,客户应用程序和网络。客户端通过网络直接连接到数据库服务器,由二者分担业务处理。,2020/2/6,成都信息工程学院,53,客户机/服务器体系结构,应用系统的组成: 显示逻辑部分(表示层):实现与用户交互 应用处理部分(功能层):进行具体运算和数据处理 数据管理部分(数据层):对数据库中数据进行查询、修改、更新等任务,应用分层,表示层,功能层,数据层,三层明确分割, 逻辑上独立,202
18、0/2/6,成都信息工程学院,54,2020/2/6,成都信息工程学院,55,瘦客户机和胖客户机,客户机,“胖” 客户机,应用 处理 逻辑,显 示 逻 辑,服务器,数据 管理 逻辑,数据库,“瘦” 客户机,表示,显 示 逻 辑,数据 管理 逻辑,数据库,表示 应用处理,应用 处理 逻辑,客户机,服务器,2020/2/6,成都信息工程学院,56,三层C/S的基本硬件结构,将三层功能装载到硬件的三种基本方法,表示层,表示层,表示层,功能层,数据层,数据层,功能层,功能层,数据层,客 户 机,服 务 器,(1)将数据层和功能层放在一台服务器上,(2)将数据层和功能层放在不同服务器上,服 务 器,(3
19、)将功能层放在客户机上,2020/2/6,成都信息工程学院,57,5、浏览器/服务器风格(B/S结构),具体结构为:浏览器/Web服务器/数据库服务器。B/S体系结构主要是利用不断成熟的WWW浏览技术,结合浏览器的多种脚本语言,用通用浏览器实现原来需要复杂的专用软件才能实现的功能。,2020/2/6,成都信息工程学院,58,2020/2/6,成都信息工程学院,59,2020/2/6,成都信息工程学院,60,6、分层系统风格,分层(layered)系统组织成一个层次结构,每一层为上层服务,并作为下层客户。在一些层次系统中,除了一些精心挑选的输出函数外,内部的层次对相邻的层可见。 这种风格支持基于
20、可增加抽象层的设计。这样,允许将一个复杂问题分解成一个增量步骤序列的实现。由于每一层最多只影响两层,同时只要给相邻层提供相同的接口。,2020/2/6,成都信息工程学院,61,2020/2/6,成都信息工程学院,62,2020/2/6,成都信息工程学院,63,典型的B/S结构(三层),数据库,2020/2/6,成都信息工程学院,64,典型的三层C/S结构,数据库,2020/2/6,成都信息工程学院,65,结合三层C/S的B/S结构(四层),数据库,2020/2/6,成都信息工程学院,66,层次模型的结构关系,客户,层N,层N-1,层1,使用,抽象的最高层,抽象的最低层,2020/2/6,成都信
21、息工程学院,67,多层数据库应用的结构,数据库,2020/2/6,成都信息工程学院,68,一个典型的 DNA 应用,COM+,表 示 层,ADO,OLE DB,COM+,SQL,Cache,Web,Win32,COM+,数 据 层,业 务 层,2020/2/6,成都信息工程学院,69,一个典型的CORBA应用,网络,CORBA Server Object,ORB,Services,CORBA Client,Database,2020/2/6,成都信息工程学院,70,一个典型的EJB应用,EJB Container,Entity Bean,Database,Entity Bean,Session
22、 Bean,Session Bean,Client,2020/2/6,成都信息工程学院,71,面向电子商务的应用体系结构图,网络平台,以有应用系统,数据库,中间件基础设施 J2EE/CORBA/COM+传统中间件,操作系统,B2B集成平台,应用集成平台,应用系统,工作流,2020/2/6,成都信息工程学院,72,o5,S(o5),o6,S(o6),分布式对象体系结构,o1,S(o1),o2,S(o2),o3,S(o3),o4,S(o4),基本系统组件是对象,提供一组服务,对外给出服务的接口对象之间不存在客户机与服务器的界限,接受服务者扮演客户机角色,提供服务者就是服务器对象可能分布在网络的多台
23、计算机上,通过中间件相互通信,软件总线 (中间件),2020/2/6,成都信息工程学院,73,某制造企业的架构,用户界面,销 售 公 司,子 系 统,生 产 计 划 部,生 产 设 备 处,采 购,财 务 处,人 事 处,劳 资 处,专 卖 处,科 技 处,仓 库,办 公 室,市 场 部,DDL,专用 构件库,采 购 管 理,分 析 对 比,财 务 管 理,销 售 管 理,计 划 管 理,汇 总 执 行,文 档 审 计,文 档 批 阅,特 权 管 理,文 档 转 发,MIS通用构件库,查 询,统 计,计 帐,报 表,计 划,OA构件库,录 入,通 信,维护构件库,归 档,恢 复,转 储,基本构
24、件库,ODBC,应用数据库,运行和维护平台,UNIX,Window NT,TCP/IP,ORACLE,2020/2/6,成都信息工程学院,74,领域框架示例之一:政府招商引资,招商服务相关单位,招商引资,工商 管理,财政 结算,税务 管理,电子 银行,信息 发布,统计 分析,咨询 服务,业务 受理,业 务 预 审,流 程 定 制,业 务 流 转,投 资 咨 询,网 上 洽 谈,投 诉 受 理,政 策 法 规,办 事 流 程,招 商 简 报,2020/2/6,成都信息工程学院,75,领域框架示例之二:统计局,信息 输入,系统 管理,统计 查询,数据 收集,数据 上报,统计局综 合信息库,数据接口
25、,基础 数据库,综合 信息库,统计局综合管理系统,政 府 信 息 资 源 库,2020/2/6,成都信息工程学院,76,MIS的构件提取的案例,在不同行业的仓库物流模型寻找共性,进行模式复用,2020/2/6,成都信息工程学院,77,采购,MIS的构件提取的案例,物资库,供应商,原料库,物资,物流模型的构件提取,仓库 管理,顾客,仓库 管理,销售,物资,物资,物资,物资,物资,采购和销售的仓库物流模型 在MIS领域中模式复用 可作为MIS通用构件库的高级构件,2020/2/6,成都信息工程学院,78,MIS的构件提取的案例,再一次模式复用,所有处理过程的基本IPO(Input,Process,
26、Output)模式 可作为基本构件库的高级构件或标准,来检验所有MIS系统或非MIS系统中处理过程是否全面包括输入、输出和处理三部分。,2020/2/6,成都信息工程学院,79,使用SOAP的应用结构,2020/2/6,成都信息工程学院,80,层次风格特点,每层为上一层提供服务,使用下一层的服务,只能见到与自己邻接的层 适当时候(必不得已的时候),可以允许一定的越层操作 大的问题分解为若干个渐进的小问题,逐步解决,隐藏了很多复杂度 修改一层,最多影响两层,而通常只能影响上层。接口稳固,则谁都不影响,2020/2/6,成都信息工程学院,81, 使用层,不需要去了解层的实现细节 可以使用另一种技术
27、来改变基础的层,而不会影响上面的层的应用。 可以减少不同层之间的依赖。 容易制定出层标准。 底下的层可以用来建立顶上的层的多项服务。 层不可能封装所有的功能,一旦有功能变动,势必要波及所有的层。 效率降低。,2020/2/6,成都信息工程学院,82,7、基于事件的隐式调用风格,基于事件的隐式调用风格的思想是构件不直接调用一个过程,而是触发或广播一个或多个事件。系统中的其它构件可以把某一过程注册为与它所关心的事件相关联。当一个事件被触发时,系统自动调用在这个事件中注册的过程,这样,一个事件的触发就导致了另一模块中的过程的调用。,2020/2/6,成都信息工程学院,83,从体系结构上说,这种风格的
28、构件是一些模块,这些模块既可以是一些过程,又可以是一些事件的集合。过程可以用通用的方式调用,也可以在系统事件中注册一些过程,当发生这些事件时,过程被调用。,2020/2/6,成都信息工程学院,84,基于事件的隐式调用风格的主要特点是事件的触发者并不知道哪些构件会被这些事件影响。这样不能假定构件的处理顺序,甚至不知道哪些过程会被调用,因此,许多隐式调用的系统也包含显式调用作为构件相互的补充形式,2020/2/6,成都信息工程学院,85,8、模型视图控制器风格,MVC模式把涉及数据管理和显示的功能分散到不同的对象上,降低对象间的耦合。MVC是一个设计模式,它强制性地使应用程序的输入、处理和输出分开
29、。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务,并且尽量降低部分间的耦合。每一部分处理特定的任务,并负责完成与其它部分的通信。,2020/2/6,成都信息工程学院,86,MVC,2020/2/6,成都信息工程学院,87,2020/2/6,成都信息工程学院,88,2020/2/6,成都信息工程学院,89,MVC实现示意图,2020/2/6,成都信息工程学院,90,客户端从发出请求到获得响应整个过程的图解说明,2020/2/6,成都信息工程学院,92,J2EE 平台提供了以上四大技术,2020/2/6,成都信息工程学院,93,表示个JSF程序中JSF技术组成,2
30、020/2/6,成都信息工程学院,94,MVC的优点:, 各施其职,互不干涉 有利于开发中的分工 有利于组件的重用,2020/2/6,成都信息工程学院,95,MVC的缺点有:, MVC的缺点是由于它没有明确的定义,所以完全理解MVC并不是很容易。 如何将MVC运用到应用程序中没有准确的解决方案,需要设计者认真考虑。 由于将一个应用程序分成了三个部件,所以使用MVC同时也意味着你将要管理比以前更多的文件,意味着代码文件增多,因此,对于文件的管理需要费点心思,开发的工作量也要增加了。 模型和视图的严格分离可能使得调试困难一些,但比较容易发现错误。,2020/2/6,成都信息工程学院,96,9、C2
31、风格,C2体系结构风格可以概括为:通过连接件绑定在一起的按照一组规则运作的并行构件网络。,2020/2/6,成都信息工程学院,97,C2风格中的系统组织规则, 系统中的构件和连接件都有一个顶部和一个底部; 构件的顶部应连接到某连接件的底部,构件的底部则应连接到某连接件的顶部,而构件与构件之间的直接连接是不允许的; 一个连接件可以和任意数目的其它构件和连接件连接; 当两个连接件进行直接连接时,必须由其中一个的底部到另一个的顶部,2020/2/6,成都信息工程学院,98,C2风格具有以下特点, 系统中的构件可实现应用需求,并能将任意复杂度的功能封装在一起; 所有构件之间的通讯是通过以连接件为中介的
32、异步消息交换机制来实现的; 构件相对独立,构件之间依赖性较少。系统中不存在某些构件将在同一地址空间内执行,或某些构件共享特定控制线程之类的相关性假设。,2020/2/6,成都信息工程学院,99,对等网(P2P),2020/2/6,成都信息工程学院,100,P2P特点,整体稳定,不会因为一点的错误影响全局 资源共享,任务分摊 架构1 两点之间可能不通 某些情况可以从其他点获得同样的资源 架构2 两点之间可以寻求多种路径互通 每点还要承担一定量(很可能大量)的中转负荷 容易产生泛洪现象,浪费带宽,2020/2/6,成都信息工程学院,101,P2P面临的人文问题,P2P的内容很难有效控制,所以成为有
33、害信息的温床 “我为人人,人人为我” 真的很难做到,2020/2/6,成都信息工程学院,102,软件体系结构的设计原理,抽象 封装 信息隐蔽 模块化 注意点分散(Separation of Concerns) 耦合和内聚 充分性和原始性 策略和实现的分离 接口和实现的分离 分而制之(Divide-and-conquer) 层次化,2020/2/6,成都信息工程学院,103,对体系结构风格的理解 结构风格以结构组织为特性定义了一个软件系统族,表达了部件以及部件之间的关系。 体系结构风格通过组件应用的限制及其与构建有关的组成和设计规则来表现组件和组件之间的关系。 体系结构风格表示了软件系统的一种特
34、别的基本结构,以及相关的构造方法。 体系结构风格应该使一些对软件构成带有整体性、普遍性、一般性的结构和结构关系的方法。在设计中,遵循这些风格的构成原则,对软件的开发和维护十分有益。,2020/2/6,成都信息工程学院,104,多种体系结构的组合方式,聚合方式 组件的体系结构 例如:编译器中的文法分析组件 联合方式 某一个组件或连接件成为两种以上体系结构联系的纽带 可能是聚合方式的展开 例如:视频点播系统 混合方式 把多种体系结构的优点,混合使用。主要体现在连接件的混合使用 例如:事件驱动的CASE系统,2020/2/6,成都信息工程学院,105,体系结构软件设计的问题,工具 如何描述软件的总体
35、结构 方法 用什么方法有问题结构导出 软件结构 评估准则 什么样的软件结构是“最优的”,2020/2/6,成都信息工程学院,106,2.4 软件体系结构描述方法,2.4.1 软件体系结构描述方法概述 1、软件体系结构描述方法 图形表达工具:使用较多的UML中的“41”视图 模块内连接语言 基于构件的系统描述语言 软件体系结构的描述语言(ADL) 2、软件体系结构描述语言(ADL),2020/2/6,成都信息工程学院,107,体系结构文档的用处,软件开发过程中各种角色之间交流设计思想的媒介 进行上层分析的基础。此基础上可以验证体系结构设计方案,精炼或改变必要的方案 让别人理解系统的第一手资料,2
36、020/2/6,成都信息工程学院,108,有利于软件开发者之间交流,基本想法是什么? 我该做什么 (如,实现哪些需求) ? 我该在哪做 (如,这项功能实现在哪里) ? 我和谁交互?接口是什么? 有什么可以重用的代码? 必须遵从什么约定(质量目标、旧体系/接口、预算等)? 有哪些硬性规定(设计、接口、约束等)?,2020/2/6,成都信息工程学院,109,2、软件体系结构描述语言(ADL), UniCon语言 C2语言 Wright语言 Aesop语言 其他语言,2020/2/6,成都信息工程学院,110,2020/2/6,成都信息工程学院,111,2020/2/6,成都信息工程学院,112,对
37、体系结构风格的理解 结构风格以结构组织为特性定义了一个软件系统族,表达了部件以及部件之间的关系。 体系结构风格通过组件应用的限制及其与构建有关的组成和设计规则来表现组件和组件之间的关系。 体系结构风格表示了软件系统的一种特别的基本结构,以及相关的构造方法。 体系结构风格应该使一些对软件构成带有整体性、普遍性、一般性的结构和结构关系的方法。在设计中,遵循这些风格的构成原则,对软件的开发和维护十分有益。,软件体系结构文档,IEEE P1471,http:/www.firstmark.ca/ContentDocs/architectural%20docs/IEEE1471%20Arch%20Stan
38、dard/ieeecontent.htm,面对这样的图,你会有什么反应?,2020/2/6,成都信息工程学院,115,好的体系结构文档的必要元素,考虑实现时的限制 但是仅在它们能影响体系结构设计的范围内 被限定的下层结构、处理器需求 通常包含其他结构图 体系结构设计的原理 它怎样去符合需求与约束 其他的设计,2020/2/6,成都信息工程学院,116,其他方面,风格/产品线问题 设计可变的尺度 体系结构的那个方面必须不被改变? 管理问题 暗含开发团队的组织结构 体系结构评审情况 其他设计问题 代码重用、标准的运用 风险分析 运作、管理和维护,2020/2/6,成都信息工程学院,117,2.4.
39、2 软件体系结构与UML, 它在每一层都递归地定义语义结构,从而使语义更精确、更正规。 它可用来定义重量级和轻量级扩展机制,如定义新的元类和构造型. 它在体系结构上将UML元模型与其他基于4层元模型体系结构的标准(比如MOF和用于模型交换的XMI Facility)统一起来。,2020/2/6,成都信息工程学院,118,2.5 从软件体系结构过渡到系统设计时的准备, 工作量 开发计划 质量规划 功能点故障率质量(验收时的故障率)生产率进度计划质量成本故障在各阶段的分布实现质量目标的策略,2020/2/6,成都信息工程学院,119, 风险策略 开发规范 配置管理:命名规则、目录结构、权限等; 设
40、计文挡模板:详细设计、数据库设计等; 程序编写规范:命名规则、模块大小、注释等; 测试规范。,2020/2/6,成都信息工程学院,120,2.6.1 设计原则,我们以仓储财务管理系统的软件架构为例,概要说明软件架构设计的方法。1、选择设计方案现在有很多种很时髦的软件结构模型,比如以XML为基础的面向服务的软件结构、3层C/S结构、多层C/S结构、B/S结构、正交体系结构、微软体系结构等,那么采用什么样的软件结构来实现仓储财务管理系统软件?要回答这个问题我们需要分析该软件的特点,2020/2/6,成都信息工程学院,121,2、软件架构设计方案,用户界面,业务逻辑,数据管理部分,数据库,2020/
41、2/6,成都信息工程学院,122,掌握可用性规则,1. 为实际工作设计 2. 不要急于具体化 3. 避免为创新而创新,不要成为时尚的奴隶 4. 努力建立有效的交互 5. 为实际工作试用界面,2020/2/6,成都信息工程学院,123,练习题,1、需求所包含的内容有哪些? 2、需求获取的基本原则有哪些? 3、需求分析所包含的内容有哪些? 4、需求规格说明书的质量标准是什么? 5、什么叫软件的体系结构? 6、软件体系结构设计的目标? 7、软件体系结构的意义? 8、软件体系结构风格的含义是什么? 9、软件体系结构设计与需求分析描述模型有什么关系?,2020/2/6,成都信息工程学院,124,第3章
42、概要设计,3.1 概要设计的概念 概要设计在软件工程中处于上流作业的设计工程的位置,概要设计是软件设计工程中的一个非常重要的作业步骤。 概要设计和详细设计构成了设计工程。,2020/2/6,成都信息工程学院,125,3.1.1 设计工程的概念,设计工程就是把需求分析过程中确定下来的用户需求定义书(What=做什么)变为能够进行实际操作的设计说明书(How=怎样做)的工程。 具体讲设计工程是一个将系统的需求规格转换成软件系统的说明过程。通过设计可以从多个可能的思路中找到最佳的解决方案。系统设计的最终目标是要完成对“软件系统交付成果如何架构”的准确回答。其任务包括构建系统框架,设计系统功能,描述系
43、统流程,建立系统的数据模型、接口模型及界面模型,形成系统的逻辑结构,告诉程序员软件系统应该“怎样做”,2020/2/6,成都信息工程学院,126,3.1.2 概要设计的作业内容和设计过程,概要设计是在需求分析基础上确定目标系统的方案,选择系统方式,进行系统的结构设计。 1、概要设计的任务 设计系统方案,选择系统方式 进行功能分解、子系统划分 用户界面和接口设计 数据结构与数据库设计 安全性设计 系统移植和运用设计 开发计划,2020/2/6,成都信息工程学院,127,从分析到设计,在分析阶段建立模型来表示真实的世界,以便准确理解业务过程。 分析首先是分解,即把复杂综合的问题分解为易于理解的小问题,然后建立需求模型来对问题进行组织、构造并编制文档(需要用户参与)。 设计使用分析阶段得到的结果来建立系统解决方案(系统分析员和其他技术人员完成),2020/2/6,成都信息工程学院,128,2、概要设计的作业内容,2020/2/6,成都信息工程学院,129,2020/2/6,成都信息工程学院,130,