本次DDD实践选取我们都熟悉的高校成绩管理作为例子。

(一).需求描述

  1. 每学期学校教务处老师会进行教学安排,具体就是建立教学班,指定该教学班代课教师,上课学生,然后进行排课(忽略此部分,这是另一个系统)。指定上课学生有下面几种方式:单独一个班上课;多个班合上课;一个班部分学生上课;一个班部分学生与其它班合上课。也有一些教学任务,上课学生是没有规律的,即我们熟悉的选修课,是由学生自由选择的。

  2. 学期末,代课教师会根据自己所授课程上课学生名单登记成绩,经教务处审核后该成绩即可公布。登记成绩时系统需要标识出申请了本门课程缓考的学生,并且不能给这些学生录成绩。对于缺考和作弊的学生需如实登记。

  3. 每门课最终成绩的记录形式由课程考核方式(考试、考查)决定。考试课记录形式为百分制。考查课记录形式为两分制(合格、不合格)。

  4. 每门课的最终成绩计算办法由课程考核办法规定。考查课最终成绩由代课教师直接给出并登记。而考试课根据课程包含的性质(理论、实验、实践)而对应有平时成绩、实验成绩、实践成绩、卷面成绩中的几项(卷面成绩必有,平时成绩绝大部分有),最终成绩由这些成绩加权计算得出(这四项成绩均采取百分制)。对存在缺考、作弊学生该门课程记为0分或不及格。

  5. 最终成绩不及格的课程需要补考(第二学期初进行),如果补考不及格还需要清考(毕业学期进行)。这两个成绩均需记录,且最终成绩根据补考成绩决定:补考或清考及格,记为“补及”,否则记为“补不及”。补考成绩由授课教师录入。清考成绩由教务处老师录入。
  6. 缓考的学生需安排补考,由授课教师录入成绩,成绩处理办法同正常考试相同。

以上需求更接近于高校的实际成绩管理业务,因为各学校的规定也会有差异,如医学类,所以实际情况比这个还要复杂,我们本次只选择这些片段进行开发。

(二).用户故事

  • 作为教务处老师,我要建立教学班,以便教师和学生彼此都清楚他们之间的教学关系

  • 作为教务处老师,我要登记清考成绩,以便根据清考成绩结果调整学生该门课程的最终成绩

  • 作为教务处老师,我要录入课程的考核办法,以便各类成绩录入人在录入成绩时系统根据此方案计算该课程的最终成绩
  • 作为授课教师,我要登记学生的相关成绩,以便算出学生该门课程的最终成绩

    • 作为授课教师,我能登记学生缺考或作弊的情况,以便学校按规定判定学生该门课程的最终成绩
    • 作为授课教师,我要查看本门课程的缓考学员名单,以避免为这些学员录入成绩
  • 作为授课教师,我要登记不及格学生的补考成绩,以便根据补考成绩结果调整学生该门课程的最终成绩

  • 作为学生,我能申请缓考某门课程,以便避免被误认为缺考并能进行正常补考。

  • 作为学生,我能补考缓考的课程,以便取得该门课程的最终成绩。

  • 作为学生,我能查看我各学期学习课程的最终成绩,以了解我的成绩情况和需补考和清考的课程
  • 作为学生,我能查看需补考和清考的课程,以便准备考试

DDD实战成绩管理---用户故事的更多相关文章

  1. DDD实战成绩管理---需求分析

    需求的分析我们采用四色模型.从用户故事中找出MI,然后围绕MI找出其中的role,ppt,des.本次先对两个优先级最高的用户故事进行四色模型建模. 1.用户故事一建模:作为教务处老师,我要建立教学班 ...

  2. 用户故事驱动的敏捷开发 – 2. 创建backlog

    本系列的第一篇[用户故事驱动的敏捷开发 – 1. 规划篇]跟大家分享了如何使用用户故事来帮助团队创建需求的过程,在这一篇中,我们来看看如何使用这些用户故事和功能点形成产品backlog.产品backl ...

  3. 菜鸟Scrum敏捷实践系列(三)用户故事的组织---功能架构的规划

    菜鸟Scrum敏捷实践系列索引 菜鸟Scrum敏捷实践系列(一)用户故事概念 菜鸟Scrum敏捷实践系列(二)用户故事验收 菜鸟Scrum敏捷实践系列(三)用户故事的组织---功能架构的规划 采用Sc ...

  4. 2.windows-oracle实战第二课 -用户管理

    创建用户:在oracle中创建一个用户有create user语句,一般是具有dba(数据库管理员)的权限才能使用.用户创建在所在的实例数据库中. 给用户修改密码:passw 给别人修改密码需要dba ...

  5. DDD实战课--学习笔记

    目录 学好了DDD,你能做什么? 领域驱动设计:微服务设计为什么要选择DDD? 领域.子域.核心域.通用域和支撑域:傻傻分不清? 限界上下文:定义领域边界的利器 实体和值对象:从领域模型的基础单元看系 ...

  6. DDD实战课(实战篇)--学习笔记

    目录 DDD实践:如何用DDD重构中台业务模型? 领域建模:如何用事件风暴构建领域模型? 代码模型(上):如何使用DDD设计微服务代码模型? 代码模型(下):如何保证领域模型与代码模型的一致性? 边界 ...

  7. core3商城DDD实战(一)建模

    我所在学校部门的一个校园商城项目(学生售卖二手物品与发布悬赏求助等,在线上确认,校园内线下交易) 我们使用DDD的软件开发方法,这是我们进入编程世界上手的第二个项目,从创建仓库到现在已经过去二十多天, ...

  8. UDAD 用户故事驱动的敏捷开发 – 演讲实录

    敏捷发展到今天已经在软件行业得到了广泛认可,但大多数敏捷方法都是为了解决某一特定问题而总结出来的特定方法或实践,一直缺乏一个可以将整个开发过程串接起来的成体系的方法.用户故事驱动的敏捷开发(User ...

  9. (l老陈-小石头)典型用户、用户故事、用例图

    一.典型用户 老陈 小石头 二.用户故事 老陈:作为一个家长,我希望能利用软件在电脑上储存一些数学题目,以便在繁忙的工作中也能帮助到孩子提高数学. 小石头:作为一个小学二年级的小学生,我希望能利用软件 ...

随机推荐

  1. 2、Android-UI(关于Nine-Patch图片)

    实例: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android= ...

  2. jquery mobile各类组件刷新方法

      1.Combobox or select dropdowns var myselect = $("#sCountry"); myselect[0].selectedIndex ...

  3. 设置af对 Cookies 的管理

    manager.requestSerializer.HTTPShouldHandleCookies = NO;

  4. linux SVN添加新用户

    首先找到用户文件:authz.conf; 用vi 编辑authz.conf文件在develps 后面添加你要添加的用户名:如图:  上图:cheny就是我后面添加上去的用户名 按Esc :wq保存au ...

  5. oracle 11G dataguard 恢复

    检查主备机的sys 密码是否一致,忘记密码可以修改,同步 .alter user sys identified by xxx: orapwd file=oraxxx.ora password=admi ...

  6. oracle中如何将表缓存到内存中

    oracle快速将表缓存到内存中,使得访问速度加快. 共有2种方法:   1)alter table fisher cache; 2)alter table fisher storage(buffer ...

  7. iOS:多媒体(18-01-25更)

    1.音频 2.视频 1. 2.AVPlayer 1.音频 2.视频 1. 2.AVPlayer 0).写在前面 AVPlayer 主要包含 AVPlayer.AVPlayerItem.AVPlayer ...

  8. 添加一个js扩展方法

    String.prototype.repeatify=String.prototype.repeatify || function(times){ var str=''; for(var i=0;i& ...

  9. C++11 initializer_list 和 Range-based for loop 学习理解

    win10 + vs2017 源码如下: int main() { vector< int > numbers = { 1, 2, 3, 4, 5 }; for (auto num : n ...

  10. EJS 模板中,js 如何获取后端传来的数据

    在 ejs 模板中,想让 js 的代码获得后端传来的数据,要在<%=%>的外面加一对引号. 如下图,从后端给 chatroom.ejs 传进去一个 avatar 变量,是个字符串类型的. ...