软件设计与体系结构实验报告_第1页
软件设计与体系结构实验报告_第2页
软件设计与体系结构实验报告_第3页
软件设计与体系结构实验报告_第4页
软件设计与体系结构实验报告_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上实验项目列表序号实验项目名称成绩指导教师1ACME软件体系结构描述语言应用2SOA实践3MDA实践 4MVC实践5产品族实践6软件体系结构风格实践平均成绩 实验1:ACME软件体系结构描述语言应用一、实验目的1)掌握软件体系结构描述的概念2)掌握应用ACMESTUDIO工具描述软件体系结构的基本操作二、实验学时 2学时。三、实验方法由老师提供软件体系结构图形样板供学生参考,学生在样板的指导下修改图形,在老师的指导下进行软件体系结构描述。四、实验环境计算机及ACMESTUDIO。五、实验内容利用ACME语言定义软件体系结构风格,修改ACME代码,并进行风格测试。六、实验

2、操作步骤 一、导入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 sect

3、ion修改填充颜色为深蓝色。 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. 选

4、择Property Types 2. 选择New按钮 3. 在对话框中,类型名称为TierPropT 4. 类型选择enum5. 值为:client, logic, data6. 单击OK. 添加属性 1. 激活属性视图页2. 双击TierNodeT 3. 选择Properties tab 4. 右击空白位置,或者单击图标, 选择新建属性 5. 属性名为tier. 6. 类型为TierPropT(找不到,则直接输入TieredFam.TierPropT)7.单击 OK. 添加规则 1. 单击Family editor中的TieredFam (Press to select). 2. 选择属性视

5、图中的规则页 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.”

6、 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 Clie

7、ntNodeT 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, 条件选

8、择=, 值输入false 7. 设置填充颜色为深绿色 8. 单击 OK 测试风格 1.在Navigator的AcmeLab2中,单击右键, 在弹出式菜单中选择New Acme System. 2. 系统名为TestSystem. 4. 单击Next. 5. 在风格类型中,选择的内容如下图所示。 6.单击FinishNotice 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

9、和1个logic node ,并具有4个ports ,同时拖入4个connectors ,实现客户端和逻辑层的连接。七、总结通过这次实验,我已经初步掌握了AcmeStudio这个软件的用法,也初步对于三层体系结构风格的理解有了一定的认识,让我们初步对于软件体系结构的构造有了一定的了解,也使得我们在软件体系构建的时候有很多好的软件可以进行应用。对我们进行软件体系结构的做法有了一定的参考。以上就是我对这次实验的总结。 实验:SOA实践一、实验目的1)初步了解SOA的体系结构2)掌握用Web service技术实现SOA二、实验学时 2学时。三、实验方法根据实验指导书,实现web service。四

10、、实验环境计算机及VS2005。五、实验内容Web service实现。六、实验操作步骤内容一:Web Services实现步骤:1 创建WEB服务1) 打开VS.NET2005,新建一个网站,在对话框中选择“ASP.NET WEB服务”,选择好位置,把Website1改为“IMPLEMENTWS”,单击确定。2)展开解决方案资源管理器,在“APP_CODE”下创建3个文件夹,依次命名为:DA,Model,Util,见下图:3)右击DA文件夹,选择添加新项,新增一个类:DataAccess.cs,按同样的方法,在MODEL和UTIL文件夹中,添加入下图所示的类。4)右击项目,选择添加引用(注意

11、不是Web引用),选择浏览页,定位拷贝的DLL,见下图5)完成DATA.CS的代码6)完成DataAccess.CS的代码 7)完成ActivityIdHeader.cs8)双击Service.CS文件,完成代码9)编译,并运行,查看效果。一个WEB服务编写完成。2 创建WINDOWS应用1)右击解决方案,选择添加-新项目2)按下图完成:3)右击项目,选择添加引用(注意不是Web引用),选择浏览页,定位拷贝的DLL,见下图4)右击项目,新建文件夹,并在其下新增一个类,并完成代码,如下图所示5)添加Web引用,右击项目,选择添加WEB引用,在URL中输入,WEB服务的地址,然后单击前进,可以修改

12、引用名,单击“添加引用”按钮6)双击FORM1.CS,在窗体上放置一个按钮和一个标签,其中标签命名为Result,按钮的text为“get data”7)双击按钮,完成以下代码8)右击项目,新增一个类:UptoLogEvents.cs9)双击PROGRAM.CS,完成代码10)设置APPFORWEBSERVICE为启动项目,运行,查看结果七、总结通过这次试验,我了解了应用VS2008进行我们基于web服务的编程 的做法。也使得我对于VS这个系列的软件都认识有了一个比较深刻的理解。也使得我初步了解SOA的体系结构。并且基本上掌握用Web service技术实现SOA。虽然在制作中还是有很多问题,

13、但是都经过自己查阅和一系列的指点都完成了。并且在相关科目的一起协作下,发现这个实验对我的帮助很大。以上就是我对这个实验的总结。 实验:MDA实践一、实验目的1)初步了解MDA的框架。2)了解PSM到CODE的过程。3)掌握应用ECO实现MDA过程。二、实验学时 6学时。三、实验方法根据实验指导书,实现Staruml、ECO。四、实验环境计算机及STARUML和VS2005。五、实验内容(1)StarUML实践六、实验操作步骤实验内容一:StarUML实践1. 安装:首先,我们必须先安装将要使用的软件。StarUML ,是一个开放源码软件, 遵循许可 ,并免费提供下载。 2. 启动安装以后就可以

14、启动该程序。 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。这决定了工程所使用的规则

15、和约定。根据语言,选择不同的Profile,比如JAVA,一定要包含"JAVA Porfile"这一项目;比如C#,一定要包含"C# Porfile"这一项目。 8. 保存工程保存工程,命名为LAB3.UML 9. 创造图表从默认就在屏幕的左边的“Toolbox”选择“类”图标,然后左键单击diagram窗口的某处。这样就使用通用名字创造了一个新的类。双击,将类改名为Circle。 10. 添加属性右击图中的目标,在弹出菜单中选择“Add”中的“Attribute”(被标示为绿色),为其添加一个属性(或者域),填入期望的名字“_radius”。 l 具体

16、的数据类型,在属性面板(右下侧的窗口) ,由双打字,在"类型"时段。 在窗体右下边的Properties面板中,找到“Type”输入框,输入double作为_radius属性的类型。l 类的内部数据(域/属性)都是私有的,因为他们是严格由类内部使用的。所以,在Properties面板中将_radius设置为“私有”11. 继续进行设计重复同样的过程,添加所谓的名字叫做Rectangle的类和double型的私有成员_width和_height。 12. 创造 IShape interface l 从toolbox中,选择“Interface”,并点击图表的某处。将其改名为I

17、Shape。创建以后,选中它。l 在顶部工具栏,选择 “Stereotype Display” 下拉按钮,将值改变为“None”。这将改变以往的圆形形状,使其变为成长方形。 l 还是在顶部工具栏,取消选中" Suppress Operations "。这将使我们能够看到接口所拥有的方法。 l 向IShape 接口添加返回值为double的getArea方法。 n 可以通过右击interface的图标,在弹出菜单中点击红色的“Operation”按钮,然后输入getArea。n 设定返回值类型。在“Model Explorer”中展开IShape节点,右击你刚刚创建的getA

18、rea方法,并选择“Add Parameter”。在“Properties”框中,将参数的名子变为空,将“DirectionKind”变为“RETURN”,将“Type”变为dboule。l 将IShape和getArea的IsAbstract属性框打上勾,他们在图标上的名字将变为斜体。这是UML的标准,表示这是接口或者其他纯虚实体。 13. 添加类和接口的关系l 可以通过从toolbox中选择表示“Realization”的箭头,并从Circle拖拽向IShape,使Circle实现接口IShape。重复同样的过程,为Rectangle添加实现关系。这是添加了Circle 和 Rectang

19、le对于IShape接口的实现关系。 n 如果想使连接线表现为直角的方式,右击连接线,并选择" Format/Line Style/Rectilinear"菜单。你通过这种方式,使箭头重叠在一起,可以使你的图看起来更整洁。 14. 添加类基于接口的行为l 由于Circle和Rectangle类都实现了IShape接口,就必须有同样的行为(方法)。n 在“Model Explorer”面板中,复制getArea法(按Ctrl-C或者右键点击并选择Copy菜单),并粘贴到Circle和Rectangle类。 n 这些实现了的方法在Circle和Rectangle类中都不是抽象的

20、,而是具体的。这是因为他们实际上是执行一些特定行为(例如,为一个圆形和长方形分别计算面积) ,所以不要勾选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” 一栏改为“AGGRE

21、GATE”(这个图示说明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”。从这里,增加一个普

22、通的带有dboule型price参数和IShape类型shape参数的操作 l 增加一个输入参数,就像之前增加了一个返回型的输出参数一样,你指定的参数的名称,如价格和形状等,以及适当的数据类型。 l 为Circle增加一个带有double型的radius参数的构造函数。l 为Rectangle增加一个带有double型width和height参数的构造函数。 18. 添加Test_Pizza类为了说明UML类图更多的功能,又增加了一个叫做“Test_Pizza”的类,它用作测试目的,并使用到Pizza和IShape类。 l 两个类之间的关系有多种形式。举例来说,一个类可以实例化另一个类,而不是

23、将其作为一个成员。又或,一类的方法可能需要另一个类作为输入参数,保留一个引用仅仅是为这个方法的执行。 l 通过从toolbox中选择“Dependency”箭头,从一个类拖向他所以来的类,来添加不通类之间的依赖关系。在这个例子中, Test_Pizza 依赖于Pizza,Circle和Rectangle类,因为它实例化了它们。 l 从Properties box选择name属性,或者双击图表上的“依赖线”,可以为依赖关系添加标签。特别的是,当一类实例化另一个类,我们会把依赖线叫做“instantiates”。 l 你可以选中并拖动依赖线的标签,以达到更美观的效果。l 依赖关系不会影响代码生成。

24、 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

25、C#Doc”,若JAVA,请务必选中“Generate the Documentation byJAVADoc”,“Generate empty JAVADoc”,所有其他复选框不选中,“Next”。 l 现在StarUML将从你的图产生代码,点击“Finish”退出对话框。 l 现在,您可以编辑生成的代码,以增加应用。 20. 添加实现代码现在就开始定义程序实际做的事情,例如,为图标中的类描述添加实现代码。 21. 逆向工程 StarUML还可以从现有的Java/C#代码创建一个类图,这被称为“reverse engineering”,当想从现有的代码生成图表,或者你修改了SU生成的代码,并

26、且想在图表中反应出来的时候,逆向工程功能就非常有用了。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

27、the Attribute”也是选中的。 n 除非你想SU创建其他东西,例如布局很糟糕的包含所有类的图表,不要选中“Create Overview Diagram”框。n 当你对选项做了检查后,点击“Run”。n 点击"完成"退出对话框时,就完成了。 l SU会向模块添加导入的类,但不是的图表。为了将它添加到图,只需要简单地从Model Explorer拖动它们即可。 七、总结通过这次实验,我初步了解MDA的框架。并且了解PSM到CODE的过程。还掌握应用ECO实现MDA过程。并且在应用StarUML这个软件在制作UML图和转换成代码的这些步骤有了一个系列的了解。并且发现这

28、样也符合我们软件工程的面向对象的思想。通过这样的验证性的实验使我对于这些的实验有了一个进一步的了解。所以。通过这次试验我得到的收获就是这个。以上就是我的总结。实验:MVC实践一、实验目的1)初步了解软件体系设计的基本概念2)应用设计模式实现MVC二、实验学时 2学时。三、实验方法根据实验指导书,实现MVC。四、实验环境计算机及VS2005。五、实验内容利用Observer模式实现MVC。六、实验操作步骤步骤:1)打开VS.NET2005,新建一个项目,项目类型选择Windows,模板选择Windows应用程序,名称为MVC_IMPL,选择好位置,单击确定。2)右击项目,选择“添加->新建

29、项”,在模板中选择“接口”,名称为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所示图17)单击图

30、上的红色圆圈的图标。8)从左边的工具栏见图,拖一个GroupBox控件至窗体上,并拖动位置和设置大小效果,在属性对话框中,设置其Text属性为:颜色选择器,如图所示。9)从工具箱拖三个radioButton控件,name属性分别设置为rbtnRed,rbtnGreen,rbtnBlue,Text属性分别设置为 “红色”,“绿色”,“蓝色”,并设置好位置,效果如图3所示。10)切换至代码模式,添加using System.Collections引用,添加controller的父接口:Subject,并添加一个私有成员,效果见图4。图411)定义单击单选按钮方法,代码如图5所示。图512)实现Su

31、bject接口的registerInterest方法,如图6所示。图613)右击项目,选择“添加->新建项”,在模板中选择“Window窗体”,名称为ViewList.cs,单击添加按钮。14)将ViewList窗体的Text属性设置为:列表视图。15)从工具栏中拖入ListBox控件,设置Name为lbColor。16)切换至代码模式,添加ViewList的父接口:Observer。17)实现接口的方法,见图8。图818)定义Init方法,见图9。图919)修改ViewList的构造函数,见图10。图1020)右击项目,选择“添加->新建项”,在模板中选择“Window窗体”,名

32、称为ViewColor.cs,单击添加按钮。21)将ViewColor窗体的Text属性设置为:颜色视图。22)从工具栏中拖入PictureBox控件,设置Name为pbColor,设置BackColor为ActiveCaptionText。23)切换至代码模式,添加using System.Collections引用,添加ViewColor的父接口:Observer,并定义一些私有成员,效果见图11。图1124)定义PictureBox绘图方法,见图12。图1225)定义Init方法,见图13。图1326)实现接口的方法,见图14。图1427)修改ViewColor的构造函数,见图15图15

33、28)切换至Controller的代码模式,添加Init方法,并在Controller类的构造函数中调用它,见图16。图16七、总结通过这次试验,我知道了在C#下进行窗口化设计的程序的基本的做法,也对于MVC的设计模式有了一定的了解,这个实验结束后,我基本上掌握了MVC模式的设计,也进一步加强了自己对于VS2008这个集成的变成环境的认识和理解,使得我在以后的编程过程中对于这些有了很深刻的了解。以上就是我对于这个实验的总结和我的收获实验:产品族实践一、实验目的1)初步了解软件产品线和产品族的概念2)应用设计模式实现产品族二、实验学时 2学时。三、实验方法根据实验指导书,实现MVC。四、实验环境

34、计算机及VS2005。五、实验内容利用抽象工厂模式实现产品族。六、实验操作步骤内容:利用抽象工厂模式实现产品族步骤:1)打开VS.NET2005,新建一个项目,项目类型选择Windows,模板选择Windows应用程序,名称为PL_IMPL,选择好位置,单击确定。2)右击项目,选择“添加->新建项”,在模板中选择“类”,名称为Plant.cs,单击添加按钮,并完成如图1所示的代码。图13)同样方法,添加Garden.CS类,并完成如图2所示的代码。图24)右击项目,选择“添加->新建项”,在模板中选择“类”,名称为VeggieGarden.cs,单击添加按钮,并完成如图3所示的代码

35、。图35)右击项目,选择“添加->新建项”,在模板中选择“类”,名称为MeatGarden.cs,单击添加按钮,并完成如图4所示的代码。图46)右击项目,选择“添加->新建项”,在模板中选择“组件类”,名称为GardenPicture.cs,单击添加按钮,并完成如图5所示的代码。图57)单击菜单,选择“生成->生成解决方案”,或者按F6。8)展开解决方案资源管理器,将FORM1的Text属性设置为:“农/牧场主”。9)在工具箱中,展开项目组件(本实验是PL_IMPL组件),将组件GardenPicture拖入Form1窗体,并设置BackColor属性为:ActiveCapt

36、ionText;BorderStyle为:Fixed3D;并调整好大小,见图6。图610)从工具箱中,拖放3个CheckBox和2个RadioButton,属性设置见表1,见图6。表1控件Name属性Text属性CheckBox1ckbCenterCenterCheckBox2ckbBorderBorderCheckBox3ckbShadeShadeRadioButton1rbtnVeggie农场RadioButton2rbtnMeat牧场11)选中Form1.cs,单击解决方案资源管理器中的“查看代码”图标。12)在Form1类中,完成如图7所示的代码。图713)切换至Form1.cs的设计环境,单击rbtnVeggie(农场单选框),并输入如下代码:14)切换至Form1.cs的设计环境,单击rbtnMeat(牧场单选框),并输入如下代码:15)切换至Form1.cs的设计环

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论