关键词:连锁超市MIS系统面向对象原型法系统分析
1系统分析
大型连锁超市MIS系统不同于一般的单超市MIS系统,它的用户需求是复杂而且多变的,系统分析人员很难在设计初期将所有的用户需求考虑周到。同时用户需求的变化将造成系统设计的反复变更修改,可能导致软件产品达不到预期的目标。这些都是传统的系统分析方法难以解决的问题。而面向对象分析方法结合原型法可以很好地解决这些问题。因为不论用户需求如何变化,系统的核心业务是基本不变的,核心业务中的对象也是基本不变的。所以系统分析员可以先对核心业务进行分析,从中提取基本的业务对象,实现相应的对象组件,在此基础上构建原型系统。随后,用户参与开发过程,同开发人员一起逐步对系统进行功能扩展和修改。由于使用了面向对象的分析方法和基于对象组件的开发方法,原型系统功能的扩展可通过添加新类、派生原有类或者修改原有类方法和属性等方式达到目的。在这个过程中只要保证类与类间的接口不变,就可以避免需求变化导致的整体反复修改。这样开发出的系统的可重用性、可修改性、可扩充性较好,开发周期也较短。
1.1核心业务需求描述
连锁配送模式是当前许多大型连锁超市所采用的经营管理模式,它的机构设置和业务流如图1所示(图中方框表示机构,椭圆表示业务,箭头表示数据的流向)。
(3)分店职能:各分店负责销售商品。分店通过收款机(POS机)和扫描枪等设备完成收银工作。每次交易由扫描枪读取顾客购买商品条码,由收款机记录商品销售单并且打印出收银条交给顾客。
(4)配送处理:分店没有进货权,配送中心可以主动向分店配送商品,或者在分店缺货时,根据分店向配送中心发出的配送请求(称之为“点菜”),由配送中心开配送单,随货物一起运送到分店。
(5)要货处理:当配送中心库存中没有分店所要的货物或者数额不足时,由分店直接向采购部发出要货请求。
(6)采购业务:采购部根据采购计划或者分店的要货请求,填写采购订单,然后传真给签订过合同的供货商,要求供货商送货。
(7)送货业务:供货商填写送货单,随采购订单传真和货物一起送到配送中心。
(8)商品入库:对照采购订单和送货单内容验收,开验收入库单将商品入库。
(9)月末结算:财务部每月对当月的配送中心验收入库单和各分店销售单进行结算。根据供货商的商品入库情况和销售情况开具付款通知单向厂商付款。根据各分店销售收入情况开收款通知单向分店收缴营业收入。
(10)仓库构成:各个分店中对顾客开放的卖场、各个分店的仓库、配送中心的仓库可看作构成整个连锁超市企业大仓库的各个仓位。
1.2对象的提取
根据核心需求的描述,提取对象如图2所示。提取对象为:连锁总部、配送中心、分店、采购部、财务部、供货商、合同、商品、收款机、商品销售单、配送中心、配送请求、配送单、要货请求、采购定单、送货单、验收入库单、付款通知单、收款通知单、仓位,连锁超市的经营目标是销售商品获取利润,因此将商品划为目标对象。连锁超市的每一次进销存活动数据全都记录在各种单据和合同里,因此将这些单据和合同划为数据对象。
其中,对象泛化是指对各种单据抽象出“单据”对象。除了收款通知单和付款通知单外,其他单据中单据明细栏均记录了流通的一种或多种商品的编码、数量和价格等信息,因此可以抽象出单据明细项对象。对文员、收银员、业务员、各级经理等这些人员对象可抽象出用户对象。
1.3系统类图
根据对象提取的结果结合核心业务描述设计原型系统类图如图3所示。
2系统设计
2.1数据库设计
因为大多数数据管理库系统使用的是关系型数据库,所以需将上述的对象模型映射到关系模型中,即将类映射为数据库中的数据表,将类的某些属性映射为相应数据表中的字段。机构类、商品类和用户类不存在上层父类,可以直接将类图中的属性映射为相应的各机构表、商品表和用户表的各字段。对于存在继承关系的数据类如单据超类和各单据类,采用只将子类转换成表的办法,父类的属性由各子类对应表收集,这样就得到了配送单表、销售单表等单据主表和保存各单据项的配送单明细表、销售单明细表等单据明细表。
2.2对象组件的实现
连锁超市MIS系统采用了表现层、业务层和数据层三层结构体系。其中业务层是整个系统的核心,体现了整个系统的功能,业务层通常由基于组件技术构建的业务组件构成。在类图和数据库结构设计完成后,下一步就是将类图中的封装业务逻辑的类编程实现为组件。在实际表现层和业务层的开发中,采用了VisualC#作为开发工具。因为VisualC#的优势在于既有助于快速的应用程序开发,又允许大量的控制权。它包含了最新的数据访问技术ADO.NET,而且能很好地与Web应用开发、XML和多重新兴技术集成。选择VisualC#可以极大地提高开发效率。
连锁超市的专用收款机的硬件配置一般较低,不适合运行Windows系统,但是如果为此而更换大量POS机也是不现实的。因此开发运行在DOS平台上的POS机软件是必要的。POS机软件开发的技术难点是如何在16位DOS下与SqlServer通信。SQLServer提供了DB-Library库函数可供在标准C下调用。程序员也可以更方便地在C程序中嵌入SQL语句,在程序编译前使用nsqlprep.exe程序进行预编译,将源代码中SQL语句转换为对应的DB-Library函数语句。POS程序运行时必须有dbnmpipe.exe驻留内存才能保证DOS客户端与数据服务器正常连接。
2.4网络结构和数据库的分布式设计
因此连锁超市信息管理系统有必要采用分布式数据库结构:即一级数据服务器设在总部,二级数据服务器设在各分店。在总部和分店分别安装SQLServer2000数据服务器,整体上构成一个分布式数据库系统。
数据的同步与更新方法:(1)在总部商品表修改时(如总部对某商品统一调价)引发一个触发器,利用SQLServer2000的复制机制在触发器的处理过程中设置总部为发布者,分店为订阅者,由总部向分店更新商品表。(2)在每日交班后的非营业期间,由分店作为发布者向总部订阅者上传各个分店的当日销售单表数据。(3)各分店数据上传完毕后,由总部服务器集中对各仓位库存、各商品销售金额等统计数据进行重新计算。虽然这种数据同步方式使得总部不能实时地监控各个分店的销售情况,但在连锁配送模式下,分店有一定的经营自主权,分店可以实时地根据本地的销售记录作出相应的决策。因此这种同步方式在不影响业务的情况下可适应分店与总部距离较远网络带宽较低的情况。
实践证明,在连锁超市MIS软件开发中采用分析核心业务→提取对象→设计类图→设计数据表→编写组件和用户界面→架设原型系统→需求分析深化→扩充系统功能这样一个反复迭代过程是行之有效的。
参考文献
1NormanrJ.面向对象系统分析与设计.北京:清华大学出版社,1998
2陈世鸿,彭蓉.面向对象软件工程.北京:电子工业出版社,1999
3薛华成.管理信息系统(第2版).北京:清华大学出版社,1993
4李庆发.完全探索Microsoft.net技术战略.北京:中国青年出版社,2002