第1页共10页北京工业大学2008–2009学年第二学期考试样题考试课程:软件体系结构II考试日期:2009年12月日学院:软件学院专业:软件工程学号:姓名:成绩:题号一二三四五六七八九十总分成绩阅卷教师………………………………………………………………………………………………………一填空题(共30空,每空1分)1.软件体系结构(SoftwareArchitecture)--是软件产品设计的思想和系统的蓝图;是对软件产品_______的规划和_______的设置;是定义软件系统组件(Components)或构建块(BuildingBlocks)的重要工具;2.软件产品的工业化生产--是指建立流水线型的软件产品生产线,是指按__________、___________的规范和规则(软件生产规范)来编写和实现各种各样的适应于多环境的软件组件(构件),通过一个开发架构模式,通过软件体系结构知道各个组件如何部署到开发架构模式中,组装成达到期望的软件产品。3.在软件设计过程中,数据封装就是将一组数据和与这组数据有关操作组装在一起,形成一个实体,这实体的名称就是________________________4.一个现代软件产品生产过程如下图表示,请在代___________的方框中,填上相应的组件名称第2页共10页5.软件体系结构描述一个软件产品的定义和组件(parts),包括--定义系统__________的集合--通过__________,描述系统的结构--Connectors&InterrelatedComponents--定义_____________责任的范围--ABoundary--描述组件的功能--APurposeandResponsibility--算法–ImplementationAlgorithm--数据的表示–DataRepresentation--Constrains6.软件体系结构的图形方法--用各种各样的_________和_________等来表示软件体系结构的方法称之为软件体系结构的图形方法7.软件体系结构组件间的连接方式如图表示,则图A的连接方式称为____________连接体系结构;图B的连接方式称为基于______________连接体系结构AACCBBMMeeddiiaattoorrXXAACCBBXXAACCBBMMeeddiiaattoorr图A图B软件构件库(ComponentLibrary)软件构架(SoftwareFramework)软件工厂___________________________软件组装线(AssemblingLine)软件产品系统组件第三方组件开发组件第3页共10页8.UML将软件的体系结构分解为五个不同的侧面,通过不同侧面的视图提供给不同相关者的软件体系结构描述,这五个侧面分别是:___________视图,____________视图,_________________视图,________________实现视图,_______________视图9.MFC框架定义Windows应用程序的轮廓,提供了用户接口的标准实现方法,程序员所要做的就是通过预定义的接口把具体应用程序特有的东西填入这个轮廓。MicrosoftVisualC++提供了相应的工具来完成这个工作:这些工具包括_____________________(可以用来生成初步的框架文件(代码和资源等)),_______________________(用于帮助直观地设计用户接口),_______________________________(用来协助添加代码到框架文件)10.MFC的类层次结构如图表示,在____________处填入相应的MFC类名11.在VC++MFC开发环境中,_____________是应用程序的“应用程序类”,负责初始化和运行应用程序;__________________是应用程序的“框架类”,负责显示或搜寻用户命令;_________________是应用程序的文档类,负责装载和维护文档;____________________是应用程序视图类,负责为文档提供一个或多个视图12.在Java开发环境中,开发图形用户组件使用Swing,Swing的顶层容器包括___________,___________________,__________________________CObjectCCmdTargetCWinThreadCDocumentCWndCWinApp____________________________________________________________________________________第4页共10页13.GraphicUserInterfaces(图形用户界面):是用户与模型(业务)层他之间的一个接口,表示层程序通过图形界面为用户提供便捷的操作基础,使用户可以和模型或程序进行可视化交互:一般,图形界面包括________,___________,____________,___________等元素14.软件体系结构设计风格–是指对软件组件间组织形式和组织机理风格的描述。通过考虑在组件组织模式的各种形式变化,形成包括___________,______________,_______,____________,___________________的软件体系结构风格。15.软件体系结构的评估与分析–是指通过对复杂应用系统软件体系结构设文档、设计过程、代码、实现过程的评估与审查等手段来判断软件的____________,增强软件的质量;在真正的错误的设计导致真的灾难前__________,选择更好的结构或_________结构的设计。二判断题(共10题,每题1分,正确在括号划√,错误在括号划X)()1.数据流图是表示软件模型的一种图示方法,它描述数据在软件中流动和被处理变换的过程。数据流图中基本的图形元素包括变换/加工、数据流、数据存储以及实体()2.软件体系结构只是一种表示,它不是可运行的软件()3.面向对象软件开发的生命周期分为三个阶段,即面向对象分析(OOA),面向对象设计(OOD)和面向对象程序设计(OOP)()4.用面向对象方法构造软件系统体系结构时,其最基本单位是函数()5.软件体系结构风格和模式可以被应用到其他系统的设计中()6.软件体系结构包含软件组件、这些组件的对外可见的性质以及它们之间的关系()7.软件体系结构中不应包含中间件()9.软件用户界面应具备的特性中包括控制复杂性、独特性、可靠性、灵活性()10.软件体系结构描述表示方法包括形式化和非形式化的描述方法,UML是非形式化描述方法,ADL是形式化描述方法。三简答题(共4题,每题5分)1.什么是软件体系结构,描述软件体系结构的主要内容及组织?2.描述在MFCVC++,或Java开发环境下,开发图形界面的组织结构第5页共10页3.描述软件体系结构分析和评估的概念和意义4.描述什么是分别式应用程序和体系结构的概念及优点四体系结构设计和程序阅读题:(20分,共5题,每题4分)1.使用图形描述语言,描述VC++MFC开发环境下,开发基于Dialog模式应用程序的基本架构2.使用图形描述语言,描述在VC++MFC开发环境或Java开发环境下,开发基于MVC模式应用程序的基本架构第6页共10页3.已知一个应用系统的软件体系结构如下图表示,类Exam_App为Java的组装线程序,类Exam_Frame为顶层容器,类Display为表示界面,类Model为模型组件,写出以下Java程序的运行结果classExam_App{publicstaticvoidmain(){newExam_Frame();}}classExam_FrameextendsJFrame{ContainercontentPane;Displaydisplay;顶层容器(JFrame)组装线(主干程序)表示层(JPanel)Display类模型层Model类第7页共10页Modelmodel;Exam_Frame(){contentPane=this.getContentPane();display=newDisplay();model=newModel(display);setSize(1024,768);setVisible(true);}}classDisplay{BufferedImagebuffer=null;…Display(){buffer=newBufferedImage(1024,768,BufferedImage.TRANSLUCENT);}publicvoidpaintComponent(Graphicsg){g.drawImage(buffer,0,0,null);}…}classModel{BufferedImageimage;Graphicsg;Displaypanel=null;Model(Displaypane){this.panel=pane;g=panel.buffer.getGraphics();g.drawString(10,10,“ThisisTestofSoftwareArchitecture!”);g.drawString(50,10,“IwillSuccess!!”);}…..}运行以上程序,结果为4.已知一个基于VC++MFC环境Dialog模式应用程序体系结构表示如下,第8页共10页其中,组装线类Exam_App用于组装图形表示界面类Exam_Dlg,图形表示界面类Exam_Dlg通过函数Model_Display用于调用类Model#includeafxwin.hclassExam_App:CWinApp{public:virtualBOOLInitInstance();};Exam_Appapp;classExam_Dlg:CDialog{Public:Model*model;public:voidOnInitDialog();voidModel_Display();};classModel{public:Model();Stringmodel_data();};请完成从类Exam_Dlg中Model_Display调用类Model函数Stringmodel_data()的代码voidExam_App::OnInitDialog()组装线(CWinApp)Exam_App图形表示界面(CDialog)Exam_Dlg模型Model第9页共10页{//完成指向Model的指针}voidExam_App::Model_Display(){//完成调用类Model函数Stringmodel_data()}五综合设计题(20分,每题10分)1.(10分)一个管道与过滤风格的软件体系结构如下图表示,其中A::A_Fun,B::B_Fun,C::C_Fun,D::D_Fun,E::E_Fun,F::F_Fun,G::G_Fun分别表示组件A,B,C,D,E,F,G的功能(输入/输出均为字符串)(1)使用VC++MFC或Java语言用代码实现组件A,B,C,D,E,F,G(面向对象的方法)(2)使用VC++MFC或Java,设计一个组装线,组装组件A,B,C,D,E,F,G,实现上述管道与过滤风格的软件体系结构SA::A_Fun()B::B_Fun()C::C_Fun()D::D_Fun()E::E_Fun()F::F_Fun()G::G_FunOO第10页共10页2.(10分)在VC++MFC开发环境或在JavaJDK1.5的开发环境下,设计一个软件应用系统的软件体系结构,完成下述的任务(3)能完成n(n1整数)个实数的求和;(4)能完成n(n1整数)个实数的求积;(5)能完成一个整数n(n1)阶乘的计算;(6)能完成n(n1整数)个实数的冒泡排序;(7)能完成n(n1整数)个实数的插入排序;设计上述要求的软件体系结构,要求如下:(1)