北京工业大学2008 – 2009学年
第二学期考试样题
考试课程: 软件体系结构 II 考试日期:2009 年 12 月 日 学 院: 软件学院 专 业: 软件工程 学 号: 姓名: 成绩:
一 填空题 (共 30 空, 每空 1 分)
1. 软件体系结构 (Software Architecture)-- 是软件产品设计的思想和系统的蓝图;是
对软件产品_______的规划和_______的设置;是定义软件系统组件 (Components)或构建块 (Building Blocks)的重要工具;
2. 软件产品的工业化生产 -- 是指建立流水线型的软件产品生产线,是指按__________、
___________ 的规范和规则(软件生产规范)来编写和实现各种各样的适应于多环境的软件组件(构件),通过一个开发架构模式,通过软件体系结构知道各个组件如何部署到开发架构模式中,组装成达到期望的软件产品。
3. 在软件设计过程中,数据封装就是将一组数据和与这组数据有关操作组装在一起,形成
一个实体,这实体的名称就是 ________________________
4. 一个现代软件产品生产过程如下图表示,请在代 ___________的方框中,填上相应的
组件名称
5. 软件体系结构描述一个软件产品的定义和组件(parts),包括
-- 定义系统 __________的集合
-- 通过__________, 描述系统的结构 -- Connectors & Interrelated Components -- 定义_____________责任的范围 -- A Boundary -- 描述组件的功能 -- A Purpose and Responsibility -- 算法 – Implementation Algorithm -- 数据的表示 – Data Representation -- Constrains
6. 软件体系结构的图形方法 -- 用各种各样的_________和_________等来表示软件体系
结构的方法称之为软件体系结构的图形方法
7. 软件体系结构组件间的连接方式如图表示,则图A的连接方式称为____________连接
体系结构;图B的连接方式称为基于______________连接体系结构
8. UML 将软件的体系结构分解为五个不同的侧面, 通过不同侧面的视图提供给不同相
关者的软件体系结构描述,这五个侧面分别是:___________视图, ____________视图,_________________视图,________________实现视图,_______________视图
9. MFC 框架定义 Windows 应用程序的轮廓,提供了用户接口的标准实现方法,程序
员所要做的就是通过预定义的接口把具体应用程序特有的东西填入这个轮廓。Microsoft Visual C++ 提供了相应的工具来完成这个工作:这些工具包括
_____________________ (可以用来生成初步的框架文件(代码和资源等)), _______________________(用于帮助直观地设计用户接口),
_______________________________(用来协助添加代码到框架文件)
10. MFC 的类层次结构如图表示,在____________处填入相应的 MFC 类名
11. 在 VC++ MFC 开发环境中, _____________是应用程序的“应用程序类”,负责初始化
和运行应用程序;__________________是应用程序的“框架类”,负责显示或搜寻用户命令;_________________是应用程序的文档类,负责装载和维护文档;____________________是应用程序视图类,负责为文档提供一个或多个视图
12. 在 Java 开发环境中,开发图形用户组件使用Swing, Swing的顶层容器包括
___________, ___________________, __________________________
13. Graphic User Interfaces ( 图形用户界面): 是用户与模型(业务)层他之间的一个接口,
表示层程序通过图形界面为用户提供便捷的操作基础, 使用户可以和模型或程序进行可视化交互:一般,图形界面包括________, ___________, ____________, ___________等元素
14. 软件体系结构设计风格 – 是指对软件组件间组织形式和组织机理风格的描述。通过考
虑在组件组织模式的各种形式变化,形成包括___________, ______________, _______, ____________, ___________________的软件体系结构风格。
15. 软件体系结构的评估与分析 – 是指通过对复杂应用系统软件体系结构设文档、设计过
程、代码、实现过程的评估与审查等手段来判断软件的____________,增强软件的质量;在真正的错误的设计导致真的灾难前__________,选择更好的结构或_________结构的设计。
二 判断题 (共 10 题, 每题 1 分, 正确在括号划√, 错误在括号划 X)
( ) 1. 数据流图是表示软件模型的一种图示方法,它描述数据在软件中流动和被处理
变换的过程。数据流图中基本的图形元素包括变换/加工、数据流、数据存储以及实体 ( ) 2. 软件体系结构只是一种表示,它不是可运行的软件
( ) 3. 面向对象软件开发的生命周期分为三个阶段,即面向对象分析 (OOA),面向 对象设计 (OOD)和面向对象程序设计 (OOP)
( ) 4. 用面向对象方法构造软件系统体系结构时,其最基本单位是函数
( ) 5. 软件体系结构风格和模式可以被应用到其他系统的设计中 ( ) 6. 软件体系结构包含软件组件、这些组件的对外可见的性质以及它们之间的关系 ( ) 7. 软件体系结构中不应包含中间件
( ) 9. 软件用户界面应具备的特性中包括控制复杂性、 独特性、 可靠性、 灵活性 ( ) 10. 软件体系结构描述表示方法包括形式化和非形式化的描述方法,UML是
非形式化描述方法,ADL是形式化描述方法。
三 简答题 (共 4 题,每题 5 分)
1. 什么是软件体系结构,描述软件体系结构的主要内容及组织?
2. 描述在 MFC VC++,或 Java 开发环境下,开发图形界面的组织结构
3. 描述软件体系结构分析和评估的概念和意义
4. 描述什么是分别式应用程序和体系结构的概念及优点
四 体系结构设计和程序阅读题: (20分, 共 5 题,每题 4 分)
1. 使用图形描述语言,描述 VC++ MFC 开发环境下,开发基于 Dialog 模式应用程序的
基本架构
2. 使用图形描述语言,描述在VC++ MFC 开发环境或 Java开发环境下,开
发基于 MVC 模式应用程序的基本架构
3. 已知一个应用系统的软件体系结构如下图表示,类 Exam_App 为Java的组装线
程序,类 Exam_Frame 为顶层容器,类 Display为表示界面,类Model 为模型组件,写出以下Java 程序的运行结果
class Exam_App {
public static void main() { new Exam_Frame(); } }
class Exam_Frame extends JFrame { Container contentPane; Display display;
Model model;
Exam_Frame() {
contentPane = this.getContentPane(); display = new Display();
model = new Model(display); setSize(1024,768); setVisible(true); } }
class Display {
BufferedImage buffer = null; …
Display() {
buffer = new BufferedImage(1024,768, BufferedImage.TRANSLUCENT); }
public void paintComponent(Graphics g) { g.drawImage(buffer,0,0, null); } … }
class Model {
BufferedImage image; Graphics g;
Display panel = null;
Model( Display pane) {
this.panel = pane; g = panel.buffer.getGraphics();
g.drawString(10, 10, “This is Test of Software Architecture!”); g.drawString(50, 10, “I will Success!!”); } ….. }
运行以上程序, 结果为
4. 已知一个基于VC++ MFC 环境 Dialog 模式应用程序体系结构表示如下,
其中,组装线类 Exam_App 用于组装图形表示界面类 Exam_Dlg,图形表示界面类 Exam_Dlg 通过函数 Model_Display用于调用类 Model
#include class Exam_App : CWinApp { public:
virtual BOOL InitInstance(); };
Exam_App app; class Exam_Dlg: CDialog { Public:
Model *model; public:
void OnInitDialog(); void Model_Display(); };
class Model { public: Model();
String model_data(); };
请完成从类 Exam_Dlg 中Model_Display 调用类 Model 函数String model_data() 的代码
void Exam_App::OnInitDialog()
{
// 完成指向Model 的指针 }
void Exam_App::Model_Display() {
// 完成调用类 Model 函数String model_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,实现上述管道与过滤风格的软件体系结构
2. (10分) 在 VC++ MFC 开发环境 或 在 Java JDK 1.5 的开发环境下,设计一个
软件应用系统的软件体系结构,完成下述的任务 (3) 能完成 n (n>1 整数) 个实数的求和; (4) 能完成 n (n>1 整数) 个实数的求积; (5) 能完成一个整数 n(n>1)阶乘的计算;
(6) 能完成n (n>1 整数) 个实数的冒泡排序; (7) 能完成n (n>1 整数) 个实数的插入排序;
设计上述要求的软件体系结构,要求如下:
(1) 系统的体系结构应该有表示层,即图形界面 (GUIs)层 -- 用于与用户的数据
交互;模型层 – 用于完成上述任务的计算任务;控制层 – 用于模型层与表示层的交互控制; 组装线 – 用于组装各个组件成为应用系统。请用图形描述方法,设计系统的软件体系结构 (组件集合及其部属)
(2) 用CRC 卡描述组装线,图形界面组件和模型组件
(3) 编写VC++ MFC 或 Java 的程序代码完成组装线 CRC 卡,图形用户界面
CRC卡,模型组件 CRC 卡的实现
北京工业大学2008 – 2009学年
第二学期考试样题
考试课程: 软件体系结构 II 考试日期:2009 年 12 月 日 学 院: 软件学院 专 业: 软件工程 学 号: 姓名: 成绩:
一 填空题 (共 30 空, 每空 1 分)
1. 软件体系结构 (Software Architecture)-- 是软件产品设计的思想和系统的蓝图;是
对软件产品_______的规划和_______的设置;是定义软件系统组件 (Components)或构建块 (Building Blocks)的重要工具;
2. 软件产品的工业化生产 -- 是指建立流水线型的软件产品生产线,是指按__________、
___________ 的规范和规则(软件生产规范)来编写和实现各种各样的适应于多环境的软件组件(构件),通过一个开发架构模式,通过软件体系结构知道各个组件如何部署到开发架构模式中,组装成达到期望的软件产品。
3. 在软件设计过程中,数据封装就是将一组数据和与这组数据有关操作组装在一起,形成
一个实体,这实体的名称就是 ________________________
4. 一个现代软件产品生产过程如下图表示,请在代 ___________的方框中,填上相应的
组件名称
5. 软件体系结构描述一个软件产品的定义和组件(parts),包括
-- 定义系统 __________的集合
-- 通过__________, 描述系统的结构 -- Connectors & Interrelated Components -- 定义_____________责任的范围 -- A Boundary -- 描述组件的功能 -- A Purpose and Responsibility -- 算法 – Implementation Algorithm -- 数据的表示 – Data Representation -- Constrains
6. 软件体系结构的图形方法 -- 用各种各样的_________和_________等来表示软件体系
结构的方法称之为软件体系结构的图形方法
7. 软件体系结构组件间的连接方式如图表示,则图A的连接方式称为____________连接
体系结构;图B的连接方式称为基于______________连接体系结构
8. UML 将软件的体系结构分解为五个不同的侧面, 通过不同侧面的视图提供给不同相
关者的软件体系结构描述,这五个侧面分别是:___________视图, ____________视图,_________________视图,________________实现视图,_______________视图
9. MFC 框架定义 Windows 应用程序的轮廓,提供了用户接口的标准实现方法,程序
员所要做的就是通过预定义的接口把具体应用程序特有的东西填入这个轮廓。Microsoft Visual C++ 提供了相应的工具来完成这个工作:这些工具包括
_____________________ (可以用来生成初步的框架文件(代码和资源等)), _______________________(用于帮助直观地设计用户接口),
_______________________________(用来协助添加代码到框架文件)
10. MFC 的类层次结构如图表示,在____________处填入相应的 MFC 类名
11. 在 VC++ MFC 开发环境中, _____________是应用程序的“应用程序类”,负责初始化
和运行应用程序;__________________是应用程序的“框架类”,负责显示或搜寻用户命令;_________________是应用程序的文档类,负责装载和维护文档;____________________是应用程序视图类,负责为文档提供一个或多个视图
12. 在 Java 开发环境中,开发图形用户组件使用Swing, Swing的顶层容器包括
___________, ___________________, __________________________
13. Graphic User Interfaces ( 图形用户界面): 是用户与模型(业务)层他之间的一个接口,
表示层程序通过图形界面为用户提供便捷的操作基础, 使用户可以和模型或程序进行可视化交互:一般,图形界面包括________, ___________, ____________, ___________等元素
14. 软件体系结构设计风格 – 是指对软件组件间组织形式和组织机理风格的描述。通过考
虑在组件组织模式的各种形式变化,形成包括___________, ______________, _______, ____________, ___________________的软件体系结构风格。
15. 软件体系结构的评估与分析 – 是指通过对复杂应用系统软件体系结构设文档、设计过
程、代码、实现过程的评估与审查等手段来判断软件的____________,增强软件的质量;在真正的错误的设计导致真的灾难前__________,选择更好的结构或_________结构的设计。
二 判断题 (共 10 题, 每题 1 分, 正确在括号划√, 错误在括号划 X)
( ) 1. 数据流图是表示软件模型的一种图示方法,它描述数据在软件中流动和被处理
变换的过程。数据流图中基本的图形元素包括变换/加工、数据流、数据存储以及实体 ( ) 2. 软件体系结构只是一种表示,它不是可运行的软件
( ) 3. 面向对象软件开发的生命周期分为三个阶段,即面向对象分析 (OOA),面向 对象设计 (OOD)和面向对象程序设计 (OOP)
( ) 4. 用面向对象方法构造软件系统体系结构时,其最基本单位是函数
( ) 5. 软件体系结构风格和模式可以被应用到其他系统的设计中 ( ) 6. 软件体系结构包含软件组件、这些组件的对外可见的性质以及它们之间的关系 ( ) 7. 软件体系结构中不应包含中间件
( ) 9. 软件用户界面应具备的特性中包括控制复杂性、 独特性、 可靠性、 灵活性 ( ) 10. 软件体系结构描述表示方法包括形式化和非形式化的描述方法,UML是
非形式化描述方法,ADL是形式化描述方法。
三 简答题 (共 4 题,每题 5 分)
1. 什么是软件体系结构,描述软件体系结构的主要内容及组织?
2. 描述在 MFC VC++,或 Java 开发环境下,开发图形界面的组织结构
3. 描述软件体系结构分析和评估的概念和意义
4. 描述什么是分别式应用程序和体系结构的概念及优点
四 体系结构设计和程序阅读题: (20分, 共 5 题,每题 4 分)
1. 使用图形描述语言,描述 VC++ MFC 开发环境下,开发基于 Dialog 模式应用程序的
基本架构
2. 使用图形描述语言,描述在VC++ MFC 开发环境或 Java开发环境下,开
发基于 MVC 模式应用程序的基本架构
3. 已知一个应用系统的软件体系结构如下图表示,类 Exam_App 为Java的组装线
程序,类 Exam_Frame 为顶层容器,类 Display为表示界面,类Model 为模型组件,写出以下Java 程序的运行结果
class Exam_App {
public static void main() { new Exam_Frame(); } }
class Exam_Frame extends JFrame { Container contentPane; Display display;
Model model;
Exam_Frame() {
contentPane = this.getContentPane(); display = new Display();
model = new Model(display); setSize(1024,768); setVisible(true); } }
class Display {
BufferedImage buffer = null; …
Display() {
buffer = new BufferedImage(1024,768, BufferedImage.TRANSLUCENT); }
public void paintComponent(Graphics g) { g.drawImage(buffer,0,0, null); } … }
class Model {
BufferedImage image; Graphics g;
Display panel = null;
Model( Display pane) {
this.panel = pane; g = panel.buffer.getGraphics();
g.drawString(10, 10, “This is Test of Software Architecture!”); g.drawString(50, 10, “I will Success!!”); } ….. }
运行以上程序, 结果为
4. 已知一个基于VC++ MFC 环境 Dialog 模式应用程序体系结构表示如下,
其中,组装线类 Exam_App 用于组装图形表示界面类 Exam_Dlg,图形表示界面类 Exam_Dlg 通过函数 Model_Display用于调用类 Model
#include class Exam_App : CWinApp { public:
virtual BOOL InitInstance(); };
Exam_App app; class Exam_Dlg: CDialog { Public:
Model *model; public:
void OnInitDialog(); void Model_Display(); };
class Model { public: Model();
String model_data(); };
请完成从类 Exam_Dlg 中Model_Display 调用类 Model 函数String model_data() 的代码
void Exam_App::OnInitDialog()
{
// 完成指向Model 的指针 }
void Exam_App::Model_Display() {
// 完成调用类 Model 函数String model_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,实现上述管道与过滤风格的软件体系结构
2. (10分) 在 VC++ MFC 开发环境 或 在 Java JDK 1.5 的开发环境下,设计一个
软件应用系统的软件体系结构,完成下述的任务 (3) 能完成 n (n>1 整数) 个实数的求和; (4) 能完成 n (n>1 整数) 个实数的求积; (5) 能完成一个整数 n(n>1)阶乘的计算;
(6) 能完成n (n>1 整数) 个实数的冒泡排序; (7) 能完成n (n>1 整数) 个实数的插入排序;
设计上述要求的软件体系结构,要求如下:
(1) 系统的体系结构应该有表示层,即图形界面 (GUIs)层 -- 用于与用户的数据
交互;模型层 – 用于完成上述任务的计算任务;控制层 – 用于模型层与表示层的交互控制; 组装线 – 用于组装各个组件成为应用系统。请用图形描述方法,设计系统的软件体系结构 (组件集合及其部属)
(2) 用CRC 卡描述组装线,图形界面组件和模型组件
(3) 编写VC++ MFC 或 Java 的程序代码完成组装线 CRC 卡,图形用户界面
CRC卡,模型组件 CRC 卡的实现