军用软件工程
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.1 可行性研究和可行性研究报告

2.1.1 可行性研究的目的和内容

1.可行性研究的目的

软件可行性研究的目的是用最小的代价在尽可能短的时间内确定该软件项目是否能够开发,是否值得开发。注意,可行性研究的目的不是去开发一个软件系统,而是研究这个项目是否值得去开发,其中的问题是否能够解决。可行性研究实质上是要进行一次简化、压缩了的需求分析和设计过程,要在较高层次上以较抽象的方式进行需求分析和设计过程。

只要资源和时间不加以限制,所有的项目都是可行的。然而,由于资源缺乏和交付时间限制的困扰,使得软件系统的开发变得比较困难。因此,尽早对软件项目的可行性做出细致而谨慎的评估,是十分必要的。如果在分析阶段尽早发现将来可能在开发过程中遇到的问题,及早做出决定,可以避免大量在人工、金钱、时间上的浪费。

可行性研究的主要任务:首先,需要对系统进行概要的分析研究,初步确定软件项目的规模和目标,确定项目的约束和限制;其次,分析员对系统做简要的需求分析,抽象出该系统的逻辑结构,建立逻辑模型;最后,从逻辑模型出发,经过压缩的设计,探索出若干种可供选择的主要解决方案,并研究每种解决方案的可行性。

2.可行性研究的内容

可行性研究主要从经济可行性、技术可行性、社会可行性、开发方案的选择4个方面进行。

(1)经济可行性。经济可行性是指进行成本/效益分析等,从经济角度判断系统开发是否合算;或者说是进行开发成本的估算和可能取得效益的评估,确定待开发的项目是否值得投资开发。对于大多数系统,一般衡量经济上是否合算,应考虑一个底线。经济可行性研究范围较广,包括成本/效益分析、公司经营长期战略、开发所需的成本和资源、潜在的市场前景。

所谓成本,主要包括购置并安装软件、硬件及有关设备的费用,系统开发费用,系统安装、运行及维护的费用,人员培训费用。而效益是指系统为用户增加的收入或为用户节省的开支,这是有形的效益;给潜在用户心理上造成的影响,这是无形的效益,它可以转化为有形的效益。

(2)技术可行性。技术可行性是指进行技术风险评价,从开发者的技术实力、以往工作基础、问题的复杂性等出发,判断系统开发在时间、费用等限制条件下成功的可能性。技术可行性常常是系统开发过程中最难决断和最关键的问题,因为系统的目标、功能、性能比较模糊。分析人员需要根据用户提出的系统功能、性能要求及实现系统的各种约束和限制条件,建立系统模型,从技术的角度研究系统实现的可行性。由于系统的分析和定义过程与系统的技术可行性评估过程是同时进行的,这时系统目标、功能和性能的不确定性会给技术可行性论证带来许多困难。

技术可行性研究内容主要包括:①开发的风险。在给出的各种限制范围内,能否设计出系统,并实现必需的功能和性能?②资源的有效性。资源包括已有的或可以使用的硬件、软件资源,现有技术人员的技术水平与已有的工作基础。资源分析要考虑可用于开发系统的人员是否存在问题?可用于建立系统的其他资源(硬件、软件)是否具备?③技术方面。相关技术的发展是否能支持这个系统?

在评估技术可行性时,必须保持冷静的头脑,一旦估计错误,将会出现灾难性的后果。如果开发技术风险很大,或者模型演示表明当前采用的技术和方法不能实现系统预期的功能和性能,或者系统的实现不支持各子系统的集成,则项目管理人员可以做出停止系统开发的决定。

(3)社会可行性。社会可行性是指确定系统开发可能导致的任何侵权、妨碍和责任,以及用户软件操作的可行性。社会可行性主要包括法律可行性和用户操作可行性。

法律可行性考虑要开发系统是否存在任何侵权、妨碍和责任问题。法律可行性涉及的范围也比较广泛,它包括合同、责任、侵权、用户组织的管理模式及规范,以及其他一些技术人员一般不了解的陷阱。

用户操作可行性考虑待开发软件的运行方式在用户组织内是否行得通,现有管理制度、人员素质、操作方式是否可行。

(4)开发方案的选择。开发方案的选择是指评价进行系统或产品开发时可能采用的几个候选方案,最后给出结论意见。分析员考虑解决问题的方案,一般采用将一个大而复杂的系统分解为若干个子系统的办法来降低复杂性。如何进行系统分解,如何定义各子系统的功能、性能和界面,实现方案不唯一,可以采用折中的方法,反复比较各个方案的成本/效益,选择可行的方案。

2.1.2 可行性研究的步骤

开展可行性研究,主要包括以下步骤:

(1)确定项目的规模和目标。分析人员对有关人员进行调查访问,仔细阅读和分析有关材料,对项目的规模和目标进行定义和确认,清晰地描述项目的所有约束和限制,确保分析人员正在解决的问题确实是要解决的问题。

(2)研究当前正在运行的系统。当前正在运行的系统可能是一个人工操作的系统,也可能是旧的计算机系统,要开发一个新的计算机系统来代替现有的系统。因此,当前系统是信息的重要来源,要研究它的基本功能,存在什么问题,运行当前系统需要多少费用,对新系统有什么新的功能要求,新系统运行时能否减少使用费用等。通过收集、研究、分析当前系统的文档资料,实地考察现有系统,在考察的基础上,访问有关人员,描述当前系统的高层系统流程图,与有关人员一起审查该系统流程图是否正确。用这个系统流程图来反映当前系统的基本功能和处理流程。

(3)建立新系统的高层逻辑模型。根据对当前系统的分析研究,逐步明确新系统的功能、处理流程和应有的约束条件,然后使用建立逻辑模型的工具——数据流程图和数据词典来描述数据在系统中的流动和处理情况。需要注意的是,可行性研究不是需求分析,不是完整、详细的描述,而是概括地描述高层的数据处理和流动。

(4)导出和评价各种方案。分析人员建立了目标系统的高层逻辑模型之后,要从技术的角度出发,提出实现高层逻辑模型的不同方案,即导出若干较高层次的物理模型。根据技术可行性、经济可行性、社会可行性,对各种方案进行评估,去掉不合理的模型,最后得到可行的模型。

(5)推荐可行的方案。根据上述可行性研究的结果,决定该软件项目是否值得开发。若值得开发,则确定可行的解决方案,并说明该方案可行的原因和理由。决定项目是否值得开发的主要因素是从经济上看是否合算,这就要求分析人员对推荐的可行性方案进行成本/效益分析。

(6)编写可行性研究报告。将上述可行性研究的结果写成相应的文档,即可行性研究报告。将该报告提交用户和管理部门仔细审查,以决定该软件项目是否可以开发,是否可以接受可行的实现方案。

2.1.3 可行性研究报告

可行性研究报告的形式和内容可以有多种,其主要内容应当包括以下几个部分:

(1)引言。引言应说明编写本文档的目的,项目的名称、背景,本文档用到的专业术语和参考资料。

(2)可行性研究的前提。该部分应说明待开发项目的功能、性能和基本要求,要达到的目标,各种限制条件,可行性研究的方法和决定可行性的主要因素。

(3)对当前系统的分析。该部分应说明当前系统的处理流程和数据流程,工作负荷,各项费用的支出,所需各类专业技术人员的类型和数量,所需各种设备,当前系统存在的问题。

(4)所建议系统的技术可行性分析。该部分应包括所建议系统的简要说明,处理流程和数据流程,与当前系统比较的优越性,采用所建议系统对用户的影响,对各种设备、现有软件、开发环境、运行环境的影响,对经费支出的影响,对技术可行性的最终评价。

(5)所建议系统的经济可行性分析。该部分应说明所建议系统开发时各种可能的成本支出,各种可能的效益,计算收益投资比和投资回收周期。

(6)社会因素可行性分析。该部分应说明法律因素;对合同责任、侵犯专利权、侵犯版权等问题的分析;说明用户使用可行性,是否满足用户行政管理、工作制度、人员素质的要求。

(7)其他可供选择的方案。该部分应逐一说明其他可供选择的方案,并说明未被推荐的理由。

(8)结论意见。该部分应说明项目是否可以开发,还需要什么条件才能开发,对项目目标有何变动等。

可行性研究报告首先由项目负责人审查(审查内容是否可靠),再上报给上级主管审阅(估价项目的地位)。从可行性研究应当得出“行”或“不行”的决定。当然,在以后的开发阶段,还可以做出“行”或“不行”的决定。