迪士尼在逃公组 实验七 综合软件项目案例
项目 | 内容 |
---|---|
课程班级博客链接 | 2020级卓越工程师班 |
这个作业要求链接 | 实验七 综合软件项目案例 |
团队名称 | 迪士尼在逃公组 |
团队成员分工 | 何欣娜:任务一、二、三 米乐文:任务四、五、六 宋晔婷:任务七、八、九 |
我的课程学习目标 | 1. 练习用例图、类图、顺序图、状态图等UML建模技术在软件开发过程中的用途。 2.掌握软件项目的数据库逻辑结构设计方法。 3.掌握软件项目的软件结构设计方法。 4.理解面向对象软件开发过程。 |
这个作业在哪些方面帮助我实现学习目标 | 1.巩固简单应用规格说明技术与类图、用例图的绘制。 2.同时尝试反向理解复杂软件系统项目的组织和构成,培养逆向思维,画出对应的类图、顺序图等,很大程度上拓宽了思维,增强了对复杂软件工程的理解。 |
团队博客链接 | 迪士尼在逃公组 |
团队项目Github仓库地址链接 | GitHub |
任务一 :将高校学生管理软件部署在Tomcat服务器,使用不同身份登录测试相应功能
软件用户登录界面如下图:
管理员登录后主界面如下图:
教师登录后主界面如下图:
学生登录后主界面如下图:
说明:三类不同身份的用户主要区别在于权限,在登陆过程中获取操作用户operator的权限类型role,从数据库中调出相应role所对应的privilege记录,在index.jsp中的主要体现在侧边栏中提供的不同功能。
任务2:绘制高校学生管理软件的用例图
高校学生管理软件的用例图如下图所示:
说明:目标系统有学生、教师、教务员和管理员四类操作用户。其中教务员与管理员权限合并,主要为三类操作用户。
- 学生主要是查看课程和成绩;
- 教师主要是查看课表、班级和学生信息、录入成绩;
- 教务管理员主要是录入学生、教师、课程信息,修改专业、班级信息,各班级排课,生成教学统计报表,主要是用户信息维护和用户权限管理。
详情见上图
任务3:理解项目需求简介,采用简易应用规格说明技术,讨论高校学生教务管理系统的软件需求列表,采用面向对象分析方法绘制高校学生管理软件的类图
采用简易应用规格说明技术讨论案例软件用户需求
采用简易应用规格说明技术讨论案例软件用户需求的过程我们主要经过以下步骤:
- 确定项目范围:确定高校学生教务管理系统的目标是为使用者——高校老师,学生与管理人员提供管理平台、以及基本需求。
- 收集用户需求:通过调查问卷的形式收集用户对高校学生教务管理系统要解决的问题以及要实现的需求。
- 问卷成果分析如下图所示:
4.经过分析分卷结果,得出高校学生教务管理系统的软件需求列表
身份 | 需求 |
---|---|
管理员 | 用户信息维护 用户权限管理 录入学生、教师、课程信息 修改专业、班级信息 各班级排课 |
老师 | 查看课表 查看班级 查看学生信息 |
学生 | 查看课程 查看成绩 个人信息查询 |
(2)采用面向对象分析方法绘制高校学生管理软件的类图
任务4:绘制某一学生用户对象查询课程和成绩的顺序图与教务员课程安排的顺序图
绘制学生用户对象查询课程的顺序图
绘制学生用户对象查询成绩的顺序图
绘制教务员课程安排的顺序图
任务5:理解分析高校学生管理软件中数据库表物理结构,绘制响应数据库ER图
高校学生管理软件中数据库表的物理结构:
说明:部分数据表的关系在代码中实现了,例如使用rol_id ,找到对应的privilege来绘制对应的权限。
结合外键定义,绘制数据库对应的E-R图如下图
任务6:理解分析高校学生管理软件代码结构,结合MVC软件设计模式特点,采用面向对象设计方法绘制高校学生管理软件的类图
分析:
1. Score、teacher、student、major、subject文件夹下的各操作类例如Deleteservlet类、Updateservlet类、editservlet类、searchServlet类等均依赖于impl文件夹下的 TeacherImpl、StudentImpl、MajorImpl等类,且是对httpservlet接口的实现。
2.ReportScoreServlet类与entity中的classes实体类是关联关系
3.impl文件夹下的类依赖于DB类,调用实现了Dao包下的各接口的功能。
4.filter中的两个类EnCodeFilter、LoginFilter是对接口Filter的实现
5.entity中的各实体类之间具有关联关系,具体关系下方类图所示。
采用面向对象设计方法绘制高校学生管理软件的类图如下图所示 (starUML导出SVG格式文件有水印,建议去本次实验七的github上查看源文件)
结合软件开发过程,总结任务3与任务6的类图与源代码中定义类的关系。
(1)关系
任务3中面向对象分析阶段画的类图,是用于描述系统中的对象和对象之间的关系,作为需求分析的一个重要结果,同时也为后续的设计和开发阶段提供了重要的指导信息。
任务6中面向对象设计阶段,我们需要将类图中描述的类和对象转化为实际的代码实现。这个过程中,类图和源代码之间存在了一个明显的映射关系,即类图中的类和类之间的关系与源代码中的类和类之间的关系是一一对应的。在这个过程中,我们将类图中每个类和它的属性、方法、以及类之间的关系都转化为代码实现,确保代码的正确性和正确解决实际需求。
综上所述,面向对象分析阶段画的类图与源代码中定义类的关系主要体现在类图是描述类和对象的抽象模型,而源代码中的类定义则是它们的具体实现。在实现时,我们需要将类图转换为代码实现,确保两者之间保持同步和一致性,同时考虑代码的可读性、可维护性和可扩展性等因素。
(2)区别
面向对象分析阶段的类图和面向对象设计阶段的类图在一定程度上是有区别的。
在面向对象分析阶段,类图主要用于表示系统中的业务对象和业务对象之间的关系,以及它们的属性和方法。它重点关注的是系统的功能和需求,用于分析和理解问题领域中的业务需求,精确定义需求域中的业务对象及其行为,并将其抽象为类和对象。这个阶段的类图通常比较简单,类的属性和方法不会被具体实现。
在面向对象设计阶段,类图则更加具体和实现化。它代表的是软件系统的具体实现,包括实现方式和代码实现。在这个阶段,开发者需要考虑更多的实现细节和技术问题,例如如何实现对象之间的交互,如何将类的属性和方法转换为具体的代码实现。因此,面向对象设计阶段的类图比较详细,包括类之间的关系、继承、多态等等。
在简单理解上,可以认为面向对象分析阶段的类图更注重业务处理逻辑的建模和分析,而面向对象设计阶段的类图则更注重针对具体编程语言和平台的技术层面的建模和设计。
尝试分析dao包中各java文件的用途。
dao包提供对数据访问的统一接口,dao包中的12个java文件作用如下:
ICla2Sub.java文件:定义了班级和科目之间关联关系的数据访问接口。
IClasses.java文件:定义了班级信息的相关数据访问接口,提供了一种统一的方式来管理和维护班级信息。
ILogin.java文件:定义一个登录功能的接口,该接口描述了与登录功能相关的方法和属性。这些方法包括用户身份验证、获取用户信息等与登录相关的操作。。
IMajor.java文件:定义了一个专业信息获取的接口,实现对专业数据的增删改查等操作。这些方法包括获取专业列表、根据ID获取专业信息、添加专业、更新专业信息等。
Ioperator.java文件:定义了一个操作者的接口,可以通过依赖该接口来使用与操作员相关的数据访问操作。
Ipicture.java文件:定义了一个图片操作的接口,用于描述与图片相关的数据访问操作。它定义了一组方法的声明,用于实现对图片数据的增删改查等操作,并通过实现该接口来提供具体的功能实现。
IPrivilege.java文件:定义了一个侧边栏功能实现接口,可以映射不同操作用户的功能。
IRole.java文件:定义了一个角色操作的接口,实现对角色数据的增删改查等操作。。
IScore.java文件:定义成绩管理操作的接口,用于实现对分数数据的增删改查等操作。这些方法可能包括获取分数列表、根据ID获取分数信息、添加分数、更新分数信息等。
IStudent.java文件:定义学生数据操作的接口,实现对学生数据的增删改查等操作。这些方法包括获取学生列表、根据ID获取学生信息、添加学生、更新学生信息等。
ISubject.java文件:通过定义ISubject接口,其他模块或组件可以通过依赖该接口来使用与科目相关的数据访问操作。
ITeacher.java文件:定义教师数据操作的接口,实现对教师信息的增删改查等操作。
任务7:结合实际教务管理系统的使用体验,分别为高校学生管理软件的教务员和学生设计开发满足用户实际需求的功能。
三类用户测试案例
管理员功能
说明:
管理员可以查看所有班级,所有课程所有学生的平均成绩
说明:
管理员新增数据可视化功能,将各项数据进行可视化,点击柱状图中对应的元素会出现弹窗,提供更为详细的信息。
说明:
将数据使用多种方式进行可视化,使用扇形图来描述成绩分布情况,同时给出对应的各分数段人数统计。
学生功能
说明:
学生仅能查看自己的学科成绩与总体平均分
说明:
学生个人的课程情况与分数分布也会使用对应的可视化方法显示
教师功能
说明:
教师仅能查看他授课班级的学生成绩信息与课程平均分
说明:
教师可以查看课程分数分布扇形图与各分段占比
说明:
可以使用柱状图可以查看他所授课的学生对应的课程分数
将新增功能的软件源代码上传到团队github仓库。
可点击如下链接查看 github作业地址
任务8:在2023-5-22至2023-6-10之间制定实验七任务的进度计划表和任务人员分工,任务实施期间记录完成各项任务实际花费的时间。
-
任务进度计划表
任务 负责人 计划日期 工作内容 任务一、任务七 何*娜 2023-5-22至2023-5-28 (1) 将高校学生管理软件部署在Tomcat服务器,三个组员分别以管理员、教师、学生三类用户登录系统并对不同用户功能进行操作
(2) 结合实际教务管理系统的使用体验,分别为高校学生管理软件的教务员和学生设计开发满足用户实际需求的功能。任务二 宋*婷 2023-5-29 理解分析系统用户功能,绘制高校学生管理软件的用例图 任务三 米*文 2023-5-30至2023-5-31 (1) 理解项目需求简介,采用简易应用规格说明技术,讨论高校学生教务管理系统的软件需求列表
(2) 采用面向对象分析方法绘制高校学生管理软件的类图。任务四 宋*婷 2023-6-1 绘制某一学生用户对象查询课程和成绩的顺序图;绘制教务员课程安排的顺序图。 任务五 何*娜 2023-6-2 理解分析高校学生管理软件中数据库表的物理结构,结合各表外键的定义,正确绘制数据库对应的E-R图。 任务六 米*文 2023-6-2至2023-6-6 (1) 理解分析高校学生管理软件代码结构
(2) 结合MVC软件设计模式特点,采用面向对象设计方法绘制高校学生管理软件的类图。
(3) 采用面向对象分析方法绘制高校学生管理软件的类图。任务六 宋*婷 2023-6-7至2023-6-8 (1) 结合软件开发过程,总结任务3与任务6的类图与源代码中定义类的关系。
(2) 分析dao包中各java文件的用途。
(3) 收集小组成员个人博客撰写内容任务八、任务九 何*娜 2023-6-9 整合撰写博客 -
成员分工
成员 | 分工 |
---|---|
何*娜 | 1.将高校学生管理软件部署在Tomcat服务器,以三种不同的用户身份对系统进行操作。(共同完成) 2.绘制高校学生管理软件的用例图。 3.理解分析高校学生管理软件中数据库表的物理结构,结合各表外键的定义,绘制数据库对应的E-R图。 4.撰写个人心得 5.博客撰写(共同完成) |
宋*婷 | 1. 绘制某一学生用户对象查询课程、成绩,教务员课程安排的顺序图。 2.结合实际教务管理系统的使用体验,分别为高校学生管理软件的教务员和学生设计开发满足用户实际需求的功能。(共同完成) 3.分析dao包中各java文件的用途 4.撰写个人心得 5.博客撰写(共同完成) |
米*文 | 1.分析理解高校学生管理软件的类关系,采用面向对象设计方法绘制高校学生管理软件的类图。 2.分析陈述采用简易应用规格说明技术讨论案例软件用户需求的过程。 3.理解项目需求简介,讨论高校学生教务管理系统的软件需求列表 (共同完成) 4. 将任务上传到团队github仓库。 5.撰写个人心得 6.博客撰写(共同完成) |
- 完成各项任务花费的时间
任务内容 | 预计花费时间 (hour) | 实际花费时间 (hour) |
---|---|---|
任务一:部署管理软件在Tomcat服务器,用户登录测试 | 30 | 40 |
任务二:绘制高校学生管理软件的用例图 | 1 | 0.5 |
任务三 :理解项目需求简介,绘制高校学生管理软件的类图。 | 4 | 6 |
任务四 :绘制学生用户对象查询课程、成绩,教务员课程安排的顺序图 | 2 | 1.5 |
任务五 :理解分析数据库表的物理结构,绘制E-R图 | 3 | 2 |
任务六 :结合MVC软件设计模式特点,绘制高校学生管理软件的类图 | 4 | 6 |
任务七 :为高校学生管理软件的教务员和学生设计开发满足用户实际需求的功能。 | 40 | 50 |
任务八 :制定实验七任务的分工与计划安排表 | 0.5 | 0.2 |
任务九 :完成实验七团队博文撰写 | 2 | 3 |
- 每位团队成员总结实验学习心得。
何*娜:
在这次实验中,我们通过高校学生信息管理软件案例进一步了解了复杂软件系统项目的组织,同时进一步巩固了StarUML软件工具的使用,分析了三类用户主体之间的权限与各类之间的关系,更加清楚的区分了实现,关联,泛化,聚合,组合,依赖这几个主要的类关系。绘制相应的类图更好地帮助我们理解一个软件的系统结构。我在实验中还负责ER图的绘制,各个实体之间的关系较为复杂,但是也十分巧妙,我从中获得了很多实战经验。通过本次实验我认识到,在软件开发的过程中,每一个环节都很重要,这是一个环环相扣的过程,同时也要注重各个部分的细节,有粗有细。
米*文:
本次实验让我受益良多。在分析类图中各个类的关系以及绘制某一用户对象完成学生信息增、删、改的顺序图的过程中,我们遇到了一些困难,通过交流与协商,我们达成了一致意见。同时绘制用例图让各类用户的操作更为清晰。很多时候一个人的想法可能是片面的,但是小组内互相交流、分析之后,就可以更加全面细致地了解问题,给出更为合理的解决方法。
宋*婷:
通过本次实验,我了解到了部分汇总为整体也是极为关键的一步,软件工程不在于简单地编码,而是一个项目工程,各部分高效的有序的结合才是软件工程的意义,这也是我们在需求分析,绘制各类顺序图,用例图过程中得出的重要经验。所以,我发现,在一件小小的工作背后其实蕴含着好多的细节,本次实验也比我们预估时间要久,其中出现了很多我们没有预料到的问题,但都通过小组通力合作成功解决。