【排课小工具】项目需求的搜集与整合

打印 上一主题 下一主题

主题 647|帖子 647|积分 1941

计划写一系列漫笔,记录一个工具软件的开发过程,这是第一篇漫笔,写本篇漫笔的初志是帮助我整理一下当前的需求详情,同时复习近来所需的软件工程相关知识,如果能对读者有所帮助,那算是这篇文章产生的额外价值了。需要注意的是,这不是一篇遵循尺度规格的需求文档,因为其中可能夹杂着知识注解和引用,以及个人观点。
背景信息

在小学练习期间(2024年3月1日 - 2024年7月10日),与老师的交流中发现,每当新学期开始都要人工排一次课表,并且这个过程较为繁琐,总是遇到教师课程冲突的状态,一旦发生这种情况,在重排的过程中就会影响到诸多已经排好的项目。如果能够解决上述排课冲突题目,那将会给排课老师带来极大的便利,这便是我着手开发这个小工具的初志。除此以外,在近来的软件设计师资格测验备考期间,较为全面但却相当浅薄的学习了软件工程相关知识,思量到使用工程化的方法流程解决该课题的过程会增进我的软件工程技能,这是我能坚持做这件事的原因。以上便是该项目的背景信息。
需求概述

该软件的定位是一个具有单一功能小工具,运行在单一用户的电脑上,在操作上,该用户通过某种方式输入课程相关数据,提交过后程序将全年级的课表以某种格式输出出来。排课效果应遵行基本的原则是一个教师不能在同一天的同一课次出现在两个或多个不同的班级,除此之外还有一些次要约束。用户期望每个班级的课表以一个带有指定样式的 Word 文件输出出来。用户希望该工具的操作界面应该尽可能简单,数据的输入可以在 Excel 表格中举行,输出的信息可以直接投入使用,而不必再次经过手工处置惩罚。
在与实际用户详细沟通需求之前,我已经交付了一个简陋的应用原型,该原型实现了用户所需的主要功能,在该原型下,用户的工作流是这样的:首先用户在一个 Excel 工作区中分别建立课表模板课程信息、以及职责分配信息这三个表,完成上述表格的编辑后,打开软件将该 Excel 工作区导入,并选择课表的输出路径,其中一个可选项为是否在输出效果中显示每节课的教师名称,随后提交数据,程序输出一个 Excel 工作区,该工作区中包含所有班级的课表数据。

用户对此软件的使用工作流比较满意,在背面的交流中用户依旧表示可以继续沿用这种数据的输入与输出方式,在操作界面上不需要有过多的更改。经过进一步地沟通,现在基本上已经可以确定用户的需求有哪些:
界面需求

用户对于程序操作页面没有添加新的要求,所以可以延续原型的样子。
在输入上延续原始的输入方式,即用户在 Excel 工作区中编辑三个表,分别是课表模板表、课程信息表以及教师职责信息表。
模板信息表的第一行用来标注星期(从星期一到星期五),第一列用来标注上课的节次,在接下来的行和列中,空单元格预留给待分配的课表项目,将固定分配的课表项目填写到指定位置,这代表该年级中的每个班级都会在这个时刻上这节课,且不会出现课程冲突,这种固定项往往出现在天天的最后一节课或者每周的班会课。
课程信息表的第一行数据为四个课程属性:序号、课程名、每周上课次数以及优先级,其中优先级决定了那些学科分布在课表的前列,那些分布在后列。经过商议,该用户不需要编辑优先级这一列的值,因为一年级的课程信息几乎没有变动过,总是语文、数学以及科学占满了每个班级、每一天的前两节课,其余的科目不做过多的限定。所以在接下来的设计中不在提供给用户编辑优先级的接口。
教师职责信息表的第一行数据为课程信息数据,该行数据应该与课程信息表中的课程名信息保持一致,其实这两个表可以合并为一个表。第一列数据为班级,每个班级以及科目决定一位教师,这是这三个表中最为关键的一个表。
在输出上用户提出了新的需求。用户希望每个班级的课表输出在一个 Word 表格文件中,并且设置为指定的样式,这样就可以直接使用该输出效果打印每个班级的课表。该样式是这样的:


功能需求

编号  名称  说明
1  无时间冲突  在某一时刻(同一天的同一节次)一个教师不能被分配到两个或两个以上不同的班级
2  分级添补  高优先级的科目应尽可能添补课表的前半部门,低优先级的科目只有在高优先级科目分配完成后前半部门依旧存在空缺的情况下才能分配到前半部门
3  完备性检测  要确保所有教师负责的科目的总节次的数量等于全年级课表可分配节次的总数。同时每个班级各个科目被分配的相应课程的节次总数等于课程信息表中指定的次数。
4  非连续性分配  不能让同一个班级在同一天中连续上同一个学科的课程
5  均匀分配  同一学科的课程应尽可能均摊到每一天中
总结

除了上述界面需求以及功能需求外,用户在性能、文档、安全保密、可靠性以及其他非功能需求上没有做要求,所以我自然不必在这些需求上投入过多的时间和精力。在已经开发完成的原型程序中,已经实现了上述功能需求中的第 1,4,5 条,可是代码相适时人难以直视。焦点文件是一个 python 单文件,GUI 使用 QT 构建,终极形成的竟然是一个超过 44M 的可执行文件。暂且不谈这个程序的臃肿程度,在我的焦点代码中,使用的 for 循环层数达到了 4 层,我希望接下来能够找到一种实用于课表的数据结构以及算法来缓解这种题目。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

用户国营

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表