业务概念图是大家比较容易理解的说法,不少资料上提到的领域模型(Domain Model),你可以理解为业务概念模型。
我们课程尽量不使用大家难懂的词汇,下面我们继续以业务概念图来表达。
整理出系统的业务概念,我觉得是多个步骤中,最难也是最重要的步骤。
说它难,是因为:
1.并不是谁都能准确全面地识别出业务概念的。
2.要准确描绘这些概念的关系就更加难。
3.对这些业务概念进行提炼,是难上加难!
说它重要,是因为:
1.这是准确需求理解的基础。
2.这是数据库设计、实体类设计的输入。

在我们公司,尽管《需求规格说明书》中有“业务概念图”的章节,但很多项目经理都不能画好,很多复杂的系统只能画出非常简单的几个业务概念。能否做好其实很依赖于你的功力!
你可能会问:有些公司不用UML,不用类图的,难道他们就不能表达好业务概念?
那当然不是了,类图只是其中一种表达方式,一些公司会通过数据字典或者是详细的文字和表格来说明各种业务概念,不过我推崇的还是使用类图,类图强在方便表达类之间的关系和方便进行提炼!
回到这个考勤系统,考勤系统有什么业务概念、它们之间是怎样的关系呢?
我们强调了业务概念图这么高的难度,你可不要被吓怕了,越难的东西你掌握了你就约值钱!请你尽你所能画出本系统的业务概念图,完成后才继续往下学习噢!
这是一个考勤管理系统,与考勤相关的重要业务概念有:考勤记录、请假记录、外出工作记录。
这个系统涉及到人和部门,故重要业务概念还有:部门、员工。

下载 (14.54 KB)

2009-11-25 14:29

本图列出了关键的业务概念、业务概念的重要属性、业务概念之间的关系,相关业务规则通过注释来说明。
大家所在的公司情况不一样,大家对考勤的理解角度不一样,这个图就会不太一样。
请你比较你画的图与上图的差异,在线提出你的问题,讲师将会解答大家的疑问!考勤记录
其实就是打卡记录。大家去打卡的时候,有想过打卡机记录了什么吗?打卡机记录了你的工卡的ID和打卡时间。
打卡机如何知道这是上班打卡还是下班打卡?其实它是不知道的,只能看时间与打卡顺序。
如:你们上午上班时间是9:00-12:00,但打卡机有一条记录显示打卡时间是10:30,请问这算上班打卡还是下班打卡?
光靠这些信息还不能判断,如果这是该ID当天的第一次打卡,应该算上班记录,如果是第二次打卡,则可能是下班打卡或者是外出工作时的打卡。
我们公司以前中午休息,大家是需要打卡的,下班时打一次,上班时再打一次,这样一天要打4次卡。中午要打卡的规定,导致了很多问题,大家中午很容易忘记打卡,这样就导致一个人一天只有2次或者3次的打卡记录,导致了一些管理上的混乱。后来我们取消掉中午打卡的规定,只需要上午上班和下午下班各打一次卡便可。
你思考这个考勤系统的时候,如何也遇到我们公司类似的中午打卡问题咋办?那就应该先做业务重组,用简单有效的办法来管理打卡。
你可能有这个问题:打卡机不是记录了员工的工卡ID和打卡时间吗?为什么考勤记录这个类没有工卡ID这个属性?
这个问题问得好!
考勤记录与员工这两个类之间是有关系的,我们看到一个员工有多次打卡记录,一次打卡记录只对应一个员工。也就说说这样的对应关系,已经反应了通过考勤记录是能找到相应的员工的,故考勤记录中不需要设工卡ID座位属性。
类似的,请假记录、外出工作记录类都没有“员工ID”之类的属性,绘制业务概念图时,我们不需要在类中体现它们的“外键”,事实上“员工ID”之类的属性,是这些业务类关系的实现方式之一而已,在需求阶段我们不需要也不应该明确这些关系的实现,何况实现方式还有其它可能呢!请假记录:
只有开始时间与结束时间两个属性,你可能会问请假时长为什么不做为属性之一?
请假时长可以由开始时间与结束时间计算出来,这是一个“导出属性”,对于这样的情况,一般不需要在类中再加一个属性,概念图的类的属性,最好都是“原始”属性,不能由其它东西推导出来的。
当然到数据库设计、程序设计时,这些“导出属性”有可能会设计为数据库的字段和类的某个属性,但这是实现方式,绘制概念图时不需要也不应该明确这些内容。
请假是分类别的,类别没有直接放到请假记录的属性中,而是抽离出来。
请假类别是很重要的一个东西,不同的类别请假的流程、薪金减扣计算都不太一样,对于重要的类别,我一般会单独一个类来表示,并通过批注说明具体有什么类别。
这些类别,在数据库设计时往往被设计为单独的一个表,在程序中往往会使用枚举来表示。将这些重要类别单独一个类表示,可方便设计人员思考。外出请假工作记录:
在思考这个类时,其实是有一些业务上的麻烦的。不知道大家外出工作流程是怎样的?
我们需要外出者填写外出申请,标明起止时间和工作内容等,同时要求如果需要外出时你在公司,则你还需要打卡才能外出。
我们之前还曾很“无聊”地规定所有销售人员,就算你当天一整天都要外出,你都需要先到公司打卡,当然我们后来取消这个不人性化的规定了。
不过现在还是存在问题,也就是很多情况下的外出工作,即需要填写外出申请,也需要打卡,也就是要求:外出工作记录与考勤情况应该是一致的,也就是外出工作记录类的注释所写的内容了。这样的要求有一定的管理麻烦,但暂时又想不出更简单有效的管理办法,这就意味着我们的考勤系统需要考虑这样的功能:能方便检查外出工作记录与考勤情况有没有出入。
整理业务概念时,你会有很多思考。考勤系统看上去不复杂,但涉及到每一个人的利益,涉及到公司的管理制度,就不是这么简单了。
当你去做一个业务系统需求分析时,你的工作重点其实是帮助客户重组业务流程,不使用系统手工操作时,很多工作是不严格和随意的,不整改这些工作,系统是无法做出来的。
重组业务是高难度的工作,你现在才重组了业务概念部分,准备下一个挑战吧,重组业务流程!

转:http://www.umlonline.org/school/thread-182-1-1.html

考勤系统的业务概念图相关推荐

  1. 员工考勤系统业务建模+系统用例图

    [员工考勤系统] 现要为某单位开发一款"员工考勤系统",其开发背景和问题如下. 作为 Acme 公司的信息主管,你被委托开发一款新的考勤系统.要求新系统允许员工 记录电子的考勤信息 ...

  2. 实战项目:考勤系统的需求分析

    同学们,你马上就要接受一个实际项目的考验了,你需要运用你所学,全力以赴! 如果你已经忘记前面所学,赶紧去复习! 这个超级演练的教学目标是: 1.学习如何从零开始组织需求开发的工作. 2.学习如何在需求 ...

  3. java毕业设计学生考勤系统Mybatis+系统+数据库+调试部署

    java毕业设计学生考勤系统Mybatis+系统+数据库+调试部署 java毕业设计学生考勤系统Mybatis+系统+数据库+调试部署 本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 开 ...

  4. ssm+bootsrap人力资源考勤系统-JAVA【数据库设计、源码、开题报告】

    摘要 计算机信息技术的快速发展使得企业的传统办公方式不能够在满足我们实际工作中的各种需要,于是企业办公自动化应运而生.办公自动化主要是利用计算机网络技术,使用各种设备结合软件系统来协助完成各种工作任务 ...

  5. 人事管理系统——考勤系统需求分析

    需求分析说明书   一.引言 1.1编写目的 随着企业的信息化和体制改革的步伐,人才竞争使企业的人力资源面临前所未有的挑战.越来越多的企业不断地加大对员工的投资,从而更好地吸引.保留和发展所需要人才, ...

  6. 综合训练(考勤系统)

    文章目录 一.总体分析 1.1需求分析 1.2实现界面 二.代码实现 2.1总体框架 2.2 dao层 2.3 pojo 2.4 service 2.5 test 2.6 util 2.7 ui 三 ...

  7. java计算机毕业设计BS高校教师考勤系统MyBatis+系统+LW文档+源码+调试部署

    java计算机毕业设计BS高校教师考勤系统MyBatis+系统+LW文档+源码+调试部署 java计算机毕业设计BS高校教师考勤系统MyBatis+系统+LW文档+源码+调试部署 本源码技术栈: 项目 ...

  8. 百万员工不上班也能领工资!原来黑客破解了保险公司的考勤系统

    2022年1月,顶象防御云业务安全情报中心监测发现,黑灰产破解多家公司保险考勤系统,还制作出打卡作弊工具,并向保险公司员工兜售"代打卡服务".通过该服务,保险公司员工能够不出门不到 ...

  9. MySQL~表的设计练习(食堂管理系统、车辆违章系统、宿舍管理系统、考勤系统)

    目录 食堂管理系统 车辆违章系统 宿舍管理系统 考勤系统 表的设计有1对1.1对多.多对多三种设计方式,根据不同的业务需求,设计出不同的表关系,关于表的设计在之前的博客中有所涉及,具体请点击查看:表的 ...

最新文章

  1. mysql的条件替换_MySQLwhere条件替换疑问?
  2. 彻底理解mysql服务器的字符集转换问题
  3. CSS3/ 弹性布局flex
  4. 计算机组成原理脱机运算器实验数据,实验三:脱机运算器实验报告.pdf
  5. MapReduce过程卡在reduce处的67%
  6. react网页适配不同分辨率_PC端页面适应不同的分辨率的方法 (转载)
  7. 全局变量的使用和声明
  8. python结构模式_Python程序中的观察者模式结构编写
  9. java jdbc 参数 转义_jdbc URL中的各个参数详解
  10. 操作系统课设实验五---Nachos文件系统扩展
  11. Mac版OneNote同步报错E000006B ctctv
  12. OSPF—DR与BDR知识点及选举
  13. Docker可视化工具 DockerUI 和 Shipyard 的区别
  14. 海思SDK学习(11)海思媒体处理软件平台MMP(10)VGS视频图形子系统
  15. 外行朋友值得一读的5本经典数学书
  16. 一篇文章教会你将nfc运用到极致
  17. Python爬虫爬取手机APP的数据
  18. 王浩:哥德尔思想概说
  19. 二、Qt定时器与文本编辑器制作《QT 入门到实战》
  20. 帆软当表格无数据时不显示表格并显示无数据

热门文章

  1. QT的QFileSelector类的使用
  2. C++11新特性- for语句
  3. JS正则表达式验证数字非常全
  4. 1.VMwareTools的安装,vmware启动的时候,虚拟机黑屏,解决办法
  5. Kettle使用_28 转换之数值范围与字符串操作
  6. html语言调用图片,css文件中怎么引用图片?
  7. tmap的使用_MapInfo教程--二次开发入门
  8. 冷热分离和直接使用大数据库_还不知道HBase冷热分离的技术原理?看这一篇就够了...
  9. OpenCV —数据持久化: FileStorage类的数据存取操作与示例
  10. apache日志记录格式LogFormat参数说明