需求分析和概念原型-学生选课系统
前言
由于我的工程实践项目是关于安全工具sqlmap的复现,难以完成需求分析,故借学生选课系统进行本次学习。
参考资料:https://gitee.com/mengning997/se/tree/master/ppt
一、需求分析
学生需求:查询课程信息,选择课程,退选课程,查看已选上的课程信息
管理员需求:维护课程信息,可以查询、添加、修改、删除课程信息
二、用例建模
用例(Use Case)的核心概念中首先它是一个业务过程(business process),经过逻辑整理抽象出来的一个业务过程,这是用例的实质。在待开发软件所处的业务领域内完成特定业务任务(business task)的一系列活动就是业务过程。
用例建模的基本步骤:
第一步,从需求表述中找出用例,往往是动名词短语表示的抽象用例;
第二步,描述用例开始和结束的状态,用TUCBW和TUCEW表示的高层用例;
第三步,对用例按照子系统或不同的方面进行分类,描述用例与用例、用例与参与者之间的上下文关系,并画出用例图;
第四步,进一步逐一分析用例与参与者的详细交互过程,完成一个两列的表格将参与者和待开发软件系统之间从用例开始到用例结束的所有交互步骤都列举出来扩展用例。
其中第一步到第三步是计划阶段,第四步是增量实现阶段。
选课系统中有两个角色:管理员和学生。管理员维护课程信息,有查看、添加、修改和删除课程的权限;学生可以查询课程信息、选择及退选课程。用例图如下所示:
三、业务领域建模
业务领域建模是开发团队用于获取业务领域知识的过程。因为软件工程师往往需要工作在不同的业务领域或者不同项目中,他们需要业务领域知识来开发软件系统。软件工程师往往来自不同的专业背景,这可能会影响他们对业务领域的认知。因此业务领域建模有助于开发团队获取业务领域知识形成统一的业务认知。
业务领域建模的基本步骤:
第一步,收集应用业务领域的信息。聚焦在功能需求层面,也考虑其他类型的需求和资料;
第二步,头脑风暴。列出重要的应用业务领域概念,给出这些概念的属性,以及这些概念之间的关系;
第三步,给这些应用业务领域概念分类。分别列出哪些是类、哪些属性和属性值、以及列出类之间的继承关系、聚合关系和关联关系。
第四步,将结果用 UML 类图画出来。
用户类的属性有账户、密码、姓名、邮箱,方法有注册、登录、登出,学术类和课程类是用户类的子类;管理员类有管理员ID属性和查询、添加、修改、删除课程方法;学生类的属性有学生ID和已选课程列表,方法有查询、选择、退选课程;课程类的属性有课程ID、课程名、老师、上课时间、当前学生人数、最大学生人数。下面是四个类的业务类图:
四、数据建模
管理员表:
字段名 | 数据类型 | 是否为空 | 说明 | 键/约束 |
account | string | N | 账号 | 唯一 |
password | string | N | 密码 | |
name | string | Y | 姓名 | |
string | Y | 邮件 | ||
adminId | string | N | 管理员ID | 主键 |
学生表:
字段名 | 数据类型 | 是否为空 | 说明 | 键/约束 |
account | string | N | 账号 | 唯一 |
password | string | N | 密码 | |
name | string | Y | 姓名 | |
string | Y | 邮件 | ||
studentId | string | N | 学生ID | 主键 |
courseList | set | Y | 已选课程 |
课程表:
字段名 | 数据类型 | 是否为空 | 说明 | 键/约束 |
courseId | string | N | 课程ID | 主键 |
name | string | N | 课程名 | |
teacher | string | Y | 教师 | |
time | string | Y | 上课时间 | |
students | int | N | 当前选课学生数 | |
maxNumber | int | N | 最大选课学生数 |
五、概念原型
概念是人对能代表某种事物或发展过程的特点及意义所形成的思维结论。
概念原型是一种虚拟的、理想化的软件产品形式。
选课系统的概念原型的工作过程:
用户分为管理员、学生两种身份,管理员主要对课程进行添加、修改、删除,学生主要选择和退选课程。
选课:学生登录已注册账户,查阅已发布的课程信息,选择报名人数未满且感兴趣的课程,选课成功。