《软件需求工程(第2版)》一3.3 确定调查对象

    xiaoxiao2021-07-07  273

    3.3 确定调查对象

    本阶段的基本任务是明确地确定来自不同层次的需求来源和用户,并将其分类。谁是产品的用户这是必须搞清楚的问题。直接从软件系统的实际用户收集需求是非常重要的,因为导致开发项目成败的主要原因是缺乏用户参与以及最终形成的用户需求不完整。在需求获取中容易产生的问题是对不同层次的需求信息易于产生混淆。例如,能提供目标需求的人不能提供具体的功能需求,因为他们不是实际的使用者。而有些用户能描述软件系统应完成的任务和业务流程,但他们有时不能提供完成这些任务的所有功能需求。因此,确定不同层次的需求来源和用户成为本阶段的基本任务。由于软件的需求分为三个层次,即目标需求、业务需求和功能及非功能需求等,故应根据需求的层次来区分不同的用户。1)提出目标需求的用户。能支付或采购软件系统费用的用户,即客户,如工厂或公司领导人和高层管理人员。他们的任务就是要阐明软件系统的高层次概念,如开发项目的目的和目标、总体规划,以及主要的业务内容,但他们提供不了所有具体的细节。2)提出业务需求和功能需求的用户。这些用户是直接或间接使用系统的用户。他们相当清楚要使用该系统完成什么任务,以及系统应具备的重要功能和特性等。虽然他们能描述其业务流程和具体业务,但不一定能提供计算机系统,特别是软件系统应实现的所有具体功能和非功能需求。3)软件开发人员,主要是指系统分析员。系统分析员虽然不是用户,但他们必须从用户的角度,根据用户提供的需求信息和业务流程理解和分析出软件系统应实现的具体功能和非功能需求,从而使软件系统能按照用户要求完成任务。软件开发人员也将根据这些需求设计和实现软件系统必须具有的功能和特性。软件系统面临的用户是很多的,这些用户由于所在的部门、职责和掌握的知识不同而存在差异,如直接使用和非直接使用软件系统的用户、不同的专业知识和计算机系统知识、不同的部门和业务过程等。这些用户都将有自己的一系列功能和非功能需求,如没有经验且偶尔使用计算机的用户希望系统操作简单和易使用等,而利用系统完成计算工作的用户则希望系统能计算正确且速度较快等。为了避免忽视和遗漏某些用户的情况,可以根据用户的某些方面将用户分类,例如:根据用户所在的部门和职责,如计划部门、销售部门、财务部门等;根据用户使用系统的频繁度和优先级等;根据用户掌握的计算机知识和使用计算机的熟练程度;根据直接使用和非直接使用软件系统的情况,所谓非直接使用软件系统是指这些用户是通过报表或其他应用程序访问系统的数据和系统提供的服务。在将用户分类后,进一步寻找每类用户的代表或联络人。这些人代表特定的用户类,并可充当该用户类与开发人员之间的“窗口”。当然,这些人也必须是真正的用户,而不是单纯的代理人。开发人员通过与他们的直接交流和协商,可获得大量的和不同用户的需求信息。每个用户代表从他所代表的用户类中收集需求信息,协调他所代表的用户在需求表达上的不一致和矛盾,为用户类整理成统一的需求信息。此外,用户代表应具有如表31所示的义务[14]。

    软件需求可来自各个方面,而且用户类也不一定都是指人。有时也可以把其他应用系统或计算机硬件设备和接口等视为附加的用户类成员,这样就可确定软件系统与外部应用系统或计算机硬件相关的需求。这就是说需求信息除了来自用户类外,还可来自于其他方面。因此,为了不遗漏必要的需求信息,还需考虑从哪些地方能收集到需求信息。下面是几个典型的软件需求来源:1)直接和间接使用软件系统的用户。这是用户需求的主要来源。可采用直接交流的方式获得他们的需求信息。2)系统需求规格说明。其包括对软件和硬件的需求规格说明。当其中部分需求与软件系统相关时,从中可获得对软件系统的一些功能或非功能要求。3)市场调查和用户问卷调查。此调查有助于从众多用户那里获得大量的需求信息,然后经过分析从中获得一些有用的用户需求。4)已开发出的和待开发的同类软件系统的描述和文档。从同类软件系统的描述和文档中获得类似的用户需求。不过由于系统间存在着差别,不能生搬硬套同类系统的用户需求。5)对人工系统中存在的问题的报告和增强要求。人工系统是指现实中已存在的手工操作的系统。通过收集用户在人工系统中遇到的问题,将有助于导出对软件系统的一些用户需求。6)观察正在工作的用户。开发人员可观察用户在人工系统中的工作流程,并记下在使用当前系统时所遇到的问题和处理事务时的步骤。直接观察用户的工作流程有助于对他们的活动有正确的理解,然后通过总结和分析使所获得的需求信息具有普遍性和代表性,而不仅是单个用户的。当然开发人员还可为改进用户的事务处理过程提出一些合理性建议和见解。7)用户工作内容的分析。通过开发具体的场景和活动顺序可以确定用户在人工系统需要进行的工作,由此可获得用户处理事务中必要的功能需求。这可使用场景描述方法来完成。当确定了用户类及明确了用户需求的主要来源后,就可从不同的渠道和不同的人那里收集到大量的需求信息。但这些需求信息既包含了明确的用户需求,也包含了一些不一致和含糊的需求,这就需要寻找需求的决策者。这些决策者能根据具体情况,对存在问题的需求信息做出决定。因此,在正式实施收集需求信息之前,还需要确定和弄清楚谁是需求的决策者。如果不清楚谁有责任做出决策,由软件开发人员来决定的话,将是十分糟糕的事情,因为软件开发人员不能决定用户的业务。当然,在处理有问题的需求信息时,决策者并不是固定不变的,而是根据实际中可能发生的具体问题来确定。如果个别用户就某些需求与其他大多数同类用户不能达成一致意见,决策者应为用户代表。如果用户类之间存在不一致的需求,决策者为领导层和高管人员。他们可以根据哪一类用户的需求更为重要而做出决策。不同类型的用户(部门不同),可能要求产品按照各自的爱好来设计和实现,这时决策者可由开发人员来担任,由他们根据目标需求,决定哪些是重要的和最关心的客户,从而做出决策。用户部门经理所提出的需求与其所在部门的真正用户提出的需求不一致时,首先在明确用户需求必须满足目标需求这一前提下,决策者为该部门的用户代表,而不亲自使用软件系统的经理必须服从代表用户类的用户代表。当开发人员想象中的系统与用户需求不一致时,决策者为用户。如果市场部门提出的需求与开发部门的开发人员所想要开发的系统发生冲突,决策者应以市场部门为主。但有时可能由于市场部门一味迁就用户,导致用户需求有些不合理以及可能增加开发成本,这时需根据具体实际情况来确定市场部门和开发人员之间谁是决策者。

    相关资源:新年快乐! python实现绚烂的烟花绽放效果

    最新回复(0)