软件架构的概念
软件架构的风格
特定领域软件架构
基于架构的软件开发方法
软件架构评估
软件产品线
设计模式
一,软件架构的概念 :
软件架构是指在一定的设计原则基础上,
从不同角度对组成系统的各部分进行搭配和安排,
形成系统的多个结构而组成架构,它包括该系统的各个组件,
组件的外部可见属性及组件之间的相互关系。
组件的外部可见属性是指其他组件对该组件所做的假设。
二,软件架构的风格 :
软件体系结构风格是描述某一特定应用领域中系统组织方式的惯用模式。
体系结构风格定义一个系统家族,即一个体系结构定义一个词汇表和一组约束。
词汇表中包含一些构件和连接件类型,而这组约束指出系统是如何将这些构件和连接件组合起来的。
三,特定领域软件架构:
随着软件系统规模和复杂性的增长,
系统总体结构设计和规格说明的重要性已经远远超过特定算法和数据结构的选择,
良好的系统结构对保证系统的成功至关重要。对软件开发而言,
获得许多领域通用的可重用软件资产是很困难的事情,
但现在人们发现开发的应用系统大多和过去的软件系统有联系或者相似之处。
特别是在某一领域中,不同的系统、
不同版本之间的软件体系结构是非常相似的。
这就为基于软件体系结构的重用创造了条件。
(1)DSSA简介:
表示的就是某一特定领域的体系结构,
通过大规模重用可以可靠、高效快速地实例化出一系列产品。
Hayes-Roth对DSSA的定义如下:“DSSA就是专用一类特定类型的任务(领域)的、
在整个领域中能有效地使用的、为成功构造应用系统限定了标准的组合结构的软件构件集合”。
Tracz的定义为:“DSSA就是一个特定的问题领域中支持一组应用的领域模型、
参考需求、参考体系结构等组成的开发基础,
其目标就是支持在一个特定领域中多个应用的生成”。
(2)DSSA基本活动
第一阶段:领域分析
这个阶段的主要目标是获得领域模型。
准备性的活动包括:
1)定义领域的边界
2)识别信息源
第二阶段:领域设计
这个阶段的目标就是获得DSSA。
DSSA的特点:
1)DSSA不是单个系统的表示,而是一个高层次的设计。
2)DSSA要适当的具有变化性。
第三阶段:领域实现
这个阶段的主要目标是依据领域模型和DSSA开发和组织可重用信息。
这些可重用信息可能是从现有系统中提取得到,
也可能需要通过新的开发得到,
它们依据领域模型和DSSA进行组织,
从而支持了系统化的软件重用。
(3)DSSA的建立过程
1)定义领域范围
2)定义领域特定的元素
3)定义领域特定的设计和实现需求约束
4)定义领域模型和体系结构
5)产生,搜集可重用的产品单元
以上这些过程是一个反复的、逐步求精的过程。
(4)特定领域软件框架的提取方法
提取方法:
a 需求分析和领域分析,建立用例图。
b 识别核心业务流程和周边业务流程。
c 参照传统业务流程,分析核心业务流程的细节。
d 建立最初的核心业务流程模型。
e 核心业务流程模型和传统业务流程的互相适应。
f 核心业务流程模型的框架实现并向框架补充周边业务流程接口。
g 为应用框架的各个接口选择具体的实现策略,完成该应用框架的一个实例。
h 识别多个应用或应用框架中隐含的可变点。
i 通过可变点的抽象化、参数化、抽象领域软件框架雏形。
(5)特定领域开发模型 (双工程模型、DSSA演化模型、RC演化模型)
四,基于架构的软件开发方法
Architecture-Based SoftWare Design---体系结构驱动,即指构成体系结构的商业、质量和功能需求的组合驱动的。
三个基础:1、功能的分解 使用已有的基于模块的内聚和耦合技术。
2、通过选择体系结构风格来实现质量和商业需求
3、软件模板的使用
传统的软件开发过程可以划分为:问题定义、需求分析、软件设计、软件实现、软件测试等过程。
如果采用传统的开发过程,软件体系结构的建立应位于需求分析之后,概要设计之前
基于体系结构的软件开发模型(ABSDM),把整个软件过程划分为为:体系结构需求、设计、文档化、复审、实现、演化等六个子过程。
五, 软件架构评估 :
(1)ATAM方法 软件结构权衡分析
(2)检查表方法
六,软件产品线:
软件产品线有两个部分:核心资源和产品集合。
软件产品线是指具有一组可管理的公共特性的软件密集性系统的合集,
这些系统满足特定的市场需求或任务需求,
并且按预定义的方式从一个公共的核心资产集开发得到
在软件产品线方法中,重用是有计划的、
能够实现的和强制的(机会主义的对立面)
。资产库包括从一开始就花费大量成本进行开发的各类产品——即需求、
领域建模、软件架构、性能模型、测试用例和组件。所有资产都为重用而设计,
并且为了能重用与多个系统进行了优化。
软件产品线的重用是全面的、有计划的、有经济效益的。
七,设计模式
创建型设计模式,如工厂方法(Factory Method)模式、
抽象工厂(Abstract Factory)模式、
原型(Prototype)模式、
单例(Singleton)模式,
建造(Builder)模式等
结构型设计模式,如合成(Composite)模式、
装饰(Decorator)模式、
代理(Proxy)模式、
享元(Flyweight)模式、
门面(Facade)模式、
桥梁(Bridge)模式等
行为型模式,如模版方法(Template Method)模式、
观察者(Observer)模式、迭代子(Iterator)模式、
责任链(Chain of Responsibility)模式、
备忘录(Memento)模式、命令(Command)模式、
状态(State)模式、访问者(Visitor)模式等等。
常见的架构模式还有:
Layers(分层)模式,有时也称Tiers模式
·Blackboard(黑板)模式
·Broker(中介)模式
·Distributed Process(分散过程)模式
·Microkernel(微核)模式
创建型
1、设计模式系列-单件模式 单例模式:是一种软件设计中常用的设计模式,
主要是用来控制某个类必须在某个应用程序中只能有一个实例存在。
2、设计模式系列-工厂模式
是创建型模式中最典型的模式,主要是用来创建对象,减少我们在使用某个对象时的new() 操作
3、设计模式系列-抽象工厂模式
4、设计模式系列-创建者模式
5、设计模式系列-原型模式
结构型
1、设计模式系列-组合模式
2、设计模式系列-外观模式
3、设计模式系列-适配器模式
4、设计模式系列-桥模式
5、设计模式系列-装饰模式
6、设计模式系列-享元模式
享元模式的特点是,复用我们内存中已存在的对象,降低系统创建对象实例的性能消耗
7、设计模式系列-代理模式
行为型
1、设计模式系列-命令模式
命令模式是将一类对象的功能操作进行抽象,一般来说,
这些对象有相同的方法,所以这类对象有着类似的操作,
我们通过抽象,就可以定义出一个命令对象,通过这样的方式,
用户程序在使用的时候,只与该命令对象打交道,
而不用与一类对象打交道,降低了耦合性,提高了程序设计的灵活性。
2、设计模式系列-观察者模式
3、设计模式系列-策略模式
4、设计模式系列-职责模式
5、设计模式系列-模板模式
6、设计模式系列-中介者模式
7、设计模式系列-解释器模式
构架设计图
构架
构架视图的图形描述称为构架设计图。
对于以上描述的各种视图,
设计图由以下统一建模语言图组成 [UML99]:
逻辑视图:类图、状态机和对象图。
进程视图:类图与对象图(包括任务 - 进程与线程)。
实施视图:构件图。
部署视图:配置图。
1. 初始级
软件过程是无序的,有时甚至是混乱的,对过程几乎没有定义,成功取决于个人努力。管理是反应式的。
2.可重复级
建立了基本的项目管理过程来跟踪费用、进度和功能特性。制定了必要的过程纪律,能重复早先类似应用项目取得的成功经验。
3. 已定义级
已将软件管理和工程两方面的过程文档化、标准化,并综合成该组织的标准软件过程。所有项目均使用经批准、剪裁的标准软件过程来开发和维护软件,软件产品的生产在整个软件过程是可见的。
4. 量化管理级
分析对软件过程和产品质量的详细度量数据,对软件过程和产品都有定量的理解与控制。管理有一个作出结论的客观依据,管理能够在定量的范围内预测性能。
5. 优化管理级
过程的量化反馈和先进的新思想、新技术促使过程持续不断改进。
数据挖掘技术方法:
数据挖掘(Data Mining)就是从大量的、不完全的、有噪声的、模糊的、随机的实际应用数据中,提取隐含在其中的、人们事先不知道的、但又是潜在有用的信息和知识的过程。
关联分析(association analysis)
关联规则挖掘是由rakesh apwal等人首先提出的。两个或两个以上变量的取值之间存在某种规律性,就称为关联。数据关联是数据库中存在的一类重要的、可被发现的知识。关联分为简单关联、时序关联和因果关联。关联分析的目的是找出数据库中隐藏的关联网。一般用支持度和可信度两个阀值来度量关联规则的相关性,还不断引入兴趣度、相关性等参数,使得所挖掘的规则更符合需求。
聚类分析(clustering)
聚类是把数据按照相似性归纳成若干类别,同一类中的数据彼此相似,不同类中的数据相异。聚类分析可以建立宏观的概念,发现数据的分布模式,以及可能的数据属性之间的相互关系。
分类(classification)
分类就是找出一个类别的概念描述,它代表了这类数据的整体信息,即该类的内涵描述,并用这种描述来构造模型,一般用规则或决策树模式表示。分类是利用训练数据集通过一定的算法而求得分类规则。分类可被用于规则描述和预测。
预测(predication)
预测是利用历史数据找出变化规律,建立模型,并由此模型对未来数据的种类及特征进行预测。预测关心的是精度和不确定性,通常用预测方差来度量。
时序模式(time-series pattern)
时序模式是指通过时间序列搜索出的重复发生概率较高的模式。与回归一样,它也是用己知的数据预测未来的值,但这些数据的区别是变量所处时间的不同。
偏差分析(deviation)
在偏差中包括很多有用的知识,数据库中的数据存在很多异常情况,发现数据库中数据存在的异常情况是非常重要的。偏差检验的基本方法就是寻找观察结果与参照之间的差别。
数据挖掘流程:
定义问题
清晰地定义出业务问题,确定数据挖掘的目的。
数据准备
数据准备包括:选择数据--在大型数据库和数据仓库目标中提取数据挖掘的目标数据集;数据预处理--进行数据再加工,包括检查数据的完整性及数据的一致性、去噪声,填补丢失的域,删除无效数据等。
数据挖掘
根据数据功能的类型和和数据的特点选择相应的算法,在净化和转换过的数据集上进行数据挖掘。
结果分析
对数据挖掘的结果进行解释和评价,转换成为能够最终被用户理解的知识。
知识的运用
将分析所得到的知识集成到业务信息系统的组织结构中去。
数据挖掘的方法:
神经网络方法
神经网络由于本身良好的鲁棒性、自组织自适应性、并行处理、分布存储和高度容错等特性非常适合解决数据挖掘的问题,因此近年来越来越受到人们的关注。典型的神经网络模型主要分3大类:以感知机、bp反向传播模型、函数型网络为代表的,用于分类、预测和模式识别的前馈式神经网络模型;以hopfield的离散模型和连续模型为代表的,分别用于联想记忆和优化计算的反馈式神经网络模型;以art模型、koholon模型为代表的,用于聚类的自组织映射方法。神经网络方法的缺点是"黑箱"性,人们难以理解网络的学习和决策过程。
遗传算法
遗传算法是一种基于生物自然选择与遗传机理的随机搜索算法,是一种仿生全局优化方法。遗传算法具有的隐含并行性、易于和其它模型结合等性质使得它在数据挖掘中被加以应用。 sunil已成功地开发了一个基于遗传算法的数据挖掘工具,利用该工具对两个飞机失事的真实数据库进行了数据挖掘实验,结果表明遗传算法是进行数据挖掘的有效方法之一[4]。遗传算法的应用还体现在与神经网络、粗集等技术的结合上。如利用遗传算法优化神经网络结构,在不增加错误率的前提下,删除多余的连接和隐层单元;用遗传算法和bp算法结合训练神经网络,然后从网络提取规则等。但遗传算法的算法较复杂,收敛于局部极小的较早收敛问题尚未解决。
决策树方法
决策树是一种常用于预测模型的算法,它通过将大量数据有目的分类,从中找到一些有价值的,潜在的信息。它的主要优点是描述简单,分类速度快,特别适合大规模的数据处理。最有影响和最早的决策树方法是由quinlan提出的著名的基于信息熵的id3算法。它的主要问题是:id3是非递增学习算法;id3决策树是单变量决策树,复杂概念的表达困难;同性间的相互关系强调不够;抗噪性差。针对上述问题,出现了许多较好的改进算法,如 schlimmer和fisher设计了id4递增式学习算法;钟鸣,陈文伟等提出了ible算法等。
粗集方法
粗集理论是一种研究不精确、不确定知识的数学工具。粗集方法有几个优点:不需要给出额外信息;简化输入信息的表达空间;算法简单,易于操作。粗集处理的对象是类似二维关系表的信息表。目前成熟的关系数据库管理系统和新发展起来的数据仓库管理系统,为粗集的数据挖掘奠定了坚实的基础。但粗集的数学基础是集合论,难以直接处理连续的属性。而现实信息表中连续属性是普遍存在的。因此连续属性的离散化是制约粗集理论实用化的难点。现在国际上已经研制出来了一些基于粗集的工具应用软件,如加拿大regina大学开发的kdd-r;美国kansas大学开发的lers等。
覆盖正例排斥反例方法
它是利用覆盖所有正例、排斥所有反例的思想来寻找规则。首先在正例集合中任选一个种子,到反例集合中逐个比较。与字段取值构成的选择子相容则舍去,相反则保留。按此思想循环所有正例种子,将得到正例的规则(选择子的合取式)。比较典型的算法有michalski的aq11方法、洪家荣改进的aq15方法以及他的ae5方法。
统计分析方法
在数据库字段项之间存在两种关系:函数关系(能用函数公式表示的确定性关系)和相关关系(不能用函数公式表示,但仍是相关确定性关系),对它们的分析可采用统计学方法,即利用统计学原理对数据库中的信息进行分析。可进行常用统计(求大量数据中的最大值、最小值、总和、平均值等)、回归分析(用回归方程来表示变量间的数量关系)、相关分析(用相关系数来度量变量间的相关程度)、差异分析(从样本统计量的值得出差异来确定总体参数之间是否存在差异)等。
模糊集方法
即利用模糊集合理论对实际问题进行模糊评判、模糊决策、模糊模式识别和模糊聚类分析。系统的复杂性越高,模糊性越强,一般模糊集合理论是用隶属度来刻画模糊事物的亦此亦彼性的。李德毅等人在传统模糊理论和概率统计的基础上,提出了定性定量不确定性转换模型--云模型,并形成了云理论。编辑本段数据挖掘软件的评价 越来越多的软件供应商加入了数据挖掘这一领域的竞争。用户如何正确评价一个商业软件,选择合适的软件成为数据挖掘成功应用的关键。
评价一个数据挖掘软件主要应从以下四个主要方面:
计算性能
如该软件能否在不同的商业平台运行;软件的架构;能否连接不同的数据源;操作大数据集时,性能变化是线性的还是指数的;算的效率;是否基于组件结构易于扩展;运行的稳定性等;
功能性
如软件是否提供足够多样的算法;能否避免挖掘过程黑箱化;软件提供的算法能否应用于多种类型的数据;用户能否调整算法和算法的参数;软件能否从数据集随机抽取数据建立预挖掘模型;能否以不同的形式表现挖掘结果等;
可用性
如用户界面是否友好;软件是否易学易用;软件面对的用户:初学者,高级用户还是专家?错误报告对用户调试是否有很大帮助;软件应用的领域:是专攻某一专业领域还是适用多个领域等;
辅助功能
如是否允许用户更改数据集中的错误值或进行数据清洗;是否允许值的全局替代;能否将连续数据离散化;能否根据用户制定的规则从数据集中提取子集;能否将数据中的空值用某一适当均值或用户指定的值代替;能否将一次分析的结果反馈到另一次分析中,等等。