【系统分析师】高分论文:论信息系统开发方法及应用
【摘要】
本文以某国有企业的 B2B 商品棉交易平台的电子商务门户网站系统(以下简称“门户网站”)建设为例,讨论信息系统开发方法及应用。本文作者认为项目实施中选择合适的开发方法,既能满足用户需求,又能提高整个项目的交付质量,对整个项目起着至关重要的作用。本文结合项目组工作的实际经历,先是概要论述信息系统开发工作所包含的内容,然后说明项目中所采用信息系统的系统开发方法,以及应用这些方法对整个项目软件开发过程所起的作用,以及相应产生的效果。在项目的建设过程中,本文作者承担了 需求开发、系统总体设计和部分核心代码的工作。该项目总历时10 个月,通过合理应用信息系统开发方法使得系统满足了用户需求,系统上线一年多时间,集中储备棉交易过程没有出现问题,系统运行平稳,获得了用户的好评。
【正文】
某国有企业为响应国家“互联网+”战略,对其原有的商品棉交易平台(以下简称“原交易平台”)制订了系统改造的计划。计划将原交易平台的业务功能进行面向互联网用户的访问方式与浏览习惯的重新设计;规划了棉花“电子仓单”HTMLS 的展示平台、棉花交易后物流运输申请与棉花专业仓库保管平台,以及具有数据分析等相关功能的 B2B 电子商务门户网站。
该国有企业为了这个门户网站系统组织了系统建设的招标,2023 年2 月我公司顺利中标并签订了合同,随后成立了项目组。我在项目中承担了需求分析、总体设计和部分核心代码的编写工作。该系统包含了棉花的电子仓单子系统,棉花交易后的运输申请、运输核查子系统,棉花存储到专业仓库的入库预约子系统。
本项目在开发中主要使用 Java 作为开发语言,采用 Springmvc+Mybatis 作为开发框架;采用Oracle数据库来存储结构化数据:采用了 Redis 作为分布式缓存,并将用户数据、权限数据、数据字典等结构化数据放到 Redis 里减少对数据库的请求,提高系统响应时间:对于系统用户行为日志、系统间数据交换日志等非结构化数据,使用 Mongodb 来存储;我们使用 Fastdfs 做系统的分布式文件存储大量的运输申请单扫描件、运输核查图片等小文件。
我首先阐述主要的信息系统开发方法的内涵及特点:然后结合项目的实际情况,再论述项目组采用了哪些信息系统开发方法:最后总结项目组在使用这些开发方法过程中出现的问题。目前主流的信息系统开发方法有以下几种:
1. 结构化方法
结构化方法也称生命周期法,其精髓是自顶向下、逐步求精和模块化设计。基本思想是将系统生命周期划分为系统规划、系统分析、系统设计、系统实施、系统维护的阶段。开发过程是先把系统功能视为一个大的模块,再根据系统分析与设计的要求对其进行进一步的模块分解或组合。
2. 面向对象方法
面向对象方法认为客观世界中的任何事物都是对象,每一个对象都有自己的运动规律和内部状态,都属于某个对象“类”,是该对象类的一个元素。复杂的对象可由相对简单的各种对象以某种方式而构成,不同对象的组合及相互作用就构成了系统。主要采用 UML 的各类图来表现系统建模与开发的过程。
3. 原型化方法
原型化方法是根据用户初步需求,利用系统开发工具,快速地建立一个系统模型展示给用户,在此基础上与用户交流,最终实现用户需求的信息系统快速开发的方法。
4. 面向服务的方法
面向对象的应用构建在类和对象之上,随后发展起来的建模技术将相关对象按照业务功能进行分组,就形成了构件的概念。对于跨构件的功能调用,采用接口的形式暴露出来进一步将接口的定义与实现进行解耦,则催生了服务和面向服务的开发方法。
通过仔细分析上述系统开发方法的特点,我们决定综合运用多种开发方法组合,发挥各种开发方法的优势来指导我们项目的开发过程。
首先,我们按照结构化方法的生命周期将系统整个开发过程划分为需求、分析、开发、测试的四个关键的里程碑阶段,并规定每个里程碑的交付物。对于交付物的内容和形式,经过项目组讨论我们决定采用面向对象的 UML 的用例图、活动图、序列图为主要交付物,并采用 JAP 的方法组织相关项目关系人对每个里程碑的交付物进行评审。如在需求阶段,项目组采用用例图和活动图,识别和标识了需要使用系统的用户角色和外部对象;普通用户可以浏览棉花的电子仓单以及仓单对应的棉花质量信息:棉花运输的企业对应新建入库预约、运输申请和运费补贴申请三个用户角色,同时还需要对申请业务提供审核功能:对普通企业、交易商、运输核查企业提供注册、角色审核、角色添加等功能。先通过识别系统参与者,然后再对每个用例编写用例规约来详细描述系统应该实现的功能与功能的事件流。通过对用例图与用例规约的评审,形成 SRS 与需求基线。
其次,在此基础上项目组开始使用快速原型化方法。项目组使用 AXURE 软件作为原型开发的工具软件,编写了大量系统原型页面,有些页面甚至可以通过页面的交互演示系统功能之间调用关系与过程。完成一轮原型页面的编制后,我们组织了相关的项目干系人,结合需求基线的用例规约与系统原型,进行原型的讲解与评审。对手通过了评审的功能原型,我们优先安排进行系统设计与数据模型设计:对于未确认的部分,我们再次通过召开 JRP会议,组织相关用户甚至邀请用户高层领导参与,对评审中有二义性和不确定性的需求进一步明确,然后重新修改原型和用例规约的描述。
最后,通过对原型与用例规约的分析,项目组设计了系统需要实现的类以及为了实现某个功能的类的组合形成了系统的业务构件。例如,通过对用例的扩展关系和包含关系进行分析,项目组构建了一个“用户中心”,把所有跟权限系统相关的用户、角色、菜单、组织机构(企业)等封装为实体类,并提供对这些实体类的 CRUD 操作,进行统一的用户管理与权限管理。
对“用户中心”里的每项服务,我们需要进行服务识别、服务规约描述与服务粗细粒度的划分。如我们设计了一个企业查询的服务,此服务支持系统中普通企业、交易商、运输核查企业的查询,三类企业的基类都是企业这个实休类,所以企业查询这个服务返回的数据部分包含如企业名称、企业信用代码证号、注册地址等跟企业基本信息相关的数据。如果是普通企业仅需要这些基本信息就可以了:如果是交易商的企业数据则还需要加上收费用户相关信息:如果是运输核查企业需要添加政策性用户相关信息。因此对企业查询服务类,我们就只要实现一个服务来支持其他功能查询企业的需要。我们通过采用面向服务的开发方法,对服务识别、服务编排组合、服务粗细粒度的划分,形成了系统数据字典与业务基础数据服务层、服务调度层。借助面向服务的开发方法,减少了开发工作量,避免了重复功能开发,提升了开发系统质量。
我们通过在本项目中采用多种系统开发方法相结合的方法,利用各种开发方法的优势来指导我们的系统开发过程,保证了整个项目的高质量交付。系统交付后的新棉花年度的交易高峰期,该国有企业商品棉的交易量大幅增加,由此我们也获得了客户的认可。当然在本项目的系统开发过程中还存在一些待改进的地方。在实际使用过程中,我们对各类方法的应用和使用有一定分歧,因此需要我们花费较多精力来讨论使用这些方法的合理性。但从总体上来说,项目顺利交付客户,本项目采用的系统开发方法是比较合理的。