资源描述
实验1:ACME软件体系构造描述语言应用
一、实验目
1)掌握软件体系构造描述概念
2)掌握应用ACMESTUDIO工具描述软件体系构造基本操作
二、实验学时
2学时。
三、实验环境
计算机及ACMESTUDIO。
四、实验内容
运用ACME语言定义软件体系构造风格,修改ACME代码,并进行风格测试。
五、实验操作环节
一、导入Zip文档
建立一种Acme Project,并且命名为AcmeLab2。如下图:
接着导入ZIP文档,导入完ZIP文档后显示如下图:
二、修改风格
在AcmeLab2项目中,打开families下TieredFam.acme.如下图:
修改组件外观
1. 在组件类型中,双击DataNodeT;在其右边编辑器中,将产生预览;选取Modify按钮,将打开外观编辑器对话框。
2. 一方面变化图形:找到Basic shape section,在Stock image dropdown menu中选取Repository类型.
3. 在Color/Line Properties section修改填充颜色为深蓝色。
4. 在颜色对话框中选取深蓝色,并单击 [OK].
5. 修改图形边框颜色为绿色
7. 单击Label tab,在Font Settings section,设立字体颜色为白色,单击[OK]
产生图形如下图:
添加新元素类型
1. 在Component Types section选取New按钮
2. 在对话框中,类型名称输入LogicNodeT .
3. 选取TierNodeT 为父类型.
4. 单击 [Finish].
5. 按照修改外观环节,修改LogicNodeT外观:填充颜色为浅绿色,边框颜色为黑色,大小为2,其她默认。
产生图形如下图:
添加新属性类型
1. 选取Property Types
2. 选取New按钮
3. 在对话框中,类型名称为TierPropT
4. 类型选取enum
5. 值为:client,logic,data
6. 单击[OK].
添加属性
1. 激活属性视图页
2. 双击TierNodeT
3. 选取Properties tab
4. 右击空白位置,或者单击图标, 选取新建属性
5. 属性名为tier.
6. 类型为TierPropT(找不到,则直接输入TieredFam.TierPropT)
7.单击 [OK].
添加规则
1. 单击Family editor中TieredFam (Press to select).
2. 选取属性视图中规则页
3. 单击 生成新规则
4. 规则名为hostCheck,选取invariant单选项
5. 在规则框中输入(直接粘贴过去)
Forall t1 :TierNodeT in self.Components |
!t1.allowShareHost -> (Forall t2 :TierNodeT in self.Components |
t1 != t2 -> t1.host != t2.host)
6. 单击 [Parse Rule] 以确认无语法错误,有错误,要重新写。
7. 在标签中输入 “Tier nodes respect host assignment.”
8. 在出错标签中输入 “Two nodes that cannot share a host must not reside on the same host.”
9. 单击[OK] 。若前面有语法错误,按钮是灰色
10. 保存.
Acme代码编辑
1. 查看编辑器底端区域,有3个区:Overview,Acme Source and Family – TieredFam. 选取Source
2. 在代码中找到TierNodeT
3. 复制其中属性内容
4. 定位至ClientNodeT,粘贴刚才复制内容
5. 把tier属性值赋值为client.
Component Type ClientNodeT extends TierNodeT with {
Property tier :TierPropT = client;
}
6. 同样把复制内容粘贴在LogicNodeT和 DataNodeT中,前者tier值为logic,后者tier值为data.
7. 单击TieredFam editor tab,若有错,将指出错误
添加可视变量
1. 编辑LogicNodeT 组件外观
2. 选取Variants tab.
3. 单击 [New…] 创立新变量
4. 名为:Not logic tier.
5. 选取基于条件单选按钮
6. 下拉菜单选取allowSharedHost,条件选取==,值输入false
7. 设立填充颜色为深绿色
8. 单击 [OK]
测试风格
1.在NavigatorAcmeLab2中,单击右键, 在弹出式菜单中选取New Acme System.
2. 系统名为TestSystem.
4. 单击[Next].
5. 在风格类型中,选取内容如下图所示。
6.单击[Finish]
Notice the palette of types on the left from which you can drag and drop an element to create an instance.
7.在右边palette面板中,拖入 4个 client nodes和1个logic node ,并具备4个ports ,同步拖入4个connectors ,实现客户端和逻辑层连接。
实验2:SOA实践
一、实验目
1)初步理解SOA体系构造
2)掌握用Web service技术实现SOA
二、实验学时
2学时。
三、实验环境
计算机及VS。
四、实验内容
Web service实现。
六、实验操作环节
内容一:Web Services实现
环节:
1 创立WEB服务
1) 打开VS.NET,新建一种网站,在对话框中选取“ASP.NET WEB服务”,选取好位置,把Website1改为“IMPLEMENTWS”,单击拟定。
2)展开解决方案资源管理器,在“APP_CODE”下创立3个文献夹,依次命名为:DA,Model,Util,见下图:
3)右击DA文献夹,选取添加新项,新增一种类:DataAccess.cs,按同样办法,在MODEL和UTIL文献夹中,添加入下图所示类。
4)右击项目,选取添加引用(注意不是Web引用),选取浏览页,定位拷贝DLL,见下图
5)完毕DATA.CS代码
6)完毕DataAccess.CS代码
7)完毕ActivityIdHeader.cs
8)双击Service.CS文献,完毕代码
9)编译,并运营,查看效果。
一种WEB服务编写完毕。
2 创立WINDOWS应用
1)右击解决方案,选取添加-》新项目
2)按下图完毕:
3)右击项目,选取添加引用(注意不是Web引用),选取浏览页,定位拷贝DLL,见下图
4)右击项目,新建文献夹,并在其下新增一种类,并完毕代码,如下图所示
5)添加Web引用,右击项目,选取添加WEB引用,在URL中输入,WEB服务地址,然后单击迈进,可以修改引用名,单击“添加引用”按钮
6)双击FORM1.CS,在窗体上放置一种按钮和一种标签,其中标签命名为Result,按钮text为“get data”
7)双击按钮,完毕如下代码
8)右击项目,新增一种类:UptoLogEvents.cs
9)双击PROGRAM.CS,完毕代码
10)设立APPFORWEBSERVICE为启动项目,运营,查当作果
实验3:MDA实践
一、实验目
1)初步理解MDA框架。
2)理解PSM到CODE过程。
3)掌握应用ECO实现MDA过程。
二、实验学时
6学时。
三、实验环境
计算机及STARUML和VS。
四、实验内容
(1)StarUML实践
五、实验操作环节
实验内容一:StarUML实践
1. 安装:
一方面,咱们必要先安装将要使用软件。StarUML ,是一种开放源码软件, 遵循GPL合同允许(GNU公共允许证) ,并免费提供下载。
2. 启动
安装后来就可以启动该程序。
3. 添加新工程
在New Project By Approach对话框会弹出。选取“Empty Project”并且按下"拟定"。
4. 选取模块
在右边“Model Explorer”框中选定“Untitled”模块。
5. 添加模块
通过“Model”主菜单,或右击选定模型,可以" Add/Model "
6. 添加类图
通过“Model”主菜单,或右击选定模型,可以“Add Diagram/Class Diagram”:
7. 设立profile
通过“Model/Profile...”菜单去设立工程所需profile。这决定了工程所使用规则和商定。依照语言,选取不同Profile,例如JAVA,一定要包括"JAVA Porfile"这一项目;例如C#,一定要包括"C# Porfile"这一项目。
8. 保存工程
保存工程,命名为LAB3.UML
9. 创造图表
从默认就在屏幕左边“Toolbox”选取“类”图标,然后左键单击diagram窗口某处。这样就使用通用名字创造了一种新类。双击,将类改名为Circle。
10. 添加属性
右击图中目的,在弹出菜单中选取“Add”中“Attribute”(被标示为绿色),为其添加一种属性(或者域),填入盼望名字“_radius”。
l 详细数据类型,在属性面板(右下侧窗口) ,由双打字,在"类型"时段。 在窗体右下边Properties面板中,找到“Type”输入框,输入double作为_radius属性类型。
l 类内部数据(域/属性)都是私有,由于她们是严格由类内部使用。因此,在Properties面板中将_radius设立为“私有”
11. 继续进行设计
重复同样过程,添加所谓名字叫做Rectangle类和double型私有成员_width和_height。
12. 创造 IShape interface
l 从toolbox中,选取“Interface”,并点击图表某处。将其改名为IShape。创立后来,选中它。
l 在顶部工具栏,选取 “Stereotype Display” 下拉按钮,将值变化为“None”。这将变化以往圆形形状,使其变为成长方形。
l 还是在顶部工具栏,取消选中" Suppress Operations "。这将使咱们可以看到接口所拥有办法。
l 向IShape 接口添加返回值为doublegetArea办法。
n 可以通过右击interface图标,在弹出菜单中点击红色“Operation”按钮,然后输入getArea。
n 设定返回值类型。在“Model Explorer”中展开IShape节点,右击你刚刚创立getArea办法,并选取“Add Parameter”。在“Properties”框中,将参数名子变为空,将“DirectionKind”变为“RETURN”,将“Type”变为dboule。
l 将IShape和getAreaIsAbstract属性框打上勾,她们在图标上名字将变为斜体。这是UML原则,表达这是接口或者其她纯虚实体。
13. 添加类和接口关系
l 可以通过从toolbox中选取表达“Realization”箭头,并从Circle拖拽向IShape,使Circle实现接口IShape。重复同样过程,为Rectangle添加实现关系。这是添加了Circle 和 Rectangle对于IShape接口实现关系。
n 如果想使连接线体现为直角方式,右击连接线,并选取" Format/Line Style/Rectilinear"菜单。你通过这种方式,使箭头重叠在一起,可以使你图看起来更整洁。
14. 添加类基于接口行为
l 由于Circle和Rectangle类都实现了IShape接口,就必要有同样行为(办法)。
n 在“Model Explorer”面板中,复制getArea法(按Ctrl-C或者右键点击并选取Copy菜单),并粘贴到Circle和Rectangle类。
n 这些实现了办法在Circle和Rectangle类中都不是抽象,而是详细。这是由于她们事实上是执行某些特定行为(例如,为一种圆形和长方形分别计算面积) ,因此不要勾选IsAbstract框。
15. 添加Pizza类
l 向Pizza添加double型私有域_price。
l 添加返回double类型共有操作getPrice。
16. 为Pizza类添加IShape 引用
l 从toolbox中选取" DirectedAssociation "箭头,点击Pizza类,并向IShape拖拽 。
n 选中箭头,在右边“Properties”框上,将name一栏改为“has-a”,“End1.Aggregation” 一栏改为“AGGREGATE”(这个图示阐明Pizza和shape对象是“聚合“关系)。
n 将“End2.Name”一栏改为_shape 。这样就自动为Pizza添加一种名字为_shape,使用IShape接口私有域,所谓_shape型ishape以pizza饼。
n 将“End2.Visibility”改为私有。
l 为_shape创立一种“获得者”办法,名字叫做getShape,返回IShape 。这就是创立一种行为,名字是getShape,返回IShape 。
17. 为pizza类添加构造函数
l 为Pizza添加构造函数,右击,在弹出“Add” 菜单中选取“Operation”。从这里,增长一种普通带有dboule型price参数和IShape类型shape参数操作
l 增长一种输入参数,就像之前增长了一种返回型输出参数同样,你指定参数名称,如价格和形状等,以及恰当数据类型。
l 为Circle增长一种带有double型radius参数构造函数。
l 为Rectangle增长一种带有double型width和height参数构造函数。
18. 添加Test_Pizza类
为了阐明UML类图更多功能,又增长了一种叫做“Test_Pizza”类,它用作测试目,并使用到Pizza和IShape类。
l 两个类之间关系有各种形式。举例来说,一种类可以实例化另一种类,而不是将其作为一种成员。又或,一类办法也许需要另一种类作为输入参数,保存一种引用仅仅是为这个办法执行。
l 通过从toolbox中选取“Dependency”箭头,从一种类拖向她因此来类,来添加不通类之间依赖关系。在这个例子中, Test_Pizza 依赖于Pizza,Circle和Rectangle类,由于它实例化了它们。
l 从Properties box选取name属性,或者双击图表上“依赖线”,可觉得依赖关系添加标签。特别是,当一类实例化另一种类,咱们会把依赖线叫做“instantiates”。
l 你可以选中并拖动依赖线标签,以达到更美观效果。
l 依赖关系不会影响代码生成。
19. 生成代码:
l 依照不同语言,选取不同菜单,若JAVA,点击主菜单“Tools->Java”菜单,选取“Generate Code”;若C#,点击主菜单“Tools->C#”菜单,选取“Generate Code”。
l 从对话框中选取你模块(这里也许Model1),点击“Next”。
l 为了使你模块或者图标所有类都生成stub code,选取“Select All”然后按“Next”。
l 选取一种有效输出目录,“Next”。
l 若C#,请务必选中“Generate the Documentation by C#Doc”,“Generate empty C#Doc”,若JAVA,请务必选中“Generate the Documentation byJAVADoc”,“Generate empty JAVADoc”,所有其她复选框不选中,“Next”。
l 当前StarUML将从你图产生代码,点击“Finish”退出对话框。
l 当前,您可以编辑生成代码,以增长应用。
20. 添加实当代码
当前就开始定义程序实际做事情,例如,为图标中类描述添加实当代码。
21. 逆向工程
StarUML还可以从既有Java/C#代码创立一种类图,这被称为“reverse engineering”,当想从既有代码生成图表,或者你修改了SU生成代码,并且想在图表中反映出来时候,逆向工程功能就非常有用了。
l 到主菜单栏中选取“Tools/C#或Java/Reverse Engineer...”,可以将既有代码逆向工程。
l 选取C#/Java代码所在目录,并点击“Add”或“Add All”按钮,将它们涉及在逆向工程过程中,然后单击“Next”
l 选取想将类加入模块,这里也许是“Model1”,然后“Next”。
l 在Option Setup里面:
n 确认“public”,“package”,“protected”和“private”是选中(这是默认设立)。
n 同样,在默认状况下,单选按钮“Create the field to the Attribute”也是选中。
n 除非你想SU创立其她东西,例如布局很糟糕包括所有类图表,不要选中“Create Overview Diagram”框。
n 当你对选项做了检查后,点击“Run”。
n 点击"完毕"退出对话框时,就完毕了。
l SU会向模块添加导入类,但不是图表。为了将它添加到图,只需要简朴地从Model Explorer拖动它们即可。
实验4:MVC实践
一、实验目
1)初步理解软件体系设计基本概念
2)应用设计模式实现MVC
二、实验学时
2学时。
三、实验环境
计算机及VS。
四、实验内容
运用Observer模式实现MVC。
五、实验操作环节
环节:
1)打开VS.NET,新建一种项目,项目类型选取Windows,模板选取Windows应用程序,名称为MVC_IMPL,选取好位置,单击拟定。
2)右击项目,选取“添加->新建项”,在模板中选取“接口”,名称为Observer.cs,单击添加按钮。
3)同样办法,添加Subject.CS接口。
4)双击Observer.CS文献,在接口里面定义一种办法:
void sendNotify(string message);
5)双击Subject.CS文献,在接口里面定义一种办法:
void registerInterest(Observer obs);
6)展开解决方案资源管理器,将FORM1.CS修改为Controller.CS,在弹出信息框中,单击拟定按钮,单击窗体,在窗体属性对话框中,设立Text属性为:颜色Controller。修改后效果如下图1所示
图1
7)单击图上红色圆圈图标。
8)从左边工具栏见图,拖一种GroupBox控件至窗体上,并拖动位置和设立大小效果,在属性对话框中,设立其Text属性为:颜色选取器,如图所示。
9)从工具箱拖三个radioButton控件,name属性分别设立为rbtnRed,rbtnGreen,rbtnBlue,Text属性分别设立为 “红色”,“绿色”,“蓝色”,并设立好位置,效果如图3所示。
10)切换至代码模式,添加using System.Collections引用,添加controller父接口:Subject,并添加一种私有成员,效果见图4。
图4
11)定义单击单选按钮办法,代码如图5所示。
图5
12)实现Subject接口registerInterest办法,如图6所示。
图6
13)右击项目,选取“添加->新建项”,在模板中选取“Window窗体”,名称为ViewList.cs,单击添加按钮。
14)将ViewList窗体Text属性设立为:列表视图。
15)从工具栏中拖入ListBox控件,设立Name为lbColor。
16)切换至代码模式,添加ViewList父接口:Observer。
17)实现接口办法,见图8。
图8
18)定义Init办法,见图9。
图9
19)修改ViewList构造函数,见图10。
图10
20)右击项目,选取“添加->新建项”,在模板中选取“Window窗体”,名称为ViewColor.cs,单击添加按钮。
21)将ViewColor窗体Text属性设立为:颜色视图。
22)从工具栏中拖入PictureBox控件,设立Name为pbColor,设立BackColor为ActiveCaptionText。
23)切换至代码模式,添加using System.Collections引用,添加ViewColor父接口:Observer,并定义某些私有成员,效果见图11。
图11
24)定义PictureBox绘图办法,见图12。
图12
25)定义Init办法,见图13。
图13
26)实现接口办法,见图14。
图14
27)修改ViewColor构造函数,见图15
图15
28)切换至Controller代码模式,添加Init办法,并在Controller类构造函数中调用它,见图16。
图16
实验5:产品族实践
一、实验目
1)初步理解软件产品线和产品族概念
2)应用设计模式实现产品族
二、实验学时
2学时。
三、实验环境
计算机及VS。
四、实验内容
运用抽象工厂模式实现产品族。
五、实验操作环节
内容:运用抽象工厂模式实现产品族
环节:
1)打开VS.NET,新建一种项目,项目类型选取Windows,模板选取Windows应用程序,名称为PL_IMPL,选取好位置,单击拟定。
2)右击项目,选取“添加->新建项”,在模板中选取“类”,名称为Plant.cs,单击添加按钮,并完毕如图1所示代码。
图1
3)同样办法,添加Garden.CS类,并完毕如图2所示代码。
图2
4)右击项目,选取“添加->新建项”,在模板中选取“类”,名称为VeggieGarden.cs,单击添加按钮,并完毕如图3所示代码。
图3
5)右击项目,选取“添加->新建项”,在模板中选取“类”,名称为MeatGarden.cs,单击添加按钮,并完毕如图4所示代码。
图4
6)右击项目,选取“添加->新建项”,在模板中选取“组件类”,名称为GardenPicture.cs,单击添加按钮,并完毕如图5所示代码。
图5
7)单击菜单,选取“生成->生成解决方案”,或者按F6。
8)展开解决方案资源管理器,将FORM1Text属性设立为:“农/牧场主”。
9)在工具箱中,展开项目组件(本实验是PL_IMPL组件),将组件GardenPicture拖入Form1窗体,并设立BackColor属性为:ActiveCaptionText;BorderStyle为:Fixed3D;并调节好大小,见图6。
图6
10)从工具箱中,拖放3个CheckBox和2个RadioButton,属性设立见表1,见图6。
表1
控件
Name属性
Text属性
CheckBox1
ckbCenter
Center
CheckBox2
ckbBorder
Border
CheckBox3
ckbShade
Shade
RadioButton1
rbtnVeggie
农场
RadioButton2
rbtnMeat
牧场
11)选中Form1.cs,单击解决方案资源管理器中“查看代码”图标。
12)在Form1类中,完毕如图7所示代码。
图7
13)切换至Form1.cs设计环境,单击rbtnVeggie(农场单选框),并输入如下代码:
14)切换至Form1.cs设计环境,单击rbtnMeat(牧场单选框),并输入如下代码:
15)切换至Form1.cs设计环境,单击ckbCenter(Center多选框),并输入如下代码:
16)切换至Form1.cs设计环境,单击ckbBorder(Border多选框),并输入如下代码:
17)切换至Form1.cs设计环境,单击ckbShade(Shade多选框),并输入如下代码:
18)按Ctrl+F5,查当作果。
实验6:软件体系构造风格实践
一、实验目
1)初步理解典型软件体系构造
2)应用抽象数据类型风格实现KWIC系统
二、实验学时
2学时。
三、实验环境
计算机及VS。
四、实验内容
应用抽象数据类型风格实现KWIC系统。
五、实验操作环节
KWIC描述:KWIC索引系统接受某些行,每行有若干字,每个字由若干字符构成;每行都可以循环移位。重复地把第一种字删除,然后接到行末; KWIC把所有行各种移位状况按照字母表顺序输出
1)打开VS.NET,新建一种项目,项目类型选取Windows,模板选取控制台应用程序,名称为KWIC_ADT,选取好位置,单击拟定。
2)右击项目,选取“添加->新建项”,在模板中选取“类”,名称为AbstractData.cs,单击添加按钮,并完毕如图1所示代码。
图1
3)同样办法,添加Shift.CS类,并完毕如图2所示代码。
图2
4)右击项目,选取“添加->新建项”,在模板中选取“类”,名称为Alphabetizer.cs,单击添加按钮,并完毕如图3所示代码。
图3
5)右击项目,选取“添加->新建项”,在模板中选取“类”,名称为Output.cs,单击添加按钮,并完毕如图4所示代码。
图4
6)右击项目,选取“添加->新建项”,在模板中选取“类”,名称为Input.cs,单击添加按钮,并完毕如图5所示代码。
图5
7)双击program.CS文献,完毕如图6所示代码
图6
8)在E盘创立一种kwic2.txt文献,内容如下:
Hello World
Today is Wednesday
9)按Ctrl+F5,并查当作果。
浮现成果是倒数输出上面值。
展开阅读全文