实验二 面向对象软件设计方法
一、实验目的
1、掌握使用Visio或Rational Rose绘制类图的步骤;
2、掌握软件工程的基本知识;
3、掌握面向对象软件设计的基本知识;
4、掌握建立类图、顺序图、状态图、部署图的绘制方法。
二、实验环境与设备
- 硬件环境:微机1台;
- 软件环境:操作系统:Windows 10;建模工具:EdrawMax;
三、实验内容
根据附件1给出的《简单的学生选课管理系统需求描述》采用面向对象分析方法给出系统的设计类图、课程注册用例的交互图(顺序图)。
四、建模思路
4.1 系统角色用例分析
4.1.1 学生
- 查询新学期开设课程;
- 查询讲课教师情况;
- 课程注册;
- 查询成绩单;
- 登录。
4.1.2 教师
- 查询新学期开设课程;
- 查询选课学生情况;
- 登记成绩单。
- 登录。
4.1.3 教务管理员
- 信息(教师信息、学生信息和课程信息)维护、安全管理;
- 开启、关闭“课程注册”;
- 登录。
4.2 体系结构设计
4.2.1 设置分析类
(1)边界类
边界类负责目标软件系统与外部执行者之间的交互,包括:①界面控制:包括输入数据的格式及内容转换,输出结果的呈现,软件运行过程中界面的变化与切换等。②外部接口:实现目标软件系统与外部系统或外部设备之间的信息交流和互操作。主要关注跨越目标软件系统边界的通信协议。③环境隔离:将目标软件系统与操作系统、数据库管理系统、应用服务器中间件等环境软件进行交互的功能与特性封装于边界类之中,使目标软件系统的其余部分尽可能地独立于环境软件。
经过分析,考虑到用户的输入和信息获取,将输入信息接口、显示面板接口(输入)、显示面板接口(输出)作为边界类。
(2)控制类
控制类作为完成用例任务的责任承担者,负责协调、控制其他类共同完成用例规定的功能或行为。一般情况下,一个用例对应一个控制类;不过对于不同用例的任务类似较多的情况下,也有多个用例共享同一控制类的情况。
结合上述三类用户的用例分析,设定控制类如下:
对于读者,将课程查询、教师信息查询、课程注册、成绩单查询、登录作为控制类;对于教师,将课程查询、选课学生查询、成绩单登记、登录作为控制类;对于教务管理员,将信息维护、安全管理、课程注册开启/关闭、登录作为控制类。
又考虑到账号注册需求,增设注册为控制类;三类用户的登录在本质上一致,只是身份权限不同,登陆后跳转不同的操作界面;读者和教师的课程查询功能一致。所以,最终设置登录、课程查询、教师信息查询、课程注册、成绩单查询、选课学生查询、成绩单登记、信息维护、安全管理、课程注册开启/关闭作为控制类。
(3)实体类
实体类负责保存目标软件系统中具有持久意义的信息项并向其他类提供信息访问的操作。其操作具有“内向收敛”特征,仅向目标软件系统的其余部分提供读、写信息项内容的必要的操作接口,一般不涉及业务逻辑处理。
考虑数据持久存储,对于学生:需要查询新学期开设课程,设置选课数据为实体类;需要查询讲课教师情况,设置教师数据为实体类;需要课程注册,设置选课数据为实体类;需要查询成绩单,设置成绩数据为实体类;需要登录,设置学生数据为实体类。对于教师:需要查询新学期开设课程,设置选课数据为实体类;需要查询选课学生情况,设置选课数据、学生数据为实体类;需要登记成绩单,设置成绩数据为实体类;需要登录,设置教师数据为实体类。对于教务管理员:需要信息维护,设置学生数据、教师数据、课程数据为实体类;需要安全管理,设置安全服务为实体类;需要登录,设置管理员数据为实体类。
考虑到重复操作需求,设置教师数据、学生数据、管理员数据、选课数据、成绩数据、安全服务为实体类。又因为教师、学生、管理员的数据都可以包含于用户数据,最终设置用户数据、教师数据、学生数据、管理员数据、选课数据、成绩数据、安全服务为实体类。
图1 学生选课管理系统的体系结构设计
4.3 界面设计
经过分析,设置登录界面、注册界面、教师界面、教务管理员界面、学生界面。其中,教师界面、教务管理员界面、学生界面同属用户界面。
图2 学生选课管理系统的界面设计类图
五、设计模型
5.1 设计类图
图3 学生选课管理系统的设计类图
5.2 课程注册用例的顺序图
图4 课程注册用例的顺序图
六、结果分析
6.1 设计类图完成结果分析
学生选课管理系统的功能模型可以分成四大模块,分别是登录模块、学生管理模块、教师管理模块和教务管理员管理模块。其中,登录模块可引申出注册模块。因此,其软件需求与我们设计类图中的界面类完全一致。
学生管理模块下分课程查询、讲课教师查询、课程注册、成绩单查询四个部分;教师管理模块下分课程查询、选课学生情况查询、成绩单登记三个部分;教务管理员模块下分课程注册管理、安全维护两个模块,其中安全维护又可细分为信息管理和安全服务。其软件需求与我们设计类图中的接口设计一致。
考虑到数据的持久存储,上文分析的实体类与设计类图中的构件设计一致。
故我们所构建的设计类图较好地对接了软件的各个功能需求实现,有比较匹配的一致型。并且对于数据的持久存储和软件的安全性均有考虑。
6.2 心得体会
这是软件工程的第二次实验课,主要针对课本第六至九章的内容进行了巩固与实践。在第一次实验对、系统需求分析的基础上,综合考虑各种制约因素,通过体系结构设计、用户界面设计及详细设计过程,实现软件设计,完成设计类图和课程注册用例的顺序图。
首先,我从抽象的角度刻画出组成目标软件系统的模块以及它们之间的逻辑关系和协作关系,从而设计体系结构模型。这里需要特别注意的是,高层设计不能缺位,否则会使模块的功能、行为、接口出现冗余、冲突、无法协同工作的情况。并且,需要充分考虑数据持久存储和软件安全性的保障。
其后,建立界面设计模型。利用面向对象的界面模型设计方法,我们需要先考虑清楚有哪些界面类以及它们之间的界面流转关系。再去分析每个类中界面元素组织、布局、预期响应行为和呈现形态。
接下来,设计模型必须说明用户界面模型和体系结构模型中的设计元素如何协同工作以实现每项软件需求,即进行用例设计模型。此处实验要求中以设计课程注册用例的顺序图反映学习情况。最后,将上述所有模型整合优化,进行详细设计模型设计,获得设计类图。
通过本次实验对建模思路的整理与分析,使得我更加深入得了解了软件设计过程,并对其中的各阶段过程有了掌握。与此同时,对绘图软件的操作和运用也愈发娴熟。