第3章可行性研究 在客观世界中,并不是所有的问题都可以有明显的解决方法。在进行任何一项较大的工程时,首先要进行可行性分析和研究。实际上,有许多问题不可能在设定系统的规模内有解,还有一些问题在当时的技术条件下是无解的。因为这些工程中的问题并不都有明显的解决办法,所以就不可能在预定的时间、费用之内解决这些问题。 如果这些问题没有行得通的解决办法,那么贸然开发这些项目就会造成时间、人力、资源和经费的巨大浪费。同样,对软件的项目开发也存在这一问题。所以,必须对开发项目进行可行性研究。 3.1可行性研究任务与步骤 可行性研究与其他的研究不同,这个阶段不是去开发一个软件项目,也不是解决问题,而是研究这个软件项目是否值得去开发、其中的关键和技术难点是什么、问题能否得到解决、怎样达到目的等。一般情况下,软件可行性研究的目的是在尽可能短的时间内用最小的代价确定该软件项目是否值得去开发。 要解决这样的问题不是依靠主观猜想确定的,而只能依靠客观的分析。一定要分析几种主要可能解的利弊,判断原定的目标是否现实,系统完成后所带来的经济效益是否值得投资。可行性研究实质上是要进行一次简化、压缩了的需求分析和设计过程,是要在较高层次上以较抽象的方式进行的需求分析和设计过程。 可行性研究的主要内容是对问题的定义,要初步确定问题的规模和目标,问题定义后,要导出系统的逻辑模型。然后从系统的逻辑模型出发,选择若干供选择的主要系统方案。一般应从四方面研究系统方案的可行性。 (1) 技术可行性研究。根据客户提出的系统功能、性能及实现系统的各项约束条件,从技术的角度研究实现系统的可行性。技术可行性研究往往是系统开发过程中难度最大的工作。由于系统分析和定义过程与系统技术可行性评估过程同时进行,这时,系统目标、功能和性能的不确定性会给技术可行性论证带来许多困难。技术可行性研究包括风险分析、资源分析和技术分析。风险分析的任务: 在给定的约束条件下,判断能否设计并实现系统所需功能和性能。资源分析的任务: 论证是否具备系统开发所需的各类人员(管理人员和各类专业技术人员)、软硬件资源和工作环境等。技术分析的任务: 当前的科学技术是否支持系统要求的全过程。 (2) 经济可行性研究。进行成本效益分析,评估项目的开发成本,估算开发成本是否会超过项目预期的全部利润。分析系统开发对其他产品或利润的影响。 (3) 法律可行性研究。研究在系统开发过程中可能涉及的各种合同、侵权、责任以及各种与法律相抵触的问题。 (4) 开发方案的选择性研究。提出并评价实现系统的各种开发方案,从中选出一种用于软件项目开发。 技术可行性评估是系统可行性研究工作的关键。这一阶段决策的失误将会给开发工作带来灾难性的影响。可行性研究能保证系统开发一定有明显的经济效益和较低的技术风险、一定没有各种法律问题以及其他合理的系统开发方案。如果上述四个方面中的任何一个存在问题,都应该做进一步的研究。 此外,还要为每一个可行的系统方案制定一个粗略的实现进度。可行性的根本任务是对项目的方针提出建议。可行性研究的时间依项目的规模而定,可行性研究的成本应占项目预算总成本的5%~10%。 3.1.1研究任务 在进行项目可行性研究中,首先需要进行概要的分析研究,初步确定项目的规模和目标,确定项目的约束和限制,把它们清楚地列举出来。要研究目前正在使用的系统。如果目前有一个系统正在使用,那么这个系统一定能完成某些有用的工作。所以新系统的目标也必须能完成这些基本功能。如果现有的系统是完美的,那么用户就不会提出开发新系统。 因此,现行系统必然存在问题,这也是新系统必然要解决的问题。现行系统的运行费用是一个重要的经济指标,如果新系统相对于旧系统不能增加收入或减少开销,那么新系统就不如旧系统。研究中要阅读现行系统的资料,要实地考察。要从相关人员中了解这个系统可以做什么,为什么这样做。 一般情况下,了解到的是问题的表现,而不是实际的问题。如果要分析所得到的信息,就要从现行系统出发,该系统一定是在实际中运行的,与其他系统都有一定的联系。了解这个系统与其他系统的接口是设计新系统的重要约束条件。 可行性分析中错误的做法之一是花大量的时间去分析旧系统,了解旧系统做什么,而不是了解怎么做。第二种错误做法是不认真搜集资料,凭空想象。 从现有的物理系统出发,对物理系统进行简要的需求分析,抽象出该项目的逻辑结构,参考物理系统建立逻辑模型。 新系统的逻辑模型实质上表明系统分析员对新系统的看法。但用户是否认同了?因此系统分析员应该与用户一起对新系统复查问题的定义、工程的规模、目标。讨论中应该将数据流图和数据字典作为讨论的载体。如果存在系统分析员对于问题的误解或用户对于问题的遗漏,此时就可以改正。可行性研究有以下步骤: 分析员定义问题,分析这个问题,导出试探解,在此基础上再定义问题,再分析这个问题,修改这个问题。继续这个循环过程,直到逻辑模型完全符合系统目标。 澄清问题的定义后,系统管理人员要导出系统的逻辑模型。然后从逻辑模型出发,探索出若干种可供选择的主要解决办法,对每种解决方法都要仔细研究它的可行性。一般来说,应该从以下四方面分析研究每种解决方法的可行性。 1. 技术可行性 要确定使用现有的技术是否能够实现系统,那么就要对开发项目的功能、性能和限制条件进行分析,确定在现有的资源条件下技术风险有多大、项目是否能实现,这些是技术可行性研究的内容。这里的资源条件是指已有的或可以得到的软硬件资源、现有技术人员的技术水平和已有的工作基础。 在技术可行性研究过程中,系统分析员应采集系统性能、可靠性、可维护性和可生产性方面的信息; 分析实现系统功能和性能所需要的各种设备、技术、方法和过程; 分析项目开发在技术方面可能担负的风险以及技术问题对开发成本的影响等。如有可能,应充分研究现有类似系统的功能与性能,采用各种技术、工具、设备和开发过程中成功和失败的经验、教训,以便为现行系统开发作参考。必要时技术分析还包括某些研究和设计活动。 数学建模、原型建造和模拟是基于计算机系统技术分析活动的有效工具,描述了技术分析建模过程的信息流图。系统分析员通过对现实世界的观察和分析建立技术分析模型,评估模型的行为并将它们与现实世界对比,论证系统开发在技术上的可行性和优越性。基于计算机系统,模型必须具备下列特性。 (1) 能够反映系统配置的动态特性,容易理解和操作,能够提供系统真实的结果并有利于评审。 (2) 能够综合与系统有关的全部因素,能够再现系统运行的结果。 (3) 能够突出与系统有关的重要因素,能够忽略与系统无关的或次要的因素。 (4) 结构简单,容易实现,容易修改。 技术可行性很关键。但是,由于系统处于最初研究阶段,因此这个时候项目的目标、功能和性能比较模糊。正因为如此,许多问题常常是最难解决的。技术可行性一般要考虑的情况如下。 (1) 技术。通过调查了解当前最先进的技术,分析相关技术的发展是否支持这个系统。 (2) 资源的有效性。考虑用于建立系统的软硬件、开发环境等资源是否具备,特别是用于开发项目的人员在技术和时间上是否存在问题。 如果模型很大很复杂,那么需要对模型进行分解,将一个大模型分解为若干小模型,一个小模型的输出作为另一个小模型的输入。必要时,还可以借助模型对系统中的某一独立要素进行单独评审。开发一个成功的模型需要用户、系统开发人员和管理人员的共同努力,需要对模型进行一系列的试验、评审和修改。 根据技术分析的结果,项目管理人员必须做出是否进行系统开发的决定。如果系统开发技术风险很大,或模型演示表明当前采用的技术和方法不能实现系统预期的功能和性能,或系统的实现不支持各子系统的集成等,项目管理人员不得不做出“停止”系统开发的决定。 在评估技术可行性时,需要了解应用于本项目目前最先进的技术水平。要有相当丰富的系统开发经验,不要为了获取项目而忽略不可行的因素,对问题的评估要准确。一旦估计错误,将会出现灾难性后果。 2. 经济可行性 计算机技术发展异常迅速的根本原因在于计算机的应用促进了社会经济的发展,给社会带来了巨大的经济效益。因此,基于计算机系统的成本效益分析是可行性研究的重要内容,它用于评估基于计算机系统的经济合理性,给出系统开发的成本论证,并将估算的成本与预期的利润进行对比。 经济可行性问题包含两方面: 一方面是经济实力; 另一方面是经济效益。分析经济可行性研究的内容时要进行开发成本的估算,了解项目成功取得效益的评估,确定要开发的项目是否值得投资开发。 由于项目开发成本受项目的特性、规模等多种因素的制约,对软件设计的反复优化可以获得用户更为满意的质量等因素,因此系统分析员很难直接估算基于计算机系统的成本和利润,得到完全精确的成本效益分析结果是十分困难的。 一般来说,基于计算机系统的成本由如下四部分组成。 (1) 购置并安装软硬件及有关设备的费用。 (2) 系统开发费用。 (3) 系统安装、运行和维护费用。 (4) 人员培训费用。 在系统分析和设计阶段只能得到上述费用的预算,即估算成本。在系统一切完毕并交付用户运行后,上述费用的统计结果就是实际成本。 系统效益包括经济效益和社会效益两部分。经济效益指应用系统为用户增加的收入,它可以通过直接的或统计的方法估算; 社会效益只能用定性的方法估算。 例如,开发计算机辅助设计(CAD)系统取代当前的手工设计过程。系统分析员为当前的手工设计系统和CAD目标系统定义对应的可测试特征。 T: 绘一幅图的平均时间,单位是小时。 d: 每小时绘图的平均成本,单位是元。 n: 每年绘图的数目。 r: 用CAD系统绘图减少的绘图时间比例。 p: 用CAD系统绘图的百分比。 于是,可用下式计算利用CAD系统绘图每年可以节省的经费: B= r·T·n·d·p 当r=1/4,T=4小时,n=8000/年,d=20元/小时,p=60%时,代入上式计算得B=96000元/年,即用CAD系统绘图比用手工绘图平均每年节省96000元。实际上,投资利润还应该考虑软硬件降价、税收的影响和其他潜在的因素。 对于一个系统而言,一般衡量经济上是否合算,应考虑一个最小利润值。经济可行性研究范围较广,包括成本效益分析、企业经营策略、开发所需的成本和资源、潜在的市场前景等。 3. 社会可行性 社会可行性研究的内容包括研究开发的项目是否存在任何侵犯、妨碍等责任问题。社会可行性所涉及的范围也比较广,它包括合同、责任、侵权、用户组织的管理模式及规范,以及其他一些技术人员常常不了解的陷阱等。 有一些项目是社会公益性的。这样的项目主要考虑在经济条件许可下的社会效益。 4. 操作可行性 要考虑开发项目的运行方式在用户组织内是否行得通,现有管理制度、人员素质和操作方式是否可行。 3.1.2研究步骤 在可行性研究时,一般情况下分析人员对于项目的接触时间不长,分析人员对于一个新的技术领域刚开始认识,同时,又要在限定条件下给出结论,因此,要求系统分析员要根据当前的技术水平和过去的经验,按照下列研究步骤执行。 1. 系统定义 系统定义是一个系统的关键,如果系统没有定义好,也就是没有确定系统的边界,也就谈不上确定项目规模和目标。 为了定义好一个系统,系统分析员对有关人员进行调查访问,仔细阅读和分析有关的材料,对项目的规模和目标进行定义和确认,描述项目的一切限制和约束,确保系统分析员正在解决的问题确实是要解决的问题。 2. 对于现行系统进行分析研究 现行系统可能是一个人工操作的系统,也可能是计算机上运行的旧软件系统,因某种原因需要开发一个新的计算机系统来代替现行系统。要认识到现行系统是信息的重要来源,需要研究它的基本功能、性能、环境、存在的问题,以及运行现行系统需要多少费用,对新系统有什么新的功能要求,新系统运行时能否减少使用费用等。 具体方法可以实地考察现行系统,收集、研究和分析现行系统的文档资料。在考察的基础上,访问有关人员,描绘现行系统的高层系统流程图,系统流程图反映了现行系统的基本功能和处理流程。还要与有关人员一起审查该系统流程图是否正确。 3. 导出新系统的逻辑模型 根据对现行系统的分析研究,搞清新旧系统的特征,逐渐明确新系统的功能、处理流程以及所受的约束。有了这些理解后,就可以用建立逻辑模型的工具——数据流图和数据字典来描述数据在系统中的流动和处理情况。在描述时不必详细描述,只需概括地描述高层的数据处理和流动。 4. 设计方案 分析员根据新系统的高层逻辑模型,从技术角度出发,根据用户的要求和开发的技术力量,提出实现高层逻辑模型的不同方案。在设计方案时,既可以设计出投资比较大的最先进的方案,也可以设计出一般投资的实用方案,提供以后进行比较,然后再根据技术可行性、经济可行性和社会可行性对各种方案进行评估,去掉行不通的解法,就得到了可行的解法。 5. 推荐可行的方案 根据上述可行性研究的结果,同时要根据用户的具体情况,决定该项目是否值得去开发。若值得开发,那么可行的解决方案是什么,并且说明该方案可行的原因和理由。考察该项目是否值得开发,从经济上看是否合算,这就要求分析员对推荐的可行方案进行成本效益分析。 6. 编写可行性研究报告 将上述可行性研究过程的结果按照: ①要求、目的、条件与限制、可行性研究方法及评价尺度; ②处理流程、工作负荷、费用开销和局限性; ③处理流程、运行环境和局限性; ④技术条件的可行性; ⑤经济方面的可行性; ⑥社会条件的可行性; ⑦其他可供选择的系统; ⑧结论的顺序写成可行性研究报告,提请用户和使用部门仔细审查,从而决定该项目是否进行开发,是否接受可行的实现方案。 3.2系统分析 如果确认开发一个新的软件系统是必要而且可能的,那么就要进入系统分析阶段。这个时期的首要任务是认识和对问题的评价、建立模型以及对规格的分析,要清楚软件工作域是进行各种估算的基础。首先,为了了解软件在系统中的各种关系和评审软件工作域,系统分析员要研究系统规格说明(System Specification)和软件项目计划(Software Project Plan)。其次,为了确保对问题的识别,必须为分析建立通信关系。系统分析员必须与用户和软件开发机构的管理与技术人员进行接触。项目管理员可以作为协调员来保证通信渠道的畅通; 系统分析员的目标是弄清用户已经理解的基本问题元素。 第二项任务是分析,是主要工作问题评价与解的综合。系统分析员必须定义和详细描述全部软件功能,熟悉影响系统事件前后关系的软件行为,建立系统界面的特征,评价信息流和信息的内容,以及揭示设计限制。这些任务都是为问题的描述服务的,所以整个方法或解是一个综合的过程。 最后一项任务是建立需求分析文档(规格说明和用户手册)。它是用户和开发人员进行评审的基础。一般情况下,需求评审经常导致软件功能、性能、信息表达式、限制和确认准则的修改。由于软件的特性,如果没有分析文档,在进行评审的过程中,可能因为没有这种基础而不能发现运行中软件功能、性能、信息表达式、限制和确认准则所存在的问题。此外,软件项目计划也是由此得到评价,它可以决定早期的各种估算是否仍然有效。 3.2.1系统分析员 要完成上述系统分析的任务,就要有相应的技术人员,即系统分析员。 对系统分析员职务有许多不同叫法: 系统分析员、主系统分析员、主系统设计员、分析员等。不管其职务叫什么,作为系统分析员必须具备下列能力。 (1) 能掌握抽象概念(Abstract Concepts),并能把其整理为逻辑划分(Logical Divisions),以及根据每一个逻辑划分综合为解(Solutions)的能力。 (2) 有弄清用户环境的能力。 (3) 有从冲突(Conflict)或混淆(Confusions)中吸取恰当事实的能力。 (4) 有用较好的书面和口头形式进行通信(Communication)的能力。 (5) 有把硬件和软件系统用于用户环境(User/Customer Environments)的能力。 (6) 有“从树木见森林”的能力。 上述所列的最后一条也许就是区分一位杰出的系统分析员与一般的分析者的标准。过去的经验告诉我们,一般分析者往往在项目一开始就考虑一些细小的环境和实现,过早地拘泥于细节,而忽略整个软件目标。系统分析员要完成或合作完成与软件需求分析有关的每一项任务。在整理各项任务过程中,他应与用户进行交流,以确定现有环境的特征。系统分析员在评价和综合任务中,也要这样要求开发人员。这样,软件的特性才能被正确定义。系统分析员的一般职责是负责软件需求规格说明的开发,并参与整个评审。 系统分析员必须弄清每一个软件工程模式,并懂得其中的每一步。有许多隐含的软件需求(如可维护性设计),只有懂得软件工程的分析者,才能把它包含在需求规格之中。 需求分析是软件工程的一个重要任务,它是系统层软件配置与软件设计之间的桥梁。系统分析员在软件需求分析阶段有以下五个方面的工作。 (1) 问题识别(Problem Recognition)。 (2) 评价和综合(Evaluation and Synthesis)。 (3) 建模(Modeling)。 (4) 规格说明(Specification)。 (5) 评审(Review)。 3.2.2面临的问题域 在系统分析的过程中,都会遇到许多问题,特别是在3.2.1节讨论的前两项任务: 问题识别与问题评价和综合,在很大程度上决定于能否获得恰当的信息。一般情况下,会有用户提供的信息与早期其他人提出的需求说明相矛盾; 也有功能和性能与其他系统元素所给的限制相矛盾; 特别是随着时间的推移,对系统目标的理解发生变化。那么,应当收集什么信息?应当怎样对它们进行表示?谁能提供各种信息的初始模型?采用什么技术和工具才能方便地进行信息收集?所有这些都是要解决的问题。 随着问题规模的增大,分析任务的复杂性也在增加。每个新的信息项、功能或限制都可能影响整个软件的其他元素。由此,随着问题复杂性的增加,分析工作量将呈几何级数增长。问题就是当定义一个大系统时,怎样能避免系统内部的不一致性; 怎样能察觉这种遗漏; 为了更易于处理大问题,怎样能有效地进行划分等。 需求分析是一项要求充分通信的活动过程。通信时,通信中的误解和遗漏都可能给系统分析员和用户造成困难。需求分析中遇到的难题,必须要与已得到的恰当信息、处理问题的复杂性,以及在分析以后可能发生的相应变化联系起来。 系统工程第一定律就是无论在系统生存期的哪个阶段,系统都将发生改变,而且这种改变将在整个生存期中连续不断。这里所讲的改变是需求的改变。不论讲的是一个系统或只是软件,改变都是要发生的。事实上,分析任务完成的前后,这种改变的要求肯定不断出现。问题是软件需求怎样与其他系统元素改变相适应; 怎样评价一个改变可能对其看起来无关的软件部分的影响; 为了避免副作用,在规格说明中怎样进行错误的改正。 造成上述问题有许多原因,可归纳如下。 (1) 缺少通信,信息获得困难。 (2) 由于不适当的技术和工具致使规格说明不充分或不准确。 (3) 在需求分析中,试图走捷径,导致不可靠的设计。 (4) 在软件定义前,方案选择错误。 上述这些问题及其产生的原因,不可能用需求分析的软件工程方法来彻底解决。但是固定通信技术的应用、基本分析原理,以及系统的分析方法都将极大地减轻上述问题的影响。 3.2.3通信技术 一个软件开发的开始往往是用户提出一个问题,并认为这个问题可能适合用计算机来解决,于是寻找开发者,这时开发者对用户的请求回答是可以对用户进行帮助的。这样,开发者与用户间的通信就开始了。所以说软件需求分析通常是从两方面或多方面之间的通信开始。但是,从通信到真正理解系统,常常是艰难的。 1. 过程的开始 当用户与开发者有了合作意向后,经常使用的分析技术是会议或访问,将它作为用户和开发人员之间的通信桥梁。会议或访问期间,双方都希望能成功。刚开始,用户对于系统总的目标只有一个模糊的想法,对于具体的目标和要求常常不知道应该问什么、说什么。一般情况下,在第一次的会谈中,用户会介绍自己的基本情况。我们建议: 系统分析员可以就此切入,了解用户的现行运作,希望在哪些地方用计算机来解决问题,提出用户、总目标和效益方面问题,具体如下。 (1) 这项工作主要在哪些部门应用? (2) 项目的结构主要是谁使用? (3) 项目成功的应用会带来什么样的经济效益? (4) 为了达到目的,还需要其他什么资源? 在此过程中,用户一般会介绍他们的现状。为了利于系统分析员对问题更好地理解,而用户又能够表达关于目标的理解,可以进一步了解: (1) 如何表示一个成功的目标能产生一个好的输出形式? (2) 这样的理解可以解决一些什么样的问题? (3) 显示或描述一下这样的目标要使用的环境。 (4) 这种方式的解对特殊的性能问题或限制将有哪些影响? 通过初步了解后,系统分析员会发现一些更具体和技术上的问题。为了通信的有效性,要考虑的称为元问题(Metaquestions)。建议如下。 (1) 谁是能回答这些问题的人? (2) 谁能确切解决这些问题? (3) 问题是否提得太多? (4) 这里还有其他人可以提供其他方面的信息吗? (5) 还有什么事情是我应该问的? 上述所有这些问题将有助于打开僵局和初步的通信,这种通信是成功分析的基础。在交流的过程中最好不要用一问一答的会议形式。事实上,问答式会议应当只适用于第一次会面,然后采用交换式会议的形式,综合问题的各个元素进行协商和说明。这种类型的会议方法在下面还要讨论。 2. 深入了解 在交流的过程中,用户因为对自己的业务非常熟悉,所以他会用很简短的概括叙述。这时可以借此向用户索取有关业务源头与结果的资料,通过对资料的分析,对于一些复杂的业务,要到现场去跟随业务流程“跟单”,然后把理解的过程用合适的技术表示出来。这种业务过程的表示是否正确,要与用户共同分析和确认。 3. 方便的应用规范技术 用户和软件工程师通常有一种无意识的“我们和你们”的思想,而不是作为一个工作组的工作来确定和定义需求。每个用户用他们自己的方式来定义,或通过备忘录、文件、问答式会议的通信方式来定义。过去的工作经验表明,这种方法会使许多误解和重要信息被遗漏,而且建立起来的绝不是一种成功的工作关系。 由于在思想上存在“你们和我们”的问题,因此一些研究机构开发出一种面向组的方法,应用于分析和规格说明早期的需求收集,这种方法称为方便的应用规范技术(Facilitated Application Specification Technique,FAST)。FAST促使用户和开发人员组成一个联合组一起去确定问题,提出解的各个元素,协商不同方法,并定义一个初步解的需求集。今天,FAST已广泛地应用于信息系统界。这种技术对于促进通信在所有类型的应用中具有潜力。现在,FAST有许多不同的方式,每种方式的使用都有不同的背景,但所有应用都必须遵循以下原则。 (1) 会议由上一级部门或中立部门主持,开发人员和用户双方参加。 (2) 一位主持人(可以是用户、开发商或局外人)被指定为控制会议的人。 (3) 确定准备和参加的原则。 (4) 提出一个议事日程,这个议事日程是正规的,并包括所有重要观点。但是要不拘形式地鼓励大家自由发表意见。 (5) 有一张确定的日程(可以是工作单、可转动的图表、墙上张贴物或墙上印刷牌)。 (6) 目标就是确定问题、提出解的各种元素、协商不同方法,以及定义一个初步解的需求集,并且能在一个有助于目标完成的气氛中进行。 3.3分析原理 过去已经开发出一些软件分析和规格说明的方法,这些软件分析和规格说明的方法虽然在软件的开发中起到了积极的作用,但是在应用中也发现了存在的问题及其原因。为此又开发出一些方法和规则来克服这些问题。于是研究出了多种软件分析和规格说明的方法,每一种方法都有它不同的表示法和观点。归纳起来,所有的分析方法都与下述一组基本原理相联系。 (1) 问题的信息域必须能被表示和被理解。 (2) 应当开发描述系统信息、功能和行为的模型。 (3) 问题必须能按一定形式进行分割,就是用一种层次(或分层)形式来揭示它们的细节。 (4) 分析过程应当从基本信息开始,直到实现细节。 不论用何种软件分析和规格说明的方法,都是基于这些原理的应用。有了这些基本原理,分析者可以系统地研究问题。为了更全面地了解功能,要检查信息域; 为了按合同方式进行信息交流,要使用模型; 为了降低问题的复杂性,采用分割技术; 而软件的基本实现,就是软件需要符合由于处理需求所造成的逻辑限制,同时还要符合由于其他系统元素所造成的物理限制。 3.3.1信息域 在计算机的应用领域中,所有的软件应用都可以被统称为数据处理(Data Processing)。有了数据处理这个概念,就非常利于了解软件需求。所谓软件,就是对处理数据进行构造。这种构造表现为将数据从一种形式变换为另一种形式,即接收输入,继而以某种方式处理,然后产生输出。信息处理也指处理代表信息的数据并确定被处理数据的意义的过程,所以可以用信息处理代替数据处理。信息处理的对象是信息。信息的定义: 一方面是物质状态发生改变的一种表征,通常指数据消息中所包含的意义; 另一方面是知识的一种元素,以任何形式聚合,能产生一个完整的概念、条件或情况的数据,是通信中线路传输时被加入接收消息内的数据。 信息域是一个信息字或一组信息中的特定部分,信息域中的内容通常被作为一个整体来处理。它包括三种不同方面的数据和控制: 信息内容、信息结构和信息流。每个方面都由计算机程序处理。 在需求分析的过程中,搜集与分析的主要对象是信息域,为了完全地了解信息域,对信息的每一个方面都应该进行研究。 1. 信息内容 信息内容是知识的一种元素,描述了单个数据和控制项,这些项可以组成更大的信息项。 2. 信息结构 信息结构描述了各种数据和控制项的内部组织。数据和控制项组成的是一个n维的表还是一个分层的树结构?在结构内部,哪些信息与其他信息相关?所有的信息都包含在一个单一结构内,还是使用了不同的结构?在一个信息结构内怎样与另外的结构信息相关联?这些涉及软件信息结构设计与实现的分析讨论,由于与数据结构的概念相关,因此在后面讨论。 3. 信息流 信息流描述了数据和控制沿系统流动变化的方式。信息流可以用数据流图(DFD)来表示,如图31所示。 图31信息流 从图31可以看出,输入信息经变换后为中间信息,然后再变换为输出信息。沿这条变换路径,可以从存在的数据库(磁盘文件或缓冲存储器)引入另外的信息。应用于数据的这种变换必须完成程序功能或子功能,在两个变换(功能)之间流动的数据和控制定义了每个功能的接口。 3.3.2建立模型 模型是在科学的各个领域中,为了更好地理解建立的实际实体,对研究的系统、过程、事物或概念的一种表达形式,可以是物理实体,也可以是图表或数学表达式。当这种实体是一个物理的物体时,可以用缩小比例的方法建立一种形式表示的模型。而当构造的实体是软件时,模型必须采用另一种形式。它必须能够模拟软件变换的信息,能使变换的功能(和子功能)作为变换系统的行为发生。 在软件需求分析过程中,要完成将建立的系统的模型。模型主要说明系统必须做什么,而不是表达怎样做。在一般情况下,用图形符号表示的方法来描述信息、处理、系统行为,而其他特性则使用性质不同的和公认的图符(Icons)表示。如果条件允许,可以采用源代码通过在机器上演示说明系统做什么,模型的另外一些部分可以是单纯的文字形式,对需求的描述可以用自然语言或专用语言。 在需求分析中,模型的建立可以反映人们对事物的认识,起到很重要的作用。 首先,这种模型可以辅助分析人员更好地了解系统的信息、功能和行为,从而使分析更容易和更系统化。 其次,模型是评审的焦点,是确定系统完整性(Completeness)、一致性(Consistence)和规格说明准确性(Accuracy)的关键。 最后,模型也是设计的基础。模型能给设计人员提供一种软件的基本表达式,这种表达式可以映射成为实现的正文。 以后要讨论的各种分析方法,实际就是建立模型方法。对于比较小的软件系统,可以省略建立模型,但对于比较大的系统,最好要建立模型。建立模型方法的作用是做好分析工作的基础。 3.3.3分解 在相关领域中,通常都会有涉及多技术的复杂问题分析。把一个很大和复杂的问题作为一个整体很难被完全理解。因此,为了能够较容易地理解这个问题,人们力图把这样的问题分解为若干部分。与此同时,为了整体功能的完成,还要在各个部分之间建立它们的接口。在需求分析过程中,软件领域的信息、功能、行为都可以分解。 从本质上讲,分解就是把一个问题划分为几个组成部分。在概念上,可以建立一种分层的功能或信息表达式,然后按下述两条分解出最主要的元素。 (1) 在分层中,按垂直方向逐层细化。 (2) 在分层中,按水平方向对功能进行分解。 为了说明分解的方法,现在分析一个文字处理软件系统的例子。 对于文字处理软件的需求,可以根据产品划分的信息、功能、行为等几部分来分析。图32(a)和图32(b)分别给出了文字处理软件功能部分的水平分解和垂直分解。 图32功能分解 软件需求分析应当集中在软件完成什么上,而不是在怎样才能实现处理上。然而,这里不应该把实现观点作为怎样做的表达式来理解。相反地,一个实现模型给出了当前的操作方式,只是把已有的和建议的操作分配给系统的所有元素,而基本模型(功能的或数据的)在一般意义上不应直接给出功能是怎样实现的。 3.4系统模型与模拟 3.4.1系统模型 系统分析员将系统功能和性能分解,定义若干个子系统及其界面之后,开始建立系统模型,为需求分析和设计阶段的工作奠定基础。输入—处理—输出(IPO)结构是系统建模的基础,它将基于计算机的系统转换为一个信息变换模型。另外还有用户界面处理、维护和自测试处理两方面的内容。虽然这部分内容对每个系统来说并不是必需的,但是它们的引入丰富了系统建模的思想。 1. 结构图 系统分析员用结构模板开发系统模型。结构模板如图33所示。它由用户界面处理、输入处理、处理和控制功能、输出处理、维护和自测试五部分组成。结构模板能帮助系统分析员按照系统工程和软件工程的建模技术自顶向下、由粗到细地建立基于计算机系统的系统模型。 其中,系统总体结构关系图(Architectural Connector Diagram,ACD)位于系统模型图的最顶层。ACD定义了系统的组成,定义了各子系统引用和生成的信息,建立了系统与系统运行环境之间的信息界面。通过界面对系统进行测试和维护,完成系统与外部实体间各种数据和控制信息的通信。ACD的有向边表示系统的信息流和控制流,圆角方框表示系统或子系统,方框表示外部实体,即系统信息的生产者和消费者。 系统分析员借助ACD的帮助定义各子系统的结构流图(Architectural Factor Detail,AFD)。最初的结构流图是系统AFD的顶层节点。AFD中的每个矩形都可以引出并扩展为一个更精细的结构流图,后者是前者更详细的表示,这样的扩展方式还可以持续下去,直到系统分析员认为已经足够详细、能充分支持以后的系统开发时为止。图34给出了上述过程的示意图。 图33结构模板 图34结构流程的层次结构 2. 系统结构规格说明 为满足后续工作的需要,系统分析员必须准确、详细地说明系统结构、组成系统的各个子系统以及各子系统之间的信息流和控制流。结构图规格说明(Architecture Description Specification,ADS)描述子系统信息以及子系统之间的控制流和信息流信息。每个子系统的结构图规格说明都应包括系统模板说明书、系统结构字典和系统结构互联图。 系统模板说明书描述各子系统的功能、信息处理的对象和结果以及与其他子系统的连接关系。系统结构字典定义系统结构图中的每个信息项。信息项的类型、信息源和流向目标可以从结构流图中提取。信息项的通信路径表示信息的迁移方式。第4章将详细介绍数据字典的结构和建造数据字典的技术。结构流图的有向边仅描述系统的数据流和控制流,没有描述该数据流或控制流与其他因素的关系。系统结构互联图和对应的规格说明描述系统信息的传送方式,如电的方式、光的方式或机械方式等。 3.4.2系统建模和模拟 一个系统一般采用交互方式实现系统与现实世界的信息交流。系统通过硬件、软件对现实世界的对象、事件和过程进行管理和控制。 一般情况下,系统建立之前人们很难理解和预测系统的性能、效率和行为,只能在系统运行后通过反复试验和纠错来逐步理解、实现客户对系统行为提出的要求。当系统是实时嵌入式系统时,风险更大些。例如,飞机自动控制系统不仅十分复杂,而且对可靠性要求非常高。在飞机飞行过程中对系统进行试验和纠错,风险和代价都是很大的。为了减少在真实环境中试验的风险和代价,人们在系统分析和设计阶段普遍采用系统建模和模拟技术。模型是现实系统的一种描述,是现实系统的抽象和简化。模型必须反映现实系统的本质和实际; 模型必须由现实系统的有关元素组成; 模型必须反映这些元素之间的关系。 现实系统模型可分为物理模型和数学模型两大类。物理模型由物理元素构成,故称形象模型。数学模型由数学符号、逻辑符号、数字、图表、图形等组成,故称抽象模型。随着计算机图形学、图像学及多媒体技术的发展与应用,在基于计算机的系统上不仅可以处理抽象模型,而且还可以模拟和展示形象模型。从时间的角度看,模型可分为静态模型和动态模型。静态模型与时间参数无关,动态模型依赖于时间参数。从系统参数的随机性来看,模型分为确定模型和随机模型。确定模型中的参数不含随机变量,而随机模型中的参数包括随机变量。线性规划模型、动态规划模型等是确定模型,确定模型的一组输入量经模型处理得到一组唯一确定的输出结果。排队模型、计算机中断处理模型等是随机模型,随机模型的输入含一个或多个随机变量,经模型处理后得到的输出结果是随机的。从系统参数的连续性来看,模型又分为连续模型(如水库库容模型)和离散模型(如计算机中断系统排队模型)两类。 用一个系统表示某个实际系统或抽象系统中选定行为的特征称为模拟。它借助于计算机系统表示现实世界的物理或社会现象,如用一个计算机系统模拟另一个计算机系统的操作、模拟飞行器仪器舱的环境、模拟企业经济管理系统等。系统模拟的目的是借助于系统模型进行现实系统的特征实验,这样可以缩短实验的时间,增加实验的机会,降低实验的成本。随着计算机技术、系统科学和系统模拟理论的发展及应用,系统模拟广泛地应用于社会、科学、军事及经济的各个领域并取得了显著的社会效益和经济效益。 用于现实系统模拟的模型必须遵循科学的社会规律,必须反映现实系统的本质,必须具有一定的精度。在此基础上,还应力求简单,尽量删除某些不必要的细节,如有可能,尽量采用已有的模型,在实验过程中不断修改和完善模型,使之更能反映现实系统的本质和特征。系统建模与模拟的主要步骤是: (1) 分析问题、确定模拟的目标。 (2) 建立模型。 (3) 运行模型并分析模型结果。 (4) 修改模型(如有必要)。 (5) 撰写模拟文档。 3.5成本效益分析 人们投资一个项目的目的是在将来得到更大的好处。经济效益通常表现为增加收入或减少开销。但是投资新系统开发是有一定风险的,其风险表现为开发成本可能比预计的要高,效益可能比预计的低。 在什么情况下投资新系统合算?成本效益分析的目的是从经济角度评价开发一个新的软件项目是否可行。成本效益分析首先是估算将要开发的系统的开发成本,然后与可能取得的效益进行比较和权衡。效益分有形效益和无形效益两种。有形效益可以用货币的时间价值、投资回收期和纯收入等指标进行度量; 无形效益主要从性质上、心理上进行衡量,很难直接进行量的比较。 系统的经济效益等于因使用新的系统而增加的收入加上使用新的系统可以节省的运行费用。运行费用包括操作人员人数、工作时间和消耗的物资等。下面主要介绍有形效益的分析。 1. 成本估计 一个软件开发的成本主要表现在人力消耗上。由于这种消耗估计不是精确的科学计算,因此可以用几种方法计算后相互验证。 首先可以用代码行定量估算方法,把开发软件中实现每一个功能所需要的源代码行数与成本联系起来。根据历史数据和经验,估计实现一个功能需要的源程序行数。当有了源程序的行数后,再根据软件的复杂度和当时的工资水平确定每行代码的平均成本。每行代码的平均成本与源程序的总行数的乘积就是总成本。如果以往开发过类似的项目或有历史数据参考,这种方法比较有效。 其次可以用任务分解技术估算成本。具体做法是将软件各子系统的开发各阶段相对独立,再分别估算各个阶段的成本。通常估算完成该任务所需要的人力(单位为人月),然后再根据当时开发人员的平均月薪,分别计算出各项任务的成本,最后计算出总成本。 例如,某个项目的开发工作量如表31所示。 表31某个项目的开发工作量 任务 工作量/人月 需求分析 2.5 设计 3.0 编码1.5 测试3.0 总计 10.0 若源代码共29000行,其中24000行交付使用,5000行调试使用。那么生产率为24000/10=2400(行/人月)。 对类似的工作量数据进行统计,可以得到软件生产的平均生产率。如果遇到类似的项目,就可以比较有把握地进行估算。但是在软件工程中,受到人、问题、过程、生产、资源等因素的影响比较多,因此要得到准确的结果并不容易。 2. 货币的时间价值 成本估算的目的是了解对项目的投资。经过成本估算后,得到项目开发时需要的费用,该费用就是项目的投资。另外,项目开发后的经济效益、系统的经济效益是使用新系统增加的收入和节约的运行费用,而经济效益和运行费用在软件生命周期中都存在,这就是说经济效益与软件的生命周期的长度有关,所以应该合理地估计软件的寿命。在估计软件寿命时,估计使用的时间越长,系统被淘汰的可能性越大。一般估计生命周期的长度为5年。所以在进行成本效益分析时,就要考虑货币的时间价值,通常是用利率表示货币的时间价值。 设现在存入年利率为i的货币P元,则n年后可得钱数为F,若不计复利,则 F=P(1+i)n F就是P元在n年后的价值。反之,若n年后能收入F元,那么这些钱现在的价值为 P=F/(1+i)n 例如,库房管理系统,它每天能产生一份订货报告。假定开发该系统共需50000元,系统建成后及时订货,消除物品短缺问题,估计每年能节约25000元,5年共节省125000元。假定年利率为5%,利用上面计算货币现在价值的公式,可以算出建立库房管理系统后,每年预计节省的费用的现在价值,如表32所示。 表32将来的收入折算成现在价值 年 将来价值/元 (1+i)n 现在价值/元 累计的现在价值/元 1 250001.0500000023809.5238123809.52381 2 250001.1025000022675.7369646485.26077 3 250001.1576250021595.9399668081.20073 4 250001.2155062520567.5618788648.76260 5 250001.27628156319588.15416108236.91680 3. 投资回收期 用投资回收期是衡量一个开发项目价值的常用方法。投资回收期就是累计收回的经济效益等同于最初投资费用所需的时间。收回投资以后的经济效益就是利润。很明显,投资回收期越短,获得利润就越快,则该项目就越值得开发。 例如,库房管理系统两年后可以节省46485元,比最初的投资还少3515元。因此,投资回收期是两年多一点的时间。 投资回收期是可行性论证中的一项重要指标。但是,它不是唯一的经济指标。为了衡量一个开发项目的价值,还应考虑其他经济指标。 4. 纯收入 项目论证中,用户除了注意投资回收期外,另一个比较关注的问题是项目的纯收入,它也是衡量项目价值的另一个经济指标。所谓纯收入就是在整个生命周期之内的累计经济效益与投资之差。这相当于投资开发一个项目与把钱存入银行中进行比较,看这两种方案的优劣。若纯收入为零,则项目的预期效益和在银行存款一样。但是开发一个项目要冒风险,因此,从经济观点看这个项目,可能是不值得投资开发的。若纯收入小于零,那么这个项目显然不值得投资开发。 例如,对上述的库房管理系统,项目纯收入预计为 108236.9168-50000=58236.9168(元) 很明显,这个项目是值得开发的。 3.6可行性研究的文档 软件需求的分析可以用许多不同的方法进行。分析技术可以是纸面的,也可以是基于计算机的; 软件需求的规格说明可以是图形的,也可以是文字描述的。过去的经验告诉我们,即使是有经验的工程师,在不完整、不一致的规格说明书的误导下也会受挫。其结果是造成软件在质量、时间和完整性上的损失。 不论用什么方式完成规格说明书,都可以视为一种过程的表示。为了使需求表示在意义上导致良好的软件实现,规格说明书要按照如下原则进行。 (1) 从实现中抽出功能度。 (2) 用面向过程的系统规格说明语言。 (3) 规格说明要围绕整个系统,软件是其组成部分。 (4) 规格说明书是一个可以认知的模型。 (5) 必须是局部化的和松散耦合的。 (6) 必须围绕系统的操作环境。 (7) 必须是可以操作的。 (8) 允许系统的规格说明书不完整和可扩充。 虽然有这些原则,但关键是适应这些活动的内容与结构的选择。规格说明书内的信息必须是局部化的。当信息修改时,只有一些局部的地方要修改。又由于采用了松散结构,这些局部的地方又可以方便地进行插入或删除以调整。 上述规格说明的原则固然好,但是原则必须变成现实。软件需求可以用不同的方式来定义。不论定义在何种介质上,其原则如下。 (1) 表达式的模式、内容要与问题关联。 (2) 表示符号在数目上要限制并且一致。 (3) 规格说明书内的信息应当被嵌套,允许表达式修改。 研究表明,符号及其安排对于理解是有影响的。一般系统分析员都有自己使用符号的习惯,这是规格说明书与人的相关因素,因此在制订表达式及其符号时要考虑各方面的因素。 系统分析员与用户在分析的基础上,将用户的需求按照形式化的方法表示出来。其目的是为软件开发提供总体要求,也作为系统分析员与用户交流的基础。可行性研究结束后要提交的文档是可行性研究报告。一个可行性研究报告的主要内容如下。 (1) 引言: 说明编写本文档的目的,项目的名称、背景,本文档用到的专门术语和参考资料。 (2) 可行性研究前提: 说明开发项目的功能、性能和基本要求,达到的目标,各种限制条件,可行性研究方法和决定可行性的主要因素。 (3) 对现行系统的分析: 说明现行系统的处理流程和数据流程、工作负荷、各项费用支出、所需各类专业技术人员和数量、所需各种设备,现行系统存在什么问题。 (4) 所建议系统的技术可行性分析: 对所建议系统的简要说明,处理流程和数据流程,与现行系统比较的优越性,采用所建议系统对用户的影响,对各种设备、现有软件、开发环境和运行环境的影响,对经费支出的影响,对技术可行性的评价。 (5) 所建议系统的经济可行性分析: 说明所建议系统的各种支出、各种效益、收益/投资比、投资回收周期。 (6) 社会因素可行性分析: 说明法律因素对合同责任、侵犯专利权和侵犯版权等问题的分析,说明用户使用可行性是否满足用户行政管理、工作制度和人员素质的要求。 (7) 其他可供选择方案: 逐一说明其他可供选择的方案,并说明未被推荐的理由。 (8) 结论意见: 说明项目是否能开发,还需什么条件才能开发,对项目目标有何变动等。 3.7项目开发计划 3.7.1方案选择 系统分析任务完成后,系统分析员开始研究问题求解方案。通常,系统分析员将一个大的复杂系统分解为若干子系统; 精确地定义子系统的界面、功能和性能; 给出各子系统之间的关系。这样可以降低解的复杂性,有利于人员的组织和分工,提高系统开发效率和工作质量。显然,系统分解和实现的方案都不是唯一的。每种方案对成本、时间、人员、技术、设备等都有一定的要求。不同方案开发出来的系统在系统功能和性能方面会有很大差异。由于系统开发成本又可划分为研究成本、设计成本、设备成本、程序编码成本、测试和评审成本、系统运行和维护成本、系统退役成本等,因此在开发系统所用总成本不变的情况下,由于系统开发各阶段所用成本分配方案的不同,也会对系统的功能和性能产生相当大的影响。 另外,系统功能和性能也是由多种因素组成的,某些因素是彼此关联和制约的。如系统有效使用的范围与精度的关系、系统输出精度与系统执行时间的关系、系统安全性、低成本与高可靠性的折中等。 利用折中手段选择系统开发方案时应充分论证,反复比较各种方案的成本效益。折中过程也是系统论证和选择、确定系统开发方案的过程。值得注意的是,有些场合开发一个应用软件的费用比购买一个类似软件便宜,而另一些场合则相反。软件项目负责人常常面临是开发还是购买软件的选择。其实,即使是购买软件,也有各种各样的方式,如是买现货,或在买现货的基础上按照特定需求对软件进行维护,或购买部分软件然后在此基础上进行开发和集成,或按照客户提出的需求规格说明向软件开发公司定做软件等。在选购软件或软件包时,必须附软件功能和性能的规格说明; 应该对软件成本和交货日期有一个预测和估算; 在可能的情况下选择几个相似的产品以备挑选; 选择软件产品时应建立功能比较矩阵,逐项比较并进行基准测试; 应该考虑软件公司的信誉、维护力量、软件质量,征求并听取软件产品用户的使用意见。 3.7.2制订项目开发计划 经过可行性研究后,就可得到一个项目是否值得开发的结论。如果可行,则接下来应制订项目开发计划。系统分析员应当进一步为推荐的系统编写一份开发计划。软件开发项目的计划涉及实施项目的各个环节,带有全局的性质。计划的合理性和准确性往往关系着项目的成败。计划应力求完备,要考虑一些未知因素和不确定因素,考虑可能的修改。计划应力求准确,尽可能提高所依据数据的可靠程度。软件项目开发计划是软件工程中的一种管理性文档,主要是对开发的软件项目的费用、时间、进度、人员组织、硬件设备的配置、软件开发环境和运行环境的配置等进行说明和规划,是项目管理人员对项目进行管理的依据,据此对项目的费用、进度和资源进行控制和管理。 项目开发计划是一个管理性文档,它的主要内容如下。 (1) 项目概述: 说明项目的各项主要工作; 说明软件的功能、性能; 说明为完成项目应具备的条件; 说明用户及合同承包者承担的工作、完成期限及其他条件限制; 说明应交付的程序名称,所使用的语言及存储形式; 说明应依附的文档。 (2) 实施计划: 说明任务的划分、各项任务的责任人; 说明项目开发进度、按阶段应完成的任务,用图表说明每项任务的开始时间和完成时间; 说明项目的预算、各阶段的费用支出预算。 (3) 人员组织及分工: 说明开发该项目所需人员的类型、组成结构和数量等。 (4) 交付期限: 说明项目最后完工交付的日期。 最后给出下一阶段(需求分析)的详细进度和成本。 3.8应用案例——成绩管理系统可行性研究 3.8.1引言 编写目的、系统背景分析(略)。 定义: 成绩管理系统。 参考资料、系统需要满足的要求: 系统功能(见2.6节)、完成期限、系统目标、运行环境、进行可行性研究的方法、评价尺度(略)。 3.8.2对现行系统的分析 国内外现状、工作负荷、费用开支、人员、设备、局限性分析(略)。 3.8.3建议的新系统 改进之处、系统角色、运行环境、投资估算、研制机构实力、局限性(略)。 3.8.4可行性研究 1. 研究要点 1) 研究成绩管理系统的系统模型 目前国内的高等学校按学科范围可分为综合类、理工类、师范类、农林类、政法类、医药类、财经类、民族类、语言类、艺术类、体育类、军事类、旅游类、职业类。 按办学层次可分为“双一流”院校,中央部属本科院校、省属本科院校、高职(高专)院校和民办院校。 由于学校的学科性质及其办学层次的不同,也导致各类学校自身的成绩管理模式及其评价体系的不同。对于这一现状,采用如图35所示的构造模型。 图35构造模型 2) 成绩的评价体系研究、功能性研究、安全和保密、系统连接关系 (略) 2. 研究目标 (1) 减少人员及计算机设备等费用的支出消费,降低成本。 (2) 提高系统处理信息的速度,紧跟当代互联网的发展潮流及提高便携数据存储。 (3) 方便教师和学生能够随时随地进行成绩信息的查询、录入和修改等操作。 (4) 改进管理信息服务。将成绩管理系统不仅应用于计算机领域,也同样应用于手机领域,使成绩管理系统能够适用于不同领域,扩大使用范围。 (5) 改进人员利用率,使软件能够在规定周期内生产出来并展示它所需要具备的功能。 3.8.5可行性分析 1. 项目研究可行性分析 为了更好地发挥高校管理工作的作用,结合时代的发展趋向,建立起智能化校园平台的模式,以移动端为主的项目对于优化高校成绩管理方向提供技术支持和理论支撑,为高校节省经济成本,改进人员的利用率,为师生操作提供巨大的便捷。根据对移动端软件行业的分析可知,国家特别重视移动端制造行业的发展及高校的教育发展。将两者进行有效结合,发挥市场主导作用,具有重要的意义。项目在研究中具有高产出、低成本、易实行的特点,对于高校工作管理具有切合实际的发展需要。 2. 社会可行性分析 本系统将大大改善数据处理速度,并且更加方便地对数据进行管理,同时可以减少人力资源的浪费以及工资支出。 在法律方面,本系统属于学校专用系统,不涉及侵犯他人专利权和侵犯版权,符合法律要求; 在使用上,各类学院规模的不断扩大、课程的增多,迫切需要开发基于网络的学生成绩管理系统来提高管理工作效率。 从学院工作人员素质方面,已经满足使用该软件系统的需求。 本项目的实施坚持自主创新,注重核心技术的创新,不仅使新技术的研究与应用实现紧密结合,而且有利于促进、更新管理应用技术开发和发展,为改善教育管理,促进以移动端为主的应用水平和领域带来了极大的商机。该项目的应用将会促进教育管理技术的发展,扩大计算机在教育领域的社会认同水平,带动和促进IT技术应用全面进步。 3. 经济可行性分析 随着科学技术的不断发展与创新进步,以移动端为主的软件创新在当代显得日益重要,软件已经成为服务人们生产、生活及工作的便利工具,它所带来的经济效益对于企业,甚至是高校来说都是无比重要的。在互联网新时代,国家、企业和社会的发展都离不开软件; 然而,它所消耗的人力和财力也是巨大的。因此,对于当今时代而言,不仅仅要在计算机方面有所发展,还应该将其应用于移动端,以此方便人们的生活,使互联网发挥更大的作用。 软件产业发展迅速,它已成为近几年国内增长最快的产业,具有高投入、低成本和低污染等特点的绿色发展产业。从目前国产系统现状看,基础软件产业体系正在逐步改善。在最近几年中,软件系统在软件行业各子行业中占较大的部分,2018年规模达到6.3万亿元,比前几年翻了一番。由此可见,它所带来的经济效益巨大,且所占的成本较低,对于高校来说也是如此。成绩管理系统是基于教务网数据库的一个管理系统,可以对已经使用的类似系统进行调查、分析和类比。基于Android的成绩管理系统所具有的特点: 开发工作量小,经济成本低; 系统开发过程中,所需要的团队的费用要比网站开发少,开发周期也明显缩短。据相关资料及实地调查,开发一款软件的成本在几万元左右,主要包括不同人员的工资费用及开发代码等所产生的费用,相比较开发计算机系统所需要的成本偏少,生产的周期也明显缩短。 1) 投资分析 成绩管理系统的研制是一个全新的系统。所以初期需求的投资如下。 (1) 建设投资: 包括采购、房屋和设施、操作系统和应用的软件。 (2) 其他一次性支出: 包括研究、数据库的建立、培训费。 (3) 非一次性支出: 包括设备维护、数据通信、人员的工资、保密安全开支等。 2) 收益分析 (1) 一次性收益: 包括开支缩减、存储和恢复技术的改进以及数据压缩技术、应用系统的提升引起的收益。 (2) 非一次性收益: 包括建立系统而导致的按月的、按年的能用人民币数目表示的收益、开支的减少。 (3) 不可定量的收益: 包括服务的改进、风险的减少等不可捉摸的收益。 3) 投资回收周期 成本估计: 教师耗费资金20000元; 货币的时间价值为Q,目前年利率为6.7%,则5年后得到的资金为: P=20000(1+6.7%)。表33为将收入折算成现在的价值。 表33投资回收 年 将来价值/元 1+i 现在价值/元 累计的现在价值/元 1 10000 1.0658 9342 9342 2 10000 1.1316 8684 18026 3 10000 1.1974 8026 26052 4 10000 1.2632 7368 33420 5 10000 1.3290 6710 40130 据统计,2年后就可以回收18026元,比初始投资少974元。第3年再回收8026元。因此,投资的回收期为2年多一点。即生命周期的收益远大于银行存款收益,是值得开发的。 市场前景: 根据教育部《2020年全国高等学校名单》,截至2020年6月30日,全国高等学校共计3005所。大学里移动通信有成绩管理这项工作,当系统应用在大学里时,对于各个学校成绩管理的工作效率、经济效率、数据的共享以及教学管理的数据分析起到极大的作用,所产生的社会效益和经济效益也是非常大的。 4. 技术可行性分析 在当前限制条件下,该系统的功能目标可以达到基本要求; 利用现有的技术可实现该系统的功能需求; 该系统所需要的开发人员的数量和技术的质量可以满足要求; 在规定时间内可以完成该系统; 可满足对该系统进行功能开发及性能改进等方面的要求,并提供相应的维护与后续的迭代更新操作。该系统主要运用团队掌握的框架技术、Android版界面制作、数据库应用技术、Java编程语言、软件工程分析和自动化研制技术。在开发中遇到未知的技术问题将通过进一步的团队讨论、学习与研究,设计成绩管理系统的功能点并完善和维护。在开发并交付给高校使用时,运维人员会同步对软件进行技术支持,指导高校的使用。客服人员也会对高校的使用情况进行实时记录并反馈,便于改进软件情况,为高校提供服务。 5. 安全可行、使用方面、运行方面、操作可行性分析 略。 3.8.6系统工程性能分析 系统性能分析、系统适应性、条件假定和限制(略)。 3.8.7风险分析 技术风险、管理风险、市场风险(略)。 3.8.8可选择的其他系统方案 考虑过的每一种可选择的系统方案,除上述进行自行开发外,也可以从国内外直接购买。 (1) 按照本报告提出的新系统建议,开发新的成绩管理系统。 (2) 选择国内外购买成绩管理系统。 3.8.9结论 根据上述对用户提出的需求,按照需求对现行系统的分析,结合本报告提出的新系统以及对新系统的可行性分析,可以给出结论: 可以开始进行系统开发。 有关项目的阶段与进度可以按照项目计划完成。 小结 本章介绍了可行性研究任务与步骤。在系统分析中说明了系统分析员的任务、面临的问题域与系统分析中的通信技术。在分析原理中介绍了信息域、建立模型与分解方法。要掌握成本效益分析方法,最后要学会编写项目开发计划。 综合练习3 一、 填空题 1. 可行性研究需要从可行性、可行性、可行性、可行性四个方面分析研究每种解决方法的可行性。 2. 社会可行性所涉及的范围包括、、、用户组织的管理模式及规范和其他一些技术人员常常不了解的陷阱等。 3. 典型的可行性研究有下列步骤: 系统定义、、、设计方案、推荐可行的方案和编写可行性研究报告。 二、 选择题 1. 技术可行性要解决()。 A. 存在侵权否B. 成本效益问题 C. 运行方式是否可行问题D. 技术风险问题 2. 在软件工程项目中,不随参与人数的增加而使软件的生产率增加的主要问题是()。 A. 工作阶段间的等待时间B. 生产原型的复杂性 C. 参与人员所需的工作站数D. 参与人员之间的通信困难 3. 制订软件计划的目的在于尽早对欲开发的软件进行合理估价,软件计划的任务是()。 A. 组织与管理B. 分析与估算 C. 设计与测试D. 规划与调度 三、 简答题 1. 可行性论证主要集中在哪些领域? 2. 如何进行软件的成本估算? 3. 可行性研究的任务是什么? 4. 简述可行性研究的步骤。 5. 在软件的系统分析之前,为什么要制定一个系统的标准? 6. 可行性研究报告的主要内容有哪些? 7. 你认为在成本估算中,货币的时间价值在可行性中的作用是什么? 8. 经过可行性研究后,一个项目如果值得开发,为什么还要制订项目开发计划?