接手项目之后,就是了解项目需求,由于都是同一个公司的同事,而且当时在测试组学习,所以了解需求非常方便,大家也使用过旧系统,对系统的了解较为深入,对需求的描述还是比较准确的,了解下来几个主要的需求是:
- 系统基于web,方便在线使用
- 支持多用户操作,用户分为管理员,操作员和借阅者,借阅者应包含部门信息
- 提供的借阅内容分为公司硬件设备和图书
- 提供设备登入和借用,归还服务,其中设备和图书由操作员登入系统,登入系统后方可借用,借阅者借用可以选择借用时间,提供三次续借功能,过期设备在提前一个星期发送邮件到借用者邮箱。
- 设备状态支持管理,设备如损坏和丢失,系统可以更新状态,设备在这几种状态下不能借用。
- 操作员拥有设备可以通过管理员变更其他操作员。操作员登入设备默认为操作员所有,管理员登入设备须指定所属操作员。
在信息系统中,首要的任务是识别数据和设计数据库表,系统中主要数据对象有:用户,部门,设备,图书,借用关系。其中由于不同设备类别信息不一,须针对每种设备设计数据表。
在设计好数据库之后,就是分析数据流和业务,在信息系统中,我采取的是面向数据的分析方式,分析的思路是数据的变化和关系之间的维护,在设计上体现为数据库操作语句和触发器脚本。
在分析好系统之后,就是着手实现,由于当初没有敏捷开发的概念,在采用CodeIgniter的MVC模式,从数据表开始参照表编写模型,将多个表编写完成模型后,在实际集成时发现编码和实现存在诸多问题。同时由于采用面向数据的思维方式,将同一业务多次实现,比如设备变更所有者。实际上可以将一些业务抽象出来,用不同的对象去适配方法,类似策略模式的实现。