收藏 分享(赏)

第04章-软件设计-02-软件体系架构.ppt

上传人:tkhy51908 文档编号:5228996 上传时间:2019-02-13 格式:PPT 页数:84 大小:1.15MB
下载 相关 举报
第04章-软件设计-02-软件体系架构.ppt_第1页
第1页 / 共84页
第04章-软件设计-02-软件体系架构.ppt_第2页
第2页 / 共84页
第04章-软件设计-02-软件体系架构.ppt_第3页
第3页 / 共84页
第04章-软件设计-02-软件体系架构.ppt_第4页
第4页 / 共84页
第04章-软件设计-02-软件体系架构.ppt_第5页
第5页 / 共84页
点击查看更多>>
资源描述

1、软件设计,第二部分 软件体系结构,1 为什么需要研究软件体系结构,规模增加 复杂性增加 需要演化算法+数据结构”对于软件的描述不全面 需要提高对软件总体结构的认识 构成成分、成分之间的关系 提供交流基础 反映高层设计 便于系统演化,2 什么是软件体系结构,Software Architecture 是对子系统、软件系统组件以及它们之间相互关系的描述。子系统和组件一般定义在不同的视图内,以显示软件系统的相关功能性属性和非功能性属性。 对系统结构的总体设计与说明 是一种高层设计 关注三方面问题:组件、组件间关系、关系约束,2 什么是软件体系结构(cont.),构件软件系统由哪些部分构成例如:数据库

2、、服务器、客户、层、过滤器、监听器等 构件间的关系:这些部分之间的交互关系是什么例如:RPC、共享内存、管道等 关系的约束:这些关系有什么约束例如:互斥等,更具体的,体系架构讨论 系统元素如何组织? 系统如何实现所需功能? 系统如何满足预期性能、可靠性和其它质量特性 安全、并发、错误恢复、系统管理等 系统需要什么技术? 分布式、集中式、J2EE、SOA等等 系统内部组织的结构是否能够弹性响应功能、技术、平台变化? 和原有系统如何集成? 数据持久化问题? 标准是否能够确保系统开发始终保持一致?采用什么设计模式? 经济上和技术上的冲突和平衡 美学上的意义,其它的软件体系结构定义(cont.) De

3、wayne Perry和A1ex Wo1f曾这样定义:软件体系结构是具有一定形式的结构化元素,即构件的集合,包括处理构件、数据构件和连接构件。处理构件负责对数据进行加工,数据构件是被加工的信息,连接构件把体系结构的不同部分组组合连接起来。这一定义注重区分处理构件、数据构件和连接构件,这一方法在其他的定义和方法中基本上得到保持 2)Kruchten指出,软件体系结构有四个角度,它们从不同方面对系统进行描述:概念角度描述系统的主要构件及它们之间的关系;模块角度包含功能分解与层次结构;运行角度描述了一个系统的动态结构;代码角度描述了各种代码和库函数在开发环境中的组织。,其它的软件体系结构定义(con

4、t.) 1997年,Bass,Ctements和Kazman在实用软件体系结构一书中给出如下的定义:一个程序或计算机系统的软件体系结构包括一个或一组软件构件、软件构件的外部的可见特性及其相互关系。其中,“软件外部的可见特性“是指软件构件提供的服务、性能、特性、错误处理、共享资源使用等。,我们知道 . 体系结构和设计是同一件事; 体系结构和基础结构是相同的; 一个好的体系结构是简单的结构; 体系结构一个蓝图就足够了; 体系结构就是结构; 系统体系结构优先于软件结构; 体系结构不能被标准化和验证; 体系结构是科学; 体系结构是艺术;,好的体系结构的特征 可伸缩性的 简单 亲切的 关系清楚明了 职责

5、分布明确 效益和技术平衡,3 体系结构设计原则,合适性 结构稳定性 可扩展性 可复用性,抽象 封装 信息隐蔽 模块化 事务分离注意点分散(层次化)(Separation of Concerns) 耦合和内聚 充分性、完整性和原始性 策略和实现的分离 接口和实现的分离 分而制之(Divide-and-conquer),体系结构设计流程,1 设计准备 任务、工具 2 确定影响系统设计的约束因素 本系统应当遵循的标准或规范 软件、硬件环境(包括运行环境和开发环境)的约束 接口/协议的约束 用户界面的约束 软件质量的约束,如正确性、健壮性、可靠性、性能、易用性、清晰性、安全性、可扩展性、兼容性、可移植

6、性等等,3 确定设计策略 根据产品的需求,以及本产品的发展战略,确定设计策略,如: 设计模式。根据本产品的功能性需求和非功能性需求,确定体系结构设计模式。 扩展策略。说明为了方便本系统在将来扩展功能,现在有什么措施。 复用策略。说明本系统在当前“复用什么”以及将来“如何被复用”。 折衷策略。说明当两个目标难以同时被优化时如何折衷,例如“时空”效率折衷,复杂性与实用性之间的折衷,4 系统分解与设计 按照体系结构设计模式,将系统分解为若干子系统,确定每个子系统的功能以及子系统之间的关系。绘制系统的总体结构图(包括物理图和逻辑图)。 将子系统分解为若干模块,确定每个模块的功能以及模块之间的关系,绘制

7、子系统的结构图。 确定系统开发、测试、运行所需的软硬件环境 5 撰写体系结构设计文档 6 设计评审,4 软件体系架构的演变,1. 逻辑应用体系结构的演变,2. 物理应用程序体系结构,关系数据库,复杂的Internet系统,客户端,服务器,应用 服务器,执行系统,金融系统,库存系统,关系数据库 系统,Dynamic HTML, JavaScript, Java plug-ins, source code enhancements,Java, C, C+, JavaScript, CGI,Java, C, C+, JavaBeans,CORBA, DCOM,Native languages,5 体

8、系结构风格,体系结构风格定义了在结构组织中模板阶段的系列; 体系结构风格定义了: 构成元素和连接器类型的词汇; 它们如何组合的约束; 一个或多个指明系统的全部属性能够被它的部分属性决定的语义模型;,Mary Shaw, CMU,什么是体系结构风格,(1)风格是一种语言词汇(管道、过滤器)语法语义 (2)风格是一种类型系统Component(管道)Connector(过滤器) (3)风格是一种理论由公理和推论组成的集合管道=两个端点(读、写)过滤器=输入端口、输出端口,常见的体系结构风格,数据流系统批处理系统管道/过滤器系统 调用/返回系统主程序/子程序系统面向对象系统 独立构件通信进程系统事件

9、系统 虚拟机解释器基于规则的系统 数据为中心的系统数据库超文本系统,6 体系架构模式,Architectural Pattern,表示软件系统的基本结构化模式。他提供一套预定义的子系统,规定他们的职责,并包含用于组织他们之间关系的规则和指南。 每个模式就是一条有三部分组成的规则,它表示了一个特定环境、一个问题和一个特定解决方案之间的关系。 举例:MVC,主要在开发人机界面时考虑。 模式的特点就是处于单个类、实例层次或组件层次之上的抽象。,使用模式的优点 模式是为软件体系结构建立文档的一种手段 模式支持用已定义的属性来构造软件 模式有助于构造一个复杂的、异构的软件体系结构。,模式是如何构成的 语

10、境:问题出现的场景 问题:在那个语境中出现的再现问题 解决方案:已被证实的问题解决方案举例:MVC的两个强制条件,用户的界面必须容易更改,但核心功能不致受到很大影响。 在解决方案中,给出了如何解决问题,它包含了两个方面 每个模式规定了一个特定结构,即元素的配置 每个模式规定了运行期间的行为 MVC:相当于I P O,用体系结构模式,数据流系统 管道和过滤器(Pips and Filters),批顺序(Batch sequential) 调用返回系统 主程序和子程序,面向对象的系统,分层层次 独立组件 通信过程,事件系统 虚拟机 解释程序,基于规则的系统 库 黑板(Blackboard),超文本

11、系统,数据库,数据流系统,数据流系统 是以数据如何通过系统为特征来刻画的。一般而言,数据流体系结构有两个或多个处理组件,每个组件都将输入数据转换为输出数据。 数据流构架的目标 是实现可重用性和可更改性,它的特点是把系统看作是对相继输入数据的一系列变换。它可分成两个子样式: 两个子样式: 批顺序:等到一个步骤全部处理完后才能开始下一个步骤,每个处理步骤(组件)是独立的程序,在各个步骤之间,数据是作为一个整体传送的。如传统的磁带处理。 管道过滤器:管道负责数据传递,过滤器对数据进行渐进的转换。如UNIX系统中可以用此方法来过滤文件中一些不需要的字符。,数据流系统(cont.),管道和过滤器(Pip

12、s and Filters) 为处理数据流的系统提供了一种结构,每个处理步骤都封装在一个过滤器中,数据通过相邻过滤器之间的管道传输。重组过滤器可以建立相关系统组。,特征 过滤器是独立实体,相互之间不共享状态 过滤器不了解其它过滤器的信息 例子 利用 Unix Shell 编写的程序 ls | find . 编译器,数据流系统(cont.)批顺序,编译器,1 分离传输,2 顺序同步处理,数据流系统(cont.),优点 允许设计者将一个系统的整体输入/输出行为理解为各个独立过滤器行为的简单合成。对复用的支持好:任何两个过滤器之间,如果交流的数据格式匹配,即可以连接在一起。系统的维护与扩展方便:新的

13、过滤器可以添加到现有系统中,或者利用改进的过滤器替换老的过滤器。方便系统分析:例如,吞吐量、死锁等并发性好:每一个过滤器可以作为一个单独的任务实现,可以与其它过滤器并行执行。,缺点 经常导致批处理方式。过滤器易被认为是一个将输入数据转换成输出数据的模块,不利于交互。在维护或响应两个分离但相关的数据流时,利用管道/过滤器方式不易。由于依赖于实现,这样的系统可能强迫一种最一般的数据传输标准,从而导致了为每一个过滤器进行数据语法分析的工作,增加了复杂性,降低了性能。,调用返回系统,调用返回系统通过一个激活模型来描述,该模型包括一个执行操作调用的控制主线程。经典的体系结构是主程序和子程序。 主程序和子

14、程序,面向对象的系统,分层层次 调用返回构架一直是大型软件系统的主流构架样式,它能被分解成子任务组,其中每个子任务都处于一个特定的抽象层次上。它的目标是实现系统的可更改性和可扩展性。它有多种子样式: 主程序-子程序构架 远程过程调用构架 面向对象构架 分层构架 实例:网络协议-OSI模型,Client-Server Style,适用于这样的应用系统: 它的数据和处理分布在一定范围的多个构件上,构件之间通过网络连接。 简单的客户机/服务器系统结构中,应分成两部分。 客户机负责用户输入和展示,服务器则处理低层的功能,例如数据库的运作等。 如果一个系统被划分为两类不同的但相互联系的组成部分,其中一方

15、提出对信息或服务的请求,而另一方提供这种信息或者服务,那么这种体系结构就可看作是一种客户机/服务器模型。,2-tier客户机/服务器结构,数据库服务器,客户机,Client/Servers,方法调用,方法调用,方法调用,构件之间通过网络相连接数据和处理分布在一定范 围内的多个构件上,Component: server(服务器组件) client (客户组件) Connector: 某种进程间的通信机制,通常是基于RPC的交互协议; 请求-应答的非对称形式。,Server组件,拥有接口,接口能描述它提供的服务,向多个客户提供服务,它永远处在激活状态,监听用户请求,被动,在收到服务请求之前不了解客

16、户机的身份,向服务器请 求服务,主动,通信一般是成对的,且由客户组件发起;客户需了解服务器的身份,模型-视图-控制(MVC),主要用于处理交互性应用程序,模型包含数据和业务逻辑,视图向用户显示信息,控制接受用户输入。VC共同构成了用户的接口,变更-传播机制保证了用户接口和模型之间的一致性。,视图1,控制器,模型,请求,调用,返回,视图2,更新,独立组件,独立组件是分布式式系统的一种形式。独立组件构架由许多通过发送消息进行通讯的独立进程或对象组成,它的目标是通过解除各运算部分之间的耦合实现可更改性,如股票机、各类短信预定等。它有两类子样式: 事件系统样式 通讯进程样式 通信过程和基于事件的体系结

17、构风格依赖于对操作的隐式调用。调用者和被调用者可以存在于不同的软件过程中甚至不同的处理器中。 如出版订购通信模式,独立组件,实例代理者(Broker) 可用于构建带有隔离组件的分布式软件系统,该软件通过调用远程软件服务进行交互。Broker负责协调通信,诸如转发请求等。 结构:客户机,服务器,代理者、桥接、客户机端代理和服务器端代理 优点: 定位的透明性 组件的可变性和可扩展性 代理者系统的可移植性 不同代理者之间的互操作性 可重用性 缺点 测试和调试,虚拟机,虚拟机构架的目标 实现可移植性。虚拟机是模拟硬件功能或抽象软件环境的构架样式。 虚拟机构架常见的示例 解释程序、基于规则的系统、句法s

18、hell程序、命令语言处理器等。,库,库风格的体系结构包括一个中央数据元素和多个独立处理元素。信息传递的共享数据源方法。 黑板(Blackboard) 对于无确定性求解策略的问题比较有用。该模式中有专门的几个子系统用于收集知识来建立问题的近似解或部分解。 举例:语音识别,文字识别,The Blackboard Model,Knowledge Sources 把问题分成几个部分,每个部分独立计算 响应黑板上的变化 向黑板中添加知识 松耦合 Blackboard Data Structure 包含解域的全部状态 知识源互相作用的唯一媒介 其中的知识一般以层次的形式组织 Control 让知识源随机

19、的响应事件 完全由黑板驱动,决策解决问题的步骤,7 基于构件的软件体系架构,CORBA分布计算环境 EJB分布计算环境 .NET分布计算环境 面向服务的软件体系结构,7.1 Java EE平台,RMI,HTTP,API,Java EE技术概览,展示层 ServLet/JSP 中间层 EJB 中间层可用的企业服务 事务服务 JTA 目录服务 JNDI 消息服务 JMS 异步组件 Message-Driven EJB 数据层 - JDBC 远程调用 RMI/IIOP 使用现有资源 - JCA,.Net 应用体系结构,Non-Web Clients,Data Tier,Web Tier,IIS-01

20、,SQL Server,Middle Tier,Web Browser,Web Service,Web Clients,WinForm,.Net技术概览,展示层 ASP.Net, Windows Forms 中间层 - .Net组件 中间层可使用的企业服务 System.EnterprisesServices 事务服务 MTS 消息服务 MSMQ 目录服务 ADSI, UDDI 对象池 Object Pooling 异步组件 Queued Component 数据层 ADO.Net 远层调用 - .Net Remoting/ Web Service 利用现有资源 - .Net Interop

21、/ Web Service /BizTalk,OMG体系结构和服务参考模型,面向服务体系架构-SOA,定义: 一种体系结构风格,它将应用程序的不同功能单元服务(service),通过服务间定义良好的接口和契约(contract)联系起来。接口采用中立的方式定义,独立于具体实现服务的硬件平台、操作系统和编程语言,使得构建的系统中的服务可以使用统一和标准的方式进行通信。这种具有中立的接口定义的特征称为服务之间的松耦合。 简而言之,WEB服务就是可编程的URL,就是使用标准的INTERNET协议(比如HTTP或XML)远程可调用的应用程序组件。它要想成功用于Internet就需要提供一个与操作系统无

22、关、与程序设计语言无关、与机器类型无关、与运行环境无关的平台 。 Web Services的目标 是即时装配、松散耦合以及自动集成。,面向服务体系架构,服务提供者: 一个可通过网络寻址的实体,它接受和执行来自使用者的请求。 它将自己的服务和接口契约发布到服务注册中心,以便服务使用者可以发现和访问该服务。 服务使用者: 一个应用程序、一个软件模块或需要一个服务的另一个服务。 它发起对注册中心中的服务的查询,通过传输绑定服务,并且执行服务功能。 服务使用者根据接口契约来执行服务。 服务注册中心: 服务发现的支持者; 它包含一个可用服务的存储库,并允许感兴趣的服务使用者查找服务提供者接口。,面向服务

23、体系架构,面向服务的体系结构中的每个实体都扮演着服务提供者、使用者和注册中心这三种角色中的某一种(或多种)。 面向服务的体系结构中的操作包括: 发布(Publish):为了使服务可访问,需要发布服务描述以使服务使用者可以发现它。 发现(Find):服务请求者定位服务,方法是查询服务注册中心来找到满足其标准的服务。 绑定(Bind)和调用(invoke):在检索到服务描述之后,服务使用者继续根据服务描述中的信息来调用服务。,面向服务架构SOA,WEB服务相关的技术 第一部分:表示数据 (XML) 第二部分:交换消息 (SOAP) 第三部分:服务描述 (WSDL) 第四部分:服务发现与发布 (UD

24、DI和WS-Inspection),SOAP(Simple Object Access Protocol) 是基于XML实现了一种消息格式以交换请求和使用,使用XML作为SOAP消息的基础使得任何实现基本的INTERNET通信服务的系统都能处理和传送这类消息 基于XML的协议,由四部分组成: 信封(Envelope):定义了一个消息框架,描述消息的内容是什么,是谁发送的,谁应当接受并处理它以及如何处理。 编码规则(Encoding Rules):用于表示应用程序需要使用的数据类型的实例。 绑定(Binding):定义底层通信协议,进行消息交换。 RPC:表示远程过程调用和应答的协定。,SOAP

25、,SOAP信封包装传输的消息。SOAP定义4个XML元素: 信封(env:Envelope)标题(env:Header) 体(env:Body) 一组和多组SOAP条目的信息。故障(env:Fault) 协议层错误信息的特殊SOAP条目,SOAP用例, 1 2001-06-22T14:00:00-05:00 Pick up Mary at school at 2pm ,8 软件架构、框架和设计模式,框架的定义: 设计模式中对框架的定义是框架就是一组相互协作的类,对于特定的一类软件,框架构成了一种可重用的设计。 软件框架是提取特定领域软件的共性部分形成的体系结构,不同领域的软件项目有着不同的框架

26、类型。框架的作用在于:由于提取了特定领域软件的共性部分,因此在此领域内新项目的开发过程中代码不需要从头编写,只需要在框架的基础上进行一些开发和调整便可满足要求;对于开发过程而言,这样做会提高软件的质量,降低成本,缩短开发时间,形成良性循环。,框架和平台的关系: 框架不是现成可用的应用系统。是一个半成品,需要后来的开发人员进行二次开发,实现应用系统的具体功能。框架不是“平台”,平台概念比较广泛,可以是一种操作系统,一种应用服务器,一种数据库软件,一种通讯中间件等,因此平台在应用层面主要指提供特定服务的系统软件,而框架更侧重设计和开发过程,框架可通过调用平台提供的服务而起的作用。 框架和类库的关系

27、: 框架不是工具包或者类库,调用API并不就是在使用框架开发,仅仅使用API是开发者完成系统的主题部分,并不时地调用类库实现特定任务。而框架构成了通用的、具有一般性的系统主体部分,二次开发人员只是像做填空一样,根据具体业务,完成特定应用系统中与众不同的特殊部分。,框架和架构的关系: 框架不是构架(即软件体系结构)。体系结构确定了系统整体结构、层次划分,不同部分之间的协作等设计考虑。框架比架构更具体,更偏重于技术。确定框架后,软件体系结构也随之确定,而对于同一软件体系结构(比如Web开发中的MVC),可以通过多种框架来实现。 框架和设计模式的关系: 设计模式和框架在软件设计中是两个不同的研究领域

28、。设计模式研究的是一个设计问题的解决方法,一个模式可应用于不同的框架和被不同的语言所实现;而框架则是一个应用的体系结构,是一种或多种设计模式和代码的混合体虽然它们有所不同,但却共同致力于使人们的设计可以被重用,在思想上存在着统一性的特点,因而设计模式的思想可以在框架设计中进行应用。,1) 从应用领域上分,框架给出的是整个应用的体系结构;而设计模式则给出了单一设计问题的解决方案,并且这个方案可在不同的应用程序或者框架中进行应用。 2) 从内容上分,设计模式仅是一个单纯的设计,这个设计可被不同语言以不用方式来实现;而框架则是设计和代码的一个混合体,编程者可以用各种方式对框架进行扩展,进而形成完整的

29、不同的应用。 3) 设计模式比框架更容易移植;框架一旦设计成形,虽然还没有构成完整的一个应用,但是以其为基础进行应用的开发显然要受制于框架的实现环境;而设计模式是与语言无关的,所以可以在更广泛的异构环境中进行应用。 总之,框架是软件,而设计模式是软件的知识体,提升框架的设计水平。,9 体系结构设计报告,0. 文档介绍 0.1文档目的 0.2文档范围 0.3读者对象 0.4参考文档 0.5术语与缩写解释,体系结构设计报告 cont.,1. 系统概述 提示:(1)说明本系统“是什么”,(2)描述本系统的主要功能。 2. 设计约束 提示:体系结构设计人员从需求文档提取需求约束,并且确定一些隐含约束。

30、,体系结构设计报告 cont.,3. 设计策略 提示:体系结构设计人员根据产品需求,确定设计模式、扩展策略、复用策略、折衷策略等。 4. 系统总体结构 (1)将系统分解为若干子系统,绘制总体结构图(含物理图和逻辑图),说明各子系统的主要功能。 (2)说明“如何”以及“为什么”(how and why)如此分解系统。 (3)说明各子系统如何协调工作,从而实现原系统的功能。,体系结构设计报告 cont.,5. 子系统N的结构与功能 (1)将子系统N分解为一些模块,绘制结构图,说明各模块的主要功能。 (2)说明“如何”以及“为什么”如此分解子系统N。 (3)说明各模块如何协调工作,从而实现子系统N的

31、功能。 6. 开发环境的配置 提示:说明本系统应当在什么样的环境下开发,有什么强制要求和建议? 软件硬件设备名称 开发环境标准配置 开发环境最低配置,体系结构设计报告 cont.,7. 测试环境的配置提示:说明本系统应当在什么样的环境下测试,有什么强制要求和建议? 软件硬件设备名称 测试环境标准配置 测试环境最低配置 8. 运行环境的配置 提示:说明本系统应当在什么样的环境下运行,有什么强制要求和建议? 软件硬件设备名称 运行环境标准配置 运行环境最低配置 9. 其它,好的体系结构文档的必要元素,需求陈述 商业环境、产品的背景、领域 描述环境 必须和什么系统交互、外部接口 使用体系结构图 用恰

32、当的线框 简洁的说明 考虑实现时的限制 但是仅在它们能影响体系结构设计的范围内 被限定的下层结构、处理器需求 通常包含其他结构图 体系结构设计的原理 它怎样去符合需求与约束 其他的设计,10 基于UML的体系结构视图,1995年,Philippe Kruchten发表了一篇很有影响力的论文,提出“4+1View Model”方法。现在已经成为Rational统一过程的概念基础。,描绘系统体系结构,逻辑视图,实现视图,过程视图,分布图,概念模型,物理模型,用例图,系统集成 性能 可伸缩性 吞吐能力,最终用户 功能,系统工程 系统拓扑结构 分发, 安装 通信,编程 软件管理,视图间的相关性,逻辑视

33、图,组件视图,过程视图,分布视图,软件体系结构的41视图 41视图显示了软件体系结构如何分解为构件,以及构件如何由连接器连接来产生有用的形式,由此记录主要的结构设计决策。 这些设计决策必须基于需求以及功能、补充和其他方面的约束。 这些决策又会在较低层次上为需求和将来的设计决策施加进一步的约束。,4+1:用例视图,用例视图阐述了那些包含对于系统很重要的行为、类或技术风险的用例和场景。 RUP工作流程中使用了名为用例视图的体系结构视图,作为计划迭代的技术内容所需的基础。,41:逻辑视图,逻辑视图以图形方式说明关键的用例实现、子系统、包和类,它们包含了在构架方面具有重要意义的行为。逻辑视图在每次迭代

34、过程中都会加以改进。 RUP中为了便于理解系统设计的结构与组织,在“分析设计”工作流程中使用了名为逻辑视图的构架视图。,41:模块视图,模块视图的作用是获取为实施制定的构架决策。模块视图通常包括以下内容: 列举实施模型中的所有子系统、 说明子系统如何组织为层次和分层结构的构件图。 说明子系统间的导入依赖关系的图解。 它是RUP实施模型( implementation model)的一个子集。,41:进程视图,进程视图,它以图形方式说明了系统中进程的详细组织结构,其中包括类和子系统到进程和线程的映射。进程视图在每次迭代过程中都会加以改进。在 RUP中, 它是设计模型( design model)的一个子集。,4+1:部署视图,部署视图是以图形方式说明了处理活动在系统中各节点的分布,包括进程和线程的物理分布。部署视图在每次迭代过程中都会加以改进。它是部署模型(deployment model)的一个子集.,需要多少视图?,适合需要的简单模型 不是所有的系统都需要所有的视图 单处理器: 不用分布图 简单处理过程: 不用过程视图 很小的程序: 不用实现视图 增加视图: 数据视图, 安全视图,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 网络科技 > 行业软件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报