科学网

 找回密码
  注册
科学网 标签 UML

tag 标签: UML

相关帖子

版块 作者 回复/查看 最后发表

没有相关内容

相关日志

《深入浅出数据库系统及应用基础》实验手册之11
求新 2016-5-2 12:31
实验 11 使用数据库桌面操作系统程序操作数据库 一、实验目的: 应用各类数据库自带语言(例如 SQL Server 自带的 TSQL )操作数据库设计复杂、难度大、界面与实际应用系统差距大,使得对数据库的基本操作困难较大。应用我们设计的“ 数据库桌面操作系统”调用部件库能快速实现对数据库的操作,易学易用,功能完全,性能优异。 通过本实验可以学习数据库桌面操作系统程序操作方法,了解部件库构成、功能与性能及使用方法。 二、实验要求: 运行数据库桌面操作系统 .jar ,了解使用数据库桌面操作系统 .jar 操作数据库的方法,运行不同部件程序,了解部件库的构成、功能与使用方法。 本系统目前包括 8 个单记录数据维护部件、 11 个表格式数据维护部件、 16 个数据查询部件、 13 个数据统计计算与处理部件、 10 个数据导入部件、 6 个数据导出部件、 7 个打印格式生成部件、 6 个打印预览部件与 4 个报表打印部件。涉及任意数据视图;各种单表或二表的录入、修改、删除数据维护;单条件查询、多条件查询、涉及聚合函数的查询、文本查询;涉及数据完整性控制与安全性控制、数十种统计计算或处理函数;从纯文本文件的各种格式的导入导出、从 EXCEL 、 WORD 、 PDF 、 XML 等类文件的导入导出;简单表格式、文本式、标签式报表的格式制作与打印等。 要求了解各类部件功能、性能、主要参数与使用方法。 三、环境要求与实验准备 1 、环境要求 操作系统: WinDowsXP 及以上 程序语言: JAVA (不要求了解语言,只要求正确安装 jdk1.6 ,正确设置环境变量)。 数据库: SQL Server2008 或其它数据库。 2 、实验准备 将“软件生产线 2.0 版”压缩文件解压。 建立数据库 建立 ODBC 数据源 sql1 ,指向该数据库。 进入数据库,“新建查询”,指向自建数据库,执行如下语句,为实验做好准备。 Create Table Student ( Sno CHAR(5) NOT NULL,Sname CHAR(20),Sage INT,Ssex CHAR(2),Sdept CHAR(2)) Go Create Table Course ( Cno CHAR(2),Cname CHAR(20),Cpno CHAR(2),Ccredit INT) Go Create Table SC ( Sno CHAR(5) NOT NULL,Cno CHAR(2) NOT NULL,Grade INT,PRIMARY KEY(Sno,Cno)) Go INSERT INTO Student VALUES('95001',' 钱横 ',18,' 男 ','CS') INSERT INTO Student VALUES('95002',' 王林 ',19,' 女 ','CS') INSERT INTO Student VALUES('95003',' 李民 ',20,' 男 ','IS') INSERT INTO Student VALUES('95004',' 赵三 ',16,' 女 ','MA') INSERT INTO Course VALUES('1',' 数据库系统 ', '5',4) INSERT INTO Course VALUES('2',' 数学分析 ',null ,2) INSERT INTO Course VALUES('3',' 信息系统导论 ','1',3) INSERT INTO Course VALUES('4',' 操作系统原理 ','6',3) INSERT INTO Course VALUES('5',' 数据结构 ','7',4) INSERT INTO Course VALUES('6',' 数据处理基础 ',null,4) INSERT INTO Course VALUES('7','C 语言 ','6',3) INSERT INTO SC VALUES('95001','1',87) INSERT INTO SC VALUES('95001','2',67) INSERT INTO SC VALUES('95001','3',90) INSERT INTO SC VALUES('95002','2',95) INSERT INTO SC VALUES('95002','3',88) INSERT INTO SC VALUES('95002','1',NULL) 四、实验内容 1 、了解数据库桌面操作系统 .jar 操作界面与功能。 2 、了解表格式数据维护部件的功能与应用。 3 、了解单记录式数据维护部件的功能与应用。 4 、了解查询类部件的功能与应用。 5 、了解数据处理类部件的功能与应用。 6 、了解导入、导出部件的功能与应用。 7 、了解报表格式生成、预览、打印等部件的功能与应用。 五、使用数据库桌面操作系统 .jar 操作数据库的实验 实验步骤: 1 、仔细阅读教材 7.1.3 节内容,了解部件库的概念、组成。 2 、双击“数据库桌面操作系统 .jar ”在如图界面中,选择部件,根据所显示的文本框输入有关参数。一般,数据表名、某些程序要求的关键字名是必须输入的,其他参数根据需要选择输入。 界面如图所示: 3 、执行。 注意,每进行一项操作,都需要将所运行的部件关闭,之后再实验下一个部件。 如果涉及office文件导入或导出, 需要下载5个软件包:iText-5.0.5.jar、jacob.jar、PDFBox-0.7.3.jar、poi-3.8-20120326.jar、poi-scratchpad-3.9-20121203.jar并拷贝到p1文件夹的com子文件夹中。 附录:部件库简要介绍 (详细内容参阅本人所著、清华大学出版社出版的《数据库系统原理与应用》一书。) 1 、表格式数据维护部件 表格指只由行与列构成的容器,每个行与列的焦点是一个文本框(或组合框或其他表现数据的控件)。单表表格数据维护部件的特点是以表格作为数据输入、输出界面。表格形式使操作者可以同时看到多行数据且十分直观,当列的数量不多且没有宽度太大的字段时,使用表格界面录入与修改数据都较为快捷。在 SQL SERVER 2008 中借助资源管理器的图形界面可产生编辑数据用的表格界面,但有些操作不够方便,例如不能借助代码库录入、查询也较麻烦等等。 表格式数据维护部件提供表格形式界面显示数据表中数据,主要功能包括数据录入、修改、删除、索引、浏览数据等。主要包括: 1 )表格式数据浏览部件 1(tableTenance1.java) ,主要用于表格式数据浏览。提供索引、接续索引、打印、导出、退出等按钮。可作为全中文名单表单记录数据维护部件的“浏览”、查询累部件的结果显示、导入导出类部件的源或目的数据表显示、数据统计变换类部件的结果显示等使用。 2 )通用表格式数据浏览部件 2(tableTenance2.java) ,主要用于表格式数据浏览。提供索引、接续索引、打印、导出等按钮,可以使用字典表变换显示列名。可作为任意单表单记录数据维护部件浏览数据、查询结果显示、导入导出程序源或目的数据表显示、数据统计变换结果显示等使用。 3 )表格式数据维护部件 3(tableTenance3.java) ,适用于单表数据维护。不能使用代码表、字典表,因此只适应采用中文命名字段名的表的操作。数据直接录入无需存盘按钮。 4 )表格式数据维护部件 4(tableTenance4.java) ,适用于单表数据维护。可以使用代码表、字典表,数据直接录入无需存盘按钮。适用于包括非中文字段名的任意数据表数据维护。 5 )表格式数据维护部件 5(tableTenance5.java) ,适用于单表数据维护。不涉及代码表、字典表,数据需点击存盘按钮或修改存盘按钮完成存盘。适用于中文字段名数据表数据维护,数据可靠性较高。 6 )表格式数据维护部件 6(tableTenance6.java) ,适用于单表数据维护。可以使用代码表、字典表。适用于非中文字段名数据表数据维护,数据可靠性较高。 7 )表格式数据维护部件 7(tableTenance7.java) ,适用于单表数据维护。可以使用代码表、字典表、接口参数表。适用于各种数据表数据维护,界面可较灵活地设置,提供安全性与数据域完整性保护。 8 )表格式数据维护部件 8(tableTenance8.java) ,适用于中文字段名数据子表数据维护,同时显示主表数据内容。不涉及代码表、字典表,提供参照完整性保护。 9 )表格式数据维护部件 9(tableTenance9.java) ,适用于各种数据子表数据维护,同时显示主表数据内容。可以使用代码表、字典表、接口参数表,界面可较灵活地设置,提供安全性与数据域完整性保护、参照完整性保护。 10 )表格、单记录混合式数据维护部件 10(tableTenance10.java) ,适用于各种单数据表数据维护。可以使用代码表、字典表、接口参数表,提供表格显示全表数据,同时提供单记录界面提供数据维护操作。单记录界面用公共列表框表现代码表或历史数据内容。将表格式界面与单记录数据维护界面结合在一起,具有双方的优势。 11 )表格、单记录混合式数据维护部件 11(tableTenance11.java) ,适用于各种单数据表数据维护。可以使用代码表、字典表、接口参数表,提供表格显示全表数据,同时提供单记录界面提供数据维护操作。单记录界面用相应字段组合框表现代码表数据内容,通过鼠标操作可以将数据代码录入到数据表中。 12 )任意数据表格式显示部件 12(tableTenance12.java) ,是一个较独立的程序,适合于随机选择数据表之后浏览表中数据内容。界面中提供列表框,请操作者首先选择数据表,之后显示数据表内容。其程序结构与内容和 tableTenance1.java 相同。 13 )任意数据表格式维护部件 13(tableTenance13.java) ,是一个较独立的程序,适合于随机选择数据表之后提供对表中数据进行录入、修改、删除等操作。界面中提供列表框,请操作者首先选择数据表,之后显示数据表内容,除此之外,其程序结构与内容和 tableTenance9.java 相同。 有些部件允许使用字典表,使得可以根据自己的爱好显示列名。当用英文命名字段时,可以用中文显示,也可应用在数据整合时。字典表名称约定为数据表名加“字典表”字样,其中第一个字段为字段名称,为实际字段名,第 2 个字段为标签名称,是翻译后字段名。 字段号表填写需要显示的字段的字段序号,用逗号分隔,可以让同一部件展示不同视图。 要求按钮号表填写需要安装到界面中的按钮序号,选择按钮号使同一部件可以满足不同应用需求。 管理系统常要求采用代码表,使实现规范化输入域管理。如果选择可以使用代码表的部件,应当首先建立代码表。约定代码表名字为字段名加“代码表”,其中字段名,一个与字段名相同,另一个为字段名加“代码”或字段名中去掉“代码”二字。例如,关于性别,设计用 0 表示男, 1 表示女,那么,设计的代码表取名为“性别代码表”,其中有“性别”、“性别代码”二个字段,包括二条记录:男 0 ;女 1 。在数据表中输入保存的可以是“性别代码”,也可以是“性别”,如果前者,在列表框中显示 0 1 ;录入保存的是性别代码。如果数据表中字段名为“性别”,那么,列表框中显示男 女,录入保存的也是该“性别”的值。 2 、单记录数据维护部件 单记录数据维护类部件用于各种 Windows 环境下的数据库系统对单一的一个数据表进行数据录入、修改、删除等数据维护操作。界面中应用文本框、文本域作为输入输出控件,单记录的意思是每次只能显示一条记录的数据,需要借用“第一条”、“下一条”……等按钮控件程序一条条地移动指针到其他记录上才能看到另外的记录并对它们进行操作。这样的方式的缺点是一次看不到全表全部数据,无法进行记录与记录的对比;优点是可以看到完整的每一条记录,显示格式可以比较容易地设定。 该系列部件程序将数据录入、修改、删除等操作集成到一个程序中,可以单一选做数据录入程序模块、单一选做数据修改程序模块、单一选做数据删除程序模块、……、也可以集成多种功能于一体。 该类部件包括: 1 )单记录数据维护部件 1(dataTenance1.java) 。是最基本的单记录数据维护部件,数据不经任何处理或变换,适用于中文字段名数据表单表数据维护。 2 )单记录数据维护部件 2(dataTenance2.java) 。适用于各种单数据表作单记录数据维护,可使用代码表、字典表,使能实现字段名变换,提供公共列表框显示代码表或历史数据,使能利用鼠标帮助输入。 3 )单记录数据维护部件 3(dataTenance3.java) 。在“ dataTenance1.java ”的基础上加入使用接口参数表实现灵活设置界面,及进行数据完整性、数据安全性控制的功能。虽然可以在数据库中进行安全性、数据域完整性保护,但到存盘时再返回出错信息,效率不高。如果实时地进行处理,将更加可靠。在操作时,用右键点击“接口参数表名”文本框,将弹出参数定义界面,帮助完成有关设定。如果是自定义控件位置,则要求先按汉字个数和高度定义每一个文本框或文本域或图片框宽度、高度、到顶距离与到左边距离,之后点击辅助计算按钮,将自动变换为象素点位单位的位置参数。保存后,将可按所定义数据安置所有控件大小与位置。 4 )单记录数据维护部件 4(dataTenance4.java) 。适用于单记录数据维护,可使用代码表、字典表,使能实现字段名变换,提供公共列表框显示代码表或历史数据,使能利用鼠标帮助输入。可使用接口参数表使能较灵活设置界面,可进行数据完整性、数据安全性控制。如果要求实施安全性保护,要求建立权限表,规定登录人员对有关数据表的权限。如果没有 insert 权限,在安排按钮时,即使“按钮号表”数据允许安装“录入”或“录入存盘”按钮,这些按钮也会被灰掉。同样,如果没有 update 权限,“修改存盘”与“成批修改”按钮会被灰掉;如果没有 delete 权限,“删除”按钮会被灰掉。如果要求实施数据域完整性保护,要在“接口参数表”中对有关字段设置数值大小限制值、或设置字段数据值域、或给出需要遵循的条件表达式。当向某字段的文本框填入数据时,如果不满足条件,将会给出警告,并将已经输入的该字段内容清空,要求重新输入。 5 )单记录数据维护部件 5(dataTenance5.java) 。适用于各单数据表单记录数据维护,使用组合框显示相关代码表内容,可利用鼠标帮助输入。可使用字典表实现字段名称变换。 6 )单记录数据维护部件 6(dataTenance6.java) 。适用于各单数据表单记录数据维护,使用组合框显示相关代码表内容,可利用鼠标帮助输入。可使用字典表实现字段名称变换。可使用接口参数表使能较灵活设置界面,并可进行数据完整性、数据安全性控制。 7 )二表数据维护部件 7(dataTenance7.java) 。适用于子表的单记录式维护,同时用表格显示主表数据。用单记录界面显示子表数据。使用公共列表框显示代码表或历史数据内容,可使用字典表进行字段名称变换,使用接口参数表较灵活设置界面,并可进行数据完整性、数据安全性控制。 8 )多对多集中数据录入部件 8(dataTenance8.java) 。某些时候,一个表中许多记录的某些字段数据可以从另一个数据集中导入,例如,录入一个班某门课程成绩时,学生号或学生名是学生表中该班同名字段全部数据,课程名称或课程号全都相同,如果能自动导入这些数据,只需填写成绩数据,可大大加快录入速度。本程序可进行多对多数据的录入操作,用单记录形式显示一个数据表的数据,当选择一个字段数据后自动在另一表表格中填入相关若干数据。同时提供参照完整性保护。 3 、查询类部件 根据某种条件在一个表或多个表中查找记录是一般应用系统都要求的内容,也是许多数据操作的基础。查询类程序的基础是 SQL 语言的 SELECT 语句。查询类部件的功能是提供用户一个友好界面,使能迅速描述查询要求,快速组成 SELECT 语句,实现查询并按用户需要的格式显示或输出查询结果。 本系统提供的查询类部件包括: 1 )数据查询部件 1(dataQuery1.java) 。按指定字段根据指定关系符查询全中文字段名的单数据表数据。 2 )数据查询部件 2(dataQuery2.java) 。按指定字段根据指定关系符查询任意指定的单数据表数据,可以联系代码表查询。 3 )数据查询部件 3(dataQuery3.java) 。可选择字段、选择关系符查询全中文字段名的单数据表数据。 4 )数据查询部件 4(dataQuery4.java) 。可选择字段、选择关系符查询任意指定的单数据表数据,可以联系代码表查询。 5 )数据查询部件 5(dataQuery5.java) 。按指定字段根据指定关系符形成二个“并”关系或“或者”关系的查询条件,之后查询全中文字段名的单数据表数据。 6 )数据查询部件 6(dataQuery6.java) 。按指定字段根据指定关系符形成二个“并”关系或“或者”关系的查询条件,之后查询任意指定的单数据表数据,可以联系代码表查询。 7 )数据查询部件 7(dataQuery7.java) 。随机选择字段、选择关系符后形成二个“并”关系或“或者”关系的查询条件,之后查询任意指定的单数据表数据。 8 )数据查询部件 8(dataQuery8.java) 。根据指定查询“条件表达式”与“输出要求”查询全中文字段名的单数据表数据。 9 )数据查询部件 9(dataQuery9.java) 。根据指定查询“条件表达式”与“输出要求”查询任意指定的单数据表数据,可以联系代码表查询。 10 )数据查询部件 10(dataQuery10.java) 。多表查询部件,首先进行多数据表连接,多数据表连接方式可以设定为左连接、右连接或全连接。连接之后根据参数中的规定形成单条件或二条件查询界面组织查询。代码表与字典表不发生作用。 11 )数据查询部件 11(dataQuery11.java) 。多表查询部件,首先进行多数据表连接,多数据表连接方式可以设定为左连接、右连接或全连接,再连接代码表。连接之后根据参数中的规定形成单条件或二条件查询界面组织查询。在提示字段名时,会根据字典表变换名字。 12 )数据查询部件 12(dataQuery12.java) 。组合查询部件,不涉及代码表、字典表。操作者一条条选择字段名、选择关系符、输入查询数据并形成条件表达式放到文本域控件中,根据最后形成的完整条件表达式组织查询。 13 )数据查询部件 13(dataQuery13.java) 。组合查询部件,操作者一条条选择字段名、选择关系符、输入查询数据并形成条件表达式放到文本域控件中,根据最后形成的完整条件表达式组织查询。可联系代码表、字典表查询。 14 )数据查询部件 14(dataQuery14.java) 。条件表达式或输出要求中可包含有聚集函数的组合查询部件,不涉及代码表、字典表。 15 )数据查询部件 15(dataQuery15.java) 。条件表达式或输出要求中可包含有聚集函数的组合查询部件,可联系代码表、字典表查询。 16 )数据查询部件 16(dataQuery16.java) 。专门针对宽度超过 50 字节的大数据文本类型字段中所包含的文字内容组织查询的部件。 17 )数据查询部件 17(dataQuery17.java) 。包括普通数据也包括在宽度超过 50 字节的大数据文本类型字段中针对所包含的文字内容组织查询的部件。 4 、数据处理类部件 1 )全表统计部件 ( dataStatistic1.java )。在表格中新增加一行,对全表若干字段进行求和、求平均、求最大、最小、记录数、统计标准偏差、填充统计标准偏差、统计方差、填充统计方差等统计。新增行可以永久性增加。 2 )分组统计部件( dataStatistic2.java )。在表格中按某一或某几个字段值分组,每组记录后及全表后各增加一行,对全表分组及全表数据进行求和、求平均、求最大、最小、记录数、统计标准偏差、填充统计标准偏差、统计方差、填充统计方差等统计。新增行可以永久性增加。 3 )横向数据处理部件( dataStatistic3.java )。对每一条记录中一到多个字段的数据按所指定公式进行计算进行处理,将处理结果放到另一个字段中。如果目的字段已经存在,就改变该字段的值为处理结果的值,否则,在表格中增加一列,将计算值填入到该列中。 = 4 )纵向数据处理部件( dataStatistic4.java )。在表格中按分组或按全表根据本系统函数库中函数进行数据处理存放到表格中。新增行可以永久性增加。 5 )删除重复记录( dataStatistic5.java )。检查二表数据,根据所指定字段求这些字段数据完全相同的记录,删除多余记录,重复记录只保留一行。 6 )求关系差集( dataStatistic6.java )。不改变原表数据,检查二表数据,根据所指定字段求这些字段数据完全相同的记录,删除多余记录,重复记录只保留一行,将得到数据保存到另一表中。 7 )求关系并集( dataStatistic7.java )。按给定第一个表的顺序号合并二个表记录到另一表中,对所指定字段数据完全相同的记录只保留一条。另一表如果不存在,将新建该表。 8 )求关系交集( dataStatistic8.java )。求按给定第一个表的顺序号将二个表完全相同的记录放到另一表中,另一表如果不存在,将新建该表。 9 )关系除法( dataStatistic9.java )。对第一个表按指定字段分组,检查每组指定的部分字段数据是否包含另一表这些字段的全部数据,如果有,将第一个表中该组的一条记录存放到第三个表中,第三表如果不存在,将新建该表。 10 )单数据交叉表( dataStatistic10.java )。根据表中某一字段数据分组为列,按另一字段为行,统计第三字段的数据形成新表。 11 )多数据交叉表( dataStatistic11.java )。根据表中某字段数据分组为列,按另若干字段分组为行,统计另一字段的数据形成新表。 12 )二级分组交叉表( dataStatistic12.java )。多数据交叉表中,按同组一列可分多列,同组一行可分多行形成打印表。 13 )一元线性回归( dataStatistic13.java )。对一表中二个数字型数据分析其函数关系,并用图形表示。 其中横向数据处理部件( dataStatistic3.java )准备了一些函数供调用,可在本输出要求中列出函数号,例如“ P01 ”表示求方差,准备存放方差值的字段名要列在字段号表 2 中,参加运算的各字段必须全为数字类类型数据,各字段的字段顺序号要求放到变量“字段号表 3 ”中。 各函数及意义如下:(函数后面括号中说明的是对参加运算的字段数据类型的要求)。 P01 :方差(标准偏差的平方) ( 数字类型字段名 1, 数字类型字段名 2 ) P02 :标准偏差 ( 数字类型字段名 1, 数字类型字段名 2 ) P03 :算术平均值的标准偏差 ( 数字类型字段名 1, 数字类型字段名 2 ) P04 :变为简述中文大写元角分 ( 壹仟零叁拾元另叁角 )( 数字类型字段名 ) P05 :变为规则格式中文大写元角分 ( 壹仟零百贰拾零元叁角零分 )( 数字类型字段名 ) P06 :变为简述中文元角分 ( 二拾元零三角 )( 数字类型字段名 ) P07 :变为规则格式中文元角分 ( 二拾零元三角零分 )( 数字类型字段名 ) P08 :变中文大写元角分 ( 壹仟零叁拾元另叁角 ) 为数字 ( 字符类型字段名 ) P09 :变规则格式中文大写元角分 ( 壹仟零百贰拾零元叁角零分 ) 为数字 ( 字符类型字段名 ) P10 :变中文大写元角分为数字 ( 字符类型字段名 ) P11 :变规则格式中文元角分为数字 ( 字符类型字段名 ) P12 :用大写字母返回指定的字符表达式 ( 字符类型字段名 ) P13 :根据指定的 ANSI 数值代码返回其对应的字符 ( 数字类型字段名 ) P14 :返回数字型星期值 ( 日期类型字段 ) 或 ( 日期时间类型字段 ) P15 :返回年份 ( 日期类型字段 ) P16 :返回字符型星期值 ( 日期类型字段 ) 或 ( 日期时间类型字段 ) P17 :日期时间表达式的小时部分 ( 日期时间类型字段 ) 或 ( 时间类型字段 ) P18 :日期时间型表达式中的分钟部分 ( 日期时间类型字段 ) 或 ( 时间类型字段 ) P19 :日期或日期时间表达式的月份值 ( 日期时间类型字段 ) P20 :日期时间型表达式中的秒钟部分 ( 日期时间类型字段 ) 或 ( 时间类型字段 ) P21 :日期时间表达式中返回一个日期值 ( 日期时间类型字段 ) P22 :返回给定日期表达式的天数 ( 日期类型字段 ) 或 ( 日期时间类型字段 ) P23 :以日期时间值返回当前的日期和时间 ( 日期类型字段 ) P24 :变日期为中文年月日 ( 二零零三年元月十五日 )( 日期类型字段 ) P25 :变日期为数字年月日( 2003 年 1 月 15 日) ( 日期类型字段 ) P26 :变日期格式为字符 ****.**.** 格式 ( 日期类型字段 ) ) P27 :变日期格式为字符 ****_**_** 格式 ( 日期类型字段 ) P28 :变日期格式为字符 ****-**-** 格式 ( 日期类型字段 ) P29 :变中文年月日 ( 二零零三年元月十五日 ) 为日期格式 ( 字符类型字段名 ) P30 :变数字年月日( 2003 年 1 月 15 日)格式为日期格式 ( 字符类型字段名 ) P31 :返回给定日期或日期时间表达式的月份英文名称 ( 日期类型字段 ) 或 ( 日期时间类型字段 ) 5 、数据通信类部件 一般应用系统中程序与程序之间、一个系统与另一个系统之间往往存在大数据量的交互,其交互一般通过文件、其他数据表作为媒介。一个系统也常将数据转存到其他文件或数据表中。将当前数据表中内容转存到其他文件或表中称为导出;从文件或其他数据表中将数据转存到当前表中称为导入。 网络已经是管理工作中不可缺少的工具,从网上下载数据到当前表中,或将数据上传到网络中也是应用系统必备功能。 这些都称为数据通信。本系统设计了如下部件服务于网络通信。 1 )覆盖式导出到纯文本文件、 XML 文件与其他数据表部件( dataTransfer1.java )。原目的文件内容删除,当前表数据导出到指定文件中,如果原文件不存在,生成新文件。生成的纯文本文件包括按标准格式存放、紧缩格式、自定义格式等不同格式组织。 2 )添加式导出到纯文本文件、其他数据表部件( dataTransfer2.java )。原目的文件内容保留,当前表数据添加到目的文件尾部。纯文本文件包括标准格式、紧缩 2 格式、自定义格式等不同格式。 3 )修改式导出到纯文本文件、 XML 文件与其他数据表部件( dataTransfer3.java )。原目的文件内容保留,根据关键字用当前表数据修改目的文件数据。纯文本文件包括标准格式、紧缩 2 格式、自定义格式等不同格式。 4 )覆盖式导出到 Office 文件部件( dataTransfer4.java )。原目的文件内容删除,当前表数据导出到指定文件中,如果原文件不存在,生成新文件。 Office 文件包括 excel 文件、 word 文件与 PDF 文件。要求下载开源软件包: jacob.jar 、 poi-3.8-20120326.jar 等。 5 )添加式导出到 Office 文件部件( dataTransfer5.java )。原目的文件内容保留,当前表数据添加到目的文件尾部。 Office 文件包括 excel 文件与 word 文件。要求下载公共软件包。 6 )修改式导出到 Office 文件部件( dataTransfer6.java )。原目的文件内容保留,根据关键字用当前表数据修改目的文件数据。 Office 文件包括 excel 文件与 word 文件。要求下载公共软件包。 7 )覆盖式从纯文本文件、 XML 文件与其他数据表导入部件( dataTransfer7.java )。当前数据表数据删除,从文件中导入数据到当前表中,纯文本文件包括包括标准格式、紧缩 2 格式、自定义格式等不同格式。 8 )添加式从纯文本文件、 XML 文件与其他数据表导入部件( dataTransfer8.java )。当前数据表数据保留,从文件中导入数据到当前表尾部。文本文件包括包括标准格式、紧缩 2 格式、自定义格式等不同格式。 9 )修改式从纯文本文件、 XML 文件与其他数据表导入部件( dataTransfer9.java )。当前数据表数据保留,从文件中导入数据到当前表中,根据关键字用当前表数据修改目的文件数据。文本文件包括包括标准格式、紧缩 2 格式、自定义格式等不同格式。 10 )覆盖式从 Office 文件导入部件( dataTransfer10.java )。当前数据表数据删除,从文件中导入数据到当前表中, Office 文件包括 excel 文件与 word 文件。要求下载公共软件包。 11 )添加式从 Office 文件导入部件( dataTransfer11.java )。当前数据表数据保留,从文件中导入数据到当前表尾部。 Office 文件包括 excel 文件与 word 文件。要求下载公共软件包。 12 )修改式从 Office 文件导入部件( dataTransfer12.java )。当前数据表数据保留,从文件中导入数据到当前表中,根据关键字用当前表数据修改目的文件数据。 Office 文件包括 excel 文件与 word 文件。要求下载公共软件包。 13 )从网页下载并导入部件( dataTransfer13.java )。根据网页地址读取网页内容并导入到当前数据表中。 14 )导出生成邮件部件( dataTransfer14.java )。将当前表中数据组织生成邮件发送。 15 )通用导入部件( dataTransfer15.java )。该部件可以独立使用,也可以被数据维护部件、数据查询部件调用。将提问源文件类型、源文件名、导入方式,之后组织导入。 16 )通用导出部件( dataTransfer16.java )。该部件可以独立使用,也可以被数据维护部件、数据查询部件调用。将提问目的文件类型、目的文件名、导出方式,之后组织导入。 6 、打印报表部件设计 在各种管理信息系统中,设计打印报表都是重要内容,也是很费时的工作。对于常用到的格式固定的报表可以先设计报表格式文件,然后调用该文件打印。需要设计方便操作的格式文件生成程序,及根据格式文件组织打印的程序。 1 )简单表格式报表格式生成部件( printFormat1.java )。给定报表名、副标题、日期、行高、各列宽度、表尾内容、表尾日期、表尾签名 1 、表尾签名 2 、表尾签名 3 ,按数据表进行打印。 2 )带分组统计报表格式生成部件( printFormat2.java )。给定报表名、副标题、日期、行高、各列宽度、表尾内容、表尾日期、表尾签名 1 、表尾签名 2 、表尾签名 3 ,按分组统计部件输出内容进行打印。 3 )统计图表生成格式部件( printFormat3.java )。给定报表名、副标题、日期、行高、横坐标名称、横坐标单位、纵坐标名称、纵坐标单位、柱面或圆饼或折线要求、表尾内容、表尾日期、表尾签名 1 、表尾签名 2 、表尾签名 3 ,按分组统计部件输出内容进行打印。 4 )带统计图报表格式生成部件( printFormat4.java )。产生既有表格又有图表的报表的格式。 5 )单记录式报表格式生成部件( printFormat5.java )。定义每一行每个数据(标签或数据值)的行、列位置,行高、列宽度、字体、字号、是否有右表格线、是否有下表格线等内容。此外包括:报表名、副标题、日期、行高、各列宽度、表尾内容、表尾日期、表尾签名 1 、表尾签名 2 、表尾签名 3 等内容。 6 )标签表格式报表格式生成部件( printFormat6.java )。将一个表格式报表看作块,按横向与纵向复制为多块打印的格式文件。复制后各块内容有相同与按数据表内容各块不同二大类。 7 )标签单记录式报表格式生成部件( printFormat7.java )。将一个单记录式报表看作块,按横向与纵向复制为多块打印的格式文件。复制后各块内容有相同与按数据表内容各块不同二大类。 8 )相应打印预览部件与格式生成部件对应 9 )相应打印报表部件与格式生成部件对应
个人分类: 生活点滴|3144 次阅读|0 个评论
[转载]UML--建模
baibing 2012-11-10 15:45
http://www.qdgw.com/zhuantiweb/jpkc/2009/rjkf/xmwd/Visio_UmlModel.htm#Top 使用Visio进行UML建模 内容提纲: 1、VISIO中的UML建模环境 2、用例图(USE CASE Diagram)的使用 2.1 用例图的组成 2.2 创建用例图 2.2.1 建立角色(Actor) 2.2.2 建立用例 2.2.3 建立角色和用例的通信 2.2.4 建立用例间的关系 2.2.5 建立用例图 3、活动图的建立 3.1 活动图的组成 3.2 创建活动图 4、静态结构图(Static Structure Diagram)的使用 4.1 类静态结构图的组成 4.2 创建类静态结构图 4.2.1 类的建立 4.2.2 类间关系的建立 5、序列图(Sequence Diagram)的建立 6、VISIO与MS .NET 6.1 VISIO生成.NET代码 6.2从.NET生成VISIO中的UML图 参考资料 1 、VISIO中的UML建模环境 Microsoft Visio“UML 模型图”解决方案为创建复杂软件系统的面向对象的模型提供全面的支持。包括下列工具、形状和功能: n “UML 模型资源管理器”,它提供模型的树视图和在视图间进行浏览的手段。 n 预定义的智能形状,表示 UML 标注中的元素并支持 UML 图表类型的创建。在程序控制下,这些形状的运行方式同 UML 语义学相符。 n 易于访问“UML 属性”对话框,可通过这些对话框将名称、特性、操作和其他属性添加到 UML 元素。 n 标识和诊断错误(例如丢失数据或不正确地使用 UML 表示法)的动态语义错误检查。 n 对用 Microsoft Visual C++ 6.0 或 Microsoft Visual Basic 6.0 创建的项目进行反向工程,以生成 UML 静态结构模型的能力。 n 使用 C++、Visual C# 或 Microsoft Visual Basic 根据 UML 模型中的类定义生成代码框架。 n 标识特定于语言的错误的代码检查实用程序,这些错误可使代码无法用您为生成代码指定的目标语言编译出来。 n 为 UML 静态结构、活动、状态图、组件和部署图创建报告 模型资源管理器的使用 当您打开“UML 模型图”解决方案时,您就打开了一个建模环境,并且从开始时模型便已经就位。 (图 1) 如果没有显示出“模型资源管理器”,可以单击“UML”菜单 —“视图” —“模型资源管理器” “UML 模型资源管理器”中的树状视图表示您的总体系统模型。您创建的图表都是该模型的视图。 表示您当前正在建模的系统中。若要添加模型,请在“UML”菜单上单击“模型”。 在这种情况下,将您系统的一个模型或抽象内容表示为静态结构模型。要重命名树状视图中的任何图标,请对图标的文本单击一次,然后再单击一次该文本。键入新的名称。 表示静态结构模型中最上层的包。包是一种容器。此软件包含有所有静态结构模型元素。 默认情况下,新模型所包括的包会含有常见的数据类型。您可以创建含有您自己的数据类型的包。 单击加号 (+) 显示包的内容。单击减号隐藏包的内容。 得到图(1)的步骤如下: A. 将最顶层包的默认名称改为“PetShop”:单击右键,选择“重命名” B. 将包“静态模型“改名为“Design Model”:单击右键,选择“重命名” C.其他包命名依次类推 返回页首 2 、用例图(USE CASE Diagram)的使用 返回页首 2.1 用例图的组成 用例图表示处于同一个系统中参与者和用例之间的关系。是一组动作序列(包括它的变衍生物)的描述,系统执行该动作序列来为参与者产生一个可观测的结果值。在VISIO中包括三部分: 角色(ACTOR) 表示活动的发起者,VISIO中用 表示。 用例(USE Case) 实际的场景,如登陆系统,物品进仓,VISIO中用表示 表示。 系统边界 指示系统用例的边界,用来确定系统内部和外部之间的界限。用矩形框表示。 返回页首 2.2 创建用例图 假设(1),我们有个仓库系统,有三个活动(用例):物品进仓,物品出仓和显示物品的库存.当出仓的时候要检查物品的库存情况,如果库存小于5就不能出仓。活动的执行者是仓库管理员(这些都是来自需求文档),出入仓时管理员需要开据出入仓单.本示例我们主要考虑出仓情况。 返回页首 2.2.1 建立角色(Actor) 在“图 1”中选择“Actors package”,单击右键,选择“主角”,输入“名称”,如图2、图3所示: 图 2 图 3 返回页首 2.2.2 建立用例 在图1中选择“Usercases”,单击右键,选择“用例”,输入“名称”,如图4,图5所示: 图 4 图 5 返回页首 2 .2.3 建立角色和用例的通信 在VISIO中表示为: 返回页首 2.2.4 建立用例间的关系 A.使用关系 在用例图中,将“使用”关系形状拖到绘图页上; 将“使用”端点(不带箭头)粘附到使用其他用例方式的“用例”形状的连接点*上; 将“使用”端点(带有箭头)粘附到正使用的用例的连接点上; 双击“使用”形状,打开“UML 归纳属性”对话框。添加属性值,然后单击“确定”。 B.扩展关系 在用例图中,将“扩展”形状拖到绘图页上; 将不带箭头的“扩展”端点+粘附到提供扩展的用例的连接点+上; 将带有箭头的“扩展”端点粘附到基础用例的连接点上; 双击“扩展”形状,打开“UML 归纳属性”对话框。添加属性值,然后单击“确定”。 返回页首 2.2.5 建立用例图 在图 1中选择“Usecase Model”,单击右键,选择“用例图”,这里保留默认的名称。然后就可以将我们已经建立的角色和用例从左边的树拖动到右边的空白区了,同时还需要建立系统边界,从假设(1)我们得知出仓要检查物品的库存,因此用例“货物出仓”要使用用例“显示物品的库存”(没有“显示库存”用例“货物出仓”用例就不完整)。而对于用例“物品进仓”,仓库管理员也可以在进仓的同时来检查物品的库存情况,因此两者之间是扩展关系(“货物出仓”用例本身功能完整,但管理员也可以在某些时候查看库存),另外仓库管理员还可以直接查看库存信息,完成后的用例图如下: 图 6 注意: 如要了解创建用例图的更多知识,请参看 Visio 联机帮助。 返回页首 3 、活动图的建立 返回页首 3.1 活动图的组成 泳道:用来表示活动图中的责任,是个矩形 ; 状态:用来表示某个活动或动作,分为“动作状态”,“状态”,“初始状态”,“最终状态”; 控制流:表示从一个状态到另一个状态的变化。 返回页首 3.2 创建活动图 根据假设(1)我们创建物品出仓的活动图,步骤如下: 在图1中选择包“Usecases”,单击右键选择“活动图”; 将泳道拖到右边,双击泳道重命名为“物品出仓”。将“初始状态”从左边拖动到右边空白区 将三个“动作状态” 拖到右边,分别命名为“申请出仓”,“选择仓库”和“判断库存”,然后在三者之间增加控制流 ; 将“判定”流程 拖到右边,增加两个控制流,双击控制流分别输入临界表达式:成功和失败; 将“最终状态”拖到右边.连接步骤4中的两个控制流。 最后的结果如下: 注意 : 1:该图的“合并”(由顶至下第三个菱形)是UML工业标准,Visio暂时不支持该图标。2:如要了解创建活动图的更多知识,请参看 Visio 联机帮助。 返回页首 4 、静态结构图(Static Structure Diagram)的使用 在VISIO中有两种静态结构图:概念静态结构图和类静态结构图。概念静态结构图是表示现实世界中的概念以及它们之间的关系。它侧重于关系和属性而不是方法,并有助于您了解开发的系统所针对的领域内的术语。 类静态结构图是将软件系统分解为各个部分。不过在类图中,各部分指的是类,代表已经完整定义的软件实体,而并不是代表现实世界概念的对象。除属性和关联之外,类图还可指定操作、方法、界面和依赖关系。 我们重点介绍类静态结构图。 返回页首 4.1 类静态结构图的组成 类静态结构图是由类或对象组成的,在VISIO中用 来表示,类之间的关系主要有关联,依赖和归纳三种: 关联是用 、 、 表示 依赖是用 表示 继承(归纳)是用 表示的 返回页首 4.2 创建类静态结构图 在图1中选择“staticview”,单击右键选择“静态结构图”,然后从右边选择Class图标拖动至右边的空白区中: 图 8 返回页首 4.2.1 类的建立 将类的图标从左边拖动至于右边。输入类的名称、属性和方法: 图 9 图 10 图11 根据假设(1),仓库系统里有如下类: GoodsOutput(出仓单),GoodsOutputItem(出仓项目),StoreHouse(仓库类)、Product(物品类)、Manager(仓库管理员类)、StoreHouseControl(仓库控制类)、People(人员类),依次建立。 返回页首 4.2.2 类间关系的建立 通过分析我们得知一个仓库里可以包含有很多的物品,即两者是关联关系(一对多)。而Manager是从People继承而来。因此可以使用“继承”图形。 关联关系: 将一个“二元关联”形状从“UML 静态结构”模具拖到要关联的类旁边的绘图页上; 将关联形状的端点粘附到该类形状的连接点*上; 双击该“关联”形状,打开其“UML 属性”对话框,然后输入或选择要设定的属性值; 单击“确定”。 继承关系: 将“继承”形状从“UML 静态结构”模具拖到要关联的类或包旁边的绘图页上。 将箭头旁边的端点粘附到更普通元素的连接点*上。将没有箭头的端点粘附到更具体元素的连接点上。 双击该“归纳”形状。在“UML 归纳属性”对话框中,添加名称、构造型、鉴别器和其他属性值,然后单击“确定”。 静态图如下: 注意: 如要了解创建静态结构图的更多知识,请参看 Visio 联机帮助。 返回页首 5 、序列图(Sequence Diagram)的建立 序列图显示参与交互作用的角色或对象,以及它们生成的按时间排序的事件。通常,序列图显示特定用例实例产生的事件。 序列图中的纵向维代表时间,按时间先后依次向下排序。横向维代表不同的角色或对象。 下面就根据假设(1)来画一个用例“物品出仓”的序列图 1.在图1中选择“Usecase Realization”,单击右键选择“序列图”; 2.将“对象生命线” 拖入右边空白区,双击“对象生命线”,输入名称“aManger”,将“分类器”设为“仓库管理员”,单击确定。这样一个对象就建立好了。类静态结构图中其它的Class依样照搬: 3.将“激活”拖到“GoodsOutput对象生命线”上,对于其余的对象处理方式类似; 4.添加“消息(调用)”到两个“激活”之间。例如对于GoodsOutput生命线和StoreHouse生命线,当添加了“消息(调用)”以后,表示类GoodsOutput会创建类StoreHouse的一个实例,对于物品出仓用例,我们首先需要确定出仓的货物,所以在此我们调用相应的方法,我们首先从左边的工具栏拖动“消息”,并连接相应的激活,结果如下图所示。 5.双击“消息1”,如果GoodsOutput类没有这个方法会自动弹出一个添加方法的对话框,由于我们已经添加了这个方法,所以此处我们可以直接选择相应的操作,若果存在参数,我们可以通过实参来调整参数名称,如图: 6.根据假设(1),出仓的时候需要检查物品的库存(小于5就不能出仓),因此StoreHouse需要一个GetProductStorage方法来得到物品的库存; 7.库存返回后,根据库存执行不同的调用,如果库存不小于5,创建新的GoodOutputItem实例; 8.如果返回的库存小于5,使用 来添加返回“Nothing Added”。最后得到的序列图如下: 注意 : 如要了解创建序列图及UML其他图的更多知识,请参看 Visio 联机帮助。 返回页首 6 、 VISIO 与 MS .NET 返回页首 6.1 VISIO 生成.NET代码 从UML图生成相应的代码我们称为正向工程,在Visio中可以很方便生成.Net的代码。 1.单击“UML”选项—“代码”—“生成”,此时会弹出一个对话框.在里面选择要生成代码的包; 2.选择“目标语言”和“位置”,单击确定。 返回页首 6.2 从.NET生成VISIO中的UML图 由代码生成UML图我们称为反向工程,在.Net里可以很方便的生成UML图。 打开.Net项目,选择“项目”—“UML”—“反向工程: 输入要生成的VISIO文件命.单击保存。 返回页首 参考资料 (1) Microsoft Visio 帮助文档 返回页首 2、UML模型的基本概念 http://www.vchome.net/swengineer/umlrosecmm/uml03.htm 第一章 UML 模型的基本概念 1 UML的建筑块   组成 UML 有三种基本的建筑块: 1 、事物( Things ) 2 、关系( Relationships ) 3 、图( Diagrams ) 事物是 UML 中重要的组成部分。关系把事物紧密联系在一起。图是很多有相互相关的事物的组。 1.1 UML的事物 UML 中有始终类型的事物: 1 、结构事物( Structural things ) 2 、动作事物( Behavioral things ) 3 、分组事物( Grouping things ) 4 、注释事物( Annotational things ) 这些事物是 UML 模型中最基本的面向对象的建筑块。它们在模型中属于最静态的部分,代表概念上等或物理上的元素。 1.1.1结构事物。 总共有七种结构化事物。首先是类( class ),类是描述具有相同属性、方法、关系和语义的对象的集合。一个类实现一个或多个接口。在 UML 中类被画为一个矩型,通常包括它的名字、属性和方法。   Window Origin Size Open() Close() Move() Display() 图 1-1 类 第二种是接口( interface ),接口是指类或组件提供特定服务的一组操作的集合。因此,一个接口描述了类或组件的对外的可见的动作。一个接口可以实现类或组件的全部动作,也可以只实现一部分。接口在 UML 中被画成一个圆和它的名字。 图 1-2 接口 第三种是协作( collaboration ),协作定义了交互的操作,是一些角色和其它元素一起工作,提供一些合作的动作,这些动作比元素的总和要大。因此,协作具有结构化、动作化、维的特性。一个给定的类可能是几个协作的组成部分。这些协作代表构成系统的模式的实现。协作在 UML 中用一个虚线画的椭圆和它的名字来表示。     图 1-3 协作   第四种是 use case , use case 是描述一系列的动作,这些动作是系统对一个特定角色执行,产生值得注意的结果的值。在模型中 use case 通常用来组织动作事物。 Use case 是通过协作来实现的。在 UML 中, use case 画为一个实线椭圆,通常还有它的名字。 图 1-4 use case 第五种是活动类( active class ),活动类是这种类,它的对象有一个或多个进程或线程。活动类和类很相象,只是它的对象代表的元素的行为和其他的元素是同时存在的。在 UML 中活动类的画法和类相同,只是边框用粗线条。 EventManager Suspend() Flush() 图 1-5 活动类 第六种是组件( component ),组件是物理上或可替换的系统部分,它实现了一个接口集合。在一个系统中,你可能会遇到不同种类的组件,例如 COM+ 或 JAVA BEANS 。组件在 UML 中用如下的图表示: 图 1-6 组件 第七种是结点( node ),结点是一个物理元素,它在运行时存在,代表一个可计算的资源,通常占用一些内存和具有处理能力。一个组件集合一般来说位于一个结点,但有可能从一个结点转到另一个结点。结点通常用如下的图形表示: 图 1-7 结点 类、接口、协作、 use case 、活动类、组件和结点这七个元素是在 UML 模型中使用的最基本的结构化事物。系统中还有这七种基本元素的变化体,如角色、信号(某种类),进程和线程(某种活动类),应用程序、文档、文件、库、表(组件的一种)。 1.1.2 动作事物   动态事物是 UML 模型中的动态部分。它们是模型的动词,代表时间和空间上的动作。总共有两种主要的动作事物。 第一种是 ineraction , interaction 是由一组对象之间在特定上下文中,为达到特定的目的而进行的一系列消息交换而组成的动作。 interaction 中组成动作的对象的每个操作都要详细列出,包括消息、动作次序(消息产生的动作),连接(对象之间的连接)。在 UML 中消息画成带箭头的直线,通常加上操作的名字。 图 1-8 消息 第二种是状态机( state machine ),状态机由一系列对象的状态组成。在 UML 中状态表示为下图: 图案 1-9 状态 interaction 和状态机是 UML 模型中最基本的两个动态事物元素,它们通常和其他的结构元素、主要的类、对象连接在一起。 1.1.3 分组事物   分组事物是 UML 模型中组织的部分,可以把它们看成是个盒子,模型可以在其中被分解。总共只有一种分组事物,称为包( package )。 包是一种将有组织的元素分组的机制。结构事物、动作事物甚至其他的分组事物都有可能放在一个包中。与组件(存在于运行时)不同的是包纯粹是一种概念上的东西,只存在于开发阶段。在 UML 中用如下图表示包: 图 1-10 包 1.1.4 注释事物   注释事物是 UML 模型的解释部分。 UML 中用如下图表示: 图  1-11 注释 1.1.5 UML中的关系 UML 中有四种关系: 1. 依赖( Dependencies ) (图 1-12 依赖) 2. 关联( Association ) (图  1-13 关联)   3. 一般化( generalization ) (图 1-14 一般化) 4. 实现 (realuzation) (图  1-15 实现) 1.1.6 UML中的图 1 、类图( class diagram ) 2 、对象图( class diagram ) 3 、 Use case diagram 4 、 Sequence diagram 5 、 Collaboration diagram 6 、 Statechart diagram 7 、 Activity diagram 8 、 Compomnent diagram 9 、 Deployment diagram 关于这些图的详细介绍将在今后的章节中讲解。   联系本文作者: 21newtimes@163.net 如果本文某些术语翻译得不正确,敬请大家指教。关于UML的东西我也是最近才接触,本文如有错误还请原谅。 第二章 Hello World 记得在学习 C 语言的时候,教科书上的第一个程序就是叫 Hello world ,一个在屏幕上简单地打印出 “Hello world!” 语句的例子。在系统的学习 UML 语言之前我们来看一个简单的例子,让大家有一个系统的认识。 在 java 中一个在浏览器中显示 “Hello World!” 的 Applet 代码如下: import java.awt.Graphics; class HelloWorld extends java.applet.Applet{ public void paint( Graphics g ){ g.drawString("Hello World!", 10,10 ); } } 代码的第一行: import java.awt.Graphics; 使得程序可以使用 Graphics 类。前缀 java.awt 指出了类 Graphics 所在的包。 第二行代码: class HelloWorld extends java.applet.Applet{ 从 Applet 类派生出新的类 HelloWorld , Applet 类在 java.applet 包中。 接下来的三行代码: public void paint( Graphics g ){ g.drawString("Hello World!", 10,10 ); } 声明了类 HelloWorld 的方法 paint ,在他的实现中调用了另一个方法 drawString 来输出 “Hello World!” 。 我们可以很直接地为这个程序用 UML 建立模型。如图 2-1 。 图 2-1 HelloWorld 图 2-1 表达了最基本的 HelloWorld 模型,但它还有很多东西没有表示出来。在我们的程序中 Applet 类和 Graphics 类的使用是不相同的。 Applet 用作 HelloWorld 类的父类,而 Graphics 类用在方法 paint 的实现中。在 UML 模型中可以将这些关系表示为图 2-2: 图 2-2 HelloWorld 的类图 在图 2-2 的类关系图中,我们用简单的矩行图标表示类 Applet 和 Graphics 类,没有将它们的属性和方法显露出来是为了简化。图中的空心箭头表示 HelloWorld 类是 Applet 类的子类,代表一般化。 HelloWorld 和 Graphics 之间的虚线箭头表示依赖关系,表示 HelloWorld 类使用了 Graphics 类。 到这里或许你认为已结束了,其实不然,如果认真研究 java 库中的 Applet 类和 Graphics 类会发现他们都是一个庞大的继承关系中的一部分。追踪 Applet 的实现可以得到另外一个类图,如图 2-3 所示: 图 2-3 HelloWorld 继承图       联系本文作者: 21newtimes@163.net 如果本文某些术语翻译得不正确,敬请大家指教。关于UML的东西我也是最近才接触,本文如有错误还请原谅。 第三章 类 类是具有相同属性、操作、关系的对象集合的总称。通常在 UML 中类被画成矩形。 名称 每个类都必须有一个名字,用来区分其它的类。类名是一个字符串,称为简单名字。路径名字是在类名前加包含类的包名为前缀。例如 Wall 、 java::awt::Wall 都是合法的类名。 属性 属性是指类的命名的特性,常常代表一类取值。类可以有任意多个属性,也可以没有属性。在类图中属性只要写上名字就可以了。如下图 也可以在属性名后跟上类型甚至缺省取值,如下图: 操作 操作是类的任意一个实例对象都可以调用的,并可能影响该对象行为的实现。操作在类图中如下图描述: 组织属性和方法 在画类图的时候没有必要将全部的属性和操作都画出来。实际上,在大部分情况下你也不可能在一个图中将类的属性和操作都画出来。在画类图时可以只将感兴趣的属性和操作画出来就可以了。可以用 ”...” 表示还有属性或方法没有画出来。为了更好地组织属性或方法,可以在一组功能相同的属性或方法前加上一个描述的前缀( 中的文字),如下图: 职责 职责指的是类所担任的任务,类的设计要完成什么样的功能,要存担的义务。一个类可以有多种职责,设计得好的类一般至少有一种职责,在定义类的时候,将类的职责分解成为类的属性和方法。 通常在 UML 中在类图的最下方用单独的部分列出类的职责。 类的职责其实只是一段或多段文本描述。 通用建模技术 1. 为系统的词汇建立模型 l 标识出用户或解决问题时用来描述问题的东西,使用 CRC 卡片和基于 USE - CASE 的分析来找出这些抽象。 l 对每一个抽象,标识出它的职责集合。确定明确地定义了每一个类,在为所有类确定的职责中取得了很好的平衡。 l 为类提供实现类的职责所需要的属性和方法。 2. 为系统的职责分配建立模型 l 标识出行为相类似的对类 l 找出这些类的职责 l 把这些类作为整体看待,把职责多的类分为几个小类 l 考虑这些类如何协作,重新进行类的职责分配已满足协作中没有类太多职责或太少职责 3. 为非软件的事务建立模型 l 为抽象成类的事务建立模型 l 如果你建模的是硬件本身包含有软件,建模时考虑为一种 NODE ,这样可以对它进一步的分解。 4. 为原始类型建模 l 为类型或枚举建立模型 l 如果要对这种类型取值范围进行说明,使用约束。   联系本文作者: 21newtimes@163.net 如果本文某些术语翻译得不正确,敬请大家指教。关于UML的东西我也是最近才接触,本文如有错误还请原谅。 第四章 关系 依赖关系( Dependency ) 依赖关系是一种使用关系,特定事物的改变有可能会影响到使用该事物的事物,反之不成立。在你想显示一个事物使用另一个事物时使用依赖关系。 通常情况下,依赖关系体现在某个类的方法使用另一个类作为参数。在 UML 中你可以在其它的事物之间使用依赖关系,特别是包和节点之间。 图 4-1 依赖关系 一般化( Generalization ) 一般化是继承关系,是叫做“ is-a-kind-of ”的关系。在 UML 中你可以在包之间建立一般化关系。 图 4-2 一般化 关联( Association ) 关联是一种结构化的关系,指一种对象和另一种对象有联系。给定有关联的两个类,可以从一个类的对象得到另一个类的对象。关联有两元关系和多元关系。两元关系是指一种一对一的关系,多元关系是一对多或多对一的关系。一般用实线连接有关联的同一个类或不同的两个类。当你想要表示结构化关系时使用关联。 有一些修饰可以应用于关联。 1. 名字:可以给关系取名字 2. 角色:关系的两端代表不同的两种角色 3. 重数:表示有多少对象通过一个关系的实例相连接   联系本文作者: 21newtimes@163.net 如果本文某些术语翻译得不正确,敬请大家指教。关于UML的东西我也是最近才接触,本文如有错误还请原谅。 第五章 通用机制 UML 中的四种机制使地它简单和更易于使用,你可以在 UML 语言的任何时候用同样的方法来使用,这四种机制是: l specifications l adornments l common divisions l extensibility 本章讨论 adornments 和 extensibility 这两种机制。 注释是最重要的一种修饰。一个注释在 UML 中是一个图形符号,描述了和它相关联的元素或一组元素的限制或注释语。 上图就是一个使用注释的例子,图中右边的为注释符号。 UML 的扩充性机制允许你在控制的方式下扩充 UML 语言。这一类的机制包括: stereotype ,标记值、约束。 Stereotype 扩充了 UML 的词汇表,允许你创建新的建筑块,这些建筑块从已有的继承而来,但特别针对你的问题。标记值扩充了 UML 的建筑块的属性,允许你在元素的规格中创建新的信息。约束扩充了 UML 建筑块的语义,允许你添加新的规则或修改已有的。你将使用这些机制来让 UML 满足你的领域和开发的特别需要。 上面是一个使用扩充机制的例子。 subsystem 是 stereotype , {version = 3.2} 是标记值 术语和概念 注释 是一种图形符号用来限制或给一个元素或一组元素加上注解。 注释 画成一个带折角的矩形,在矩形中加上文字或图形的注解, stereotype 是 UML 词汇的扩充,允许你创建新的 UML 建筑块,这些新的建筑块和原有的类似,但特别针对你自己的问题。通常 stereotype 画成用 和 包围起来的一个名字,通常放在另一个元素的名字之上。作为可选, stereotype 可以画成加一个图标。 标记值 是 UML 元素特性的扩充,允许你创建元素规格的新的信息。在 UML 中标记值画成 {} 内的字符串,跟在元素名后面。 限制 是 UML 元素语义的扩充,允许你对一个 UML 元素添加新规则或修改存在的规则。限制通常画成 {} 内的字符串,放在关系附近。当然,你也可以把限制用注释来表示。 通用建模技术 1. 建模注解 使用注释的目的是为了让模型更清晰,下面是使用注释的一些技巧: l 将注释放在你要注解的元素边上,写下注解的文字。用依赖关系的线将注释和被注释的元素连起来会让人更明白。 l 记住,你可以隐藏元素或使隐藏的元素可见。这就意味着你可以将注释不隐藏起来,而她注释的元素是可见的,这样会使你的模型图简洁,在必要的地方让注释可见。 l 如果你的注释很长或不仅仅是普通文本,你可以将你的注解放到一个独立的外部文件中(如 WORD 文档)然后链接或嵌入到你的模型中。 下面是一个使用注解的例子: 建立新的建筑块 UML 的建筑块如:类、接口、合作、组件、注释、关系等等,都在为具体问题建模的时候基本上是够用了。然而,如果你想扩展你的模型的词汇,如用来表示你的特定的问题领域,你需要 stereotypes 。 建立新的建筑块有如下的技巧: l 确定没有现成的基本的 UML 方法可以表达你的需要。如果你碰到一个普通的建模问题,很有可能已经有某种标准的 stereotype 是你想要的。 l 如果你确信没有现成的东西可以表达这些语义,首先找到一个 UML 中的最接近你要建立的模型的元素(例如:类、接口、组件、注释、关系等等)然后为她定义一个 stereotype 。值得一提的是你可以定义 stereotypes 的层次从而得到一般的 stereotypes 和为它定义的特别的特性。这种方法尽量少用。 l 通过对普通的 stereotype 定义一组标记值和对 stereotype 进行限制可以实现普通 stereotype 不能实现的功能。 l 如果你希望这些 stereotype 具有不同的视觉效果,为他们定义一个特别的图标。 上面是一个例子。假如你用活动图来为一个涉及到教练工作流和队员工作流的体育活动建模。在这里,区别教练和运动员以及与其他的本领域的对象是有意义的。上面的图中有两个事物是很突出的,教练对象和队员对象。这里不仅仅是普通的类,更确切地说,他们现在是两个新的建筑块。因为定义了教练和队员 stereotype ,并且运用到了 UML 的类上。在这个图上,被标记为 :Coach 和 :Team 的匿名实例,后者显示了不同的状态。 建模新属性 UML 建筑块的基本属性如:类的属性和操作,包的内容等等,都足够描述清楚你要建立的模型。然而,如果你想扩展这些基本建筑块(或者用 stereotype 建立的新的建筑块)的属性,你就需要使用标记值。 下面是一些技巧: l 首先要确定的是你的需要无法用基本的 UML 表达。如果你碰到一个普通的建模问题,很有可能已经有某种标准的标记值是你想要的 l 如果你确定没有其他的方法可以表达你需要的语义,添加新的属性到一个单独的元素或一个 stereotype 。继承的规则是适用的,也就是说对父亲定义的标记值对儿子也具有。 建立新的语义 当你用 UML 建立模型的时候,你总是使用 UML 定义的规则,这实在是件好事,因为别的懂得如何读 UML 的人可以毫无偏差地读懂你想要表达的东西。然而,如果你发现你需要表达的语义是 UML 无法表达的或你想要修改 UML 的规则,这时你就需要使用限制了。下面是使用限制的一些技巧: l 首先要确定的是你的需要无法用基本的 UML 表达。如果你碰到一个普通的建模问题,很有可能已经有某种标准的限制是你想要的。 l 如果你确定没有其他的方法可以表达你需要的语义,用文本的形式在限制中写下你的新语义,并且将他放在他涉及的元素附近。你可以使用依赖关系来明确地表示限制和他涉及的元素之间的关联。 l 如果你需要详细说明你的语义,你可以用使用 OCL 把它写下来。 下面的图是一个公司人力资源系统的一小部分: 这副图显示了每个 Person 可能是 0 个或多个 Department 的成员。每个 Department 至少要有一个 Person 成员。这副图进一步说明每个 Department 严格地有一个 Person 作为管理者,每个 Person 可以是 0 个或多个 Department 的被管理人员。所有的这些语义可以被简单的 UML 表达。然而,为了指出一个管理者必须也是 Department 的成员是多员关系所忽略的,也是简单的 UML 无法表达的。为了表达这种关系,你必须写下一个限制指出管理者是 Department 成员的一个子集。从子集到超集用依赖关系将两个关系联系起来。   联系本文作者: 21newtimes@163.net 如果本文某些术语翻译得不正确,敬请大家指教。关于UML的东西我也是最近才接触,本文如有错误还请原谅。 第六章 图前言 建模实际上是对真实世界进行简化,从而可以更好地理解你要开发的系统。使用 UML 中基本的建筑块如:类、接口、关系、协作、组件、依赖、继承等,可以建立你想要的模型。还可以利用第五章介绍的机制扩充 UML 来表达问题领域独特的东西。 图是你组织这些建筑块的方式。图代表着一系列的元素,这些元素常常被画成用点(事物)和弧(关系)相连的图。利用图来从不同的视角来观察系统。由于没有一个复杂的系统可以从一个透视图弄明白, UML 定义了一些图使得我们可以独立地从几个不同的视角来了解系统。 好的图使得你要开发的系统是易于理解和可以接近的。选择好的图对系统建模让你找到系统中真正要问的问题,帮助你阐述清楚你的系统。 术语和概念 系统 是组织起来完成特定目标的一组子系统。系统可以用一组模型,可能来自不同的视角,进行描述。 子系统 是一组元素,其中一些通过包含的另外的元素组成特定的行为。 模型 是对系统进行语义上的抽象,它是整个真实系统的简化,为了更好地理解系统而创建的。图是一系列的元素,这些元素常常被画成用点(事物)和弧(关系)相连的图。利用图来从不同的视角来观察系统。 系统代表着你要开发的事物,通过不同的模型从不同的透视图来观察系统,这些透视图以图的形式表达。 在对真实世界进行建模的时候,你可以发现不管你的问题处于什么样的领域,你都会创建相同的图,因为他们代表着通用的模型的通用的视。通常,你利用下面的图来观察系统的静态部分: 1. 类图 (Class Diagram) 2. 对象图 (Object Diagram) 3. 组件图 (Compoment Diagram) 4. 分布图 (Deployment Diagram) 使用下面的五种额外的图来观察系统动态的方面: 1. Usecase 图 2. 序列图 (Sequence Diagram) 3. 协作图 (Collaboration Diagram) 4. 状态图 (Statechart Diagram) 5. 活动图 (Activity Diagram) UML 定义了这五种图。 结构化图( Structural Diagrams) 1. 类图 (Class Diagram) 类、接口和协作 2. 对象图 (Object Diagram) 对象 3. 组件图 (Compoment Diagram) 组件 4. 分布图 (Deployment Diagram) 节点( Notes ) 类图 类图显示了一组类、接口和协作以及它们之间的关系。类图在面向对象的建模设计中是很常用的。利用类图阐明系统的静态的设计。包含活动类( active classes )的类图通常用来说明看到的系统静态过程。 对象图 对象图显示了一组对象和他们之间的关系。使用对象图来说明数据结构,类图中的类或组件等的实例的静态快照。对象图和类图一样反映系统的静态过程,但它是从实际的或原型化的情景来表达的。 组件图 组件图显示了一些组件和它们之间的关系。使用组件图来说明系统的静态实现。组件图和类图是有联系的,通常一个组件可以映射成一个或多个类,接口或协作。 分布图 分布图显示了一些节点和它们之间的关系。使用分布图来说明系统的静态结构。分布图和组件图是有联系的,通常一个节点封装了一个或多个组件。 动作图( Behavioral Diagrams) UML 中定义的动作图包括: 1. Usecase 图 2. 序列图 (Sequence Diagram) 3. 协作图 (Collaboration Diagram) 4. 状态图 (Statechart Diagram) 5. 活动图 (Activity Diagram) Usecase 图 Usecase 图显示了一些 Usecase 和角色(特殊的类)和他们的关系。使用 usecase 图来描述系统静态的功能场景。 Usecase 图对于组织和模型化系统的动作是很重要的。 序列图 序列图是一种交互图( interaction diagram ),强调的是时间和消息的次序。一个序列图显示了一系列的对象和在这些对象之间发送和接收的消息。对象通常是命名或匿名的类的实例,也可以代表其他事物的实例,例如协作、组件和节点。使用序列图来说明系统的动态情况。 协作图 协作图是一种交互图( interaction diagram ),强调的是发送和接收消息的对象之间的组织结构。一个协作图显示了一系列的对象和在这些对象之间的联系以及对象间发送和接收的消息。对象通常是命名或匿名的类的实例,也可以代表其他事物的实例,例如协作、组件和节点。使用协作图来说明系统的动态情况。 注意:序列图和协作图是同构的,它们相互之间可以转化而不损失信息。 状态图 状态图显示了一个状态机,由状态、转换、事件和活动组成。使用状态图说明系统动态情况。状态图对于建模接口的动作、类的动作或协作的动作是重要的。状态图强调的是事件驱动的对象的动作,这在对反应式系统的建模是相当重要的。 活动图 :活动图显示了系统中从一个活动到另一个活动的流程。活动图显示了一些活动,他们很象传统的流程图有序列或分支。活动图对于给系统的功能建模是很重要的。活动图强调的是对象之间的流程控制。 通用建模技巧 1. 对系统的不同视进行建模 l 决定采用哪个视才能最好地表达系统的结构,以及暴露出项目的技术风险。前面讨论的五种图是很好的开始点。 l 对每一种视图决定要画那些图,通常一个视图会对应多个图 l 作为你的过程计划的一部分,决定那些图是要作为项目文档保存。 l 不要认为一次能够将图画好,最好准备一个装废纸的房间。 例如,如果你为一个简单的应用建模。你可能只需要其中一部分视图。 Usecase 视图 usecase 图 设计 (Design) 视图 类图 交互图 处理( Process )视图 不需要 展开视图 不需要 实现视图 不需要 如果你是一个反应式的系统或系统的重点在处理流程上,你可能想包括状态图和活动图来建立系统的动作模型。 同样的,如果你是一个 Client/Server 系统,你可能想用组件图和分布图来为你的系统的物理细节进行建模。 最后,如果你是要对一个复杂的、分布式的系统建模,你需要使用所有的 UML 的图来表达系统的结构和项目的技术风险,如下所示: Usecase 视图 Usecase 图 活动图 设计视图 类图(结构化建模) 交互图(动作建模) 状态图(动作建模) 过程视图 类图(结构化建模) 交互图(动作建模) 实现视图 组件图 展开视图 分布图 2. 不同抽象层次建模 你不仅要从不同的视角观察系统,还要系统进行不同层次的抽象,因为参加项目开发的人可能对同一个系统的视图需要不同的抽象层次。对于程序员来说,他希望看到的是类的属性、方法,而对于一个系统分析员使用 usecase 场景来说只要看到存在这么个类就可以了,这里程序员要求的抽象层次较底层。可以通过隐藏或显示不同层次的细节来实现不同抽象层次的模型,或者创建不同层次抽象的图。 l 考虑你的读者的需要,从一个给定的模型开始 l 如果你的读者使用模型是构造一个实现,他需要的是较低层的抽象,也就是说他需要更多的细节。如果他利用概念模型只是为了和最终用户交流,他需要的是高层次的抽象,不需要细节的东西。 3. 复杂视图建模 l 首先确信没有更好的方法可以利用高层次的抽象表达要表达的信息,即便是删除一部分图或保留细节到另外一部分。 l 如果你隐藏了你所能隐藏的细节而你的图还是很复杂,考虑将一部分元素分组放到包里或放到较高层次的协作中,然后在你的图中只画这些包和协作。 l 如果你的图还是很复杂,使用注释或颜色来钩出你的重点好引起读者的注意 l 如果你的图依然很复杂,哈哈,打印出来,贴到墙上,将读者叫来亲自讲解给他听吧。希望他能明白 …… 其实你可以自己慢慢研究,最后发现简化还是可以的。 第七章 类图 前言 类图是在面向对象的系统模型中使用得最普遍的图。类图包含了一组类、接口和协作以及他们之间的关系。 你使用类图来为系统的静态视图建模。通常这包括模型化系统的词汇(从系统的词汇表中发现类),模型化协作,或则模型化模式。类图还是一些相关的图的基础,包括组件图、分布图。 类图的重要性不仅仅体现在为系统建立可视化的、文档化的结构模型,同样重要的是构建通过正向和反向工程建立执行系统。 术语和概念 类图:类图是一组类、接口和协作以及他们之间的关系构成的。 类图通常包含如下的内容: l 类 l 接口 l 协作 l 依赖关系、继承关系、关联关系 同其他的图一样,类图也可以包含注解和限制。 类图中也可以包含包和子系统,这两者用来将元素分组。有时后你也可以将类的实例放到类图中。 注:组件图和分布图和类图类似,虽然他们不包含类而是分别包含组件和节点。 你通常通过下面三种方式使用类图: 1 , 为系统词汇建模型 为系统的词汇建模实际上是从词汇表中发现类,发现它的责任。 2 , 模型化简单的协作 协作是指一些类、接口和其他的元素一起工作提供一些合作的行为,这些行为不是简单地将元素加能得到的。例如:当你为一个分布式的系统中的事务处理过程建模型时,你不可能只通过一个类来明白事务是怎样进行的,事实上这个过程的执行涉及到一系列的类的协同工作。使用类图来可视化这些类和他们的关系。 3 , 模型化一个逻辑数据库模式 想象模式是概念上设计数据库的蓝图。在很多领域,你将想保存持久性数据到关系数据库活面向对象的数据库。你可以用类图为这些数据库模式建立模型。 通用建模技术 没有类是单独存在的,他们通常和别的类协作,创造比单独工作更大的语义。因此,除了捕获系统的词汇以外,还要将注意力集中到这些类是如何在一起工作的。使用类图来表达这种协作。 l 确定你建模的机制。机制代表了部分你建模的系统的一些功能和行为,这些功能和行为是一组类、接口和其他事物相互作用的结果。 l 对于每个机制,确定类、接口和其他的参与这个协作的协作。同时确定这些事物之间的关系。 l 用场景来预排这些事物,沿着这条路你将发现模型中忽略的部分和定义错误的部分。 l 确定用这些事物的内容来填充它们。对于类,开始于获得一个责任(类的职责),然后,将它转化为具体的属性和方法。 图 7-1 模型化简单的协作 图 7-1 是一个自治机器人的类图。这张的图焦点聚集那些让机器人在路上行走的机制对应的类上。你可以发现一个虚类 Motor 和两个从它派生出来的类: SteeringMotor 和 MainMotor 。这两个类都从它的父亲 Motor 继承了五个方法。这两个类又是另一个类 Driver 的一部分。类 PathAgent 和 Driver 有一个 1 对 1 的关系,和 CollisionSensor 有 1 对 n 的关系。 在这个系统中其实还有很多其他的类,但这张图的重点是放在那些将机器人移动的类上的。在其他的图中你可能也会看到这些类。通过将焦点放在不通的功能上,可以获得从不通的角度对整个系统的认识,最终达到认识整个系统。   很多系统都是有持久性数据的,也就是说要将这些数据保存到数据库中以便下一次使用。通常你会使用关系型数据库或面向对象的数据库,或其它类型的数据库来保存数据。 UML 很适合为逻辑数据库模式建模。 UML 的类图是 E-R 图(为逻辑数据库建模的通用工具)的超集,尽管 E-R 图的重点是数据,类图的扩展允许模型化行为。在物理数据库中这些逻辑操作一半转化为触发器或存储过程。 l 确定那些状态比其生命周期要长的类。 l 创建一张包含这些类的图,标记它们为持久性的。 l 详细定义它们的属性。 l 对于使得物理数据库设计复杂的模式如:循环关系、 1 对 1 关系、 N 元关系,考虑创建中间抽象来使得逻辑结构复杂。 l 详细定义这些类的操作,特别是那些访问数据和涉及数据完整性的方法。 l 如果可能的话使用工具来将你的逻辑设计转化为物理设计。 图 7-2 模式建模   建模是重要的,但要记住的是对于开发组来说软件才是主要的产品,而不是图。当然,画图的主要目的是为了更好地理解系统,预测什么时候可以提供什么样的软件来满足用户的需要。基于这个理由,让你画的图对开发有指导意义是很重要的。 某些时候,使用 UML 。你的模型并不能直接映射成为代码。例如,如果你在使用活动图为一个商业过程建模,很多活动实际上涉及人而不是计算机。 很多时候,你创建的图形可以被映射成为代码。 UML 并不是专门为面向对象的语言设计的,它支持多种语言,但使用面向对象的语言会更直观些,特别是类图的映射,它的内容可以直接映射成为面向对象语言的内容。如: C ++, SMALLTALK 、 ADA 、 ObjectPascal 、 Eiffel 和 Forte 。 UML 还支持如 Visual Basic 这样的面向对象的语言。 正向工程 :是从图到代码的过程。通过对某中特定语言的映射可以从 UML 的图得到该语言的代码。正向工程会丢失信息,这是因为 UML 比任何一种程序语言的语义都丰富。这也正是为什么你需要 UML 模型的原因。结构特性、协作、交互等可以通过 UML 直观地表达出来,使用代码就不是那么明显了。 对类图的正向工程: l 选择将图形映射到哪一种程序语言。 l 根据你选择的语言的语义,你可能要对使用某写 UML 的特性加以限制。例如: UML 允许你使用多重继承,而 SmallTalk 只允许一重继承。 l 使用标记值来指定比的目的语言。你可以在类级进行也可以在协作或包的层次上进行。 l 使用工具来对你的模型进行正向工程。 反向工程: 反向工程是从代码到模型的过程。 进行反向工程: l 确定将你的程序语言的代码反向成模型的规则。 l 使用工具( Rose C++ Analyzer )进行反向工程。 提示和技巧 一个结构化好的类图: l 焦点放在系统静态设计视图的一个方面 l 只包含为了理解该方面而应该存在的元素 l 提供足够的信息来理解该图 l 不让读者产生错误的信息 当你画类图的时候: l 给它起一个名字,这个名字能表达类图的用途 用最少的交叉线来组织它的元素。   联系本文作者: 21newtimes@163.net 如果本文某些术语翻译得不正确,敬请大家指教。关于UML的东西我也是最近才接触,本文如有错误还请原谅。 3、四步轻松实现用Visio画UML类图 http://developer.51cto.com/art/201006/208114.htm
个人分类: 学习随笔|4245 次阅读|0 个评论
[转载]如何用UML建模
热度 1 baiyunrui 2012-3-31 11:46
转载: http://blog.sina.com.cn/s/blog_3f405210010008sl.html UML是Unified Modeling Language(统一建模语言)的缩写,是使用面向对象概念进行系统分析设计的工具,它主要是用一些规范、形象的图形来描述业务或系统—也就是称之为建立业务模型或系统模型,用UML建模,既是用UML建立业务模型和系统模型。 业务模型是指用UML描述业务,即画出业务(business)用例图,当然,这里说画用例图,不应仅仅理解为画出图形,用例图应附有详细的业务说明。 业务用例如下所示(注意:在Rational Rose中业务人员和业务用例和系统用例在图形上有所不同,业务用例用一个椭圆加一斜杠表示。)。 一般说来,业务建模只需要画出业务用例图即可。在判断一项业务的复杂程度和大小规模时,常常可根据业务用例数量来判断,因此,在业务建模时,每个业务用例应合理分解,得到的业务用例应在业务复杂程度,规模大小方面相差不多,以便于对业务的评估和进行系统开发。 系统模型是指用UML描述系统,系统模型是在分析业务模型后得到的,通常,系统模型用用例图、类图、时序图三种图来描述即可,如果功能较为复杂,也可以用活动图和状态图来对某一部分功能进行特别描述。 系统用例图是从软件功能的角度去描述软件系统,因此和业务用例是不同的,表示如下: 系统用例图不是必须的,但它能帮助我们理解系统模型。 类图是系统模型中最重要的图形,是UML中唯一能产生程序代码的图形,类图描述了对象的属性和方法,如下入所示: 类图示系统建模必不可少的图形,如果做得好,可由类图生成程序的结构,然后由程序员按照类图生成的程序结构去细化程序,实现功能。 时序图是对类图的补充,它描述了对象的方法的调用情况,时序图和类图的联系最为紧密,在时序图中添加一个消息(我一直不明白为什么要称之为消息),如下图中的inputStudents() ,则会在消息所指向的对象类图中的类—Register 自动生成一个方法inputStudents()(但在时序图中删除一个消息,则不会自动删除类图中对应的方法)。 时序图虽不能生成程序,但它对系统功能的操作能较为清楚地描述,相对类图(类图称为静态模型)而言,它是一种动态的描述,因此称为动态模型。 有一种和时序图相同功能的图叫做协作图,在Rational Rose 可以用F5键自动转换这两个图。 总结,建模分为业务建模和系统建模,其中: 1、业务建模即建立业务模型—业务用例图; 2、系统建模即建立系统模型—用例模型(用例图)、静态模型(类图)、动态模型(时序图)。 UML图形中英文对照(Rational Rose软件): 1、用例图—Use Case Diagram 2、类图—Class Diagram 3、时序图—Sequence Diagram 4、协作图—Collaboration Diagram 5、状态图—Statechart Diagram 6、活动图—Activity Diagram 7、组件图—Component Diagram 8、配置图—Deployment Diagram
个人分类: 软件工程|3312 次阅读|2 个评论
UML rCOS Sun Meng Zhiming Liu 孙猛
jiangdm 2012-2-23 20:14
UML  rCOS  Sun Meng  Zhiming Liu  孙猛
Contents 1 UML http://www.uml.org/ UML for Java Programmers UML Distill 3ed 2 rCOS and Zhiming Liu Deadlock checking by a behavioral effect system for lock handling Robustness testing for software components rCOS: Theory and Tool for Component-Based Model Driven Development rCOS: a formal model-driven engineering method for component-based software Graph transformations for object-oriented refinement rCOS: Refinement of Component and Object Systems Refinement of Models of Software Components rCos tutorial slide: Unblockable Compositions of Software Components Ensemble Engineering and Emergence 面向服务架构中服务实现的策略 3 Sun Meng (孙猛) Towards the Introduction of QoS Information in a Component Model 4 others 一种基于构件演算的主动构件精化方法 Unifying Theories of Programming 1 UML UML for Java Programmers Robert Cecil Martin Prentice Hall, Englewood Cliffs, New Jersey 2002 UML for Java Programmers.zip UML_for_Java_Programmers.ppt src.zip UML Distill UML Distilled 3 Edition A Brief Guide to the Standard Object Modeling Language Martin Fowler, Kendall Scott Publisher: Addison Wesley Chapter 1. Introduction 1.1 What Is the UML? The Unified Modeling Language (UML) 1.2 Ways of Using the UML 1.3 How We Got to the UML 1.4 Notations and Meta-Models 1.5 UML Diagrams UML 2 describes 13 official diagram types listed in Table 1.1 and classified as indicated on Figure 1.2. 1.6 What Is Legal UML? 1.7 The Meaning of UML Chapter 2. Development Process 2.1 Iterative and Waterfall Processes 2.2 Predictive and Adaptive Planning 2.3 Agile Processes 2.4 Rational Unified Process All RUP projects should follow four phases. 2.5 Fitting a Process to a Project 2.6 Fitting the UML into a Process 2.6.1 Requirements Analysis 2.6.2 Design 2.6.3 Documentation 2.7 Choosing a Development Process Chapter 3. Class Diagrams: The Essentials 3.1 Properties two quite distinct notations: attributes and associations. 3.1.1 Attributes 3.1.2 Associations 3.2 When to Use Class Diagrams a few tips: structure vs. behavior 3.3 Where to Find Out More 3.4 Multiplicity 3.5 Programming Interpretation of Properties 3.6 Bidirectional Associations 3.7 Operations query vs. modifiers 3.8 Generalization inheritance 3.9 Notes and Comments 3.10 Dependency 3.11 Constraint Rules Object Constraint Language (OCL) Chapter 4. Sequence Diagrams Interaction diagrams: describe how groups of objects collaborate in some behavior. 4.1 Creating and Deleting Participants 4.2 Loops, Conditionals, and the Like 4.3 Synchronous and Asynchronous Calls 4.4 When to Use Sequence Diagrams Chapter 5. Class Diagrams: Advanced Concepts 5.1 Keywords A profile 5.2 Classification and Generalization 5.3 Multiple and Dynamic Classification 5.4 Association Class 5.5 Template (Parameterized) Class 5.6 Enumerations 5.7 Active Class 5.8 Visibility 5.9 Message 5.10 Responsibilities 5.11 Static Operations and Attributes 5.12 Aggregation and Composition 5.13 Derived Properties 5.14 Interfaces and Abstract Classes 5.15 Read-Only and Frozen 5.17 Reference Objects and Value Objects 5.18 Qualified Associations Chapter 6. Object Diagrams Chapter 7. Package Diagrams Chapter 8. Deployment Diagrams Chapter 9. Use Cases A scenario: a sequence of steps describing an interaction between a user and a system A use case: a set of scenarios tied together by a common user goal An actor: a role that a user plays with respect to the system 9.1 Content of a Use Case 9.2 Use Case Diagrams The use case diagram shows the actors, the use cases, and the relationships between them: ·- Which actors carry out which use cases ·- Which use cases include other use cases 9.3 Levels of Use Cases 9.4 Use Cases and Features (or Stories) 9.5 When to Use Use Cases Chapter 10. State Machine Diagrams 10.1 Internal Activities 10.2 Activity States 10.3 Superstates 10.4 Concurrent States 10.5 Implementing State Diagrams 10.6 When to Use State Diagrams Chapter 11. Activity Diagrams Activity diagrams are a technique to describe procedural logic, business process, and work flow 11.1 Decomposing an Action 11.2 And There's More 11.3 When to Use Activity Diagrams 11.4 Where to Find Out More Petri nets 11.5 Partitions 11.6 Signals 11.7 Tokens 11.8 Flows and Edges 11.9 Pins and Transformations 11.10 Expansion Regions 11.11 Flow Final 11.12 Join Specifications Chapter 12. Communication Diagrams Chapter 13. Composite Structures Chapter 14. Component Diagrams Chapter 15. Collaborations Chapter 16. Interaction Overview Diagrams Chapter 17. Timing Diagrams UML Distilled, 3rd Ed (Martin Fowler - Addison Wesley).pdf rCOS Deadlock checking by a behavioral effect system for lock handling Ka I Pun, Martin Steffen, Volker Stolza The Journal of Logic and Algebraic Programming 81 (2012) 331–354 Abstract: Deadlocks are a common error in programs with lock-based concurrency and are hard to avoid or even to detect. Oneway for deadlock prevention is to statically analyze the program code to spot sources of potential deadlocks. Often static approaches try to confirm that the lock-taking adheres to a given order, or, better, to infer that such an order exists. Such an order precludes situations of cyclic waiting for each other’s resources, which constitute a deadlock. In contrast, we do not enforce or infer an explicit order on locks. Instead we use a behavioral type and effect system that, in a first stage, checks the behavior of each thread or process against the declared behavior, which captures potential interaction of the thread with the locks. In a second step on a global level, the state space of the behavior is explored to detect potential deadlocks.We define a notion of deadlock-sensitive simulation to prove the soundness of the abstraction inherent in the behavioral description. Soundness of the effect system is proven by subject reduction, formulated such that it captures deadlock-sensitive simulation. To render the state-space finite,we show two further abstractions of the behavior sound, namely restricting the upper bound on re-entrant lock counters, and similarly by abstracting the (in general context-free) behavioral effect into a coarser, tail-recursive description. We prove our analysis sound using a simple, concurrent calculus with re-entrant locks. Keywords: Concurrency, Deadlock prevention, Static analysis, Behavioral type and effect systems, Simulation relation, Abstraction Deadlock Checking by a Behavioral Effect System for Lock Handling.pdf Robustness testing for software components Bin Lei, Xuandong Li, Zhiming Liu, Charles Morisset, Volker Stolz Science of Computer Programming 75 (2010) 879-897 Abstract: Component-based development allows one to build software from existing components and promises to improve software reuse and reduce costs. For critical applications, the user of a component must ensure that it fits the requirements of the application. To achieve this, testing is a well-suited means when the source code of the components is not available. Robustness testing is a testing methodology to detect the vulnerabilities of a component under unexpected inputs or in a stressful environment. As components may fail differently in different states, we use a state machine based approach to robustness testing. First, a set of paths is generated to cover transitions of the state machine, and it is used by the test cases to bring the component into a specific control state. Second, method calls with invalid inputs are fed to the component in different states to test the robustness. By traversing the paths, the test cases cover more states and transitions compared to stateless API testing.We apply our approach to several components, including open source software, and compare our results with existing approaches. 1. Introduction Component based design: how to use existing components in the design or maintenance of a new and larger application. three major properties: -- the fitness -- the correctness -- the robustness, rCOS: theory of component-based design The objective of the work: to present generate test cases to detect robustness failures the organization of this paper: 1) section 2 introduces the rCOS method for component based design, focusing on the notion of contracts and implementation of components, and defining what we mean when we say an implementation is correct. 2) Section 3 defines robust components and discuss the causes of non-robustness so as to motivate our method. 3) Section 4 describes the methodology of the protocol based testing framework. 4) Section 5 outline the implementation of the prototype tool and give experimental results for the evaluation of our tool. 5) Section 6 discuss related work, summarise our work, and give a plan of future work 2. Component contracts 2.1. UTP as root of semantic theory unifying theories 2.2. Interfaces and their contracts main concepts in rCos -- Interfaces. -- Contracts 2.3. Component implementation 3. Robustness testing 3.1. Causes of robustness failures -- an incomplete contract specification 3.2. Robustness test case 3.3. Exceptions and robustness 4. Method 4.1. Path generation 4.2. Parameter generation for object oriented programs 4.3. Analysis of preconditions 5. Tool implementation and experimental results 6. Related work and conclusions 6.1. Related work 6.2. Conclusions 6.3. Future work Robustness Testing for Software Components.pdf rCOS: Theory and Tool for Component-Based Model Driven Development Zhiming Liu, Charles Morisset, and Volker Stolz FSEN 2009, LNCS 5961, pp. 62–80, 2010 Abstract. We present the roadmap of the development of the rCOS theory and its tool support for component-based model driven software development (CB-MDD). First the motivation for using CB-MDD, its needs for a theoretical foundation and tool support are discussed, followed by a discussion of the concepts, techniques and design decisions in the research of the theory and the development of the prototype tool. The concepts, techniques and decisions discussed here have been formalized and published. References to those publications are provided with explanations. Based on the initial experiences with a case study and the preliminary rCOS tool development, further development trajectory leading to further integration with transformation and analysis plug-ins is delineated. Keywords: contract, component, design pattern, model transformation. 1 Introduction four fundamental attributes: -- the complexity of the domain application, -- the difficulty of managingthe development process, -- the flexibility possible to offer through software, -- the problem of characterizing the behavior of software systems interoperability: the aim of this paper: to present the rCOS approach to CB-MDD for handling software complexity. the organization of this paper: 1) Section 2 motivates the research in the rCOS modeling theory and the development of a prototype tool. -- first show how CB-MDD is a natural path in the advance of software engineering in handling complexity by separation of concerns. -- then followed by a discussion of the key theme, principles,challenges, and essential techniques of a component-based model driven approach. 2) Section 3 summarize the theoretical aspects of rCOS and show how they meet the needs discussed in Sect.2 3) Section 4 reports our initial experience with the tool, and based on the lessons learned, we delineate the further development trajectory leading to further integration with transformation and analysis plug-ins. 4) Section 5 gives concluding remarks 2 Natural Path to CB-MDD the complexity of a system - separation of concerns waterfall model:requirements capture and analysis, design, coding and testing 2.1 Early Notions of Components and Models modules - component the principles: -- structured programming -- modularization the spiral model: -- project management --risks control software defect detection: - tools two different models:state based, event based and property based 2.2 Theoretical and Tool Support to Successful CB-MDD The discipline: – each phase is based on the construction of models, – models in later phases are constructed from those in earlier phases by model transformations, – code is an executable model generated from models in the design phase. For a safety critical application: – the models constructed are verifiable, – model transformation are proven to preserve desirable properties of the models, such as functional correctness, and – the model transformations generate conditions about the models, called proof obligations, that are verified by using verification techniques and tools. component-based model driven design: -- theoretical foundation -- strong technical and tool support the key features of this modeling approach: -- Multi-dimensional separation of concerns. -- Object-orientation in CB-MDD. -- Component-based architecture. -- Scaling and automating refinement. -- data functionality refinement -- interaction refinement --object-oriented structure refinement -- Tool supported development process. 3 Theoretical Foundation of rCOS 3.1 Component Implementation and Component Refinement -- Interfaces: -- UTP as root of semantic theory. -- Semantics and refinement of components. -- Object-orientation in rCOS. 3.2 Contracts requirements analysis model - a design model - an implementation model. actor: -- Contracts for black-box modeling. -- Refinement of contracts. -- Correctness of components. -- Component publications and their faithfulness. -- Theorem of separation of concerns. contracts +publications of an interface -a notion of extended contract a contract: a black box behavior model of interfaces 3.3 Publications 3.4 Composition components coordination: Internalization and plugging -- Composition of contracts and publications of components -- Composition of component implementations. -- Compositional modeling, refinement and verification. 4 The rCOS Tool a UML profile -rCOS 4.1 Tool Support to Requirement Analysis 4.2 Model Transformation Tool to Support Design threes kinds of model transformations: -- Object-oriented design of a component. -- 5 Concluding Remarks the purpose of this paper: presented the motivation, the theme, the features and challenges of the rCOS theory and its tool support themain challenge: rCOS theory and tools for component-based model driven development.pdf rCOS: a formal model-driven engineering method for component-based software Wei KE, Xiaoshan L, Zhiming LIU, Volker STOLZ Front. Comput. Sci., 2012, 6(1): 17–39 Abstract Model-driven architecture (MDA) has become a main stream technology for software-intensive system design. The main engineering principle behind it is that the inherent complexity of software development can only be mastered by building, analyzing and manipulating system models. MDA also deals with system complexity by providing component-based design techniques, allowing independent component design, implementation and deployment, and then system integration and reconfiguration based on component interfaces. The model of a system in any stage is an integration of models of different viewpoints. Therefore, for a model-driven method to be applied effectively, it must provide a body of techniques and an integrated suite of tools for model construction, validation, and transformation. This requires a number of modeling notations for the specification of different concerns and viewpoints of the system. These notations should have formally defined syntaxes and a unified theory of semantics. The underlying theory of the method is needed to underpin the development of tools and correct use of tools in software development, as well as to formally verify and reason about properties of systems in mission-critical applications. The modeling notations, techniques, and tools must be designed so that they can be used seamlessly in supporting development activities and documentation of artifacts in software design processes. This article presents such a method, called the rCOS, focusing on the models of a system at different stages in a software development process, their semantic integration, and how they are constructed, analyzed, transformed, validated, and verified. Keywords component-based design, models, model transformations, verification, tool support 1 Introduction The root of “software crisis: the inherent complexity of software 1.1 Software complexity the characterisitics of software complexity: -- the complexity of the domain application -- the difficulty of managing the development process -- the flexibility possible to offer through software -- the problem of characterizing the behavior of software systems software-intensive systems: new features of software: distributed, dynamic, and mobile 1.2 Formal model-driven development model-driven architecture (MDA) Key features of MDA: -- abstraction for information hiding in order to focus on a concern at a time -- decomposition to divide and conquer -- incremental development so as to allow the use of different techniques and tools. main problems of MDA: lacks systematic techniques and tool support 1.3 The aim and theme of rCOS The aim of the rCOS project: to research, develop, and teach a method and its tools for predictable development of reliable software. 1.4 Organization 1) Section 2 present the rCOS approach to handling software complexity, thus motivating the different models in rCOS. 2) Section 3 discuss the semantic foundation of these models and point the reader to the literature on the relevant theories and techniques. 3) Section 4 defines the models of components, their refinement relations and compositions. 4) Section 5 discusses how the different models are built and validated in a development process. 5) Section 6 gives concluding remarks and future work. 2 Mastering complexity with rCOS the goal of this section: the main ideas behind the development of the rCOS method that aim at mastering software complexity by separation of concerns, decomposition, and rigorous use of abstraction. 2.1 rCOS support to model-driven development the principles of model-driven development and formal methods: • Abstraction • Decomposition • Separation of concerns • Model transformations • Use of formalization 2.2 rCOS support to component-based development the contracts of the interfaces of components rCOSP: a componentbased architecture definition language of rCOS 2.3 The format of component specifications in rCOSP rCOSP proposes a Java-stylespecification language The format of a component specification in rCOSP is shown in Fig. 3 • Interfaces of components • Data functionality • Actions • Interaction protocols • Class structure and data types Example 1 Fig. 4 shows the architecture 3 Unifying theories for component-based software modeling the separation of concerns a) control the complexity of the models b) allow the use of different techniques and tools of modeling, analysis, design, and verifications appropriate for the different models. UTP 3.1 Designs of sequential programs 3.2 Designs of object-oriented programs 3.3 Concurrent programs 4 Models of components two kinds of actions, the interface actions K.IF and the internal actions K.iA. two kinds of abstract models of reactive program: --channel/event-based processes algebras --I/O automata two kinds of reactive programs of rCOS: -- components --processes. 4.1 Components 4.2 Refinement between closed components 4.3 Open components and component composition 4.4 Processes 5 Integrating theories, techniques, and tools into the development process 5.1 UML profile of rCOS a UML profile for rCOS: to ease the difficulty of users in creating formal models The profile defines: 1) An rCOS class declaration section ClassDecls as a UML class diagram 2) The object interactions in methods of classes as object sequence diagrams, the following models defined in the UML profile (see Fig. 9): 1) A component diagram in which each component representsa use case, 2) A class diagram or a number of class diagrams (packages) defining the classes and types of data and objects of the components, 3) A set of component-sequence diagrams represents the interactions of the components and their interactions with the actors, 4) A set of state diagrams, one for each component, 5) Local data functionality of provided methods of the components. two major design steps: 1) OO design of provided methods. 2) Generating a component-based design architecture model. 5.2 Top-down development 6 Conclusions rCOS a formal model-driven engineering method for component-based software.pdf Graph transformations for object-oriented refinement Liang Zhao, Xiaojian Liu, Zhiming Liu and Zongyan Qiu Formal Aspects of Computing (2009) 21: 103–131 Abstract. An object-oriented program consists of a section of class declarations and a main method. The class declaration section represents the structure of an object-oriented program, that is the data, the classes and relations among them. The execution of the main method realizes the application by invoking methods of objects of the classes defined in the class declarations. Class declarations define the general properties of objects and how they collaborate with each other in realizing the application task programmed as the main method. Note that for one class declaration section, different main methods can be programmed for different applications, and this is an important feature of reuse in object-oriented programming. On the other hand, different class declaration sections may support the same applications, but these different class declaration sections can make significant difference with regards to understanding, reuse and maintainability of the applications.With a UML-like modeling language, the class declaration section of a program is represented as a class diagram, and the instances of the class diagram are represented by object diagrams, that form the state space of the program. In this paper, we define a class diagram and its object diagrams as directed labeled graphs, and investigate what changes in the class structure maintain the capability of providing functionalities (or services). We formalize such a structure change by the notion of structure refinement. A structure refinement is a transformation from one graph to another that preserves the capability of providing services, that is, the resulting class graph should be able to provide at least as many, and as good, services (in terms of functional refinement) as the original graph. We then develop a calculus of object-oriented refinement, as an extension to the classical theory of data refinement, in which the refinement rules are classified into four categories according to their natures and uses in object-oriented software design. The soundness of the calculus is proved and the completeness of the refinement rules of each category is established with regard to normal forms defined for object-oriented programs. These completeness results show the power of the simple refinement rules. The normal forms and the completeness results together capture the essence of polymorphism, dynamic method binding and object sharing by references in object-oriented computation. Keywords: Class graph; Object graph; Graph transformation; Normal form; Object-orientation; Structure refinement 1. Introduction formal semantics of object-oriented programs Q: it is difficult to understand and use the semantics of object-oriented programs A: -- denotational (or an axiomatic) semantics to an operational semantics rCOS 1.1. Contribution 1.2. Related work 1.3. Overview 1) Section 2 shows how a class declaration section can be defined as a directed labeled graph. 2) Sect. 3 define object graphs for a class graph to represent system states. 3) Section 4 defines structure refinements between class graphs and their derived relations between object graphs. 4) Sect. 5 introduce the concept of interface and extend the notion of structure refinements with respect to interfaces. 5) Sect. 6 provide the refinement rules for modifying methods in a class graph without changing the whole class structure. 6) Section 7 defines the normal forms and proves completeness results. 7) Sect. 8 draw the conclusions and discuss about future work. 2. Class graphs Graph transformations for object-oriented refinement.pdf rCOS: Refinement of Component and Object Systems Zhiming Liu, He Jifeng,, and Xiaoshan FMCO 2004, LNCS 3657, pp. 183–221, 2005. Abstract. We present a model of object-oriented and component-based refinement. For object-orientation, the model is class-based and refinement is about correct changes in the structure, methods of classes and the main program, rather than changes in the behaviour of individual objects. This allows us to prove refinement laws for both high level design patterns and low level refactoring. For component-based development, we focus on the separation of concerns of interface and functional contracts, leaving refinement of interaction protocols in future work. The model supports the specification of these aspects at different levels of abstractions and their consistency. Based on the semantics, we also provide a general definitional approach to defining different relational semantic models with different features and constraints. Keywords: Object-Orientation, Component-Based Development, Refinement, Specification, Consistency. 1 Introduction three axes: 1. the temporal axis 2. different aspects of the system 3. third axis is that of system evolution and maintenance the main problems: – Since the requirements specification is informal there is no way to ascertain its completeness resulting in a lot of gaps. – The gaps in requirements are filled by ad-hoc decisions taken by programmers who are not qualified for the job of requirement analysis. This results in code of poor quality. – There is no traceability between requirements and implementation making it very expensive to accommodate changes and maintain the system. – Most of the tools are for project management and system testing. Although these are useful, they are not enough for ensuring the semantic correctness of the implementation for a requirements specification and semantic consistency of changes made in the system. rCOS: a calculus of Refinement of Component and Object Systems the focus of rCOS: -- interfaces -- functional contracts -- interaction protocols a design: the organization of this paper: 1) Section 2 introduce semantic basis of the notion of designs in Unifying Theories of Programming 2) Section 3 define the model for object systems. 3) Section 4 present refinement calculus of object-oriented designs 4) Section 5 show how the model for object systems is extended to deal withcomponent systems. 5) Section 6 conclude the article with discussion and related work. 2 Semantic Basis modelling the execution of a program in terms of a relation between the states of the program one of the core ideas of the UTP:what to observe in different kinds of systems? 2.1 Programs as Designs the goal of this subsection: how the basic programming constructs can be defined as designs? define the meaning of primitive commands program commands as framed designs in Table 1. 2.2 Refinement of Designs 3 Object Systems the goal of this section: introduce to the syntax and semantics of rCOS for object systems 3.1 Syntax 3.2 Semantics 3.3 Evaluation of Expressions The evaluation results of expressions are given in Table. 2 4 Object-Oriented Refinement three kinds of refinement: 1. Refinement relation between object systems. 2. Refinement relation between declaration sections (structural refinement). 4.1 Refinement of Object Systems 4.2 Structure Refinement 4.3 Laws of Structural Refinement 5 Component Systems author's idea: a contract-oriented approach to the specification, design and composition of components the open issues: -- Finding appropriate formal approaches for specifying components --the architectures for composing them -- the methods for component-based software construction 5.1 Introduction 5.2 Interfaces -- Merge Interfaces -- 5.3 Contracts a contract: a functional specification of an interface 5.4 Component 5.5 Semantics Components 5.6 Refinement and Composition of Components 6 Conclusion 6.1 Related Work 6.2 Future Work rCOS Refinement of Component and Object Systems.pdf Refinement of Models of Software Components  Zizhen Wang and Hanpin Wang, Naijun Zhan ACM SAC’10 March 22-26, 2010, Sierre, Switzerland ABSTRACT Models of software components at different levels of abstraction, component interfaces, contracts, implementations and publications are important for component-based design. Refinement relations among models at the same level and between different levels are essential for model-driven development of components. Classical refinement theories mainly focus on verification and put little attention on design. Therefore, most of them are not suitable for component-based model-driven development (CB-MDD). To address this issue, in this paper, we propose two refinement relations for CB-MDD, that is a trace-based refinement and a state-based refinement. Both are discussed in the framework of rCOS, which is a formal model of component and object systems. These refinement relations provide different granularity of abstraction and can capture the intuition that a refined component provides “more” and “better” services to the environment. We also show how to extend these refinement relations to allow us to compare contracts, components and publications with different interfaces by exploiting the primitive operator internalizing over contracts, components and publications. Keywords : CB-MDD, data refinement, trace refinement, rCOS 1. INTRODUCTION Component-based model-driven development (CB-MDD) basic idea: to compose/decompose a complicated system from/into some simpler ones with well-defined interfaces used for communication across the components. different abstraction levels of software components: -- component interfaces -- contracts -- implementations -- publications rCOS the contributions of this paper include: • Firstly, a trace-based refinement is defined. • Secondly, propose a state-based refinement relation The rest of this paper is organized as: 1) Section 2 review some basic notions; 2) Section 3 presents trace refinement and data refinement on contracts. 3) Section 4 considers the notions of trace refinement and data refinement on components. 4) Section 5 propose alternating trace refinement and alternating data refinement on publications 5) Section 6 is devoted to extending these refinement relations to compare contracts, components and publications with different interfaces. 6) Section 7 concludes this paper. 2. BASIC NOTIONS 2.1 Design UTP 2.2 Refinement of design 2.3 Reactive design and guarded design 3. TRACE REFINEMENT AND DATA REFINEMENT OF CONTRACTS 3.1 Trace refinement two principles towards refinement of components in CB-MDD 3.2 Data refinement 4. TRACE REFINEMENT AND DATA REFINEMENT OF COMPONENTS 5. ALTERNATING TRACE (DATA) REFINEMENT OF PUBLICATIONS 6. DIFFERENT INTERFACES the outline of this paper: -- first briefly review the primitive operators over components and publications -- Then prove these operators except for internalizing preserve these refinement relations -- finally we show how to exploit the internalizing operator to extend the refinement relations to compare contracts, components and publications with different interfaces. 6.1 Primitive operators 7. CONCLUSION AND FUTUREWORK Refinement of models of software components.pdf rCos tutorial slide: rCos ICTAC09-tutorial-slides.pdf rCos Slides-rCOS part II.pdf rCos Slides-SE.pdf rCOS-Profile.pdf Unblockable Compositions of Software Components Ruzhen Dong, Johannes Faber, Zhiming Liu,Jirí Srba,Naijun Zhan,Jiaqi Zhu CBSE’12, June 26–28, 2012, Bertinoro, Italy ABSTRACT We present a new automata-based interface model describing the interaction behavior of software components. Contrary to earlier component- or interface-based approaches, the interface model we propose specifies all the non-blockable interaction behaviors of a component with any environment. To this end, we develop an algorithm to compute the unblockable interaction behavior, called the interface model of a component, from its execution model. Based on this model, we introduce composition operators for the components and prove important compositionality results, showing the conditions under which composition of interface models preserves unblockable sequences of provided services. Keywords: Component-based design, interface theory, composition 1. INTRODUCTION component-based software engineering - component - interface a component: --a provided interface: which executions of services the component offers to its environment -- a required interface: what services the component needs to call in order to provide the services on its provided interface execution model - non-deterministic interface model: Related work: -- the I/O Automata -- actions: input, output, and internal actions -- the Interface Automata Input/Output (I/O) Automata: Summary of contributions. The contributions of this paper are (1) a new interface model ensuring unblockable compositions of software components; (2) an algorithm to generate the interface model of a component based on its execution model; (3) definitions of basic operations used in component-based design; (4) a formal analysis showing that unblockable behavior is preserved for the complete plugging of components. Outline of the paper. The rest of the paper is organized as follows. 1)Sect. 2 introduce component automata and an algorithmic way to generate their interface models. 2)Sect. 3present the composition operators to compose components and prove important properties for these operators. 3)Sect. 4conclude the paper and discuss the future work. 2. COMPONENT AUTOMATA the outline of this section: -- first introduce some notions that will be used throughout the paper --then motivate component automata and component interface automata. -- At last,give an algorithm transforming component automata to component interface automata and prove its correctness. 2.1 Preliminary Definitions 2.2 Execution Model of a Component 2.3 Unblockable Equivalence 2.4 Interface Model of a Component A general construction of an interface automaton I(C) for a given component automaton C is given in Algorithm 1 3.2 Composition of Interface Models 3. COMPOSITION OPERATORS operator: -- the product --the plugging of components 3.1 Product of Component Automata 4. CONCLUSION AND FUTUREWORK author's work: -- a formal model for component interfaces that guarantees unblockable composition of software components -- provided an algorithm to compute the unblockable interface from a component’s execution model. -- introduced the operators of composition and plugging open problem: -- -- interface models with timing characteristics Unblockable compositions of software components.pdf I comment: Ensemble Engineering and Emergence Hu Jun, Zhiming Liu, G.M. Reed, and J.W. Sanders Software-Intensive Systems, LNCS 5380, pp. 162–178, 2008 Abstract. The complex systems lying at the heart of ensemble engineering exhibit emergent behaviour : behaviour that is not explicitly derived from the functional description of the ensemble components at the level of abstraction at which they are provided. Emergent behaviour can be understood by expanding the description of the components to refine their functional behaviour; but that is infeasible in specifying ensembles of realistic size (although it is the main implementation method) since it amounts to consideration of an entire implementation. This position paper suggests an alternative. ‘Emergence’ is clarified using levels of abstraction and a method proposed for specifying ensembles by augmenting the functional behaviour of its components with a system-wide ‘emergence predicate’ accounting for emergence. Examples are given to indicate how conformance to such a specification can be established. Finally an approach is suggested to Ensemble Engineering, the relevant elaboration of Software Engineering. On the way, the example is considered of an ensemble composed of artificial agents and a case made that there emergence can helpfully be viewed as ethics in the absence of free will. 1 Introduction ensembles 2 Ensembles 2.1 Levels of Abstraction 2.2 Emergence 2.3 Ensembles 2.4 Reductionism 2.5 Related Approaches 3 Examples 3.1 Coin Tossing Ensemble Engineering and Emergence.pdf 面向服务架构中服务实现的策略 刘 静 何积丰 Zhiming Liu 中国科学 E 辑 信息科学 2006, 36(10): 1220~1239 摘要 构造了层次化的SOA 模型, 并提出了将服务使用层与服务实现层分层处理的策略. 建立了基于服务的构件模型来实现SOA 中的服务, 使用接口来描述服务的语法, 契约来描述服务的语义, 并用卫式设计来模服务的行为. 将接口作为结合构件技术与面向服务架构的关键. 用实例说明了如何使用这种方法来实现面向服务的设计. 此工作为利用构件技术解决面向服务架构中的服务实现 问题奠定了基础. 关键词: 面向服务 接口 契约 构件 面向服务计算(service-oriented computing, 简称SOC) 构件 -〉services 不同模块连接起来的主要问题为: ● 缺乏标准语法, 而标准语法可以明确(无歧异)地表达所有系统信息; ● 缺乏标准语义模型, 而标准语义模型使得企业可以用一致的语言来表达其业务; ● 缺乏标准的协议, 而标准的协议是不同操作环境、不同企业之间消息传递的基础; ● 缺乏绑定事务文档与行为的标准程式. author's idea: 基于统一程序理论(unifying theories of programming,UTP), 用Java 风格的对象系统精化演算语言(refinement calculus of object systems,rCOS)描述了服务的语法、语义, 并构造了面向服务的构件模型. -- 先分析构件应提供的服务 -- 再将服务分配到接口 --用接口来描述服务的语法 -- 引入契约来表达服务的语义, 通过模型转换技术来保证服务实现的正确性. 1 方法概述 SOA 模型. 顶层主要是管理服务使用, 而另一层则是服务实现, 如图1 所示 实现服务: ● 使用WSDL 描述服务, 然后将其转换为UML 模型. ● 使用rCOS 描述服务规范, 得到服务的一个精确语义模型. ● 使用管理构件来管理执行构件. 管理构件按照服务规范的要求把任务委托给执行构件并把构件组合成一个闭合构件. ● 使用执行构件来实现管理构件所委托的功能. 2 面向服务的构件模型 构件接口: 描述在构建和维护软件系统的过程中构件与外界交互时需要什么. -- 语法规范 -- 语义定义 2.1 接口 接口: 构件访问点的语法规范 2.2 契约 契约: 描述接口的语义. 2.3 构件 构件: 契约的实现 2.4 组合 3 应用: 电子商店 3.1 接口 3.2 契约 3.3 构件 3.4 组合 4 结论与讨论 4.1 结论 面向服务架构中服务实现的策略.pdf 3 Sun Meng Towards the Introduction of QoS Information in a Component Model Sun Meng, Luis S. Barbosa SAC’10 March 22-26, 2010, Sierre, Switzerland ABSTRACT Assuring Quality of Service (QoS) properties is critical in the development of component-based distributed systems. This paper presents an approach to introduce QoS constraints into a coalgebraic model of software components. Such constraints are formally captured through the concept of a Q-algebra which, in its turn, can be smoothly integrated in the definition of component combinators. Keywords: Component-based design, coalgebra, QoS properties 1. INTRODUCTION components - services - Quality of Service (QoS) The purpose of this paper: suggests how a formal calculus for component composition can be extended in order to take into account, in an explicit way, QoS information The calculus is based on a coalgebraic model Q-algebra 2. COMPONENTS AS COALGEBRAS Software components: dynamic systems +public interface +private, encapsulated state. generic components- coalgebras Question: how do they get composed and what kind of calculus emerges from this framework ? 3. INTRODUCING QOS IN THE COMPOENT MODEL Q-algebra 4. CONCLUSIONS Towards the introduction of QoS information in a component model.pdf 4 others 一种基于构件演算的主动构件精化方法 陈鑫 Journal of Software, Vol.19, No.5, May 2008, pp.1134−1148 摘要: 现代构件系统通常包含多个并发执行的主动构件,这使得验证构件系统的正确性变得十分困难.通过对构件演算进行扩展,提出了一种主动构件的精化方法.在构件接口层引入契约.契约使用卫式设计描述公共方法和主动活动的功能规约.通过一对发散、失败集合定义契约的动态行为,并利用发散、失败集合之间的包含关系定义契约间的精化关系.证明了应用仿真技术确认契约精化关系的定理.定义构件的语义为其需求接口契约到其服务接口契约的函数,以此为基础,可以通过契约的精化来证明构件的精化.给出了构件的组装规则.在构件系统自底向上的构造过程中,应用构件的精化方法和组装规则可以保证最终系统的正确性. 关键词: 接口;构件;语义;契约;精化;组合 构件 - 正确性的验证 - correct-by-construction - 精化: 转换一步步地从规约构造出正确的最终实现 difficulty: 面向构件系统的精化理论和方法 主动构件 vs. 反应式构件 -- 主动构件: -- 反应式构件: 一种以被动方式工作的构件 构件技术研究重要内容: 如何为主动构件构造一形式化模型,刻画和分析主动构件行为,为主动构件组装提供形式化支撑 构件演算: 以设计演算为基础,建立反应式构件的形式化模型,研究反应式构件的精化方法和组装方法. its drawbacks: -- 构件演算没提供直接描述主动构件自主行为的形式化机制 -- 也未能给出分析自主行为如何影响主动构件交互行为的方法 author's work: 给出主动构件的行为模型,研究了主动构件的精化方法. -- 首先,在接口的形式模型“契约”中加入对自主方法描述.契约用卫式设计定义接口中公共方法和自主方法的功能规约. -- 分析契约交互行为的非确定性,通过协议和一对发散、失败集合来描述契约的交互行为,给出了计算协议和发散、失败集合的方法.同时,用这对发散、失败集合上的包含关系定义契约的精化关系,证明应用仿真技术判定契约精化关系的定理. -- 构件的语义定义成一个映射其需求接口的契约到其服务接口的契约的函数.以此为基础,可以应用契约之间的精化关系来研究构件间的精化关系. -- 给出支持构件组装方法的形式规则.综合运用精化和组装的方法,可以在构件系统自底向上的过程中保证系统的正确性. the organization of this paper: 1) 第1节介绍本文工作的基础——构件演算,并通过一个实例分析构件演算在分析主动构件时遇到的问题. 2) 第2节给出主动构件形式模型的定义,并以此为基础研究主动构件的精化方法和组装方法. 3) 第3节与相关工作做比较. 4) 第4节总结全文并对今后的工作进行展望. 1 构件演算 统一程序设计理论: 设计(design): -- 将一个程序的执行描述为关于程序状态空间的一个关系. -- 程序的状态空间定义在一组变量之上,这组变量记作α. -- 程序的一个状态就是从这组变量到变量值空间的一个映射. 最弱前提条件的演算方法 -- 定义2给出最弱前提条件和设计之间的关系. 引入反应式设计: Q: A: 引入卫式条件来控制方法的可用性,方法是可用的当且仅当卫式条件为真. 构件演算: 契约层和构件层两个层次构造反应式构件的形式模型 -- 契约层: 引入契约描述接口的行为,契约用卫式设计定义接口中方法的功能规约,用协议约束环境对接口方法的调用顺序. 契约的动态交互行为定义在一对发散、失败集合上 -- 构件演算将构件的语义定义: 接口: 构件和外界环境交互的设施,构件演算定义了如下标准形式的接口. 契约: 2 主动构件的形式模型和精化方法 Q: 主动构件的行为建模时,需解决两个问题: -- 一是如何建立构件自主行为的直接描述机制, -- 二是在为构件交互行为建模时,如何分析自主行为对构件交互行为的影响. author's idea: -- 接口层 -- 构件层 2.1 接口的形式化模型和精化方法 引入契约定义接口的语义. 将契约的动态行为定义在包含参数的方法调用和方法返回事件序列之上. 2.2 构件的形式化模型和精化方法 2.3 构件的组装 构件的组装过程: -- 两个构件各自在对方的服务接口中寻找可与自己的需求相匹配的方法,并将它们连接起来. -- 运行时刻,构件双方需要在相连方法的调用和返回事件上同步.即当函数调用发生时,发出调用方的调用事件需要与接受调用方的接受事件同步; -- 函数返回时,接受调用方的返回事件需与发出调用方的接受事件同步. 3 相关工作 challenges: 主动构件形式化模型 -- -- Reo -- 4 总结及展望 future work: -- + time model -- CORBA 一种基于构件演算的主动构件精化方法.pdf Unifying Theories of Programming C.A.R.Hoare, He Jifeng Prentice Hall 1998 Chapter 0 Challenge of Unification three independent axes of theories of programming -- structure -- the level of abstraction -- mathematical technique 0.1 Programming paradigms -- imperative -- functional -- logical -- parallel 0.2 Levels of abstraction 0.3 Varieties of presentation -- denotational -- algebraic -- operational 0.4 Alphabets 0.5 Signuatures 0
个人分类: Formal method|1 次阅读|0 个评论
review: 系统分析师UML实务手册
jiangdm 2011-9-5 14:14
《系统分析师UML实务手册》,邱郁惠 作者称思路来自 DoDAF (美国国防部体系架构框架), UML图 行为类: Use case diagram Activity diagram State Machine diagram Sequence diagram 类图 class diagram 类关系 泛化关系 (Generalization) 聚合关系 (Aggregation) 封建 组合关系 (Composition) 奴隶 UML与MDA CIM (Computation Independent Model): 聚焦系统环境及需求,但不涉及系统内部的结构和运作细节 PIM (Platform Independent Model): 关注系统内部细节,但不涉及实现系统的具体平台 PSM (Platform Specific Model): 系统落实于特定具体的平台。 例子: UML与SoC 分析步骤: CIM 1: Business process,定义业务流程,产生业务用例模型 工具:Use case diagram CIM 2: Activity diagram,分析业务流程,产生活动图 工具:Activity diagram CIM 3: User case diagram 定义系统范围,产生系统用例图 工具:Use case diagram PIM 1: User case description 分析系统流程,产生系统用例叙述 工具:Use case diagram PIM 2: Business rules 分析业务规则,产生状态图 工具:State Machine diagram PIM 3: Class diagram 定义静态结构,产生类图 工具:class diagram PIM 4: Operation \ methods 定义操作及方法,产生序列图 工具:Sequence diagram Peter Coad 《Object Models: Strategies, Pattern, and Applications》 交易模式:Transaction Pattern 工具:StarUML www.staruml.com 个人点评: 此书实用性强,通过案例讲解,通俗易懂。 启发:1) DoDAF (美国国防部体系架构框架) 与 Web Services Transaction 2) MDA,UML与 SoC (嵌入式编程) 3)Transaction Pattern 与 Qos Web Services Composition
个人分类: Formal method|0 个评论
我与三十多门语言的爱恨情仇(2)——图语
热度 2 xuyingxiao 2011-8-16 09:24
第七门语言:统一建模语言(UML)——没有不好的学生 这也是语言?不就是图吗? 它彻底颠覆了我对语言的理解。但它说它就是语言:有精确的语法、有它的符号表示,还说一图抵千言,英文也叫Language,所以我就认可它是语言吧。写 博文时较了一下真,查了一下Language的翻译,发觉语、文、话都可以叫Language,于是很怀疑我们一股脑把XXX Language都翻译成XXX语言是不是有问题。不过这样的翻译早就约定俗成了,不去想它。 人语中要数英语最让人爱恨情仇,图语中则当推UML,个中甘苦自知。起起落落花了很多时间在上面,既从应用的角度找项目做东西,又从研究的角度看了 大量的论文,有很多很好的Idea。对UML一直未曾放弃,但各种原因之下,研究方面未写一篇UML相关的论文,应用方面也直到许多年以后出国以后才真正 派上用场。 学这个语言对我有点回光返照的感觉,没落之际突然重新找回激动人心、开创历史的感觉,但此后很多年就一直退着走,直到出国以后重新感受辉煌了。 简单地说,学UML的起因是这样的:赋闲了,到处找活干。不管什么样,只要能干活就行。搞技术的没活干就像汽车没有汽油,感觉自己这一日千里的身躯 整天趴在这里还不如一头毛驴有用。四处碰壁之际找到消息:L那里有个活在找人做,由于UML刚开始流行没什么人搞得懂,只要懂UML就有活干。于是我到处 找UML的书和资料,天啊,竟然都看不懂! 在我学技术的过程中第一次碰到怎么都看不明白的情况,只有那个Rational Rose的软件用起来没碰到什么问题,但光会用软件也没什么用啊,软件得在思想的指导下才有价值。最后关头终于找到一本书,写得非常好,正好把我疑惑的地方都解答了、让我彻底弄懂了。 这给了我很深的印象:教材非常重要,只要学生愿意学,没有学不好的学生,只有不好的书或者与学生不匹配的书。 之后的经历也有很多巧合,开始干活,与L开始认识。再接下来,我靠着UML找到了相对稳定的饭吃。与L很久没了联系,再联系时已经是L反过来需要我 介绍工作了。介绍给以前的老领导,做了几年正值国内的股票市场遍地黄金把所有人都吸了过去时,L跳槽了。再很久不联系之后,在我动出国的心思时发现L已经 在美国了……我也到了美国,UML依旧,只是工具由以前用的Rational Rose, Rational Software Architect换成了我一直拒绝的微软的Visio。 第八门语言:机械制图——兴趣是最好的老师 往前追溯,UML算语言的话,刚进大学第一年学的机械制图也算语言了,它是机械工程师之间以及工程师和工人之间交流的语言。 机械制图其实很有意思,一个立体的物体,想象着从上往下看、从前面看、从侧面看,用三个视图就可以把机器的设计表达清楚。尤其有趣的是一个空心圆柱 想象着用一把刀斜切下去,靠角尺和圆规就可以把切出来的形状精确地画出来。我们从学习削铅笔学起,直至从零件图到装配图。这门课和以前我学的课彻底不同, 所以刚进大学时父母问起功课,我说机械制图比较难,父母便以为我学这门课碰到了困难而为我着急,其实这门课我考了90分,虽然没到最高分,但已经属于高分 了。 还记得四年结束毕业设计时,教室关门早,我就抱着硕大的制图版趴在草坪上画图。有南京大学的学生过来寒暄,很羡慕我们工科,觉得文科学的太虚,不像工科学了就可以用。那时还很为自己自豪。 那时没有数码相机,画了这么多图可惜也没有留存,就网上找张图意思一下吧: 第九门语言:电路图——有机会动手才有动力。 再往前追溯,初中就开始学的电路图也可以算语言了。初中、高中、本科、硕士,其实一直在学电路图,初中的梦想是装矿石收音机,但那时没有电子器件。 本科时自己还想过一些小设计,像通过电路使得电器中装电池时不用考虑正负极,直接往里面塞就行了。电路图的学习最终半途而废,最根本的原因还是动手的机会 太少,只有上课期间有几次机会进实验室做实验,很多自己想做的实验没有机会去做。 就网上贴来一个最简单、最实用的电路图。 第十门语言:折纸图:——寒门给人动力,富贵让人懈怠。 继续追溯,以前看的折纸图也算是语言了。自有记忆开始就喜欢折纸,从这个玩伴、那个玩伴那里学来几十种不同的折法,折的东西多了就经常忘记怎么折了。后来将每种东西折个样品保存着,忘记后就把样品拆开来看一下,但这些样品时间长了总是会弄丢掉。 高中时新华书店时兴开架,在学校附近的书店第一次看到折纸书,于是学会了折纸图中的各种符号。那时舍不得买书,就趁着书店开架的机会把折法背下来, 出了书店再折样品。再之后就把自己学来的折纸试着自己一边折一边自己绘图了,把自己会折的东西全部画出来,这样就再也不怕忘记了。花了很多心血,弄得像本 书一样。收藏了很多年,可惜在前几年的搬家中弄丢了。 有了网络,资源一下子变成了无限,随便一搜就有大量的折纸图和网站,放眼世界,日本的折纸尤其复杂。但物以希为贵,从前就会那么几十种折法又舍不得 买书时兴趣最浓,但当无穷无尽的资源一下子免费端到你面前时,就会觉得以前花的这么多精力做的这些事情很傻。玩折纸的乐趣一下子弱了很多——就像穷人家的 孩子觉得自己最大的梦想就是住进糖果做成的房子,等真的住进去了,吃个几天就再也不想吃糖果了。 以前手绘的折纸图,就剩这一张了,心血啊。
个人分类: 思考|3795 次阅读|6 个评论
麻志毅
jiangdm 2011-8-11 20:53
麻志毅
Contents 1 麻志毅 一种面向服务的体系结构参考模型 一种从UML模型到可靠性分析模型的转换方法 1 麻志毅 一种面向服务的体系结构参考模型 麻志毅 陈泓婕 计算机学报,2006 摘要 在对当前的面向服务体系结构研究的基础上,提出了一种用于设计面向服务体系结构的参考模型,深入 地阐述了有关概念,详述了参考模型的结构以及其中的服务总线和服务合约的元模型,并提出了一个用于评价面向服务体系结构的成熟度模型.该参考模型为进一步设计面向服务的体系结构奠定了基础. 关键词 面向服务的体系结构;体系结构参考模型;成熟度模型 个人点评: 作者提出Service 服务一般特性: 软件实体合约:职责可互操作可组装可发布与可发现 用了UML 2描述,此方向与我关系不大 一种从UML模型到可靠性分析模型的转换方法 柳毅, 麻志毅, 何啸, 邵维忠 Journal of Software, Vol.21, No.2, February 2010, pp.287−304 摘要: 以构件化的软件开发方法为背景,提出了一种将UML模型自动地转换为可靠性分析模型Markov链的方法.该方法基于构件化的软件体系结构,从UML的用况图、顺序图、活动图和构件图出发,对其进行扩展,在模型中标注了可靠性分析所需的信息.在此基础上,通过构造一个称为构件转移图的中间模型,将标注了可靠性信息的UML模型转换为Markov链.该方法产生的结果能够直接作为现有可靠性相关的数学分析方法的输入,从而使可靠性分析工作变得更加方便、高效. 关键词: 基于构件的软件开发;软件可靠性;UML;模型转换;Markov链 可靠性 模型 (UML) 可靠性数学模型: Markov链、Petri网、故障树 author's idea: 提出一种从UML模型转换为Markov链方法,使得从设计模型构造分析模型的过程自动化 the organization of this paper: 1)第1节介绍标注可靠性信息后的UML模型并给出一个实例. 2) 第2节是本文方法概览,对问题进行分析并给出转换方法的框架. 3) 第3节和第4节对方法和转换的步骤进行详细的介绍,并以实际系统为例展示每个步骤的结果. 4) 第5节介绍对并发情况的转换处理方法. 5) 第6节介绍相关工作. 6) 最后对本文工作进行总结和展望. 1 标注可靠性信息后的UML模型 整个系统可靠性: -- 组成系统的单个构件的可靠性 -- 构件间的交互情况 -- 执行环境. 可靠性分析至少需要以下4个方面信息: 一是用户使用系统的情况,即系统中每个功能被使用的概率; 二是组成系统的各个构件的可靠性; 三是构件间如何交互,控制流在两个构件间发生转移时,转移的概率是多少; 四是软件运行环境的可靠性.本文中假设运行环境是可靠的,致力于计算软件本身的可靠性. author's idea: 从UML的用况图、构件图、活动图或顺序图出发,在这些图中加上可靠性相关的信息,利用这些图提供的信息,自动地构造可靠性分析模型Markov链. (2) 构件图 (3) 活动图 (4) 顺序图 2 方法概览 2.1 问题分析 可靠性分析模型Markov链 2.2 基本的转换框架 UML模型转换为Markov链的过程分成3个步骤: -- 第1步是根据活动图或顺序图构造局部构件转移图; -- 第2步结合用况图中用况发生的概率,将局部构件转移图合并为整个系统构件转移图; -- 第3步是结合构件本身的可靠性信息,将系统构件转移图转换为Markov链. (具体的转换过程如图5所示.) 3 将UML模型转换为系统构件转移图 the goal of this section: 标注可靠性信息后的UML模型构造整个系统的构件转移图. 主要步骤: (1) 确定活动图或顺序图中各转移即活动边或消息发生的概率; (2) 将活动图或顺序图转换为局部构件转移图; (3) 合并局部构件转移图,构造整个系统的构件转移图. 3.1 转移概率预处理 图3对应的活动图中其他转移的概率如图6所示. 3.2 构造局部的构件转移图 活动图或顺序图构造局部构件转移图主要分为两步: 3.2.1 扩展后的活动图、顺序图及构件转移图的元模型 3.2.2 活动图转换为初始的局部构件转移图 3.2.3 顺序图转换为初始的局部构件转移图 3.2.4 局部构件转移图的规范化 3.3 合并局部构件转移图 4 将系统构件转移图转换为Markov链 本文定义了Markov链的元模型(如图16所示) 5 对系统中并发情况的处理 6 相关工作 基于系统模型对可靠性进行分析的过程主要包括3个步骤: -- 第1步在模型中加入可靠性相关信息,即在原有模型中标注上这些信息,将原有模型和可靠性信息一起作为可靠性分析输入; -- 第2步根据标注有可靠性相关信息的模型构造对可靠性进行分析的数学模型,如Markov链、Petri网、故障树等; -- 第3步基于第2步中构造的分析模型,利用相关分析方法和工具对可靠性进行分析. 7 总结及工作展望 本文主要贡献:提出一种自动地从UML模型转换为可靠性分析模型Markov链的方法. 一种从UML模型到可靠性分析模型的转换方法.pdf
个人分类: CHI|306 次阅读|0 个评论
基于扩展UML 状态图和Markov 过程的系统性能分析
yfzhaoecnu 2009-8-20 13:12
基于扩展UML 状态图和Markov 过程的系统性能分析 作者:赵也非,杨宗源,谢瑾奎,刘强 摘要: 把概率模型检测应用于软件架构,可以在模型精化过程中,对基于Markov过程的实时模型,进行功能验证和性能分析,对软件开发设计具有指导作用。本文提出了从扩展UML状态图到概率Kripke结构语义之间的双向映射规则和精确定义,给出了总的形式语义生成算法;以一个异步并发组合的DTMC系统为例,用PCTL表示系统关键非功能属性,用模型检测器实现自动分析验证,给出了理论推导过程,并和实验结果进行了分析比较。本文提出的映射规则是双射的,既可应用于正向工程,又可应用于逆向工程。 关键字:UML 状态图;Markov 过程;PRISM;概率模型检测 发表期刊:科技论文在线(精品论文,五颗星) 网址: http://www.paper.edu.cn/paper.php?serial_number=200907-446 发表日期: 2009 年8月
个人分类: 未分类|5013 次阅读|0 个评论
Formal semantics of UML state diagram and automatic verification Based on Kripke
yfzhaoecnu 2009-7-28 13:08
Paper: Formal semantics of UML state diagram and automatic verification Based on Kripke structure Author: Yefei Zhao, Zongyuan Yang, Jinkui Xie Abstract: If UML is formalized with dynamic semantics, automatic verification can be performed for system model in the early stage of software procedure. It becomes more and more important to apply model checking in UML, such that software architecture can be formalized with dynamic semantics. We explicitly proposed the mapping rules between UML state diagram and Kripke structure semantics. UML state diagram is mapped to the value transition of variable rather than the transition of states, thus the situation in that system finite state automata cant be exhausted can be resolved. Finally, a critical resource competition example is illustrated according to the theory. The mapping rules we proposed are bi-direction, as a result, the theory can be applied in both forward software engineering in design phase and reverse software engineering in implementation phase. Published in Conference: 22nd IEEE Canadian Conference on Electrical and Computer Engineering (CCECE 2009)(EI index) Date: May, 2009
个人分类: 未分类|4230 次阅读|0 个评论

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-5-18 11:20

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部