UML软件工程组织

软件工程中的数学思想——系统的构造模型
2006.08.29
  在此处我对建模的基础再次声明。我首先不愿让本书落入数学符号的说教中,我澄清我以下的观点:

1.该处的数学仅仅是一种描述,比如集合就是对象整体的描述。

2.如下所说的数学性质仅仅是对该集合对象或集合内对象的性质,即我们对什么建模,建出的模型的性质是什么;这些性质有否扩展机制;如何扩展,其理论基础是什么;集合的关系、函数、数字系统和算法将描述该模型的运转情况。比如说COM的接口有自反性,若你知道自反性是什么样的性质,有何可利用的机制,对于技术本身的理解是有益无害的。

3.如下所说的还包括对模型的构造的过程和结果有描述,将对构造出的模型进行分析,该模型是否为最简单的模型,该处构造的模型是否已经被构造过,如此将在图论中被详细说明。

当然,在本书中讨论这些有点深,但我们在分析UML语法时,你会感到,原来这些关联是应该的,是理所当然的。

一.系统模型

计算机需要采用一种符号来记述使用者通过某种方式来操作它。这是一个对对象描述的过程,在该过程中,我们重点是在叙述上构架一个系统,当然,该系统是模型系统。

在第一节,我们已经简单地描述系统模型。什么是系统模型?和系统(system)一样,也有众多的定义,为了研究系统的行为,有些系统,如一台收音机,可以直接在系统上进行实验,但是对于大多数系统,尤其是社会经济,就不可能在现实系统上进行实验,而是(也必须是)将系统简单又是从现实系统中抽象成比较简单的实体,然后在这个实体上进行实验,这个比现实系统简单而又是从现实系统抽象出来的实体称为系统的模型,它仍然是一个系统,这个系统和现实系统之区别,称为模型系统(简称模型)。

系统模型可划分为两大类:物理模型和数学模型。

本书仅讨论数学模型,对物理模型有兴趣的读者可以查阅相关模型方面的书。

数学模型包括动态模型和静态模型;动态模型或静态模型都含有两个属性或操作,分析方法的解数有值解和分析解。 系统模型的建立的原则和步骤:

建立系统模型是一件高技术和高艺术的工作,不可能有统一的规律或规则(如此你将会感到模型是否为最简的或是否为重构的重要性),如下有一些不成文的规定:

1.模型要有一定的精度

既然模型是现实的系统的替代物,它必须反映现实系统的本质,且有一定的精度,失真太大就失去了模型的意义,在如此的模型上做实验有害无益,浪费资金和时间。但是模型毕竟不是现实系统,不可能把所有的细节都包括进去,也就是说,如果十分精确,是不可能的,下一节的一个例子将告诉你,一个十分精确的描述将是无限的。

但有一个原则需要牢记:我们必须能够控制我们的模型。

2.模型要足够简单

由于实际的系统太复杂,所以要建立模型,如果模型也太复杂,就没有意义了,所以在建立模型时需要抓住本质的元素(对象的属性和操作)。

3.遵循自然规律和经济规律

在模型中包含各种变量和参数,同时要用到各种公式、定律。基于上述求解,因此模型必须符合科学规律和经济规律。公式要有依据,参数要可靠。

4.尽量采用现成的模型

如果该模型已经有人运行过类似的模型,则尽可能的使用,即使不十分合适,也可以借用其核心的部分,如此,将减少资金、精力和时间。

5.模型必须反复修改

由于人对世界的认识是一个过程,因此不可能一次就把模型建好,必须反复测试,逐步完善。

建立模型,前人给出经验公式:
  ①分析问题、确定目标
  ②收集数据
  ③找出各变量之间的关系
  ④确定约束条件
  ⑤规定符号、代号
  ⑥建模
  ⑦评价模型
  ⑧修改模型(一个迭代过程,从步骤开始,但不是所有的步骤都经历)

对于一个增量的模型,我们需要在⑥⑦⑧过程中进行不停的迭代。

对模型的研究,我们首先引入一个新的概念:运筹学。

运筹学就是研究、筹划一个工作如何进行的更好;在一定的资源的条件下生产出最多的产品,从若干个方案中找出最好的一个方案。

该方法对研究模型无疑有重大的意义。

运筹学研究的模型主要有以下几种类型:

1.分配类模型 这类模型主要研究最优分配,例如由若干种有限的原料制成产品的最优分配。这类模型包括线形规划、非线形规划、整数规划和动态规划等模型,其中线形规划应用最为广泛,理论也很完善和成熟。

2.网络模型 网络模型用图示描述,另有一套计算方法。在现实系统中,诸如此类的问题很多,如最大流问题、最短路径问题、运输问题等都可以采用网络模型求解。

3.选址模型 选址模型用于选择一个或几个服务设施,使这些实施点对附近供应费用达到最小。

4.排序模型 排序模型是生产管理中使用的模型,例如不同类型的零件加工顺序等。

5.决策模型 决策模型用于在若干个方案中找到一个最优方案。决策在所有经济活动中都存在,甚至在生活也存在决策。

6.排队模型 研究排队的规律,用于大型的随机的服务系统中。在计算机的操作系统上对中断处理就是使用排队模型。

7.存储模型 存储模型研究在存储费用最小的情况下的库存量、定货批量和定货次数等一系列问题。

在对软件系统(对系统的在实施软件上的建模)我们讨论最多的就是网络模型和决策模型。

网络模型就相当于UML中的采用的时序图(在UML中时序图是非常重要的一种图,但在此处我们仅仅需要知道什么是网络模型,时序图在第四章讨论)。

网络模型主要是画网络图,网络图由节点和箭头组成,节点称为事项,箭头称为活动。

如图的描述

  

 该图表示第j个事项开始工作必须等第i个事项结束(或完成),箭头上面的符号n表示完成第i事项完成的时间为n天(在软件工程上一般是按人月(Man-Month)来计算)。

我们引进一个例子来说明问题

一个农场主养了一群羊,每到年底的时候,他都要决定卖掉几只,用卖羊的钱改善生活;留下几只,以供明年的发展。在留羊的时候,需要看看羊的干草是否可以够留下的羊吃过冬天,如果不够,那么农场主需要把卖羊的钱用来买草。

我们来表示买羊买草的过程



 该图并不复杂,其中没有关联交差的活动,若其中有交差的活动,我们将需要考虑各种不同组合,以达到最优的效果。

关于网络模型,我们将在UML的时序中在进一步地说明。

决策模型

决策遍及各个领域,人类在和"自然"斗争时也需要决策,何谓决策,决策是人(主体)行动的先导。决策问题包括三个方面,一是决策者所要达到的一定的目标;二是决策者可以选择的行动方案;三是采取这些行动后可能产生的效果。为了能准确进行决策,需要决策者对被决策系统(客观事物)的本质有足够地认识,并且需要对有关信息进行收集,处理和分析,以得到一个合理地、完好的解决方案。

决策的分析过程

需要决策分析的系统一般非常复杂,而且数据庞杂(我不是在吓唬你),各种情况之间关系复杂,同时还有许多不确定的因素。

①陈述问题

定义目标,提出可控因素及不可控因素,也即选取可能的策略及自然状态,提出各种自然情况的可能性。

②建立模型

将已经陈述的问题模型化,可以根据可控因素和不可控因素的情况分析如上的问题,将问题分步转化为模块,并组合成模型,并逐步分析修改。

③求解模型

用分析方法求解的模型直接可以通过分析法求解,如果不能用分析法求解就用模拟法求解。在求解的过程中必须考虑将不同参数输入以检验输出结果的变化。

④实施模型

模型地实施需要全方位配合,当然也是系统成败的关键。

如此模型的求解和实施是建立于对模型地分析的基础上,在软件工程领域内,对模型的分析,主要集中于该(决策)系统的风险。不同的风险因素,将对如何构建系统的模型产生直接影响,关于软件工程中存在的风险。我们将在第二章软件工程中作详细的讨论。

如何描述一个建好的系统模型,我们刚才见了系统决策过程的第一步就是对系统的描述,描述系统存在的问题,以便有的放失采取行动。

我们首先来看一下计算运行环境的系统和信息。

二.系统与信息

1.系统的定义

系统(system)这个词已经人人皆知了,在第一节中,也对系统和模型(model)进行了比较。首先,需要区别两个定义:一是模型和系统的差别,二是制品和系统的差别。

模型和制品在第一节,就可以找到它们的简单定义。现在来考察一下系统:

系统就是由多个元素有机地(相互有合理的关系)结合在一起,并执行特定的功能(设定的)以达到特定的目标的集合体。

说的详细一点,系统就是由各元素和子系统组成的;各元素之间是相互作用或相互制约的;系统是有目标的;系统和环境有关,要适应环境的变化;系统有强烈的整体性,单元要服从整体。

整理系统的特性如下:

⑴整体性 组成系统的各元素不是简单集合在一起,而是有机地组成一个整体,每个元素都要服从整体,追求整体最优,而不是每个元素最优。(如此就是全局的观点,还符合经济规律)系统是组合起来的,在第二章中的描述系统时将通过子模块来组成整体系统,那么子模块将是系统的元素。此时,需要每个子模块都达到最好的、最完善,但可以通过协调、综合,仍然可使整体系统具有较好的功能;反之,若每个模块都追求最好,相关的协调性必然存在问题,故系统也较之为差。

(读者可以考虑我们工作的团队之间的关系是否也是如此,所以在序言里提及作为程序员,在团队内要以"系统"的最优为前提,而不是个人最优,如此需要良好的心态)

⑵层次性 系统的中的每个元素仍然可以看成一个系统,也是其子系统。一个系统中含有众多的模块,而这些模块也是一个系统,这些模块还含有子模块,其子模块也是一个系统,直至模块中的元素,但对于元素中的属性是否也可以认为是一个系统?

⑶相关性 系统内的各元素是有联系的和相互作用的,这些系统间相互联系和制约,从而有机地集合在一起形成一个具有有、特定功能的系统。

⑷目的性 任何一个系统都有一定的目标或目的,该目标就是通过系统的功能达到的,因此任何系统都有某种功能,而功能是通过组织某些组织、机构来实现的。

⑸适应性 任何系统都处于环境之中,所以系统必须可以适应周围的环境。

系统属性,在系统中我们称有意义的元素为实体(entity),表示实体的特征为属性(attribute),实体的运动的规定时间叫活动(activity),描述系统在任何时间的必要变量叫状态变量,简称状态(state),表示状态变化的出现称为事件(event)。

对于系统的类型,一般有五种分法:
 ⑴按复杂的程度分
 ⑵按系统抽象程度分
 ⑶按系统功能分
 ⑷按系统有外界关系分
 ⑸按系统内部结构、形态分

系统方法,从本质上讲,系统方法是一个哲学名词,它是研究系统工程的思考问题和处理问题的方法论,所谓的系统工程,一是以研究大规模复杂的系统为对象的一门新兴边缘学科,二是具有和一般工程技术有相同的特征,但又具有本身的特点,它并不研究特定的工程物质对象,它是以研究任何物质系统、概念系统。

系统方法的核心是:系统的思想、数学的方法,计算机的技术。

所谓系统的思想即把研究对象作为整体来考虑,着眼于整体最优运行;数学的方法就是用定量的技术即数学方法研究系统,通过建立系统的数学模型和运行模型,将得到的结果进行分析,再用到原来的系统。计算机技术是求解数学模型的工具,在系统的数学模型上进行模拟,以实现系统的最优化。

系统方法的表示,美.H.Hall提出过三维结构:

时间维
  ① 规划阶段 对系统进行定义、确定目标、制定开发计划和策略。
  ② 制定方案 提出具体解决方案。
  ③ 研制阶段 实现系统研发方案。
  ④ 试运行阶段 将项目投入试运行。
  ⑤ 安装调试阶段 将整个系统安装好,拟定运行维护规范和运行计划。
  ⑥ 运行阶段 按预期目标运行系统。
  ⑦ 更新阶段 改进旧系统使之成为新系统。

逻辑维
  ① 问题确定 通过收集数据确定问题。
  ② 确定目标及评价标准 根据问题制定目标和相关标准。
  ③ 系统综合 分析实施项目策略。
  ④ 系统分析 通过建模、推断可供选择的各种方案的可能结果。
  ⑤ 最优化 分析出最优化的系统方案。
  ⑥ 系统决策 从各种方案中选出最优方案。
  ⑦ 计划实施 将最优方案付于实施。

知识维
  ① 基础知识 分析实施系统各种基础知识。
  ② 专业知识 分析实施系统的相关专业知识。

2.系统的信息(infomation)

信息一词已不再陌生,IT行业就是信息行业,但有一个观点需要声明,对于"数据(data)"一词的定义IT行业就是把它当做信息,反之依然。所以在以后提及信息一词就可以认为是数据。但对于非IT领域,一般上认为数据是经过加工后的信息。

信息的基本属性:

① 真伪性 真实是信息中心价值,不真实的信息价值可能为负。

② 层次性 信息是有层次的,一般分为战略级、策略级和执行级。如一个软件公司领导他关心的是战略性的数据(就是信息):产品销路、公司结构等;部门主管和项目经理关心策略级数据:开发方向、开发成果等;系统设计师、系统构架师和程序员关系执行级数据:开发什么、如何开发等。

如何区分战略级、策略级和执行级的数据:

a战略级数据都来自外部,例如关系企业市场、发展目标;策略级数据有来自内部的也有来自外部的,例如生产效益;执行级数据都是来自内部,如:完成指标。

b 战略信息灵活多变,有时需要用计算机和数学方法进行分析,采用的工具复杂,但分析出的结果仅供决策折参考;策略级信息是商量所得的信息,比如开会讨论问题的解决办法,或由公司领导提出的解决办法;执行信息就是执行这些解决办法的的具体实施情况。

c 战略信息精度要求不高,50%以上的精度就可以了;策略级信息的精度比战略信息精度要高;执行信息的精度要求是最高,比如在编写代码的时候是不能有丝毫差错,不然编译就无法通过。

③ 不完全性 比如在软件需求中,作为系统分析员或系统的协调人员,希望从用户那里得来的信息是完全的,这绝对是不可能的。对于系统分析人员来说,如何合理的从众多的信息中通过过滤而得到可以使用的信息是至关重要的。

④ 滞后性 数据或信息只有已经存在我们才能获得,对于那些现在还没有的信息,仅仅可以通过预测(forecast)方式来得到。

⑤ 扩展性 对于任一条信息,只有通过其加工和再分析,才能有用,对其加工和再分析的所得到的信息,也是我们需要的信息(或就是我们需要的信息)。

⑥ 共享性 一条信息并不一定指定有哪个系统可以使用,对于和该信息有关联的系统都可以使用。信息的共享不同于其它的共享,比如有两个人每人各有一个苹果,他们交换后,每人还是一个苹果;但若每人有一个笑话,交换后,每人就有两个笑话。

3.信息的管理

任何信息都是有一定的生命周期的,(某个事物)从信息的获取、加工、存储、维护、使用和退出的整个过程称信息的生命周期。

信息的收集

信息直接作用于软件工程的两个方面:一是系统需求分析,对于系统分析员来说,客户的需求信息是主要的也是必要的;二是软件编制和支持,对系统构架师和代码编写者来说,采用什么样的结构形式便于接口、扩展和维护。
信息的识辨贯彻整个软件开发过程,固然,需要对其大量的信息进行识辨和提炼。

在软件工程上,信息的识辨有三种方法:

①由决策者(项目管理者或客户)识辨。系统分析员向其调查或询问,让其从信息中抽取有用的信息。

②由系统分析员识辨。系统分析员通过观察进行识辨,同时和系统协调员一起参加进行信息的识辨。

③提出条件让计算机进行自动筛选,目前市场上也出现了一些过滤器,在internet上浏览时,我们可以使用Yahoo或Google(称为搜索引擎)来筛选查询我们需要的信息。

信息识辨后,需要对信息进行采集,即通过一种途径把它记录下来,同时也进行适当的整理,使之系统化。

采集和整理有三种途径:

①从上而下的广泛采集或按时间、空间的顺序广泛采集。
 ②有目的地对某个点进行逐点采集。
 ③ 随机收集。

收集和整理完毕后,进行信息的表达(或叫数据的表达),在软件系统上称为GUI,但面前的媒体技术的发展,信息的表达形式出现多样化,无论采用一般什么设备无非还是图表形式、文字形式和声音形式。

4.信息的传输

目前的信息传输主要的载体是网络或其他的通讯媒介,但随着时间的发展,大量的信息将从Internet网络(公网或域网)进行传输。无论采用那种方式进行传输,或传输什么类型的数据,无外有以下几个问题:

① 技术问题 如何正确的、无错码地传输。
 ② 语义问题 如何表述自己的问题,双方可以完好的识别,在通讯上该表述的方式叫通讯原语。
 ③ 效率问题 目前具体事例叫带宽。

信息表述问题之一:数字系统

数字系统包括众所周知的十进制系统,还有二进制、十六进制。

一个比特是一个二进制位,值为0或1。

在数字系统的计算机中,数据和程序都是用比特来编码的,今天硬件是由一个电子线路的状态来表示一个比特。电子线路必须能处于两种状态:一个表示0,另一个表示1。讨论二进制系统、十六进制系统如何使用比特、十六个符号来表示整数。

由于目前计算机传输系统仅可以传输二进制的符号,我们需要传输一个图片或几个文字,都必须将其转化?quot;0"或"1"表述的比特编码。

信息表述问题之二:编码和解码

信息在传输过程中,需要对信息进行编码,在计算机中,任何信息都以文件(file)形式来存放的,文件本身就是一个以二进制编码的,固然在传输时可以直接传输以二进制形式表述的文件。但为了防止传输中产生错误,在信息的传输的过程中,还必须加入一些容错的机制,比如校验或冗余。

所以一般的在文件传输中,是把文件分成片,在每一片上再加上校验代码,把进行处理的文件再在网络上传输。当然在接收端在逆向处理。

在通讯上,一般上述的两个过程叫作编码和解码。

(编码和解码其实是电子实时通讯的术语,其意义就是对输入和输出的信号编码和解码。)

信息表述问题之三:信息变换

主要应用于加密系统,对某些数据,是机密的,必须对其重新"包装"在进行传输,把该信息进行适当的算法变换,处理后再进行传输。

信息加工(有兴趣的读者可以参见"数字信号"一类的书籍)

对于信息。初次采集得到的信号一般称为一次信息,而把经过处理的信息称为二次信息;有些时候也原始的信息称为为一次信息,把采集得到的信息得到称为二次信息(这种情况一般中间有采集器,比如电力系统的PT、CT)。

初级加工:比如滤波、整理(这一类术语可以在"数字信号"一类的书籍上找到,对于那些没有经过计算机专业培训的读者有不要参考一下)。处理模式如图

三.计算机信息系统

计算机信息系统泛以计算机为核心,包括人、机器、规章制度等组成的收集、传递、加工、维护和使用信息的系统。

计算机信息系统按照规模、功能、水平的不同有多个层次,多种类型,比如管理信息系统(MIS)、决策支持系统(DSS)、专家系统(ES)、办公自动化系统(OA)等。

我们来介绍一下决策支持系统,以及决策支持系统和其他系统的关系,来分析一下信息系统的模型。

决策支持系统是支持决策过程的一类信息系统,决策支持系统是一个决策支持的工具,决策者在决策过程中通过人机交互从计算机中存取信息,选择方案。

决策支持系统的逻辑结构:

(注:DB数据库/DD数据字典/ MB模型库/MD模型字典/RB规则库)
 数据库系统提供数据(信息)的存放,其中数据库操作是对数据库系统进行更新、分析、更改等,而其表示系统和部件界面是人机界面系统。同样对于模型库系统,会话操作等也含有人机界面和操作。

从决策支持系统分析中我们可以看出,对系统的操作(分析呀等)就是对模型的操作,但该模型的含义较我们在上面说的较为深一点。该处的模型是系统的表示,其实就是系统(但它还是系统的模型)。此处确实是系统的模型,但什么样的系统模型也是模型,所以没有必要去深究什么系统呀、模型呀等概念,系统也是模型(等同于系统的模型)。

 

版权所有:UML软件工程组织