(3) 构造:对遗留下来的风险较低和比较简单地元素进行迭代实现,准备部署。 (4) 移交:进行beta测试和部署。
26、4+1视图 PPT 16页
“4+1”视图模型即从5个不同的视角(逻辑视图,进程视图,物理视图,开发视图
和场景视图)来描述软件体系结构。每个视图之关心系统的一个侧面,5个视图结合在一起 才能反映系统的软件体系结构的全部内容。
逻辑视图:描述架构的重要元素及它们之间的关系 过程视图:描述架构元素之间的并发和通信
物理视图:描绘主要的过程和组件是如何映像到硬件上的 开发视图:俘获软件组件内部的结构,如配置管理工具 架构用例:俘获架构的需求;和不止一种视图相关 (逻辑视图、流程视图、实现视图、部署视图、用例视图)
27、应用的集成策略
Data – expose application data for access by other components 公开应用程序数据供其他组件访问
API – offers services to read/write application data through an abstracted interface
即数据——公开应用程序数据访问的其他组件,提供服务来读/写应用程序数据通过一个抽象接口
28、上课讲的例子ICDE系统的四张架构图 PPT1-8 108
ICDE Performance Issues (1) Scalability 伸缩性 (2) Modifiability 可变性 (3) Security 安全性
(4) Availability 实用性(有效性、可用性) (5) Integration 集成性
Network Client Object Reference request Server Servant reply client ORB server ORB
反应—对正常和极端用法的脚本的反应是否足够快 可伸缩性—系统的能力克根据需要增加或减少 容量/产量—处理大负荷仍有反应 安全性—系统不会社会产生危害
29、非功能属性包括哪些(三种)PPT 12页
技术限制、业务约束、质量属性
30、掌握:命令模式,状态模式,装饰模式,观察者模式,策略模式,
单例模式,工厂方法模式,抽象工厂模式,组合模式 适配器模式,外观模式,责任链模式的UML图和java代码
①命令模式(别名:动作,事务) 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。
②状态模式(别名:状态对象) 允许一个对象在其内部状态改变时改变它的行为。 ③观察者模式(别名:依赖,发布-订阅) 定义对象间的一种一对多的依赖关系,当一个对象的状态发生变化时,所有依赖于它的对象都得到通知并被自动更新。
④策略模式(别名:政策) 定义一系列算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。
⑤单件模式 保证一个类仅有一个实例,并提供一个访问它的全局访问点。
⑥工厂方法模式(别名:虚拟构造) 定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method使一个类的实例化延迟到其子类。 ⑦抽象工厂模式(别名:配套)
提供一个创建一系列(相互依赖)对象的接口,而无需指定它们具体的类。 ⑧组合模式 将对象组合成数形结构以表示“部分-整体”的层次结构。Composite使得用户对单个对象和组合对象的使用具有一致性。
⑨适配器模式(别名:包装器) 将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作
⑨外观模式 为系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
30、凡是课件里有关架构的具体例子(一般都有UML图或有代码)都需要仔细体会,
比如显示学生成绩和全名的程序的不同架构方法,Inheritance/Composition Example 1的例子(person,agent,passenger)的合理设计(在Review of Java and object-oriented programming PPT里55页), PPT9 276页
31、计算应收账款(Revenue Recognition)(lecture9PPT175页-42页)的不同设计
方法,农场计算动物脚数的设计方法(lecture9PPT35页-42页)等等(不一一列出了)。
单例模式:
单件模式
保证一个类仅有一个实例,并提供一个访问它的全局访问点。 单件模式是关于怎样设计一个类,并使得该类只有一个实例的成熟模式,该模式的关键是将类的构造方法设置为private权限,并提供一个返回它的唯一实例的类方法
1.单件类(Singleton): Moon.java public class Moon{
private static Moon uniqueMoon; double radius;
double distanceToEarth; private Moon(){
uniqueMoon=this; radius=1738;
distanceToEarth=363300; }
public static synchronized Moon getMoon(){ if(uniqueMoon==null){
uniqueMoon=new Moon(); }
return uniqueMoon; }
public String show(){
String s=\月亮的半径是\距地球是\ return s; } }
2.应用 Application.java import javax.swing.*; import java.awt.*;
public class Application{
public static void main(String args[]){
MyFrame f1=new MyFrame(\张三看月亮\ MyFrame f2=new MyFrame( \李四看月亮\ f1.setBounds(10,10,360,150); f2.setBounds(370,10,360,150); f1.validate();