论软件系统需求获取技术及应用
2020-11-06冯笑媚
冯笑媚
摘要:在信息时代的推动下,很多传统工业也陆陆续续地走上了信息自动化的步伐,如何让传统工业更好地走上信息自动化之路,这也是近几年来我们一直在探讨的问题,下面我将借此篇文章讲术我们实现信息自动化系统的第一步——如何正确获取需求。本文以《绿色车间检测系统》项目为例讲述了软件系统需求获取的技术的选择,及其应用的过程。在本文中首先介绍了几种常用的需求获取的技术,然后讨论了选用需求研讨论会的主要理由与策略,然后通过一个简例说明该技术使用的过程及效果,再通过部分功能的需求来讨论使用其他技术获取系统需求的必要性,最后简要小结了选用多种技术获取系统需求的意义及作用。
在项目开展期间,我担任了系统分析、系统设计等大量工作。
绿色车间检测系统是以车间为载体,融合自动控制技术、计算机技术、物联网技术,将生产设备控制、环境监控、信息管理等功能有机结合,通过对生产环境设备的集中管理,提供更具绿色、安全、节能的工作环境。尽管我们做这类项目丰富的经验,但是我们在开始开发项目之前也要先获取到准确的系统需求。获取系统需求是获取哪些需求呢?一般情况下我们需要获取业务需求、用户需求、功能需求和信息需求等。
为了能准确的获取需求,我们需要采用一些技术来帮助我们,目前常用的需求获取技术有:
(1)需求研讨论会,即可以建立一个由用户、系统分析员和领域专家参加的联合分析小组来共同完成需求的获取。能够减少交流上的问题。
(2)用户访谈法,它是分析人员以个别访谈或小组会议的形式与用户进行初步的沟通。
(3)模型驱动,是一类以定义明确的模型为理论基础,依据模型指导和组织活动开展的需求获取方法,建立用例模型是一种需求获取的有效方法,其简洁清晰的描述方式容易被软件人员和用户共同理解和接受。
(4)文档考古,指对历史存在的一些文档进行研究,从带有数据的文件、表单、报表等文档中获取所需信息的过程。
经过项目组的讨论,我们决定在整个获取系统需求的过程中,先采用了需求研讨论会来获取系统需求,因为该技术能够在短暂而紧凑的时间段内使用用户、技术人员及项目组人员可以在应用需求上达成共识、对操作过程尽快取得统一意见。
下面以一个简单的例子来看,我们的系统需要对连接的生产设备的状态进行实时监控,并显示出来,我们不清楚各个生产设备的工作流程,因此很难把它的业务流程描述出来。如果只是按照我们自己的理解把业务流程做出来,很可能是不符合规定的。采用需求研讨论会,可以从车间里各个岗位的负责人的工作经验中提取出正确的业务流程,保证软件功能的正确性和严谨性。
现在总结一下采用需求研讨论会的实施过程。在召集会议之前,我们先把用户交给我们的系统描述细致阅读了,从中抽出了系统的需求,把功能清晰明亮的需求用用例模型描述出来,把不清晰的部分列举出来,整理出会议讨论主题;接着我们根据车间的生产流程,在每个岗位上都确定一个人员来参与会议,确定完人员名单后,我们把会议要讨论的主题发给各位与会人员,让各个与会人员提前看看讨论的主题,如果是关系人可以确定的问题就可以提前把解决方案发给我们,这样就可以减少专题讨论会的工作量和时间;在开会的时候,我们让经验丰富的产品经理来当会议的主持人,负责引导与会人员围绕我们不明确的需求来展开讨论和进行头脑风暴,直到需求确定下来为止;会议结束后,我们当天就把会议的纪要,以及需求说明书整理出来,发送给各位干系人查看并确认,确保用户同意按需求说明书的要求开发系统。通过这个会议,我们成功地把绿色车间检测系统不明确的需求都确定下来了。
需求研讨论会虽然能帮我们快速地把需求确定下来,但该技术不够灵活,因为很难找到所有关系人都有空的时间来集中开会,尤其是项目比较庞大的时候,组织会议就会有点吃力,因为涉及到的人员越多,集中开会的时间越难确定,开会的频率也不能太高,很难不妨碍客户的正常工作。
通过需求研讨论会我们基本可以把系统的业务需求、用户需求、功能需求确定下来,但是系统的业务流程及信息需求等其他的需求一时间也难以确定下来。我们一致认为可以借助其他的需求获取技术来帮助,把功能业务需求、用户需求、功能需求以外的其他需求确定下来,比如信息需求。我们一开始不清楚工作环境中的空气质量进行实时监控的数据有哪些,为了准确把握好该模块的信息需求,我们使用了用户访谈来确定该模块的需要处理的数据。以下是我们使用用户访谈确定该模块信息需求的过程。
首先,确定访谈的名单;鉴于该模块是车间里空气总质量的监控,我们找了负责管理车间的负责人来作为我们的访谈对象。然后我们把访谈的内容和问题确定下来,并提前发给我车间负责人。接着我们选择了一名有丰富项目经验的项目经理作为主持人,让他根据访谈的内容和问题与访谈对象访谈。访谈结束后,我们快速地整理了访谈的纪要,并把该模块需要处理的数据一一列举出来,写到需求说明书里,并让用户进行阅读确定。经过与车间负责人的访谈,我们能够及时、快速的得到了我们的信息需求。但是如果涉及到多部门的数据时,访谈的工作量就会增多。因此我们要根据需求的内容来考虑是否适合使用访谈。
由于我们打算采用面向对象的技术进行系统的开发,所以首先我们使用了基于用例的方法对需求专题讨论会获取到的需求进行提炼抽象建模,使用用例建模来描述项目的需求,可以帮助我们去理解用户的业务和应用领域,后面我们可以运用面向对象分析和设计方法将用例转化为对象模型来进行详细设计。
为了更清楚系统的信息需求,我们通过文档考古的方式查阅了各个岗位上工作者手头上记录设备的信息,设备操作指南,设备维护记录等数据表及文件,在这些文档中提取了设备信息维护系统中具体要保存处理的数据。
在实现对工作环境中的空气质量进行实时监控的模块功能时,我们对具体的流程不太清楚,因此我们通过了用户访谈的方式与车间的负责人去了解具体的流程和操作。为了提高访谈的效率和效果,我们在与车间的负责人访谈前准备好了与该模块相关的问题和相应的调查问卷,以便我们能得到更具体的业务流程及数据。
通过以上需求的獲取的技术,我们把整个系统的需求都确定下来,并编写了需求说明书与用户签下了确认书,后续我们的开发也是按照该需求说明书作为依据完成的,效果也符合用户的需求。从该项目可以看出系统需求获取技术及应用,对我们软件开发过程影响是很深远的,需求获取技术如何选择应该根据需求的内容来决定,选用高效能的正确的方法,可以使我们软件需求更准确,更有利于我们的软件设计及实现,从而降低了软件项目的风险。