• 沒有找到結果。

•  模型/视图/控制器结构(

N/A
N/A
Protected

Academic year: 2022

Share "•  模型/视图/控制器结构("

Copied!
49
0
0

加載中.... (立即查看全文)

全文

(1)

▪   5.

(2)

5.1

5.3 5.2

(3)

•  软件体系结构包括一组软件部件、软件部件的外部的 可见特性及其相互关系,其中软件外部的可见特性是 指软件部件提供的服务、性能、特性、错误处理、共 享资源使用等。

–  系统的总体组织结构和全局控制结构 –  通信、同步和数据访问的协议

–  设计元素的组成与功能分配 –  非功能需求

–  系统的物理部署

–  备选设计方案的选择

(4)

A:Subs ystem

B:Subsystem C:Subs ystem D:Subsystem

E:Subsystem F:Subsystem G:Subsys tem

(5)

•  依赖性

–  PackageA 的一些成员引用 PackageB 的某些成员

–  PackageB 的变化可能会影响到 PackageA

PackageA PackageB

ClassX A 依赖于 B

不暴露任何成员

B 拥有成员 ClassX

(6)

PackageA 循环依赖元素 取到PackageC

PackageA

PackageB

PackageA

PackageB PackageC

(7)

PackageC 中 的 循环依赖元素提 取到PackageD

PackageA

PackageB

PackageC PackageD

PackageA

PackageB

PackageC

(8)

1.

2.

3.

2. 

3. 

1.

2.

3.

4. 

1.

2.

3.

1.  模块接口

2.  进程接口 6. 详细设计

1.  模块详细设计

2.  数据详细设计

附录

注:

3 5部分是体系结构设计 6部分是详细设计

(9)

5.1

5.3 5.2

(10)

•  软件体系结构风格是描述某一特定应用领域中系统组 织方式的惯用模式,它反映了领域中众多系统所共有 的结构和语义特性,并指导如何将各个模块和子系统 有效地组织成一个完整系统。

•  典型的软件体系结构风格 –  仓库或知识库结构

–  模型/视图/控制器体系结构 –  控制结构

–  客户机/服务器结构 –  分层体系结构

(11)
(12)

•  仓库结构是一种以数据为中心的体系结构,它包含一 个中心数据库和一组相互独立的处理中心数据的子系 统,主要适合于数据由一个子系统产生而由其他子系 统使用的情形。

•  优点:在共享数据模型稳定的情况下,扩展新的子系

统十分容易

•  缺点:子系统与共享数据之间的耦合度很高,共享数

据将对系统的性能和子系统的修改产生瓶颈。

•  应用:现代编译器、管理信息系统、CAD 系统和 CASE

工具集等。

(13)

词法分析器

语法分析器 编译器

语义分析器

优化器 代码生成器

仓库

语法分析树 符号表

源代码调试器 语法编辑器

(14)

•  模型/视图/控制器结构(

Model/View/Controller Architecture

–  该结构是为同样的数据提供多个视图的应用程序而设计的,它将交互系 统的组成分解成模型、视图、控制器三种部件。

•  视图是应用程序中用户界面相关的部分,即用户看到并与之交互的界面。

•  控制器工作就是根据用户的输入,控制用户界面数据显示和更新模型对象的状 态。

•  模型是应用程序的主体部分,表示业务数据或者业务逻辑。

–  该结构适合于交互式系统,特别是同一个模型需要多个视图的情况。

(15)

封装应用程序状态 响应状态查询

应用程序功能 通知视图改变

封装应用程序状态 响应状态查询

应用程序功能 通知视图改变

解释模型

模型更新请求

发送用户输入给控制器 允许控制器选择视图

解释模型

模型更新请求

发送用户输入给控制器 允许控制器选择视图

控制器

定义应用程序行为

用户动作映射成模型更新 选择响应的视图

控制器

定义应用程序行为

用户动作映射成模型更新 选择响应的视图

状态改变 状态查询

通知改变

视图选择

用户请求

方法调用 事件

(16)

–  集中式控制

•  一个子系统专门负责控制,控制其他子系统的启动和停止。它也可能 将控制交给一个子系统,但在控制完成后控制权仍然要归还给它。

–  基于事件的控制

•  控制信息不是集中于一个子系统中,而是每个子系统都能接收来自外 部的事件并对此作出响应。这些事件可能来自其他子系统或来自系统 的环境。

(17)

系统控制器

传感器进程 传动装置进程

计算进程 用户界面 故障处理器

(18)

事件和消息处理器

子系统 1 子系统 2 …… 子系统 n

(19)

•  客户机/服务器结构(

Client/Server Architecture

–  在客户机/服务器体系结构中,作为服务器的子系统为其他客户 机的子系统提供服务,作为客户机的子系统负责与用户的交互。

•  瘦客户机模型

–  所有的应用处理和数据管理都是在服务器上执行,客户机只是负 责数据表示部分。

–  由于繁重的处理负荷全部集中在服务器和网络上,有可能造成性 能上的问题。

(20)

–  服务器只负责对数据的管理,客户机上的软件实现应用逻辑与 用户的交互。

–  系统管理更加复杂,因为应用程序的改变必须在客户机上重新 安装。

•  三层的客户机/服务器体系结构

客户机

•  数据表示

应用服务器

•  应用处理

数据服务器

•  数据管理

(21)

•  层次化是一种概念,它将软件设计组织成为类或组件 的层次或集合,在同一个层次上的类或组件完成一个 特定的目的。

•  良好的层次结构可以易于系统的扩展与维护,不同的 层次之间通过接口进行通信。

•  三层体系结构(

Three-tier Architecture

–  表示层:窗口、报表等用户界面元素

–  应用逻辑层:管理业务过程的任务和规则 –  存储层:持久化存储机构

表示层 应用逻辑层

数据存储层

(22)

用户界面层

业务实体层

业务控制层

数据存储层

数据库

系统层

(23)

控制层

Control Classes

持久层 DAO

Librarian

Frame Borrower Frame

业务层

Security External System

Interfaces

Entity Classes

Acquaintance

(24)

5.1

5.3 5.2

(25)

•  回顾学过的数据结构

–  Trees, Stacks, Queues

–  它们给软件开发带来了什么?

•  问题

–  在软件体系结构设计中是否存在一些可重用的解决方案?

•  答案是肯定的

–  设计模式使我们可以重用已经成功的经验

–  Pattern Documented experience

(26)

•  Gang of Four

– Gamma, Helm, Johnson, Vlissides

(27)

•  设计模式描述了软件系统设计过程中常见问题的解决方 案,它是从大量的成功实践中总结出来的且被广泛公认 的实践和知识。

•  设计模式的好处

–  使人们可以简便地重用已有的良好设计 –  提供了一套可供开发人员交流的语言 –  提升了人们看待问题的抽象程度

–  帮助设计人员更快更好地完成系统设计

–  模式是经过考验的思想,具有更好的可靠性和扩展性

(28)

•  模式名称

–  一个助记名,便于交流和思考

•  问题

–  描述应该在何时使用模式,解释了设计问题和问题存在的前因后果

•  解决方案

–  描述设计的组成部分,它们之间的相互关系以及各自的职责和协作方 式

•  效果

–  描述模式应用的效果以及应权衡的问题

(29)

• 

• 

• 

(30)

•  结构型模式

–  结构型模式描述了在软件系统中组织类和对象的常用方法,

避免了一个类被赋予过多职责而破坏类的封装性和信息的隐 藏,和类之间功能重叠的问题。

–  结构型模式采用继承机制来组合接口或实现。

•  典型的模式

–  适配器

Adapter、桥接 Bridge、组成 Composite

–  装饰 Decorator、外观 Facade、享元 Flyweight、代理 Proxy

(31)

l  Adepter

l  Adapter Adaptee

(32)

•  Use a bridge to “decouple an abstraction from its implementation so that the two can vary independently”. (From [Gamma et al 1995])

•  Bridge

(33)

Operation() Abstraction

OperationImpl() Implementor

Operation()

Refined Abstraction 1

Operation()

Refined Abstraction 1

OperationImpl()

Concrete Implementor 1

OperationImpl()

Concrete Implementor 1 imp

Imp->OperationImp;

(34)

Subsystem 2 Seat

AIM

Card

SA/RT

Why is this good?

Efficiency

Why is this bed?

(35)

Facade subsystem classes

– 

(36)

-  - 

Proxy pattern:

- 

-  (“the proxy”) - 

Subject Request()

Proxy Request()

RealSubject Request() realSubject

(37)

boundingBox() draw()

ProxyImage boundingBox()

draw()

RealImage boundingBox()

draw() realSubject

(38)

Component

Leaf Operation()

Composite Operation()

AddComponent()

RemoveComponent() GetChild()

Client

Children

- part-whole Composite

(39)

Software System

Class

Subsystem User

Children

* Software System:

Definition: A software system consists of subsystems which are either other subsystems or collection of classes Composite: Subsystem (A software system consists of subsystems which consists of subsystems , which

consists of subsystems, which...) Leaf node: Class

(40)

both primitives (Line, Circle) and their containers (Picture)

Graphic

Line Draw()

Picture Draw()

AddGraphic(g)

RemoveGraphic(g) GetChild(int)

Client

Children Circle

Draw()

(41)

• 

–  – 

• 

– 

Chain of ResponsibilityCommand

– 

InterpreterIteratorMediator

– 

MementoObserverState

– 

StrategyTemplate MethodVisitor

(42)

– 

(43)
(44)

• 

• 

• 

• 

(45)
(46)

• 

–  – 

• 

– 

Factory Method Abstract Factory

– 

Builder Prototype Singleton

(47)

– 

(48)

•  设计模式不是万能的

–  模式可以解决大多数问题,但不可能解决遇到的所有问题 –  应用一种模式一般会“有得有失”,切记不可盲目应用

–  滥用设计模式可能会造成过度设计,反而得不偿失

•  设计模式是有难度和风险的

–  一个好的设计模式是众多优秀软件设计师集体智慧的结晶 –  在设计过程中引入模式的成本是很高的

–  设计模式只适合于经验丰富的开发人员使用

(49)

數據

Graphic  Line  Draw()  Picture Draw()  AddGraphic(g)  RemoveGraphic(g)  GetChild(int) Client  Children Circle Draw()

參考文獻

相關文件

通过 YCT(三级)的考生可以用汉语就熟悉的日常话题进行简单而直接的 交流,达到初级汉语优等水平。..

通过 HSK(二级)的考生可以用汉语就熟悉的日常话题进行简单而直接的 交流,达到初级汉语优等水平。..

通过 HSK(二级)的考生可以用汉语就熟悉的日常话题进行简单而直接的 交流,达到初级汉语优等水平。..

其防護原理是以櫃內層流配合 HEPA FILTER 的使用來提供

Excel VBA 乃是以 Visual Basic 程式語言為基礎,提供在 Excel 環境中進 行應用程式開發的能力。在 Excel 環境中「Visual Basic 編輯器」提供了一個

近年來,國內外已經有很多學術單位投入 3D 模型搜尋的研究,而且在網路 上也有好幾個系統提供人使用,例如台灣大學的 3D Model Retrieval

各个几何命题是否“真实”的问题就归结为公理是否“真实”的问题。可是人们

本論文使用 CATIA 軟體平台的知識工程語言建立長圓錐體專業 CAD/CAM 建模系統,並使用了對話框,設計人員可以藉由改變對話框中的參數快速的建構 長圓錐體模型。長圓錐體