博客班级 | AHPU软件工程 |
---|---|
作业要求 | 实验三 面向对象分析与设计 |
作业目标 | 了解基于UML的面向对象分析与设计方法,以及各种状态图的绘制 |
学号 | 3180701211 |
一.实验目的
1、了解基于UML的面向对象分析与设计方法
2、掌握用例图的绘制、用例规约(文档)的编制
3、掌握类图、活动图、状态图、时序图的绘制方法
二、实验内容
1、参照实验指导书完成在线选课系统、或试卷自动生成系统,或人事信息管理系统的用例图、类图、活动图、状态图、时序图等的绘制
【实例1】在线选课系统
- 大学教师选择本学期要教授的课程,每位教师最多只能上报 4 门课程。
- 教师选课结束后,教务管理人员进行协调和确认教师的课程,并创建本学期的课程目录表,向学生公布。
- 学生填写课程选修表,每个学生最多选修 4 门课程;每门选修课程的学生数最多为 10 人,最少为 3 人。人数达到 10 人时,停止学生登记注册此门课程;
- 学生选课结束后,系统自动取消人数少于三人的课程。
- 学生按最终的课程表到财务处办理收费手续(billing system)。
- 教师可查询所教课程的学生花名册(roster)。
- 教务管理人员维护学生、教师和课程的信息。
【实例2】试卷自动生成系统 - 教师根据教学资料录入试题,并对其进行分类。待需要考试时,设置好一定的条件,系统就从题库中选中试题自动生成考试试卷
- 考试试卷生成系统的成卷模式应用智能出卷(由系统随机选题)和手工出卷(教师自己选择题目)两种组卷方式
【实例3】人事信息管理系统
参考:阿里巴巴钉钉智能人事系统
2、完成对教材订购系统,或飞机订票系统(根据自己的选题)面向对象的建模
三、实验步骤
1、熟悉Rational rose的绘图方法,阅读实验指导《使用 Rational Rose 进行 UML 可视化建模》,以及实验指导书实验十一与实验十二
2、使用 Rational rose 完成在线选课系统、或试卷自动生成系统,或人事信息管理系统等的用例图、类图的绘制
3、使用 Rational rose 完成在线选课系统、或试卷自动生成系统,或人事信息管理系统等的活动图、状态图、时序图等的绘制
4、使用教材中用例描述模版描述在线选课系统的 Register for course 用例或试卷自动生成系统的自动组卷用例,或人事信息管理系统等中的某个用例
5、为教材订购系统,或飞机订票系统等(根据自己的选题)绘制用例图,并分析某个用例为其绘制类图、时序图、活动图等
四、实验结果
1.用例图(Use Case View)的建模
1.《在线选修课程管理系统》中的执行者(Actors)
注册选修课程的学生;
教授选修课程的教师;
教务管理人员必须汇总选修课程情况,制作课程表;
教务管理人员必须维护关于课程、教师和学生的所有信息;
财务管理系统从本系统中取出收费信息。
2.使用Rational Rose创建执行者(Actors)
- 右击 browser 框中的 Use Case View 包,弹出快捷菜单;
- 选择 New——Actor 项;
- 输入执行者的名字;(如出错,可用 Rename 命令更改)
- 如果文档窗口不可见,选择屏幕上方的 View——Documentation 菜单;
- 在 browser 框中选中所需执行者;
- 将光标置于文档框中,输入相应文档。
3.《在线选修课程管理系统》中的用例(Use Case)
注册选修课程(学生);
选择教授的选修课程(教师);
索取课程花名册(Roster)(教师);
维护课程信息(教务管理人员);
维护教师信息(教务管理人员);
维护学生信息(教务管理人员);
创建课程目录(教务管理人员);
4.使用 Rational Rose 创建用例(Use Case)
- 右击 browser 框中的 Use Case View 包,弹出快捷菜单;
- 选择 New——Use Case 项;
- 输入用例的名字;(如出错,可用 Rename 命令更改)
- 如果文档窗口不可见,选择屏幕上方的 View—— Documentation 菜单;
- 在 browser 框中选中所需用例;
- 将光标置于文档框中,输入相应文档。
5.使用 Rational Rose 创建主用例图(Main Use Case Diagram)
- 双击 browser 框中的 Use Case View 包中的 Main 条目,打开主用例图;
- 单击选中 browser 框中的执行者,并将其拖到主用例图中;
- 重复第 2)步,直到完成所需的工作为止;
- 单击选中 browser 框中的用例,并将其拖到主用例图中;
- 重复第 4)步,直到完成所需的工作为止;
- 在工具条中选择单向关联(Unidirectional Association)图标;
- 单击一个执行者,并拖到相应的用例上;或单击一个用例,并拖到相应的
执行者上。
2.活动图(Activity Diagram)的建模(以建立选修课程目录表为例)
1.使用 Rational Rose 创建活动图(Activity Diagram)
- 右击 browser 框中的 Use Case View 包,弹出快捷菜单;
- 选择 New——Activity Diagram 项;
- 输入活动图的名字;(如出错,可用 Rename 命令更改)
- 双击 browser 框中的 Activity Diagram 名称,打开该图。
2.使用 Rational Rose 创建活动(Activity)
- 在工具条中选择 Activity 图标;
- 在活动图(Activity Diagram)中单击要放置活动(Activity)的位置;
- 输入活动名字;(如出错,可用 Rename 命令更改)
- 在工具条中选择 State Transition 图标;
- 单击一个活动,并将其拖到相应的活动上。
3.使用 Rational Rose 创建决策点(Decision Points)
- 在工具条中选择 Decision 图标;
- 在活动图(Activity Diagram)中单击要放置决策点的位置;
- 输入决策的名字;(如出错,可用 Rename 命令更改)
- 在工具条中选择 State Transition 图标;
- 单击一个活动,并将其拖到相应的决策点上;
- 在工具条中选择 State Transition 图标;
- 单击一个决策点,拖至拐角处单击左键,再将其拖到相应的活动上;
- 双击此条转换线,打开规格设定框;
- 选择 Detail 标签页;
- 在 Guard Condition 框中输入条件 No;
- 点按 OK 按扭,关闭规格设定框;
- 在此条转换线上单击左键,选中此条转换线;
- 点按屏幕上方的 Format:Line Style:Rectilinear 菜单;
- 调整这条线,使其美观。
4.使用 Rational Rose 创建同步条(Synchronization Bar)
- 在工具条中选择 Horizontal Synchronization 图标;
- 在活动图(Activity Diagram)中单击要放置同步条的位置;
- 在工具条中选择 State Transition 图标;
- 完成下图。
5.使用 Rational Rose 创建泳道( Swim lanes)
- 在工具条中选择 Swim lanes 图标;
- 在活动图(Activity Diagram)中单击要放置泳道的位置;
- 双击泳道,打开规格说明框;
- 在 Name 框中输入泳道的名字;
- 点按 OK 按扭,关闭规格设定框;
- 对泳道的大小位置进行调整;
- 将所需的活动和变换线拖至新泳道中。
6.使用 Rational Rose 创建起始活动和终止活动
- 在工具条中选择起始活动或终止活动图标;
- 在活动图(Activity Diagram)中单击要放置起始活动或终止活动的位置;
- 在工具条中选择 State Transition 图标;
- 单击起始活动,拖到相应的活动上,或者单击一个活动,拖至终止活动
上。
3.相关的包和类以及简单类图
1.在 Rational Rose 的 Browser 框中创建类(Class)
- 右击 browser 框中的 Logica View,弹出快捷菜单;
- 选择 New——Class 项;
- 输入类的名字;(如出错,可用 Rename 命令更改)
- 在所建类上单击右键,弹出快捷菜单;
- 选择 Open Specification 项,选择 General 标签页;
- 在 Stereotype 框中选择 entity 类;
- 单击 OK 按扭关闭规格说明框。
边界类〈Boundary Classes〉:
可用来塑造操作者与系统之间的交互;
可用来理清用户在系统边界上的需求;
可设计抽象的用户界面对象。
控制类〈Control Classes〉:
可协调对象之间的交易;
可将使用案例的细节部分封装起来;
可将复杂的计算或商务逻辑封装起来。
实体类〈Entity Classes〉:
代表永久保存的信息;
代表 E-R 模型之中人、事、时、地、物或概念的信息及行为。
2.在 Rational Rose 的 Browser 框中创建包(Packages)
- 右击 browser 框中的 Logica View,弹出快捷菜单;
- 选择 New—— Package 项;
- 输入包的名字;(PeopleInfo 包用来存放与人员有关的内容;Interfaces 包用来存放与界面有关的内容UniversityArtifacts 用来存放与学校工件有关的内容。)
- 新建图中的相关类,并设置其相应的类别;
- 单击 Browser 框中的类,将其拖至相应的包中。
3.Rational Rose 中的主类图(Main Class Diagram)
- 双击 browser 框 Logica View 中的 Main 类图以打开之;
- 单击 Browser 框中的包,将其拖到 Main 类图上;
- 重复第 2)步,完成下图。
4.在 Rational Rose 中创建包中的主类图(Package Main Class Diagram)
- 双击 Main 类图中的 University Artifacts 包,rose 将打开这个包,并创建这个包的主类图(Package Main Class Diagram);
- 单击 Browser 框中的类,将其拖到类图上;
- 重复第 2)步,完成下图。
4.用例实现图(Use Case Realization Diagram)
1.使用 Rational Rose 创建逻辑视图中的用例图(Use Case Diagram)
- 右击 browser 框中的 Logica View,弹出快捷菜单;
- 选择 New——Use Case Diagram 项;
- 输入用例图的名字“Realizations”;(如出错,可用 Rename 命令更改)
- 右击 browser 框中的 Logica View,弹出快捷菜单;
- 选择 New—— Use Case 项;
- 输入用例的名字;(如出错,可用 Rename 命令更改)
- 双击新建的用例,打开用例的规格设定框;
- 单击 Stereotype 框,选择 use case realization 选项;
- 关闭用例的规格设定框;
- 重复 4——9 步,双击“Realizations”,打开实现用例图;
- 将新建的实现用例拖入图中,如下图。
5.顺序图(Sequence Diagram)与合作图(Collaboration Diagram)
1.使用 Rational Rose 创建顺序图(Sequence Diagram)
- 右击 browser 框中的 Logica View 中的“Maintain course information”实现用例,弹出快捷菜单;
- 选择 New—— Sequence Diagram 项;
- 输入顺序图的名字“Creat a course”;
2.在顺序图中创建对象和信息
- 双击顺序图名称,打开顺序图;
- 将 browser 框 Use CaseView 包中的执行者“Registrar”拖入图中;
- 选择工具条中的“Object”图标;
- 单击图中放置对象的位置,并输入相应的名字;
- 重复 3——4 步;
- 选择工具条中的“Object Message”图标;
- 从信息发出者拖至信息接收者;
- 输入信息的名字;
- 重复 6——8 步。
3.给顺序图中的对象分配类
- 单击选中 Browser 框中所需的类;
- 将此类拖至顺序图相应的对象上。
4.将顺序图转换为合作图
- 双击顺序图名称,打开顺序图;
- 选择屏幕上方的菜单 Browser——Create Collaboration Diagram,或者点按
F5 键; - 调整图中的对象和信息,使其美观。
6.调整类之间的关系
1.使用 Rational Rose 创建关系(Relationship)
- 打开 University Artifacts 包中的 Main 类图;
- 选择工具条中的“Association”图标(若此图标不存在,则右击工具条,选择 Customize 项将其加入);
- 点按类图中的一个类,拖至另一个类,输入关系的名称;
- 选择工具条中的“Aggregation”图标(若此图标不存在,则右击工具条,选择 Customize 项将其加入);
- 点按类图中的一个整体类,拖至另一个部分类,输入关系的名称。
2.使用 Rational Rose 创建角色(Role)
- 新建一个 People Info 包的 Main 类图;
- 右击关系线(靠近需要创建角色的类的一端),弹出快捷菜单;
- 选择 Role Name 项,输入角色的名字。
3.增加多重度
- 双击关系线,使其弹出规格设定框;
- 选择 Detail 标签页(Role A Detail 或者 Role B Detail);
- 在 Multiplicity 框中输入或选择相应的多重度;
- 点按 OK 按扭,关闭规格设定框。
4.创建包之间的关系
- 打开 Logica View 中的 Main 类图;
- 选择工具条中的“dependency”图标;点按类图中的一个客户包,拖至另一个供应包。
5.使用 Rational Rose 创建属性和方法
- 右击 browser 框 Logica View 中 UniversityArtifacts 包中的类,弹出快捷菜
单; - 选择 New——Attribute 项,输入相应的名字;
- 重复 1——2 步,完成添加属性;
- 右击 browser 框 Logica View 中 UniversityArtifacts 包中的类,弹出快捷菜
单; - 选择 New——Operation 项,输入相应的名字;
- 重复 4——5 步,完成添加操作;
6.在类中增加了属性和操作后对类图的影响
- 打开 University Artifacts 包中的 Main 类图;
- 将图中相关类的显示改为 label(右击每一个类,选择 Options: Stereotype
Display: Label 菜单); - 类图中相应的属性与操作自动变化为下图。
7.使用 Rational Rose 创建一个有泛化关系的类图
- 在 People Info 包中创建一个空类图 Generalization;
- 创建类图中相关的类,并将相关的类拖入图中;
- 选择工具条中的“Generalization”图标;
- 点按类图中的一个子类,拖至一个父类;
- 重复第 4 步完成下图;
- 将左边的泛化箭头拖至右边的泛化线上;
- 调整图形
8.将有泛化关系的类图进行扩展
- 将 Course Offering 类拖入图中,并创建对应的关联线、角色、多重度;
- 为相关的类创建属性。
9.将有泛化关系的类图进行优化
- 在 Browser 框中将子类中的公共属性拖入父类中;
- 将子类中多余的属性删去。
10.将有泛化关系的类图进行多层泛化
- 在 People Info 包中创建相关的类,并拖入图中;
- 创建关系线、泛化线和多重度。
7.状态图(Statechart Diagram)
1.使用 Rational Rose 创建状态图(Statechart Diagrams)
- 右击 browser 框中的 CourseOffering 类,弹出快捷菜单;
- 选择 New——Statechart Diagrams 项;
- 输入状态图的名字“CourseOffering States”。
2.使用 Rational Rose 创建状态(States)
- 在工具条中选择 State 图标;
- 在状态图中单击要放置状态的位置;
- 输入状态的名字。(如出错,可用 Rename 命令更改)
3.使用 Rational Rose 创建状态转换(State Transitions)
- 在工具条中选择 State Transitions 图标;
- 单击起始状态,并拖至下一个状态;
- 输入状态转换的名字。(如出错,可用 Rename 命令更改)
4.使用 Rational Rose 创建起始状态
- 在工具条中选择 Start 图标;
- 在状态图中单击要放置起始状态的位置;
- 用状态转换线进行连接。
5.使用 Rational Rose 创建结束状态
- 在工具条中选择 Stop 图标;
- 在状态图中单击要放置结束状态的位置;
- 用状态转换线进行连接。
6.使用 Rational Rose 增加状态转换的细节部分
- 双击某条转换线,打开规格设定框;
- 选择 Detail 标签页;
- 在相应的框中输入 action(/后的内容)、guard condition([ ]里的内容)以及发出的 event(^后的内容);
- 点按 OK 按扭,关闭规格设定框。
7.使用 Rational Rose 增加状态的 Actions 部分
- 双击某个状态,打开规格设定框;
- 选择 Actions 标签页;
- 右击 Actions 框中的任一位置,弹出快捷菜单;
- 选择 Insert 项,将创建一个类型为 entry 的 action;
- 双击这个 action,弹出 action 的规格设定框;
- 在 when 框中设定相应的类型;
- 在 type 框中设定:action 或者 send event(用^表示);
- 输入 action 的名字,或 event 的信息;
- 点按 OK 按扭,关闭 Action 规格设定框。
- 点按 OK 按扭,关闭状态规格设定框。
五、个人小结
1.psp表格
psp2.1 | 任务内容 | 计划完成需要的时间(min) | 实际完成需要的时间(min) |
---|---|---|---|
Planning | 计划 | 200 | 240 |
Development | 开发 | 100 | 150 |
Analysis | 需求分析(包括学习新技术) | 30 | 40 |
Design Spec | 生成设计文档 | 30 | 50 |
Design Review | 设计复审 | 5 | 15 |
Coding Standard | 代码规范 | 3 | 10 |
Design | 具体设计 | 10 | 15 |
Coding | 具体编码 | 36 | 26 |
Code Review | 代码复审 | 5 | 20 |
Test | 测试(自我测试,修改代码,提交修改) | 10 | 30 |
Reporting | 报告 | 9 | 30 |
Test Report | 测试报告 | 3 | 30 |
Size Measurement | 计算工作量 | 2 | 10 |
Postmortem & Process Improvement Plan | 事后总结,并提出过程改进计划 | 5 | 10 |
2.心得和经验
通过本次作业,了解基于UML的面向对象分析与设计方法,我掌握用例图与活动图的绘制、用例规约(文档)的编制、类图的绘制的方法和状态图、时序图、活动图的绘制方法。完成了例题的例图、类图、活动图、状态图、时序图等的绘制。