软件设计与体系结构实验指导书

from 2009-03-02 to 2022-03-15 mr.liu

目录

基本要求

1、实验背景,备选小软件项目

部分实验基于具体项目展开,请使用以下小项目或其他合适的小项目进行,不得与教材或实验指导书中的图雷同。
1、课堂签到系统
2、在线考试系统
3、图书管理(借还书管理)系统
4、选课子系统
5、成绩管理子系统
6、在线书店系统
7、小型人力资源管理系统
8、其他合适的小系统

2、需完成的实验、上交实验报告的实验

所有实验项目,每次一个实验项目。

3、提交实验报告

交电子稿,提交到网站: 10.1.5.7/lab/,提交内容:
(1) 图片:实验成果界面、或运行界面截图。
(2) 附件:模型文件和代码的打包文件(若没有,则写个500字以内的总结文档打包)。
若代码使用 VS 实现,打包前请删除 *.sdf 文件和 Debug Relase ipsh x64 .vs 等调试相关文件夹。

实验[A1] UML 入门

一、实验内容

1. 通过网络,了解 ENIAC 和 ABC,了解计算机软硬件技术发展的差异
2. 通过网络,了解 UML 发展历史,下载 UML 标准规范
3. 了解有哪些主流的软件建模工具
4. 阅读《人月神话》中的:人月神话、巴比伦塔、没有银弹、再论没有银弹

实验[A2] 学习OO特性与RUP、UML规范

一、实验内容

1. 复习面向对象编程的特性,重现课堂演示的示例
Example: Animal, Cat, Dog
2. 学习 RUP、UML 规范 2.51 版以及 1.42 版
3. 语音功能选做,不做要求。相关附件链接: 语音组件和已封装的代码 以及 使用示例,在 vs2019 和 vs2010 中可以直接使用 SpeechEx 的代码,在 vs6.0 中需要配置,其他版本没有测试。
类图
注1:若程序一闪而过,在 main() 函数的 return 前加 cin.get(); 。
注2:打包整个解决方案代码前,把 *.sdf 文件和 Debug Release ipch 等文件夹删除。

实验[A3] Rose(or RSA EA)的使用入门

一、实验内容

1. 学习Rose 2003 (or RSA EA)的安装与基本使用方法
2. 学会使用双向工程 (实例演示)

二、实验原理或算法

相关概念

1、正向工程: 设计 ==> 产品
2、逆向工程: 设计 <== 产品 如: 对保密技术的破解
3、双向工程: 设计 <=> 产品

软件过程的双向工程

1、过程: 1 需求(模型) <=> 2 设计(模型) <=> 3 实现(代码)
2、原理: 基于组件,实现2 类图3 代码间的双向工程

三、实验步骤

Rose + VC6 双向工程[不做]

1、新建空的VC项目
工作区、项目、文件
2、新建Rose模型文件
2.1、新建类图(含有若干个类)
2.2、新建组件图(新建组件,设为VC++,关联类,设置属性)
3、关联Rose模型组件和VC项目
4、更新代码/更新模型

Rose + VS2010/VS2019/* 双向工程

1、新建空的C++项目
解决方案、项目、文件
2、新建Rose模型文件
2.1、新建类图(含有若干个类)
2.2、新建组件图(新建组件,设为ANSI C++,关联类,设置属性)
3、关联Rose模型组件和目录(文件夹)
4、更新代码/更新模型
类图
组件图

实验[04] 用例图

一、实验目的

1.熟悉Rational Rose 进行建模的一些基本操作;
2.学会使用Use Case视图与Use Case 框图;
3.学习使用Use Case、角色与关系;

二、实验主要设备及使用要求

按操作计算机的要求使用好计算机设备。

三、实验原理或算法

1.在浏览器中增加Use Case 框图;
2.在新建的Use Case 框图中增加角色;
3.建模用例的事件流;
4.增加文件。

四、实验步骤

选择一个合适的软件项目,使用用例图进行需求分析。备选项目见基本要求。
实验步骤(参考):
1、业务建模(定义系统)
2、确定边界
3、找出参与者
4、定义用例
5、绘制用例图、整理关系
6、编写用例规约(至少写2个典型业务的用例的规约,不能是注册、登录等通用用例的规约)

实验[05] 类图中关系的设计

一、实验内容

重现课堂的实例演示,如图所示。
类图
1、定义类型
Person、Man、Woman
2、定义关系
泛化关系
关联关系(父子关系、夫妻关系)
3、正向工程
生成C++代码
4、业务实现
修改模型和代码:
适当的修改属性与操作,增加获取爷爷年龄的方法和奶奶年龄的方法,并实现之。
5、测试
实例化对象(张三的一家:张三、张四、张五、李花),并测试。

注意

实现 int Man::GetGrandmaAge() 时,要: (1 Man.cpp) #include"Woman.h" (2 Person.h) public: int age;

二、提交的内容

1、类图、对象图和程序运行结果一起截图
2、模型文件(含类图对象图)和 C++ 代码 打包

实验[06] 类图(改为单身模式和适配器模式的实现)

一、实验目的

1.掌握如何创建类;
2.学习如何为类指定版型;
3.掌握定义类的职责;
4.学习分析类的职责;
5.分析类与包的关系。

二、实验主要设备及使用要求

按操作计算机的要求使用好计算机设备。

三、实验原理或算法

1.在逻辑视图中创建类;
2.为创建的类指定相应的类版型;
3.定义类的职责;
4.使用类与包

四、实验步骤

实验步骤(参考):
1、确定系统架构、分层分块
2、定义接口
3、定义类(属性与操作)
(2 - 3) 使用词汇分析法、GOF设计模式、基本设计原则
4、定义联系
5、绘制类图

实验[07] 交互图

一、实验目的

1.理解交互图的基本知识;
2.了解对象与类的概念;
3.学习交互图的创建。

二、实验主要设备及使用要求

按操作计算机的要求使用好计算机设备。

三、实验原理或算法

1.在浏览器中新建序列图;
2.在新建的序列图中增加角色;
3.建模用例的事件流。

四、实验步骤

实验步骤(参考):
针对每一具体业务处理过程/用例,(至少描述2个业务处理过程/用例)// 定义 用例图
1、找到或定义出相关的参与者、类。// 定义 类图
2、职责分工,明确个对象的责任。 // 定义 类的功能(类的操作、对象的消息)
3、设定协作调用关系。// 定义 交互过程
4、设计交互过程,使用 Rose 2003,完成序列图,并将序列图生成对应的协作图。

可模仿 UML/00 《UML建模技术》/MDL 中的 07-2 选课交互.mdl

实验[08] 状态模式的应用

一、实验内容

参照下图,完成读者借还书业务以及状态控制的实现。
:如果要显示状态变化过程,请添加橙色的Name():string方法并实现。
状态图
类图1
类图2

实验[09] 状态图与活动图

一、实验目的

1.掌握如何创建活动图;
2.掌握在活动图加入活动、开始与结束状态、决策、保护条件等;
3.掌握如何创建Statechart图;
4.学习Statechart图中对象可以存在不同的状态信息,掌握对象如何从一种状态过渡到另一种状态,以及对象在不同状态中的行为。

二、实验主要设备及使用要求

按操作计算机的要求使用好计算机设备。

三、实验原理或算法

1.根据文档描述创建活动图;
2.运行活动图;
3.掌握在State图中加入活动、加入操作、退出操作、事件和状态历史加进状态中;
4.掌握如何将事件、变元、保证条件、操作加进State图的过渡中。

四、实验步骤

实验步骤(参考):
1、选择一个适当的类,使用状态图描述其状态的变化方式。
2、选择一个小型项目,使用活动图进行系统行为的说明。(最好与类图、状态图结合)

可模仿 UML/00 《UML建模技术》/MDL 中的 10-0 模型 中的 document 包。

实验[10] 数据库建模

一、实验目的

1.掌握如何创建数据库对象;
2.学习为关系数据库创建模式;
3.掌握创建域包;
4.学习创建数据模型图;
5.学习创建表;
6.实现对象模型和数据模型的相互转换。

二、实验主要设备及使用要求

按操作计算机的要求使用好计算机设备。

三、实验原理或算法

1.在 Component 视图中创建数据库组件;
2.在 Logical 视图中创建模式,并选定目标数据库;
3.在 Logical 视图中创建包和域;
4.在模式下创建数据模型图;
5.创建表;
6.实现对象模型和数据模型的相互转换。
主要概念:
数据库组件 ------ 1 对象模型 <=> 2 数据模型 <=> 3 物理数据库

四、实验步骤

参考UML实验指导书.doc中的实验六,对选定的项目进行数据库设计。 下载UML实验指导书
1、用 Rose 进行数据设计
2、执行数据库的正向工程
3、执行数据库的逆向工程

实验[11] 构件图和部署图

一、实验目的

1.掌握如何创建构件图和部署图;
2.掌握如何在构件图中增加组件等;
3.掌握如何在部署图中添加处理器、设备等。

二、实验主要设备及使用要求

按操作计算机的要求使用好计算机设备。

三、实验原理或算法

1.创建所选定项目的Component框图;
2.创建所选定项目的Deployment框图。

四、实验步骤

实验步骤略(参考实验指导书,对选定的项目进行构件图和部署图的设计)。