基于MS Office的企业项目管理系统的设计

2013-10-20 08:36严永慧
微型电脑应用 2013年4期
关键词:文档界面建模

严永慧

0 引言

微软的Office 软件是世界范围内用户最多,使用频率最高的软件。 一般用户对于Office 的理解都定位在文档编辑,电子表格制作,数据处理方面。 其实,Office 的功能非常强大,特别是MS Access,以其简易开发,方便部署,成为桌面应用的首选。 我们在这里将从标准程序开发的角度,来讨论利用MS Office 解决特定的企业应用开发的问题。

本文将以通用汽车公司的一个实际案例来展现MS Office 开发的优势,并在之后加入一些问题和讨论。

区别于小型Access 应用的界面功能开发模式,我们将讨论基于标准的软件开发流程的MS Office 应用开发,以下将从需求,定义,开发,测试,发布几个阶段来逐步展开。

1 需求

1.1 背景

通用汽车在全球有其汽车备件的独立售后部门, 独立售后部门开发设计和经营全品牌全系列车型的备件。 其中,独立售后部门的产品开发部,每年都会有大量的产品开发需求 (1500个 到 2000 个产品线每年),每条产品线的开发项目都要遵循通用汽车的售后产品开发流程(比较复杂冗长的流程),流程中很多步骤需要不同分工的员工参与,而产品开发部门只有20个员工,本身的人员结构非常精简,如何让这20个员工有效的掌握和跟踪各个项目的情况,如何搭建一个公共的平台以便员工交互和协同工作,如何构造准确的报告系统来反映各个项目的状况,这些便是我们将要讨论的应用软件的开发背景。

1.2 系统需求分析

在了解用户业务需求的同时,我们也需要了解用户的系统需求,以选择合适的软硬件架构来进行开发,或者判别当前的系统架构能否满足用户需求。

对于独立售后部门产品开发部的项目管理软件,主要的系统需求如下:

1) 系统使用者为产品开发部员工,用户数为20人,用户希望使用的界面为窗口UI,界面语言为英语,用户期望的报告的格式为Excel 和 PPT。 虽然整个项目管理工作流程步骤较多,但基本属于线性流程

2) 数据方面,每年有 1500-2000条主记录,不需要使用记录锁,但需要记录修改日志,记录改动时间和操作者的用户ID。

3) 用户必须登录才能使用系统,基于不同的用户组,有只读和修改记录的权限差别。

4) 编辑或保存记录时,系统响应时间需控制在1S以内,运行单张报告时,报告生成时间需要在15S以内,系统对数据的安全性要求高,业务数据邪路后对公司的影响很严重。基于开发和软件使用预算,开发周期考虑,我们决定使用MS Access 2003进行开发,并在内网内运行,让我们来做一个交叉分析看看是否可以满足这些主要的系统需求。

1) 程序开放给通用员工,并在内网内运行,可以保证系统使用者仅为产品开发部员工,20个并发用户也是Access 2003可以满足的,利用Access的表单来做窗口UI,界面为英语。 利用 ADO 和 Excel对象及PowerPoint对象实现报告格式为Excel 和 PPT。

2) Access2003完全支持每年1500 – 2000 条主记录的记录量。 不使用记录锁简便了编程复杂度,可以利用Access 的内建机制控制同时编辑同一条记录的情况。可以利用VBA编写代码实现记录修改日志功能。 数据备份可以通过Windows Bat进行定时数据库级备份,恢复时需人工干预。

3) 利用 Access 的work group 概念实现用户登录,通过Security.mdw 控制用户权限。

4) 数据库建表需要满足第一,第二和第三范式,保证对于万条级以下数据访问时系统响应时间在1S以内,运行报告,15S以内,另外超过 5年的记录可以考虑归档。 Access 本身不具有高的数据安全性,只能通过公司防火墙和文件监控等措施实现数据安全。 另外为避免数据泄露后对公司的影响,程序仅局限在内网运行,公司内部可以通过培训和保密协议方式防止数据外泄。

根据上述交叉分析的结果,MS Access 是一个合适的实现该项目管理软件的开发平台。

1.3 报告,界面及其他需求

用户需要有一个统一界面包含项目的主要信息,每个Gate和Sub Gate都需要有3个时间参数,Budget Date,规划时间;Forecast Date ,预测时间;Close Date,Gate 结束时间。

界面需求可以和用户通过图表,草稿,白板等方式确定。

用户期望各种类型的报告以便分析项目的进展状况以及对售后产品部的全部项目情况有一个了解,通过和用户沟通,使用图表,草稿和白板等工具确定报告格式。

本系统基于快速软件开发和敏捷方法,所以会把主要需求了解后逐步完善其他需求。

2 定义

定义阶段包括需求的文档化和系统建模。

2.1 需求文档化

和标准的软件开发流程不同,我们的需求文档化的主要目标是为开发者理清思路,为后续开发和维护者提供文档参考,所以需求文档可以精简并着重于开发人员的理解,所以也不需要用户签署和确认需求文档。 (如果是作为供应商或者是第三方进行开发,还是需要用户确认需求文档)

2.2 系统建模

架构建模主要基于系统需求分析。 参考上述的4条系统需求。 架构建模方案如下:

1) 系统运行于局域网,采用 Client Server 结构,对于Access ,即每个用户使用系统时都可以得到一个客户端副本。数据库/ 服务器端放在共享文件夹上。

2) 客户端和数据库的采用table link方式连接。

3) 定制 Access Form 作为用户界面, 使用 VBA 调用Excel Object 和Powerpoint Object 运行报表。

4) 使用Access Workgroup,用户需登录才能访问文件,对于授权用户,权限分 Data User (Read and Writer) 和Read Only 两种,用户初始用户名同通用汽车的GMID(Unique ID for each user)。

5) 考虑到系统升级能力 (Access 数据库升级到 SQL Server),所以使用到的Sql 查询均使用标准Sql 查询语句。

6) 使用ADO (Advanced Data Object) 对象,所有数据库对象和VBA对象对用户隐藏,让用户感觉为标准应用程序。

这里讲述一些Access 开发经验,为了保证开发者的开发测试环境不影响用户的使用,所以通过Windows脚本和文本配置文件实现开发和部署的操作。

创建一个Windows Bat 脚本

脚本范例如下:

使用这种方式可以模拟达到系统发布的效果,开发者只需在服务器上更新最新版客户端程序,用户在需要打开客户端时会自动下载最新更新的程序,省去了每次把更新的客户端发给每个用户的麻烦。

基于产品开发流程和界面需求进行数据库设计,设计主要考虑几方面,项目主数据:唯一性,一个项目有1条主数据。 时间数据:每个时间节点有3个时间参数,Budget Date, Forecast Date, Closed Date,每个项目有若干时间节点,项目成本/盈利计算。

快速开发的数据库设计文档和需求文档化一样,要求文档简单明了。 这里采用Excel 表作为数据库设计文档,文档中表述了数据类型,字段名,字段长度,主键/外键,数据范例,备注。

2.3 数据库建模

基于产品开发流程和界面需求进行数据库设计,设计主要考虑几方面,项目主数据:唯一性,一个项目有1条主数据。 时间数据:每个时间节点有3个时间参数,Budget Date, Forecast Date, Closed Date,每个项目有若干时间节点,项目成本/盈利计算。

快速开发的数据库设计文档和需求文档化一样,要求文档简单明了。 这里采用Excel 表作为数据库设计文档,文档中表述了数据类型,字段名,字段长度,主键/外键,数据范例,备注。

3 开发

3.1 定义表结构和窗体

参照数据库建模文档在Access 数据库中创建表结构。

参照用户需求文档及相关资料(草稿,白板画等),进行界面设计,Access 的窗体设计和VB 的窗体设计类似,包含基本应用程序所用到的控件,考虑到程序移植性和安装部署的简单化,不建议加入外部控件。

3.2 定义过程和相关Sql语句

在某些用户窗体交互过程或者报告创建过程中,需要发生数据库查询存取动作,如架构建模中提到,本应用程序中所有数据库查询存取操作均使用 ADO和标准 Sql 语句实现,方便以后的数据库升级。 由于是Client / Server 结构,查询过程可以使用Access 自带的的Query功能实现,以简化代码量。

需要注意的是建议将所有的Sql语句放在Access Module中统一定义,方便以后维护,如图1所示:

图1 Query 设计窗口

ADO引用,如图2所示:

图2 ADO引用窗口

过程中引用:

3.3 定义报告

由架构建模所描述,本应用程序使用 Excel 和PowerPoint作为报告工具,好处是报告易于用户接受,灵活度高,格式控制方便,缺点是开发复杂度高于一般报告工具,经常需要大量代码代入。 比较好的经验是从用户处取得报告模板,比如手工制成的某个月度报告等,在此基础上稍加改动完成报告。

报告运行脚本示例:

3.4 和其他程序接口

应用程序是否和其他程序有接口,是否需要定时导出某些特定格式的文本。 在售后产品中心的案例中,有一个每天自动通过Lotus Notes 发出当日Forecast Date Change eport 的需求。

具体实现通过在安装有 Lotus Notes客户端的电脑上设置Windows计划任务,调用Access 里设置好的Marco,该Marco调用一段VBA,完成报告文件生成和发送的动作。

同样的方法,我们还可以应用于Ftp, SFtp或其他特定的接口环境。

Windows 脚本内容:

其中/x McrAutoMail 是调用 Access 中名为McrAutoMail的宏的语句

McrAutoMail调用 FcstDateChangeCheck() 过程和GenerateEMails() 过程,其中GenerateEMails() 过程还调用NotesMailNewDraft(xx,yy,zz) 函数,可以传入邮件接收人,邮件主题,抄送人,暗送人,主文本,附件等信息。 这些信息的来源可以是文档或者是一张Access Table,是邮件发送控制更加灵活和简单。

VBA调用Notes对象发送邮件的代码部分略。

3.5 功能菜单化及Access对象保护

我们需要将用户会接触到的表单,报告命令,宏等,通过Access 的Switch Board功能组织起来。 并通过Access的一些设置对一些 Access 基本对象如表,查询,Module等进行保护。

Access 基本对象保护:

将对象设为隐藏,设置该 Access 文件的起始表单为SwitchBoard (如果设置过SwitchBoard该项会自动设置),并在Access程序设置里禁用完整菜单,禁用默认快捷菜单

在功能菜单化和基本Access 对象保护后,用户打开应用程序就感觉不到是一个Access 的数据库,而是一个实实在在的应用程序。

4 测试及发布

在敏捷方法中,每完成一个模块,开发者都可以通过自测和用户测试得到该模块的测试报告,通过持续的再分解来改善代码质量并使用不与其系统将来的变更的简单设计,来支持简单的维护。

界面的设计,报告等,都可以随时和用户交互来改变设计方案和方向。

最终得到用户需要的应用。 需要提出的是在该Access应用设计当中,每个模块,每个过程或者函数,都需要加入错误控制代码,在出错时可以反馈出具体位置和错误类型。

如:

发布在程序安装系统需求设计后就会变得简单很多,开发者只要把自动下载并打开英语的 Windows Bat 文件发给本地用户,并提醒用户首次登陆后需要更改用户密码即可。之后的版本发布开发人员只需在共享文件夹上更新客户端程序即可。

5 问题思考和功能改进

本项目管理软件在通用汽车公司的售后产品部得到了充分的应用,从08年使用至今,经过10次左右新功能发布后趋于完善。

如何让该软件能够适用范围更广,以便用于普通的项目管理。 我们可以考虑加入一个数据库初始化的功能,让用户定义自己的项目管理流程,每个节点的名称,通过用户的配置生成配置文件,并基于配置文件初始化数据库的表和一些表单的Sql语句等。

架构和配置方面,由于是Access 客户端,所以Client/ Server 结构是不可改变的,程序中有访问到C:Temp 这个文件夹。 可以考虑在 Access 的VBA 里加入读取Windows注册表信息功能,找出Office 的安装路径,并在C盘没有Temp文件夹的情况下创建Temp文件夹,在程序退出后删除此文件夹。

6 总结

本文可以作为利用快速软件开发及敏捷方法,设计一款基于特定需求的软件的参考文件。其中灵活运用了Windows 批处理文件,计划任务和MS Office 的强大功能,达成以低成本, 快速开发,便于维护为目的并有升级空间的应用开发。同时也给出了MS Office 适合应用的业务场景和一些开发技巧。

[1]刘少英.国外经典教材•计算机科学与技术•软件开发的形式化工程方法:结构化+面向对象+形式化,[M]清华大学出版社,2008.

[2]科克伯恩.小团队的敏捷开发方法,[M]清华大学出版社.2006.

[3]巴尔特.Access 2007开发指南,[M]人民邮电出版社.2008.

[4]戴维斯.VBA从入门到精通(第2版),[M]电子工业出版社.2008.

[5]Excel VBA Tutorial Part 8 - Excel Objects [K/OL].http://www.excelfunctions.net/Excel-Objects.html.

猜你喜欢
文档界面建模
浅谈Matlab与Word文档的应用接口
有人一声不吭向你扔了个文档
联想等效,拓展建模——以“带电小球在等效场中做圆周运动”为例
国企党委前置研究的“四个界面”
基于PSS/E的风电场建模与动态分析
不对称半桥变换器的建模与仿真
基于FANUC PICTURE的虚拟轴坐标显示界面开发方法研究
人机交互界面发展趋势研究
基于RI码计算的Word复制文档鉴别
Persistence of the reproductive toxicity of chlorpiryphos-ethyl in male Wistar rat