实验三 面向对象分析与设计


博客班级 AHPU软件工程
作业要求 实验三 面向对象分析与设计
作业目标 了解基于UML的面向对象分析与设计方法,以及各种状态图的绘制
学号 3180701211
目录

一.实验目的

1、了解基于UML的面向对象分析与设计方法
2、掌握用例图的绘制、用例规约(文档)的编制
3、掌握类图、活动图、状态图、时序图的绘制方法

二、实验内容

1、参照实验指导书完成在线选课系统、或试卷自动生成系统,或人事信息管理系统的用例图、类图、活动图、状态图、时序图等的绘制
【实例1】在线选课系统

  1. 大学教师选择本学期要教授的课程,每位教师最多只能上报 4 门课程。
  2. 教师选课结束后,教务管理人员进行协调和确认教师的课程,并创建本学期的课程目录表,向学生公布。
  3. 学生填写课程选修表,每个学生最多选修 4 门课程;每门选修课程的学生数最多为 10 人,最少为 3 人。人数达到 10 人时,停止学生登记注册此门课程;
  4. 学生选课结束后,系统自动取消人数少于三人的课程。
  5. 学生按最终的课程表到财务处办理收费手续(billing system)。
  6. 教师可查询所教课程的学生花名册(roster)。
  7. 教务管理人员维护学生、教师和课程的信息。
    【实例2】试卷自动生成系统
  8. 教师根据教学资料录入试题,并对其进行分类。待需要考试时,设置好一定的条件,系统就从题库中选中试题自动生成考试试卷
  9. 考试试卷生成系统的成卷模式应用智能出卷(由系统随机选题)和手工出卷(教师自己选择题目)两种组卷方式
    【实例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)

  1. 右击 browser 框中的 Use Case View 包,弹出快捷菜单;
  2. 选择 New——Actor 项;
  3. 输入执行者的名字;(如出错,可用 Rename 命令更改)
  4. 如果文档窗口不可见,选择屏幕上方的 View——Documentation 菜单;
  5. 在 browser 框中选中所需执行者;
  6. 将光标置于文档框中,输入相应文档。
3.《在线选修课程管理系统》中的用例(Use Case)

注册选修课程(学生);
选择教授的选修课程(教师);
索取课程花名册(Roster)(教师);
维护课程信息(教务管理人员);
维护教师信息(教务管理人员);
维护学生信息(教务管理人员);
创建课程目录(教务管理人员);

4.使用 Rational Rose 创建用例(Use Case)

  1. 右击 browser 框中的 Use Case View 包,弹出快捷菜单;
  2. 选择 New——Use Case 项;
  3. 输入用例的名字;(如出错,可用 Rename 命令更改)
  4. 如果文档窗口不可见,选择屏幕上方的 View—— Documentation 菜单;
  5. 在 browser 框中选中所需用例;
  6. 将光标置于文档框中,输入相应文档。
5.使用 Rational Rose 创建主用例图(Main Use Case Diagram)
  1. 双击 browser 框中的 Use Case View 包中的 Main 条目,打开主用例图;
  2. 单击选中 browser 框中的执行者,并将其拖到主用例图中;
  3. 重复第 2)步,直到完成所需的工作为止;
  4. 单击选中 browser 框中的用例,并将其拖到主用例图中;
  5. 重复第 4)步,直到完成所需的工作为止;
  6. 在工具条中选择单向关联(Unidirectional Association)图标;
  7. 单击一个执行者,并拖到相应的用例上;或单击一个用例,并拖到相应的
    执行者上。

2.活动图(Activity Diagram)的建模(以建立选修课程目录表为例)

1.使用 Rational Rose 创建活动图(Activity Diagram)
  1. 右击 browser 框中的 Use Case View 包,弹出快捷菜单;
  2. 选择 New——Activity Diagram 项;
  3. 输入活动图的名字;(如出错,可用 Rename 命令更改)
  4. 双击 browser 框中的 Activity Diagram 名称,打开该图。
2.使用 Rational Rose 创建活动(Activity)
  1. 在工具条中选择 Activity 图标;
  2. 在活动图(Activity Diagram)中单击要放置活动(Activity)的位置;
  3. 输入活动名字;(如出错,可用 Rename 命令更改)
  4. 在工具条中选择 State Transition 图标;
  5. 单击一个活动,并将其拖到相应的活动上。
3.使用 Rational Rose 创建决策点(Decision Points)
  1. 在工具条中选择 Decision 图标;
  2. 在活动图(Activity Diagram)中单击要放置决策点的位置;
  3. 输入决策的名字;(如出错,可用 Rename 命令更改)
  4. 在工具条中选择 State Transition 图标;
  5. 单击一个活动,并将其拖到相应的决策点上;
  6. 在工具条中选择 State Transition 图标;
  7. 单击一个决策点,拖至拐角处单击左键,再将其拖到相应的活动上;
  8. 双击此条转换线,打开规格设定框;
  9. 选择 Detail 标签页;
  10. 在 Guard Condition 框中输入条件 No;
  11. 点按 OK 按扭,关闭规格设定框;
  12. 在此条转换线上单击左键,选中此条转换线;
  13. 点按屏幕上方的 Format:Line Style:Rectilinear 菜单;
  14. 调整这条线,使其美观。
4.使用 Rational Rose 创建同步条(Synchronization Bar)
  1. 在工具条中选择 Horizontal Synchronization 图标;
  2. 在活动图(Activity Diagram)中单击要放置同步条的位置;
  3. 在工具条中选择 State Transition 图标;
  4. 完成下图。
5.使用 Rational Rose 创建泳道( Swim lanes)
  1. 在工具条中选择 Swim lanes 图标;
  2. 在活动图(Activity Diagram)中单击要放置泳道的位置;
  3. 双击泳道,打开规格说明框;
  4. 在 Name 框中输入泳道的名字;
  5. 点按 OK 按扭,关闭规格设定框;
  6. 对泳道的大小位置进行调整;
  7. 将所需的活动和变换线拖至新泳道中。
6.使用 Rational Rose 创建起始活动和终止活动
  1. 在工具条中选择起始活动或终止活动图标;
  2. 在活动图(Activity Diagram)中单击要放置起始活动或终止活动的位置;
  3. 在工具条中选择 State Transition 图标;
  4. 单击起始活动,拖到相应的活动上,或者单击一个活动,拖至终止活动
    上。

3.相关的包和类以及简单类图

1.在 Rational Rose 的 Browser 框中创建类(Class)

  1. 右击 browser 框中的 Logica View,弹出快捷菜单;
  2. 选择 New——Class 项;
  3. 输入类的名字;(如出错,可用 Rename 命令更改)
  4. 在所建类上单击右键,弹出快捷菜单;
  5. 选择 Open Specification 项,选择 General 标签页;
  6. 在 Stereotype 框中选择 entity 类;
  7. 单击 OK 按扭关闭规格说明框。
    边界类〈Boundary Classes〉:
    可用来塑造操作者与系统之间的交互;
    可用来理清用户在系统边界上的需求;
    可设计抽象的用户界面对象。
    控制类〈Control Classes〉:
    可协调对象之间的交易;
    可将使用案例的细节部分封装起来;
    可将复杂的计算或商务逻辑封装起来。
    实体类〈Entity Classes〉:
    代表永久保存的信息;
    代表 E-R 模型之中人、事、时、地、物或概念的信息及行为。
2.在 Rational Rose 的 Browser 框中创建包(Packages)
  1. 右击 browser 框中的 Logica View,弹出快捷菜单;
  2. 选择 New—— Package 项;
  3. 输入包的名字;(PeopleInfo 包用来存放与人员有关的内容;Interfaces 包用来存放与界面有关的内容UniversityArtifacts 用来存放与学校工件有关的内容。)
  4. 新建图中的相关类,并设置其相应的类别;
  5. 单击 Browser 框中的类,将其拖至相应的包中。
3.Rational Rose 中的主类图(Main Class Diagram)
  1. 双击 browser 框 Logica View 中的 Main 类图以打开之;
  2. 单击 Browser 框中的包,将其拖到 Main 类图上;
  3. 重复第 2)步,完成下图。
4.在 Rational Rose 中创建包中的主类图(Package Main Class Diagram)
  1. 双击 Main 类图中的 University Artifacts 包,rose 将打开这个包,并创建这个包的主类图(Package Main Class Diagram);
  2. 单击 Browser 框中的类,将其拖到类图上;
  3. 重复第 2)步,完成下图。

4.用例实现图(Use Case Realization Diagram)

1.使用 Rational Rose 创建逻辑视图中的用例图(Use Case Diagram)

  1. 右击 browser 框中的 Logica View,弹出快捷菜单;
  2. 选择 New——Use Case Diagram 项;
  3. 输入用例图的名字“Realizations”;(如出错,可用 Rename 命令更改)
  4. 右击 browser 框中的 Logica View,弹出快捷菜单;
  5. 选择 New—— Use Case 项;
  6. 输入用例的名字;(如出错,可用 Rename 命令更改)
  7. 双击新建的用例,打开用例的规格设定框;
  8. 单击 Stereotype 框,选择 use case realization 选项;
  9. 关闭用例的规格设定框;
  10. 重复 4——9 步,双击“Realizations”,打开实现用例图;
  11. 将新建的实现用例拖入图中,如下图。

5.顺序图(Sequence Diagram)与合作图(Collaboration Diagram)

1.使用 Rational Rose 创建顺序图(Sequence Diagram)

  1. 右击 browser 框中的 Logica View 中的“Maintain course information”实现用例,弹出快捷菜单;
  2. 选择 New—— Sequence Diagram 项;
  3. 输入顺序图的名字“Creat a course”;
2.在顺序图中创建对象和信息
  1. 双击顺序图名称,打开顺序图;
  2. 将 browser 框 Use CaseView 包中的执行者“Registrar”拖入图中;
  3. 选择工具条中的“Object”图标;
  4. 单击图中放置对象的位置,并输入相应的名字;
  5. 重复 3——4 步;
  6. 选择工具条中的“Object Message”图标;
  7. 从信息发出者拖至信息接收者;
  8. 输入信息的名字;
  9. 重复 6——8 步。
3.给顺序图中的对象分配类
  1. 单击选中 Browser 框中所需的类;
  2. 将此类拖至顺序图相应的对象上。
4.将顺序图转换为合作图

  1. 双击顺序图名称,打开顺序图;
  2. 选择屏幕上方的菜单 Browser——Create Collaboration Diagram,或者点按
    F5 键;
  3. 调整图中的对象和信息,使其美观。

6.调整类之间的关系

1.使用 Rational Rose 创建关系(Relationship)

  1. 打开 University Artifacts 包中的 Main 类图;
  2. 选择工具条中的“Association”图标(若此图标不存在,则右击工具条,选择 Customize 项将其加入);
  3. 点按类图中的一个类,拖至另一个类,输入关系的名称;
  4. 选择工具条中的“Aggregation”图标(若此图标不存在,则右击工具条,选择 Customize 项将其加入);
  5. 点按类图中的一个整体类,拖至另一个部分类,输入关系的名称。
2.使用 Rational Rose 创建角色(Role)

  1. 新建一个 People Info 包的 Main 类图;
  2. 右击关系线(靠近需要创建角色的类的一端),弹出快捷菜单;
  3. 选择 Role Name 项,输入角色的名字。
3.增加多重度

  1. 双击关系线,使其弹出规格设定框;
  2. 选择 Detail 标签页(Role A Detail 或者 Role B Detail);
  3. 在 Multiplicity 框中输入或选择相应的多重度;
  4. 点按 OK 按扭,关闭规格设定框。
4.创建包之间的关系

  1. 打开 Logica View 中的 Main 类图;
  2. 选择工具条中的“dependency”图标;点按类图中的一个客户包,拖至另一个供应包。
5.使用 Rational Rose 创建属性和方法
  1. 右击 browser 框 Logica View 中 UniversityArtifacts 包中的类,弹出快捷菜
    单;
  2. 选择 New——Attribute 项,输入相应的名字;
  3. 重复 1——2 步,完成添加属性;
  4. 右击 browser 框 Logica View 中 UniversityArtifacts 包中的类,弹出快捷菜
    单;
  5. 选择 New——Operation 项,输入相应的名字;
  6. 重复 4——5 步,完成添加操作;
6.在类中增加了属性和操作后对类图的影响
  1. 打开 University Artifacts 包中的 Main 类图;
  2. 将图中相关类的显示改为 label(右击每一个类,选择 Options: Stereotype
    Display: Label 菜单);
  3. 类图中相应的属性与操作自动变化为下图。
7.使用 Rational Rose 创建一个有泛化关系的类图
  1. 在 People Info 包中创建一个空类图 Generalization;
  2. 创建类图中相关的类,并将相关的类拖入图中;
  3. 选择工具条中的“Generalization”图标;
  4. 点按类图中的一个子类,拖至一个父类;
  5. 重复第 4 步完成下图;
  6. 将左边的泛化箭头拖至右边的泛化线上;
  7. 调整图形
8.将有泛化关系的类图进行扩展
  1. 将 Course Offering 类拖入图中,并创建对应的关联线、角色、多重度;
  2. 为相关的类创建属性。
9.将有泛化关系的类图进行优化
  1. 在 Browser 框中将子类中的公共属性拖入父类中;
  2. 将子类中多余的属性删去。
10.将有泛化关系的类图进行多层泛化
  1. 在 People Info 包中创建相关的类,并拖入图中;
  2. 创建关系线、泛化线和多重度。

7.状态图(Statechart Diagram)

1.使用 Rational Rose 创建状态图(Statechart Diagrams)

  1. 右击 browser 框中的 CourseOffering 类,弹出快捷菜单;
  2. 选择 New——Statechart Diagrams 项;
  3. 输入状态图的名字“CourseOffering States”。
2.使用 Rational Rose 创建状态(States)

  1. 在工具条中选择 State 图标;
  2. 在状态图中单击要放置状态的位置;
  3. 输入状态的名字。(如出错,可用 Rename 命令更改)
3.使用 Rational Rose 创建状态转换(State Transitions)

  1. 在工具条中选择 State Transitions 图标;
  2. 单击起始状态,并拖至下一个状态;
  3. 输入状态转换的名字。(如出错,可用 Rename 命令更改)
4.使用 Rational Rose 创建起始状态
  1. 在工具条中选择 Start 图标;
  2. 在状态图中单击要放置起始状态的位置;
  3. 用状态转换线进行连接。
5.使用 Rational Rose 创建结束状态

  1. 在工具条中选择 Stop 图标;
  2. 在状态图中单击要放置结束状态的位置;
  3. 用状态转换线进行连接。
6.使用 Rational Rose 增加状态转换的细节部分
  1. 双击某条转换线,打开规格设定框;
  2. 选择 Detail 标签页;
  3. 在相应的框中输入 action(/后的内容)、guard condition([ ]里的内容)以及发出的 event(^后的内容);
  4. 点按 OK 按扭,关闭规格设定框。
7.使用 Rational Rose 增加状态的 Actions 部分
  1. 双击某个状态,打开规格设定框;
  2. 选择 Actions 标签页;
  3. 右击 Actions 框中的任一位置,弹出快捷菜单;
  4. 选择 Insert 项,将创建一个类型为 entry 的 action;
  5. 双击这个 action,弹出 action 的规格设定框;
  6. 在 when 框中设定相应的类型;
  7. 在 type 框中设定:action 或者 send event(用^表示);
  8. 输入 action 的名字,或 event 的信息;
  9. 点按 OK 按扭,关闭 Action 规格设定框。
  10. 点按 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的面向对象分析与设计方法,我掌握用例图与活动图的绘制、用例规约(文档)的编制、类图的绘制的方法和状态图、时序图、活动图的绘制方法。完成了例题的例图、类图、活动图、状态图、时序图等的绘制。

posted @ 2020-12-21 11:59  李世媛  阅读(1050)  评论(0编辑  收藏  举报