1. 模式:解决某一类问题的方法论。
【反复被使用并且被证明优良的办法,也可以说是具有一定代表性的体系结构】
2. 常见的设计模式有:抽象工厂、适配器、外观模式、MVC等。
3. MVC模式
(1)模型(Model):就是封装数据和所有基于对这些数据的操作。
【模型表示企业数据和业务规则。】
(2)视图(View):就是封装的是对数据显示,即用户界面。
【视图是用户看到并与之交互的界面。】
(3)控制器(Control):就是封装外界作用于模型的操作和对数据流向的控制等。
【控制器接受用户的输入并调用模型和视图去完成用户的需求。】
4. 框架,是某种应用的半成品,就是一组组件,供用户选用完成系统。
【框架一般是成熟的,不断升级的软件。】
(1)框架一般处在低层应用平台和高层业务逻辑之间的中间层。
5. 设计模式:就是设计范例。
(1)利用设计模式,可以方便的重用成功的设计和结构。
(2)基本成分:模式名称、问题、解决方案、后果
(3)是否成功:
a. 一个重要准则是它实现软件工程目标的程度
【没有一个模式能解决掉所有问题】
b. 模式必须支持复杂的、大型系统的开发、维护以及演化
c. 必须支持有效的产业化的软件生产
6. 在开发软件时,模式是处理受限的特定设计方面的有用构造块。
7. 单个模式不能完成一个完整的软件体系结构的详细构造,它仅仅帮助设计师设计应用程序的某一方面。
【所以要构造异构体系结构】
8. 基于构件的开发模型
(1)基于构件的开发模型利用模块化方法将整个系统模块化,并在一定构件模型的支持下复用构件库中的一个或多个软件构件,通过组合手段高效率、高质量地构造应用软件系统的过程。
ָ(2)基于构件的开发模型融合了螺旋模型的许多特征,本质上是演化形的,开发过程是迭代的。
【构建式的方法非常贴合演化式的开发】
(3)基于构件的开发模型由软件的需求分析和定义、体系结构设计、构件库建立、应用软件构建,以及测试和发布5个阶段组成。
(4)基于构件的开发活动:
a. 从标识候选构件开始,通过搜查已有构件库,确认所需要的构件是否已经存在。
b. 如果已经存在,则从构件库中提取出来复用;否则采用面向对象方法开发它。
c. 利用提取出来的构件通过语法和语义检查后将这些构件通过胶合代码组装到一起实现系统,这个过程是迭代的。
(5)特点:基于构件的开发方法使得软件开发不再一切从头开发
a. 开发的过程就是构件组装的过程。
b. 维护的过程就是构件升级、替换和扩充的过程。
(6)优点:
a. 构件组装模型导致了软件的复用,提高了软件开发的效率。
b. 构件可由一方定义其规格说明,被另一方实现。然后供给第三方使用。
【因为是构件组装,所以可以多方共同开发】
(7)缺点:
a. 由于采用自定义的组装结构标准,缺乏通用的组装结构标准,因而引入了较大的风险。
b. 可重用性和软件高效性不易协调,需要精干的有经验的分析和开发人员,一般开发人员插不上手。
【浪费了很多时间在构件的分割和组装上】
c. 客户的满意度低,并且由于过分依赖于构件,所以构件库的质量影响着产品质量。
9. 基于体系结构的开发模型
(1)基于体系结构的开发模型是以软件体系结构为核心,以基于构件的开发方法为基础。
【按照体系结构划分构件】
(2)采用迭代增量方式进行分析和设计,将功能设计空间映射到结构设计空间,再由结构设计空间映射到系统设计空间的过程。
(3)基于体系结构开发的生命周期
a. 软件定义
b. 需求分析和定义
【a、b将功能设计变为结构设计】
c. 体系结构设计
【体系结构为软件需求与软件设计之间架起了一座桥梁,解决了软件系统从需求到实现的平缓过渡,提高了软件分析设计的质量和效率。】
d. 软件系统设计
e. 软件实现
10. 基于构件的开发模型和基于体系结构的开发模型的比较
(1)相同:基于体系结构的开发模型和基于构件的开发模型都是在体系结构的基础上进行构件的组装而得到软件系统。
(2)差异:前者主要关注运行级构件及其之间的互操作性,提供了一种自底向上且基于预先定制好的构件来构造应用系统的途径;基于体系结构的开发方法从系统的总体结构入手,将一个系统的体系结构显示化,以在高抽象层次处理诸如全局组织和控制结构、功能到计算元素的分配、计算元素间的高层交互等设计问题。但局限在构件的规范上,缺少系统化的指导开发过程的方法学。
11. ABSD
(1)ABSD方法为产生软件系统的概念体系结构提供构造。
【为了有效的设计一个体系结构】
【概念体系结构:描述了系统的主要设计元素及其关系。】
(2)ABSD方法取决于系统的体系结构驱动。
【体系结构驱动,是指构成体系结构的商业、质量和功能需求的组合。】
�(3)ABSD方法是递归的,ABSD方法迭代的每个步骤是清晰定义的,由此,体系结构总是清晰的,有助于降低体系结构设计的随意性。
【ABSD:螺旋式开发】
(4)设计元素:
a. 在顶层:系统被分解为若干个概念子系统和一个或若干个软件模板
b. 在第二层:概念子系统又被分解成概念构件和一个或若干个附加软件模板
(5)视角和视图:选择的特定视角或视图也就是逻辑视图、进程视图、实现视图和配置视图。
a. 逻辑视图:记录设计元素的功能和概念接口,设计元素的功能定义了它本身在系统中的角色
b. 并发视图(进程视图):检查系统多用户的并发行为
c. 配置视图:表示网络中的结点
(6)ABSD模型把整个基于体系结构的软件过程划分为体系结构需求、设计、文档化、复审、实现、演化等6个子过程。