软件设计与体系结构-实验指导书-20160610
- 格式:doc
- 大小:916.50 KB
- 文档页数:73
一、实验目的1. 理解软件体系结构的基本概念和原理。
2. 掌握两种常见的软件体系结构风格:顺序批处理和管道-过滤器。
3. 通过实际操作,加深对软件体系结构设计方法和实践的理解。
二、实验内容1. 实验题目:软件体系结构实验2. 实验目的:(1)理解软件体系结构的基本概念和原理。
(2)掌握顺序批处理和管道-过滤器两种软件体系结构风格。
(3)通过实际操作,加深对软件体系结构设计方法和实践的理解。
3. 实验要求:(1)熟悉Java编程语言。
(2)了解面向对象编程思想。
(3)掌握软件体系结构设计的基本原则和方法。
4. 实验器材:(1)计算机一台。
(2)Java开发环境。
(3)实验指导书。
三、实验步骤1. 创建实验项目,并设置项目属性。
2. 设计顺序批处理风格的软件体系结构。
(1)创建一个数据流问题,例如计算10000个数的平均值。
(2)将数据流问题分解为多个处理步骤,如读取数据、计算平均值、输出结果等。
(3)为每个处理步骤创建相应的类,实现具体功能。
(4)编写主程序,将数据流问题传递给各个处理步骤,实现整个数据流处理过程。
3. 设计管道-过滤器风格的软件体系结构。
(1)创建一个数据流问题,例如过滤并输出指定范围内的偶数。
(2)将数据流问题分解为多个处理步骤,如读取数据、过滤数据、输出结果等。
(3)为每个处理步骤创建相应的类,实现具体功能。
(4)通过接口连接各个处理步骤,实现数据流的传递和处理。
4. 编写实验报告,总结实验过程和心得体会。
四、实验结果分析1. 批处理风格与管道-过滤器风格的比较:(1)批处理风格:数据以整体的形式传输,数据总量有限;处理过程之间互不调用。
(2)管道-过滤器风格:数据以数据流的形式传输,数据量可以无限制;处理过程之间通过接口连接,实现数据流的传递和处理。
2. 实验过程中遇到的问题及解决方法:(1)问题:如何设计合理的处理步骤?解决方法:根据数据流问题,将问题分解为多个处理步骤,并确保每个步骤的功能单一、易于实现。
《软件设计与体系结构实验》教学大纲课程编号:ZH36167课程名称:软件设计与体系结构实验英文名称:Experiments in Software Design and Architecture学分/学时:0.5/17 课程性质:必修适用专业:软件工程先修课程:软件工程、UML 基础、软件需求及设计、程序设计(C/C++ 或 Java)开课单位:计算机科学与技术学院一、课程的教学目标与任务《软件设计与体系结构》课程是计算机专业高等教育的专业课程。
目的是为学生树立一个多层次结合的软件体系结构概念,从而为正确地分析和建立实际系统的体系结构奠定坚实的基础。
学生在完成本课程学习后,应能够理解软件体系结构的相关概念;能够把所学的关于软件设计模式的知识应用于实践;掌握如何描述软件体系结构;掌握一些常见软件体系结构的应用环境及解决的问题,并能在实践中根据需要应用这些体系结构。
设置本课程的目的是:让学生通过设计、验证来消化理论课的知识点,包括软件体系结构描述方法、软件体系结构描述语言和支持工具等等,在了解常用的软件体系结构(如 Web 服务体系结构等)的基础上,具备基于体系结构的软件开发能力。
学习本课程的要求是:学习者应掌握软件体系结构的概念,软件体系结构的建模方法;掌握常用的软件设计模式,并能在实践中加以应用;了解经典的软件体系结构的风格,能够使用所学的知识设计特定的软件体系结构;在了解常用的软件体系结构(如Web 服务体系结构等)的基础上,具备基于体系结构的软件开发能力。
本课程以实验为主,单独设课。
开课后,课程负责教师首先需向学生介绍课程的性质、任务、要求、课程安排和进度、平时考核内容、期末考试方式、实验守则及实验室安全制度等;开设基础性实验。
在实验教学中,立足于培养学生基于软件体系结构的软件开发能力。
通过试验,使学生能够运用理论知识指导其实践。
本实验课要求学生在实验或设计结束后,按教师规定的要求完成实验(设计)报告,并提交给教师审阅。
软件体系结构与设计模式实验10实验报告1、某公司欲开发一套机房监控系统,如果机房达到某一指定温度,传感器将作出反应,将信号传递给响应设备,如警示灯将闪烁、报警器将发出报警、安全逃生门将自动开启、隔热门将自动关闭等,每一种响应设备的行为由专门的程序来控制,采用观察者模式来设计该系统。
(1)UML类图(2)实现代码package question1;import java.util.ArrayList;/***@Description:*@Author: Xxx*@Date: 2020年5月11日**/public abstract class RoomSubject {protected ArrayList observers = new ArrayList<>();private float temperature;public void setTemperature(float temperature) {this.temperature = temperature;}public float getTemperature() {return temperature;}public void attach(Sensor sensor){observers.add(sensor);}public void detach(Sensor sensor){observers.remove(sensor);}public abstract void checkTemperature(float temperature);}package question1;/***@Description:*@Author: Xxx*@Date: 2020年5月11日**/public class TemperatureController extends RoomSubject{ @Overridepublic void checkTemperature(float temperature){if (temperature > 39) {System.out.println("机房温度已超过正常温度,目前达到"+temperature+"℃");for (Object object : observers) {((Sensor)object).response();}}else{System.out.println("机房当前温度为"+temperature+",在正常范围,无需发布任何提醒!");}}}package question1;/***@Description:*@Author: Xxx*@Date: 2020年5月11日**/public interface Sensor {void response();package question1;/***@Description:*@Author: Xxx*@Date: 2020年5月11日**/public class Alertor implements Sensor{@Overridepublic void response() {System.out.println("报警器正在发出报警声!");}}package question1;/***@Description:*@Author: Xxx*@Date: 2020年5月11日**/public class WarnningLight implements Sensor{@Overridepublic void response() {System.out.println("警示灯正在闪烁!");}}package question1;/***@Description:*@Author: Xxx*@Date: 2020年5月11日**/public class EscapeDoor implements Sensor{@Overridepublic void response() {System.out.println("安全逃生门已打开!");}}package question1;/***@Description:*@Author: Xxx*@Date: 2020年5月11日**/public class HeatIsolationDoor implements Sensor{ @Overridepublic void response() {System.out.println("隔热门已关闭!");}}(3)测试代码package question1;/***@Description:*@Author: Xxx*@Date: 2020年5月11日**/public class Client {public static void main(String[] args) {RoomSubject subject = new TemperatureController();Sensor alertor,light,escapeDoor,heatIsolationDoor;alertor = new Alertor();light = new WarnningLight();escapeDoor = new EscapeDoor();heatIsolationDoor = new HeatIsolationDoor();subject.attach(alertor);subject.attach(light);subject.attach(escapeDoor);subject.attach(heatIsolationDoor);subject.checkTemperature(42);}}(4)结果截图正常温度:subject.checkTemperature(34);2、Strategy模式的应用某公司专门销售各种打印机,销售打印机时都有一定的折扣让利给顾客,但折扣计算的方法有很多种,如:不打折;每台减扣固定的金额;按售价的5%打折等等,且折扣计算方法可能发生变化。
数学与信息学院(软件学院)《软件工程实验》指导书编写:梁早清朱凯严尚维林毅申完成人信息学号姓名主要角色和任务比重朱凯2016年修订分组至少3人至多4人。
备注:此文档仅作为《软件工程》实验指导用,其他课程的文档模板请根据其他老师提供的模板撰写。
软件工程实验课实验说明本实验指导书是数学与信息学院、软件学院《软件工程实验》课程的指导书,目的在于让同学们通过这些实验,体会软件开发的过程(从需求分析到设计和测试计划)。
老师们试图通过一个较为简单的易实现的软件系统,让同学们分阶段完成需求分析、体系结构设计、部件级设计等设计和功能测试的工作,并完成相应的文档。
同学们之间根据规范相互评审每一阶段的文档,过后老师再统一评讲。
以此让同学们加深对结构化分析与设计、功能测试的方法的理解。
(特别指出:因课时所限,软件工程中面向对象的设计与分析方法不在本实验课上讨论,学院另外开设有《面向对象的设计与分析》课程。
)题目如下:一、软件系统需求的文本描述《课程成绩管理系统》提供一个方便我校任课老师管理学生成绩的小型软件系统。
该系统为教师提供方便的成绩管理功能,也为学生提供查询成绩的功能。
系统描述如下:学生的成绩包含以下4个部分:课堂点名成绩、课堂考试成绩、课后作业成绩和期末考试成绩。
各成绩评判标准和在总成绩中所占比例如下:1.课堂点名3次,每次点名没有到的不得分(即记0分),到了的100分。
第一次点占总成绩的1%,第二次和第三次各占总成绩的2%,课堂点名占总成绩的5%;2.课堂考试3次,每次满分100分,具体成绩由老师给出。
其中,第一次和第二次占总成绩的7%,第三次占总成绩的6%,共20%;3.课后作业3次,每次满分100分,具体成绩由老师给出。
其中,第一次和第二次占总成绩的8%,第三次占总成绩的9%,共25%;4.期末考试试卷满分100分,占总成绩的50%。
教师能通过成绩管理软件来管理学生的成绩,包含添加、删除、修改、查看、统计学生的成绩。
《软件设计与体系结构》实验指导书软件工程教研室前言软件设计与体系结构课程是计算机科学与技术专业(软件工程方向)的一门重要的专业课。
通过本课程的学习,使学生在已有的计算机软硬件基础知识、程序设计知识、数据库和计算机网络知识基础上,系统掌握软件设计的基本方法,并具有针对特定环境下的应用问题进行软件系统开发(包括系统分析,设计与实现)的能力。
通过学习本课程学生可以理解和掌握软件设计与体系结构的分析和设计方法,掌握面向对象系统分析和设计的UML标准建模语言,能够利用Rational Rose软件以某一信息系统为例进行系统分析和设计。
本实验主要包括:系统原理的基本概念、系统开发过程RUP、面向对象分析和面向对象设计的方法、面向对象分析和设计的UML标准建模语言等内容。
通过本课程的学习,学生掌握的知识、内容及掌握的程度要求为:1. 使学生理解面向对象的信息系统的开发过程、系统分析和设计的原则和方法;2. 使学生掌握UML语言的基础知识,以及UML在面向对象的软件系统分析和设计中的应用,并能使用UML工具建立系统模型;3. 使学生掌握在UML系统模型下应用高级语言建立应用系统的方法;4. 通过案例教学和实验,提高学生在应用面向对象技术开发软件方面的动手能力和解决问题的能力,并鼓励创新。
本实验所要求的建模工具为Rational Rose 7.5。
实验要求计算机软件建模技术现在越来越广泛的应用于软件工程、软件体系结构中。
本课程实验的目的是为了使学生在课程理论学习的同时,通过在一个实践的环境下,实际学习软件统一建模语言,对软件建模技术有一个初步的了解及认识。
通过本指导书中的各个实验,学习掌握对一般面向对象系统建模的方法与技术。
总之,通过实验环节,使学生加深了解和更好地掌握《软件设计与体系结构》课程教学大纲要求的内容。
在《软件设计与体系结构》的课程实验过程中,要求学生做到:(1)预习实验指导书有关部分,认真做好实验内容的准备,就实验可能出现的问题提前做出思考和分析。
软件设计模式与体系结构实验报告在软件开发的世界里,设计模式和体系结构就像调味料,给整个开发过程增添了无限风味。
你知道的,写代码有时候就像做饭,少了调料,味道肯定不行。
先说说设计模式吧,这可真是个绝佳的主意。
想象一下,咱们每次做个项目的时候,脑袋里总是要有个框架,知道怎么来、怎么走,这时候设计模式就像一个好老师,教我们如何优雅地解决常见问题。
说到这里,大家听说过单例模式吗?这个模式就像是“独一无二”的存在,确保你在整个应用中只有一个实例,这样可避免浪费资源,避免重复。
嘿,你敢想象要是你的冰箱里塞满了牛奶,那可真是够烦人的。
再聊聊策略模式,真是聪明的家伙。
就好比你在吃火锅,想换个口味,可以随时调换蘸料,策略模式就是给你提供了这种灵活性。
无论是要排序、计算还是处理数据,你都可以轻松切换。
这就像在生活中,不同的情况要有不同的应对方式。
生活本来就充满变化,代码也是一样嘛。
想到这里,我觉得代码和生活一样,得学会随机应变。
然后说到观察者模式,这可是个有趣的故事。
想象一下,你在看球赛,朋友们都在旁边紧盯着屏幕,眼神不离。
这就是观察者模式的精髓:一个对象变化,所有观察它的人都立刻得到通知,哇,这个效率可真高。
就像你在朋友圈发了条动态,大家立刻围过来评论点赞,简直不要太快。
这种模式让我们在编程中也能保持同步,绝对是个“跟得上”的好帮手。
再说到体系结构,嘿,这可是大事儿。
体系结构就像大楼的蓝图,如果没有好的设计,后面的施工就容易出问题。
想想看,你有没有见过那些盖得歪歪扭扭的楼?那可真是惨不忍睹。
一个好的体系结构可以让整个系统稳定运行,避免后期的各种麻烦,就像一部精密的机器,每个部分都得协同工作。
分层架构、微服务架构,这些概念都是在告诉我们,要有条理,别让代码变成“杂货铺”。
说到微服务架构,这可真是个炫酷的概念。
就好像把大块头的火锅分成一个个小锅,你想吃啥就来啥,各种口味应有尽有。
这种架构让开发变得灵活,团队可以独立开发,互不影响。
软件设计与体系结构《软件设计与体系结构》是2010年高等教育出版社出版的图书,作者是齐治昌。
该书是一本可作为高等院校计算机科学与技术专业、软件工程专业或信息类相关专业的本科生和研究生教材,以培养学生的软件设计思维能力以及方法和技术的运用能力,同时也适用于开发人员和项目管理人员在软件开发实践中参考。
内容软件工程强调以工程化思想和方法开发软件,而软件设计作为软件开发过程中的核心活动之一,对开发出满足需要的高质量软件起关键作用。
本书对软件设计以及软件体系结构的相关思想、理论与方法进行了系统的介绍,包括软件设计与软件体系结构在软件工程中的地位和作用、软件设计的基本方法与原则、统一建模语言UML2.0、面向对象的软件设计方法、面向数据流的软件设计方法、人机界面设计、软件体系结构风格与设计模式、基于构件的软件体系结构、软件体系结构评估、软件设计的进化等内容。
本书包含了作者多年来在软件开发实践、软件工程教学和科研活动中的认识与体会,并结合了大量的案例分析,力求全书内容与组织结构的系统性、先进性、基础性和实用性。
目录第1章软件工程与软件设计第2章统一建模语言UML第3章软件设计基础第4章面向对象的软件设计方法第5章面向数据流的软件设计方法第6章用户界面设计第7章软件体系结构风格与设计模式第8章基于分布构件的体系结构第9章软件体系结构评估第10章软件设计的进化“软件设计与体系结构”课程是为软件工程专业开设的必修课,也是计算机科学与技术软件开发方向课程。
本课程运用工程的思想、原理、技术、工具,来对软件设计以及软件体系结构的相关思想、理论与方法进行系统介绍,包括软件模型和描述、软件体系结构建模和UML、软件设计过程、软件体系结构风格、面向对象的软件设计方法、面向数据流的软件设计方法、用户界面设计、设计模式、Web服务体系结构、基于分布构件的体系结构、软件体系结构评估、软件设计的进化、云计算的体系结构等内容。
本课程的具体任务包括:1.让学生建立构建软件系统架构一般方法的感性认识,理解并掌握软件系统架构分析、体系结构建模与架构设计的相关理论知识,培养学生软件架构设计的基本能力,能从内部模块规划设计、系统层次结构的构建开始,了解构建系统结构的一般技术和方法。
《软件设计与体系结构》课程实验指导书本书是《软件设计与体系结构》(谢兄编著,出版社出版)的配套用书。
该部分包括4个实验,共10个学时。
实验1掌握Factory设计模式的意图及其代码实现。
实验2掌握Composite设计模式的意图及其代码实现。
实验3掌握Observer设计模式的意图及其代码实现。
适应4利用Observer、单件等设计模式开发实现一个小的系统。
以上每个实验都分为实验目的、实验内容、实验要求、实验步骤及实验总结5个单元,以帮组读者深刻体会设计模式的用处和好处,加深读者对设计模式的理解和感悟。
读者如果能够按照适应的要求,在编程实践中仔细学习体会这4个设计模式,认真感悟面向对象设计的思想和原则,必定会获益匪浅。
《软件设计与体系结构》课程实验教学大纲课程编号:一、实验教学的目的《软件设计与体系结构》课程是为计算机科学与技术、软件工程专业本科三年级学生开设的专业实验课。
通过本课程的实验,掌握有关软件设计的目标、基本原则、基本理论、基本知识、基本设计模式,和主要的软件体系结构方面的基本知识和基本技能。
培养学生理论联系实际和创新的精神,提高学生软件设计、编程的能力,增强学生的实践经验,为将来从事软件分析、设计等工作打下必要的实践基础。
使他们任职后能对软件开发过程中的具体问题有较强的分析和解决的能力。
二、实验教学的任务通过本实验课程的实践训练,使学生能够较好地掌握各种设计模式的具体使用方法及现代软件体系结构的内容和方法,理解各设计模式的用途及软件体系结构模型,熟悉各设计模式的结构组成,掌握在软件设计模式及体系结构理论指导下软件开发的基本过程。
三、实验项目名称、学时分配、适用专业及实验性质四、单项实验的内容、要求1. Factory设计模式实验内容:Factory设计模式实例分析实验要求:根据给定的Factory设计模式实例进行分析,体会设计模式的具体使用方法。
2. Composite设计模式实验内容:Composite设计模式实例分析实验要求:根据给定的Composite设计模式实例进行分析,体会设计模式的具体使用方法。
《软件系统设计与体系结构》课程实验【实验组织】:自行组队,8~10人一队,选出一个PM。
每个队伍再自行组成3~4个小组,小组内有组长。
作业都是由PM提交。
PM主要职责是确保整个项目按照项目计划完成。
PM在项目开发过程中,要组织项目例会,分配任务,以及作业的按时提交。
通过在TSS跟帖方式完成组队。
【时间安排】:2013-1.12 完成个人体系结构方案35%2012-12.23 提交初步方案2013-1.5 调整方案2013-1.12 提交个人最后方案2013-1.20 完成团队体系结构方案15%2013-3.17 完成详细设计方案50%2013-3.10 完成初始详细设计方案2013-3.17 完成所有的详细设计(有能力的同学可以完成部分项目构建)2013-4.7 提交可运行的系统(加分项目)10%提醒:因为时间很紧张,建议同学们一方面采用原型式方法先将系统确定的部分构建起来,另一方面充分利用复用方法。
【实验内容】:参见实验项目.rar追加要求:必须实现的要求:1、系统要具备高可靠性a)存储数据出现故障时要能够继续工作并快速恢复b)服务器出现故障时要能够及时发现,并且不能影响网站访问2、自动从其他网站中爬取商品及其价格信息a)兼容各个网站的不一致性(定义匹配格式),例如商品名称、价格单位等;i.要求实现至少2个网站的兼容ii.技术方案上要更加开放,例如可以兼容Amazon等英文网站;b)后台信息更新时不能影响在线使用;3、兼容多种浏览器;4、用户搜索商品时a)提供高易用性,兼容同义词(定义同义词表),例如搜索HP时,可以显示惠普产品;b)将符合条件的多种商品排序提供给用户时,允许使用竞价规则调整顺序;c)可以屏蔽特定的商品,例如刚刚爆出负面新闻的商品;下列追加说明条款会因为硬件及现实的限制无法满足,但是要在设计方案中给出解决办法,具备技术可行性,也可以反过来基于现有硬件计算最大吞吐量、性能和存储容量。
实验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 Types2. 选择New按钮3. 在对话框中,类型名称为TierPropT4. 类型选择enum5. 值为:client, logic, data6. 单击[OK].添加属性1. 激活属性视图页2. 双击TierNodeT3. 选择Properties tab4. 右击空白位置,或者单击图标,选择新建属性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 ponents |!t1.allowShareHost -> (Forall t2 : TierNodeT in ponents | t1 != t2 -> t1.host != t2.host)6. 单击 [Parse Rule] 以确认无语法错误,有错误,要重新写。
学生学号实验课成绩武汉理工大学学生实验报告书实验课程名称软件设计与体系结构开课学院计算机科学与技术指导老师姓名陈明俊学生姓名学生专业班级2014 —2015 学年第1 学期教务系统1.引言1.1目的随着信息时代的高速发展,传统的教务系统已经满足不了学生和老师的需求,无法适应信息时代的要求,所以需要增加新的功能使学生和老师以及游客能更加便捷的了解到教务系统上的信息。
科学技术日新月异的进步,让人类生活发生了巨大的变化,计算机技术的飞速发展,使各行各业在计算机技术应用方面得到了广泛的普及和使用。
信息化时代的到来成为不可抗拒的潮流,人类文明正在进入一个崭新的时代。
因此,教务管理系统也以方便、快捷、费用低的优点正慢慢地进入人们的生活,将传统的教务管理方式彻底的解脱出来,提高效率,减轻工人人员以往繁忙的工作,减小出错的概率,从而使人们有更多时间来学习和享受生活。
1.2定义1.登陆模块:验证用户类型、帐号和密码。
如果验证通过,分权限进入该系统。
如果验证失败输出相应提示信息。
2.课程信息管理模块:主要功能是学生选课,查课,退课;教师查看所授课程学生名单。
3.基本信息管理模块:教师及学生对自己基本信息进行修改和查看;管理员可对新生进行添加,对休学生进行标识,对开除学籍、退学学生、毕业学生进行删除操作。
4.公示公告模块:管理员对公告进行添加、修改、删除;学生和教师浏览公告。
5.学生成绩管理:教师录入学生成绩,查看学生成绩;学生查看个人成绩;管理员修改成绩。
1.3参考资料[1] Karl E.Wingers著,软件需求,清华大学出版社,2004[2] Dean Leffingwell等著,软件需求管理——统一方法,机械工业出版社,2002[3] Soren Lauesen著,软件需求,电子工业出版社,2002[4] lan Sommerville著,需求工程,机械工业出版社,20032.总体描述2.1产品标识产品名称:教务处系统系统版本:1.12.2产品描述2.2.1系统属性本系统是一个专门针对大学教务管理的系统,具有登录、基本信息管理、选课、成绩管理、公示公告等功能。
《软件设计与体系结构》课程教学大纲一、教学大纲说明(一)课程的性质、地位、作用和任务《软件设计与体系结构》是计算机软件工程专业选修课程,主要研究结构良好的软件体系结构及所包含的设计模式、有价值的经验和针对特定问题的解决方案,能培养和提高学生的洞察力和分析能力,为今后能设计出灵活可复用的软件打下基础。
本课程的主要任务是掌握软件体系结构相关知识、原理和各种类型设计模式的基本结构,对软件体系结构有比较深入的理解,能够从系统结构角度分析现有的软件系统,在设计实际的特定问题是懂得运用具体相关的设计模式,并能利用所学到的有关软件体系结构的知识高效地设计软件系统。
(二)教学目的和要求本课程介绍软件体系结构的基本概念和基本原理,明确提出软件体系结构的动态性和适应性的理念,通过学习本课程使学生了解当今优秀编程人员如何灵活运用面向对象的技术进行可复用程序设计,同时使他们对面向对象技术和原理有更加深刻的认识理解,并能使用这些设计模式于实际的应用当中,另外还可以培养学生具有分析和解决问题的基本思路,以及面向对象程序设计中的可复用的思想,为日后从事大型复杂软件开发打下良好的基础。
(三)课程教学方法与手段采用理论与案例讨论相结合的教学方法,手段拟采用PowerPoint多媒体教学及分组讨论。
(四)课程与其它课程的联系《面向对象程序设计》是本课程的先修课,通过该课程掌握面向对象方法与技术的基本概念、特点和原理,并能运用该技术设计简单的面向对象系统,是本课程的基础。
同时,本课程与《软件工程》等相关专业课程有密切联系。
(五)教材与教学参考书教材:张春祥等编《软件体系结构理论与实践》,中国电力出版社,2011参考书:[1]Alan Shalloway、James R.Trott著、熊节译,《设计模式精解》,清华大学出版社,2005.1[2] Erich Gamma等著、李英军等译,《设计模式——可复用面向对象软件的基础》,机械工业出版社,2004.9二、课程的教学内容、重点和难点本课程有两个主要部分:一、介绍常用的体系结构风格,软件体系结构的组成与常用的描述方法,基于体系结构的软件开发方法;二、实际设计模式的分类描述,主要包括:创建型、结构型和行为型3类共23个设计模式。
《系统架构设计》实验指导书前言系统架构是一门实践性与综合性很强的课程,也是软件工程科学中一门前沿性课程。
本系统架构设计实验指导书主要是通过对系统架构的各个主要部分(包括操作系统,数据库,网络和安全四部分)进行介绍,使学生了解当前软件公司对高端技术人才的需求。
学生通过相关实验,了解系统架构的一些主要知识和环境。
同时也有助于学生理解系统架构所遇到的概念。
此外,本书还引导学生编写系统架构所涉及的主要知识的某些模块的模拟程序以加深对系统架构所研究内容的设计思想、典型算法和设计技巧的理解,并将这些思想、算法和技巧应用于自己所设计的程序中。
本实验指导书是为本专科学生学习系统架构上机而设计的。
本实验指导书中的每部分实验大概需要六个学时,即需要三次上机完成。
对于学时较少的,可以适当的选作一部分实验。
对于学时较多的,根据学生情况对某些实验的上机时间可以适当延长学时。
目录一、课程编号 (4)二、课程类型 (4)三、本课程的地位、作用与任务 (4)四、课程基本要求 (4)五、试验安排 (5)1、Java语言实验机器与环境 (5)(一)计算机的硬件配置 (5)(二)计算机的软件配置 (5)2、JDK1.6的安装和设置 (5)(一)下载JDK1.6 (5)(二)安装JDK1.6 (5)(三)配置环境变量 (9)(四)测试安装 (10)3、JDK开发工具简介 (10)4、Java程序开发步骤 (10)(一)编辑 (10)(二)编译 (11)(三)运行 (11)5、上机实验 (11)第一部分操作系统部分实验1:用JA V A模拟线程间的同步与互斥上部分 (11)实验2:用JA V A模拟线程间的同步与互斥下部分 (15)实验3:用JA V A模拟线程间的死锁 (23)实验4:用JA V A模拟操作系统的I/O操作 (26)第二部分数据库部分实验5:利用Oracle模拟常见的SQL常用操作上半部分 (28)实验6:利用Oracle模拟常见的SQL常用操作下半部分 (30)第三部分计算机网络部分实验7:用Java模拟网络节点的UDP通信 (32)实验8:用Java模拟网络节点的TCP通信上部分 (34)实验9:用Java模拟网络节点的TCP通信下部分 (38)第四部分系统开发部分实验10:软件开发工具ROSE上半部分实验 (42)实验11:软件开发工具ROSE上半部分实验 (48)实验12:用Rose画时序图 (54)六、教材 (60)七、成绩考核办法 (60)系统架构设计一、课程编号130289(本科)二、课程类型课程类型:任选课。
软件体系结构实验指导书(草稿)计算机系备注:本文大部分实验是以Java为开发语言,大家也可以使用C/C++、C#等其他主流开发语言练习。
实验的目的是体验软件结构、软件接口的设计,不限定开发语言。
软件体系结构实验指导书 (1)实验一经典软件体系结构风格(一) (1)实验目的 (1)实验内容 (1)1.管道-过滤器软件体系结构 (1)2.数据抽象和面向对象软件体系结构(体验继承结构) (2)思考与提高 (4)实验二经典软件体系结构风格(二) (5)实验目的 (5)实现内容 (5)1.基于事件的隐式调用风格 (5)2.层次软件体系结构 (6)实验三分布式软件体系结构风格 (13)实验目的 (13)实验内容 (13)C/S体系结构风格 (13)思考与提高 (14)实验四MVC风格 (15)实验目的 (15)实验内容 (15)MVC的应用和编程实现 (15)实验五软件结构设计的目标 (23)实验目的 (23)实验内容 (23)1.用Java语言实现一个计算器程序 (23)2.健壮性 (23)3.可维护性——基于面向对象技术的计算器程序 (24)4.基于简单工厂模式的计算器程序 (25)5.基于工厂方法模式的计算器程序 (27)实验六软件设计——面向对象方法 (29)实验目的 (29)实验内容 (29)1.问题域部分的设计——对多重继承的调整 (29)2.数据管理部分的设计 (30)实验七设计原则 (35)实验目的 (35)实验内容 (35)1.里氏代换原则 (35)2.合成/聚合复用原则 (35)3.依赖倒转原则 (36)4.迪米特法则 (37)5.接口隔离原则 (37)实验八设计模式 (38)实验目的 (38)实验内容 (38)1.单例模式 (38)2.观察者模式 (38)实验九C2模式 (40)实验目的 (40)实验内容 (40)1.连接件ActiveMQ (40)2.构件C2 Component (40)3.加法构件Add (49)实验十黑盒模型 (51)实验目的 (51)实验内容 (51)1.黑盒构件WorldMatrix (51)2.控制器构件 (51)3.知识源构件 (52)要求: (54)实验十一SOA模式 (55)实验目的 (55)实验内容 (55)实验一经典软件体系结构风格(一)实验目的(1)理解管道-过滤器软件体系结构、面向对象软件体系结构的原理(2)掌握管道-过滤器软件体系结构、面向对象软件体系结构的实例(3)管道-过滤器软件体系结构、面向对象软件体系结构的编程实现实验内容1.管道-过滤器软件体系结构(1)在dos提示符下输入下面的命令:dir | more使得当前目录列表在屏幕上逐屏显示。
dir的输出的是整个目录列表,它不出现在屏幕上而是由于符号“|”的规定,成为下一个命令more的输入,more命令则将其输入一屏一屏地显示,成为命令行的输出。
(2)Java I/O流中的管道流类PipedInputStream和PipedOutputStream可以方便地实现管道-过滤器体系结构,这两个类的实例对象要通过connect方法连接。
下面程序的功能是sender发送“Hello,receiver! I`m sender”给receiver,然后receiver 接受后显示出来并且在前面加上“the following is from sender”的信息。
管道流内部在实现时还有大量的对同步数据的处理,管道输出流和管道输入流执行时不能互相阻塞,所以一般要开启独立线程分别执行,顺便复习了多线程操作。
import java.io.*;import java.util.*;public class TestPiped{public static void main(String [] args){sender s = new sender();receiver r = new receiver();PipedOutputStream out = s.getOut();PipedInputStream in = r.getIn();try{in.connect(out);s.start();r.start();}catch(Exception e){e.printStackTrace();}}}class sender extends Thread {PipedOutputStream out = new PipedOutputStream();public PipedOutputStream getOut(){return out;}public void run() {String str = "Hello,receiver ! I`m sender\n";try {out.write(str.getBytes());out.close();} catch(Exception e) {e.printStackTrace();}}}class receiver extends Thread {PipedInputStream in = new PipedInputStream();public PipedInputStream getIn() {return in;}public void run(){byte [] buf = new byte[1024];try {int len = in.read(buf);System.out.println("the following is from sender:\n"+new String(buf,0,len));in.close();}catch(Exception e) {e.printStackTrace();}}}程序的执行结果:the following is from sender:Hello,receiver ! I`m sender2.数据抽象和面向对象软件体系结构(体验继承结构)有一个已知的二维坐标系,在坐标系中定义了若干种规则的图形:圆、正方形、矩形和椭圆。
使用Java语言进行面向对象的程序设计:(1)首先考虑数据封装性,(2)考虑继承性,(3)考虑抽象类。
abstract class Graph{protected double x,y; // x,y是规则图形的中心点坐标public Graph(double x,double y){ // 构造函数初始化中心点坐标this.x=x;this.y=y;}protected void changeX(double x){ // 修改横坐标this.x=x;}protected void changeY(double y){ // 修改纵坐标this.y=y;}public abstract double area(); // 计算面积的抽象方法,我会问这个问题}class MySquare extends Graph{private double length;public MySquare(double x,double y,double length){super(x,y);this.length=length;}protected void changLength(double length){ // 修改边长lengththis.length=length;}public double area(){return length*length;}}class MyCircle extends Graph{private double radius;public MyCircle(double x,double y,double radius){super(x,y);this.radius=radius;}protected void changRadius(double radius){ // 修改半径radius this.radius=radius;}public double area(){return 3.1416*radius*radius;}}class MyRectangle extends Graph{private double a,b;public MyRectangle(double x,double y,double a,double b){ super(x,y);this.a=a;this.b=b;}protected void changLength(double length){ // 修改长length a=length;}protected void changWidth(double width){ // 修改宽width b=width;}public double area(){return a*b;}}class MyEllipse extends Graph{private double a,b;public MyEllipse (double x,double y,double a,double b){super(x,y);this.a=a;this.b=b;}protected void changA(double a){ // 修改长轴athis.a=a;}protected void changB(double b){ // 修改短轴bthis.b=b;}public double area(){return 3.1416*a*b;}}public class Area{public static void main (String arg[]){MyCircle c=new MyCircle(1,1,3);MySquare s=new MySquare(2,2,4);MyRectangle r=new MyRectangle(12,9,1,2);MyEllipse e=new MyEllipse(2,-1,3,2);System.out.println("圆c的面积是"+c.area());System.out.println("正方形s的面积是"+s.area());System.out.println("矩形r的面积是"+r.area());System.out.println("椭圆e的面积是"+e.area());}}该程序的运行结果为:圆c的面积是28.2744正方形s的面积是16.0矩形r的面积是2.0椭圆e的面积是18.8496思考与提高1、管道-过滤器软件体系结构与批处理软件体系结构的区别和联系是什么?2、面向对象软件体系结构与主程序-子程序软件体系结构的区别和联系是什么?实验二经典软件体系结构风格(二)实验目的(1)理解基于事件的隐式调用软件体系结构、层次软件体系结构的原理(2)掌握事件的隐式调用软件体系结构、层次软件体系结构的实例(3)事件的隐式调用软件体系结构、层次软件体系结构的编程实现实现内容1.基于事件的隐式调用风格(Java是显式注册事件,对C/C++、C#感兴趣的同学,可做相应的程序即可)常用控制组件的事件——按钮与动作事件(ActionEvent),参见下例。