一个考勤系统的uml

2.gif


一个考勤系统,迟到等异常 会发一个异常通知给员工,员工可以申请到部门领导,部门领导可以申请到hr。hr可以把这条异常记录给你处理成正常的,就是把考勤记录修改了。

uml1.GIF

这样设计可以吗?要是这样可以的话,系统记录每个人的考勤记录怎么记录啊?先找到员工,员工 考勤记录list.add() 保存员工? 考勤记录会很多,这样是不是太慢啊?


首先,看用例图很有些问题。登陆、查询、申请、审批、处理等用例,是不是软件系统关注的重点。其实,这里每一个用例都有可能是某个大用例的步骤,而不需要单独分离出来成一个完整的用例。

写用例是了解需求的过程,那么就应当有个软件愿景——“我要解决什么问题”。有了愿景,就能确定软件要做什么事情,同时确定不要做什么事情。正所谓“软件有所为,有所不为”,这样可以确定软件系统的边界问题了。确定了系统边界,再“由宽及深”的原则考虑哪些业务流程是软件系统需要关注的。用例图有时候也是讲究层次感的。另外,用例的场景是非常重要的,有时候一定要看文字性的场景才能让别人了解到业务细节。

从你的这个例子看,业务重点不是什么登陆查询等软件处理细节,而是诸如员工如何记考勤,如何判定考勤,如何处理考勤,如何通知相关人……

这样看,你的类图和用例图关联不是很大。还有类图只看到各个类的关联,却看不出各个类的重要属性方法。