资源描述
,可行性研究的目的不是解决问题,而是确定问题是否值得去解决。怎样达到这个目的呢,?,当然不能靠主观猜想而只能靠客观分析。必须分析几种主要的可能解法的利弊,从而判断原定的系统规模和目标是否现实,系统完成后所能带来的效益是否大到值得投资开发这个系统的程度。因此,可行性研究实质上是要进行一次大大压缩简化了的系统分析和设计的过程,也就是在较高层次上以较抽象的方式进行的系统分析和设计的过程。,2.1,可行性研究的任务,首先需要进一步分析和澄清问题定义。在问题定义阶段初步确定的规模和目标,如果是正确的就进一步加以肯定,如果有错误就应该及时改正,如果对目标系统有任何约束和限制,也必须把它们清楚地列举出来。,在澄清了问题定义之后,分析员应该导出系统的逻辑模型。然后从系统逻辑模型出发,探索若干种可供选择的主要解法,(,即系统实现方案,),。对每种解法都应该仔细研究它的可行性,一般说来,至少应该从下述三方面研究每种解法的可行性。,(1),技术可行性:使用现有的技术能实现这个系统吗,?,(2),经济可行性:这个系统的经济效益能超过它的开发成本吗,?,(3),操作可行性:系统的操作方式在这个用户组织内行得通吗,?,必要时还应该从法律、社会效益等更广泛的方面研究每种解法的可行性。,分析员应该为每个可行的解法制定一个粗略的实现进度。,2.,研究目前正在使用的系统,现有的系统是信息的重要来源。新的目标系统必须也能完成它的基本功能;另一方面,如果现有的系统是完美无缺的,用户自然不会提出开发新系统的要求,因此,现有的系统必然有某些缺点,新系统必须能解决旧系统中存在的问题。此外,运行使用旧系统所需要的费用是一个重要的经济指标,如果新系统不能增加收入或减少使用费用,那么从经济角度看新系统就不如旧系统。,应该仔细阅读分析现有系统的文档资料和使用手册,也要实地考察现有的系统。应该注意了解这个系统可以做什么,为什么这样做,还要了解使用这个系统的代价。在了解上述这些信息的时候显然必须访问有关的人员。,错误做法是花费过多时间去分析现有的系统。这个步骤的目的是了解现有系统能做什么,而不是了解它怎样做这些工作。分析员应该画出描绘现有系统的高层系统流程图,(,见,2.3,节,),,并请有关人员检验他对现有系统的认识是否正确。千万不要花费太多时间去了解和描绘现有系统的实现细节。,没有一个系统是在“真空”中运行的,绝大多数系统都和其他系统有联系。应该注意了解并记录现有系统和其他系统之间的接口情况,这是设计新系统时的重要约束条件。,3.,导出新系统的高层逻辑模型,优秀的设计过程通常总是从现有的物理系统出发,导出现有系统的逻辑模型,再参考现有系统的逻辑模型,设想目标系统的逻辑模型,最后根据目标系统的逻辑模型建造新的物理系统。,通过前一步的工作,分析员对目标系统应该具有的基本功能和所受的约束已有一定了解,能够使用数据流图,(,参看,2.4,节,),,描绘数据在系统中流动和处理的情况,从而概括地表达出他对新系统的设想。通常为了把新系统描绘得更清晰准确,还应该有一个初步的数据字典,(,参看,2.5,节,),,定义系统中使用的数据。数据流图和数据字典共同定义了新系统的逻辑模型,以后可以从这个逻辑模型出发设计新系统。,4.,进一步定义问题,新系统的逻辑模型实质上表达了分析员对新系统必须做什么的看法。分析员应该和用户一起再次复查问题定义、工程规模和目标,这次复查应该把数据流图和数据字典作为讨论的基础。如果分析员对问题有误解或者用户曾经遗漏了某些要求,那么现在是发现和改正这些错误的时候了。,可行性研究的前,4,个步骤实质上构成一个循环。分析员定义问题,分析这个问题,导出一个试探性的解;在此基础上再次定义问题,再一次分析这个问题,修改这个解;继续这个循环过程,直到提出的逻辑模型完全符合系统目标。,5.,导出和评价供选择的解法,分析员应该从他建议的系统逻辑模型出发,导出若干个较高层次的,(,较抽象的,),物理解法供比较和选择。导出供选择的解法的最简单的途径,是从技术角度出发考虑解决问题的不同方案。还可以使用组合的方法导出若干种可能的物理系统。,当从技术角度提出了一些可能的物理系统之后,应该根据技术可行性的考虑初步排除一些不现实的系统。把技术上行不通的解法去掉之后,就剩下了一组技术上可行的方案。,其次可以考虑操作方面的可行性。分析员应该根据使用部门处理事务的原则和习惯,检查技术上可行的那些方案,去掉其中从操作方式或操作过程的角度看用户不能接受的方案。,接下来应该考虑经济方面的可行性。分析员应该估计余下的每个可能的系统的开发成本和运行费用,并且估计相对于现有的系统而言这个系统可以节省的开支或可以增加的收入。在这些估计数字的基础上,对每个可能的系统进行成本,/,效益分析,(,参看,2.6,节,),。一般说来,只有投资预计能带来利润的系统才值得进一步考虑。,最后为每个在技术、操作和经济等方面都可行的系统制定实现进度表,这个进度表不需要,(,也不可能,),制定得很详细,通常只需要估计生命周期每个阶段的工作量。,6.,推荐行动方针,根据可行性研究结果应该做出的一个关键性决定是,是否继续进行这项开发工程。分析员必须清楚地表明他对这个关键性决定的建议。如果分析员认为值得继续进行这项开发工程,那么他应该选择一种最好的解法,并且说明选择这个解决方案的理由。通常使用部门的负责人主要根据经济上是否划算决定是否投资于一项开发工程,因此分析员对于所推荐的系统必须进行比较仔细的成本,/,效益分析。,7.,草拟开发计划,分析员应该为所推荐的方案草拟一份开发计划,除了制定工程进度表之外还应该估计对各类开发人员和各种资源的需要情况,应该指明什么时候使用以及使用多长时间。此外还应该估计系统生命周期每个阶段的成本。最后应该给出下一个阶段,(,需求分析,),的详细进度表和成本估计。,8.,书写文档提交审查,应该把上述可行性研究各个步骤的工作结果写成清晰的文档,请用户、客户组织的负责人及评审组审查,以决定是否继续这项工程及是否接受分析员推荐的方案。,系统流程图是概括地描绘物理系统的传统工具。它的基本思想是用图形符号以黑盒子形式描绘组成系统的每个部件,(,程序,文档,数据库,人工过程等,),。系统流程图表达的是数据在系统各部件之间流动的情况,而不是对数据进行加工处理的控制过程,因此尽管系统流程图的某些符号和程序流程图的符号形式相同,但是它却是物理数据流图而不是程序流程图。,2.3,系统流程图,当以概括的方式抽象地描绘一个实际系统时,仅仅使用图,2.1,中列出的基本符号就足够了。,当需要更具体地描绘一个物理系统时还需要使用图,2.2,(见书,29,页)中列出的系统符号,利用这些符号可以把一个广义的输入输出操作具体化为读写存储在特殊设备上的文件(或数据库),把抽象处理具体化为特定的程序或手工操作等。,2.3.1,符号,图,2.1,基本符号,介绍系统流程图的最好方法可能是通过一个具体例子说明它的用法。下面是一个简单的例子。,某装配厂有一座存放零件的仓库,仓库中现有的各种零件的数量以及每种零件的库存量临界值等数据记录在库存清单主文件中。当仓库中零件数量有变化时,应该及时修改库存清单主文件,如果哪种零件的库存量少于它的库存量临界值,则应该报告给采购部门以便定货,规定每天向采购部门送一次定货报告。,2.3.2,例子,该装配厂使用一台小型计算机处理更新库存清单主文件和产生定货报告的任务。零件库存量的每一次变化称为一个事务,由放在仓库中的,CRT,终端输入到计算机中;系统中的库存清单程序对事务进行处理,更新存储在磁盘上的库存清单主文件,并且把必要的定货信息写在磁带上。最后,每天由报告生成程序读一次磁带,并且打印出定货报告。图,2.3,的系统流程图描绘了上述系统的概貌。,图中每个符号用黑盒子形式定义了组成系统的一个部件,然而并没有指明每个部件的具体工作过程;图中的箭头确定了信息通过系统的逻辑路径。,系统流程图的习惯画法是使信息在图中从顶向下或从左向右流动。,图,2.3,库存清单系统的系统流程图,面对复杂的系统时,一个比较好的方法是分层次地描绘这个系统。首先用一张高层次的系统流程图描绘系统总体概貌,表明系统的关键功能。然后分别把每个关键功能扩展到适当的详细程度,画在单独的一页纸上。这种分层次的描绘方法便于阅读者按从抽象到具体的过程逐步深入地了解一个复杂的系统。,2.3.3,分层,数据流图,(DFD),是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。在数据流图中没有任何具体的物理部件,它只是描绘数据在软件中流动和被处理的逻辑过程。数据流图是系统逻辑功能的图形表示,即使不是专业的计算机技术人员也容易理解它,因此是分析员与用户之间极好的通信工具。此外,设计数据流图时只需考虑系统必须完成的基本逻辑功能,完全不需要考虑怎样具体地实现这些功能,所以它也是今后进行软件设计的很好的出发点。,2.4,数据流图,数据流图(,Data Flow Diagram,简称,DFD),是结构化分析的一种主要工具,是软件系统开发的主要工具,是组织中信息运动的抽象,是系统逻辑模型的主要形式。,它使用一组简单的符号,描述系统的数据由外部“流入”系统,经过多级的加工处理,经过不同结构的存储,最后以用户所需要的各种形式“流出”的全过程。它是面向功能的。,DFD,是结构化分析工具、是系统开发的重要工具、是组织中信息运动的抽象、是系统逻辑模型的重要形式。,DFD,是系统设计的主要依据。,采用自顶向下、逐层分解、先整体后局部的思想(结构化思想)进行设计。具体分为:,顶层图:反映系统总的处理功能及系统的外部环境(外部实体、数据流)。,一级细化图(第一层):对顶层图功能的分解与细化。,二级细化图(第二层):对一级细化图每个处理功能的进一步分解细化。,上层图的概括与抽象程度高,而下层图的细化程度高。细化原则:细化不是无止境的,以功能单一为止,。,1,数据流图说明,2,数据流图符号,外部实体:系统之外向系统提供原始数据的实体及接受系统结果数据的实体。,Rm,实体可以是人或机构。,DFD,中的实体与业务流程图中的实体不是一一对应的,业务流程图中进行系统内部处理的实体在,DFD,中不属于外部实体。,有些查询信息的接收者较多,可用“有关人员”来表示外部实体。,有些输入或输出的数据流涉及多个外部实体,可用概括的名称来表示。如:“基层单位”、“各车间”等。,说 明:,Pm,C,处理:计算机对数据的加工处理。,说 明:,处理的名称用动宾结构。,分解、细化的过程中要注意代码的对应反映出在处理,DFD,中的层次关系。如:,P;P1,P2;P1.1,P1.2;P2.1,P2.2,Dn,S,数据存储:保存数据的数据库文件。,说 明:,DFD,中的存储是数据库设计的基础。,数据存储也可以细分,分解后的数据存储代码要反映出其层次关系。,Dn,Dn1,Dn2,Dn3,数据存储的名称是唯一的,是名词或名词,词组。,数据流:系统输入与输出的数据。,说 明:,数据流的名称应与业务中的各种票据、报表相对应,其名称应是唯一的。,对于流入或流出,存储的数据流,,当,其名称,与,存储名称,相同时可以省略其名称及代码。,在顶层,DFD,图中已经给出了数据流的名称及代码时,在其细化的图中可以不再标明其名称而只标代码即可。,数据流也可以细化。,Fm(Fn),(1),按照自顶向下逐层分解的思想,将系统的功能逐步分解成功能独立的处理。一个处理分解后的图称其为该处理的子图,子图与父图必须保持,输入与输出的一致。,(2)同一级细化图的各子图可以通过公共的,存储联系,起来组成该级完整的细化图。,(3)为减少数据流线的交叉,允许同一存储或实体在同一个图中重复画出。,(4)处理与处理是通过存储联系的,不能直接用数据流线连结。,3,数据流图设计规则,(5),存储的输入来源或输出去向不能是外部实体,只能是处理。,(6)同一数据流不允许在同一级图中重复出现,数据不允许重复录入。,(7)处理中的非正常的错误情况处理,在,DFD,中不予表示,在,DFD,中,输入的数据就应该是正确的。,(8)数据处理对一个数据存储中的数据即读又写时,则数据流应用双向箭头。,(9)输入的查询条件及对话信息,不应作为数据流出现在,DFD,中。,3,数据流程图设计规则,3,数据流程图设计规则,(10)一个处理必须有输入与输出。,(11)简化,DFD,画图的规则:,a.,各图形元素的名称,只要上一级中已经给出,在其后面的图中就可以省略而只用其代码即可。,b.,流入或流出存储的数据流不必为之命名和确定代码。,c.,外部实体在顶层图中给出后,在其后的各图中均可省略。,(1),子图与父图的输入、输出必需保持一致的原则,。,D1,X,P1.1,A,子图,P1.2,P1,X,A,父图,4,数据流图设计规则说明,4,数据流程图设计规则说明,(2),各子图可通过公共的存储联系起来。,P3,的细化,DFD,P3.2,P3.1,P2.1,P2.2,B,P2,的细化,DFD,D1,D2,D2,D3,Y,4,数据流程图设计规则说明,(3,)存储的输入来源与输出去向不能是外部实体,而只能是处理,。,F1,R,D1,错误的输入,F8,D1,R,错误的输出,4,数据流程图设计规则说明,(4),非正常的错误情况处理,在,DFD,中不予表示,。,P2.1,F1,D1,R,正确的,F1,不正确的,F1,错误的数据流表示,校核,F1,(5),处理与处理是通过存储联系的,不能直接用数据流线连结。,4,数据流程图设计规则说明,(6),任何一个处理至少应有一个输入的数据流和一个输出的数据流。,4,数据流程图设计规则说明,(7),同一个数据流在同一个图中不能重复出现。,4,数据流程图设计规则说明,P2.1,P2.2,D1,D2,F1,F1,(1,)明确用户需求及业务处理详细过程与方法;,(2),明确系统的界限,;,(3)做好数据库的概念设计;,(4)考虑网络环境下各子系统的数据共享问题;,(5),设计顶层图,;,(6),设计一级细化,DFD;,(7),设计二级细化,DFD;,(8),设计三级及三级以下的细化,DFD。,5,数据流图设计步骤,(1),功能分解,。根据处理业务而逐步细化,就是将一个整体业务,先分成几个部分,再进一步将每个部分分解成小的部分,。,在实际设计中,高层按功能分解,低层按输入、处理、输出三部分分解。,(2),宽度与深度的考虑,。,在分解功能时,既不能过细,也不应过粗,一般一个处理分解后的处理个数应在37之间为宜。宽度大则深度小,宽度小则深度大,设计时应很好地权衡这两方面。,(3),细化不是越细越好,原则是数据处理具有单一功能,。,6,DFD,设计考虑的几个问题,方案1:按业务处理功能分解,(1),学生成绩管理顶层,DFD,教师,P,成,绩,管,理,各院系,重修通知,F5,留级通知,F6,成绩单,F1,处长,成绩统计表,F7,7,学生成绩管理,DFD,设计举例,(2),学生成绩管理一级细化,DFD,成绩输入,重修处理,成绩统计,留级处理,D2,重修名单,F1,F5,F6,F7,D1,成绩薄,P2,P3,P4,P1,(3),学生成绩管理二级细化,DFD,确定重修名单,打印重修通知,D1,F5,D2,P2,的细化,DFD,P2.2,P2.1,D3,留级名单,F6,确定留级名单,打印留级通知,D2,P3,的细化,DFD,P3.2,P3.1,统计计算,打印成绩统计表,D1,D4,成绩统计表,F7,P4,的细化,DFD,P4.2,P4.1,方案2:按“输入、处理、输出”的方法分解,(1),学生成绩管理顶层,DFD,教师,P,成,绩,管,理,各院系,重修通知,F5,留级通知,F6,成绩单,F1,处长,成绩统计表,F7,(2),学生成绩管理一级细化,DFD,P1,成绩单输入,P2,成绩处理,P3,报表打印,F1,F6,F5,F7,D4,成绩统计表,D3,留级名单,D2,重修名单,D1,成绩薄,(3),学生成绩管理二级细化,DFD,D1,P2.3,D4,成绩统计,D1,P2.1,D2,P2.2,D3,确定重修名单,确定留级名单,F6,P3.2,打印留级通知,D3,F7,P3.3,打印成绩统计表,D4,F5,P3.1,D2,打印重修通知,2.5数据字典,数据字典是数据流程图中所有元素的定义和说明的集合。这些元素是:,数据项,数据项又称数据元素,是系统中不可再分解的数据单元,是系统处理的基本数据单元,是数据流、数据存储的基本组成元素。在数据字典中,数据项条目包括数据项名称、别名、类型、长度和值域等属性。,数据结构,数据结构用于描述某些数据项之间的关系。一个数据结构可以由若干个数据项组成,也可以由若干个数据结构组成,还可以由若干个数据项和数据结构组成。数据字典中,数据结构条目包括数据结构的名称、编号、简单描述及其组成等。,数据流,数据流描述数据项或数据结构在系统中的传输路径。数据流条目包括数据流来源、去向、组成和流量等属性。,数据存储,数据存储指数据暂存或永久保存的地方。数据存储条目包括:名称、编号、流入/流出的数据流、组成、存取分析和关键字说明等。,处理逻辑,处理逻辑条目是对数据流程图中最底层的处理逻辑加以说明。处理逻辑条目包括:在数据流程图中的名称、编号、对处理过程的简单描述、处理过程的输入/输出、数据流及其来源和去向、主要功能的描述等。,外部实体,外部实体是信息系统数据的来源与去向。外部实体条目包括:实体名称、对实体的简单描述和有关的数据流等。,数据字典的建立有两种方式,即可以由手工方式生成,也可以由计算机方式生成。,手工方式是将各类条目按要求写在卡片上或者写在纸上,并分类建立一览表。,计算机方式是在手工方式的基础上,将各条目整理、存储在计算机中,由软件进行管理。,编号:唯一标识,,DFD,中的数据流代码。,来源:外部实体、处理。,去向:处理、外部实体。,数据结构:构成它的数据项。,数据流卡,名称,:成绩单,编号,:,F1,来源,:外部实体“教师”,去向,:处理“成绩输入”(,P1),数据结构,:课名、课号、姓名、学号、成绩、学期,说明:,注 意,所定义的数据流是,TOP,图中所给出的数据流;,数据流的“来源”、“去向”以最底层的,DFD,来决定。,数据流条目的内容与格式,数据流条目的内容与格式,数据存储条目的内容与格式,编号:唯一标识=,DFD,中的存储代码。,相关处理:说明进行读写操作的哪些作。,说明,:,数据结构,:,数据存储卡,名称,:成绩簿,编号,:,D1,相关处理,:由处理,P1,写入,,读取其数据的处理有,P2.1,、,P4.1。,注 意,它所定义的存储与,DFD,中的存储的名称和代码必须一致。,它所定义的存储对应,DFD,中最底层的存储。,编号:等于处理的代码,唯一标识。,输入:数据流、存储。,处理:实际处理业务的描述。如:计算方法、公式、分析、比较、加工等。,输出:数据流、存储。,数据处理卡,名称,:成绩输入,编号,:,P1,输入,:数据流“成绩单”,输出,:数据存储“成绩簿”,处理,:将数据流“成绩单”中的数据通过键盘输入,经过数据校验,确认后存储到数据存储“成绩簿”中。,说明,:,注 意,只定义最底层的数据处理。,数据处理条目的内容与格式,数据元素卡,名称,:姓名,别名,:,编号,:,I001,所属数据流,:,F1,、,F5,、,F6,所属存储,:,D1,、,D2,、,D3,类型,:字符,位数,:,8,取值范围,:汉字,说明,:,数据元素条目的内容与格式,编号:顺序号。,名称、别名:意义相同,名称不同的情况。,取值范围:对数据校验有用。,相关数据流、相关存储:用于,DFD,中的数据流和存储。,开发一个软件系统是一种投资,期望将来获得更大的经济效益。经济效益通常表现为减少运行费用或,(,和,),增加收入。但是,投资开发新系统往往要冒一定风险,系统的开发成本可能比预计的高,效益可能比预期的低。效益分析的目的正是要从经济角度分析开发一个特定的新系统是否划算,从而帮助客户组织的负责人正确地作出是否投资于这项开发工程的决定。,为了对比成本和效益,首先需要估计它们的数量。,2.6,成本,/,效益分析,软件开发成本主要表现为人力消耗,(,乘以平均工资则得到开发费用,),。成本估计不是精确的科学,因此应该使用几种不同的估计技术以便相互校验。下面简单介绍,3,种估算技术。,1.,代码行技术,代码行技术是比较简单的定量估算方法,它把开发每个软件功能的成本和实现这个功能需要用的源代码行数联系起来。通常根据经验和历史数据估计实现一个功能需要的源程序行数。当有以往开发类似工程的历史数据可供参考时,这个方法是非常有效的。,2.6.1,成本估计,一旦估计出源代码行数以后,用每行代码的平均成本乘以行数就可以确定软件的成本。每行代码的平均成本主要取决于软件的复杂程度和工资水平。,2.,任务分解技术,方法首先把软件开发工程分解为若干个相对独立的任务。再分别估计每个单独的开发任务的成本,最后累加起来得出软件开发工程的总成本。估计每个任务的成本时,通常先估计完成该项任务需要用的人力,(,以人月为单位,),,再乘以每人每月的平均工资而得出每个任务的成本。,最常用的办法是按开发阶段划分任务。如果软件系统很复杂,由若干个子系统组成,则可以把每个子系统再按开发阶段进一步划分成更小的任务。,典型环境下各个开发阶段需要使用的人力的百分比大致如表,2.2,(见书,40,页)所示。当然,应该针对每个开发工程的具体特点,并且参照以往的经验尽可能准确地估计每个阶段实际需要使用的人力。,3.,自动估计成本技术,采用自动估计成本的软件工具可以减轻人的劳动,并且使得估计的结果更客观。但是,采用这种技术必须有长期搜集的大量历史数据为基础,并且需要有良好的数据库系统支持。,成本,/,效益分析的第一步是估计开发成本、运行费用和新系统将带来的经济效益。运行费用取决于系统的操作费用,(,操作员人数,工作时间,消耗的物资等等,),和维护费用。系统的经济效益等于因使用新系统而增加的收入加上使用新系统可以节省的运行费用。因为运行费用和经济效益两者在软件的整个生命周期内都存在,总的效益和生命周期的长度有关,所以应该合理地估计软件的寿命。,2.6.2,成本,/,效益分析的方法,虽然许多系统在开发时预期生命周期长达,10,年以上,但是时间越长系统被废弃的可能性也越大,为了保险起见,以后在进行成本,/,效益分析时一律假设生命周期为,5,年。,应该比较新系统的开发成本和经济效益,以便从经济角度判断这个系统是否值得投资,但是,投资是现在进行的,效益是将来获得的,不能简单地比较成本和效益,应该考虑货币的时间价值。,1.,货币的时间价值,通常用利率的形式表示货币的时间价值。假设年利率为,i,,如果现在存入,P,元,则,n,年后可以得到的钱数为:,F=P(1+i),n,这也就是,P,元钱在,n,年后的价值。反之,如果,n,年后能收入,F,元钱,那么这些钱的现在价值是:,P=F/(1+i),n,例如,修改一个已有的库存清单系统,使它能在每天送给采购员一份定货报表。修改已有的库存清单程序并且编写产生报表的程序,估计共需,5000,元;系统修改后能及时定货将消除零件短缺问题,估计因此每年可以节省,2500,元,,5,年共可节省,12500,元。但是,不能简单地把,5000,元和,12500,元相比较,因为前者是现在投资的钱,后者是若干年以后节省的钱。,假定年利率为,12%,,利用上面计算货币现在价值的公式可以算出修改库存清单系统后每年预计节省的钱的现在价值,如表,2.3,(见书,41,页)所示。,2.,投资回收期,通常用投资回收期衡量一项开发工程的价值。所谓投资回收期就是使累计的经济效益等于最初投资所需要的时间。显然,投资回收期越短就能越快获得利润,因此这项工程也就越值得投资。,投资回收期仅仅是一项经济指标,为了衡量一项开发工程的价值,还应该考虑其他经济指标。,3.,纯收入,衡量工程价值的另一项经济指标是工程的纯收入,也就是在整个生命周期之内系统的累计经济效益,(,折合成现在值,),与投资之差。这相当于比较投资开发一个软件系统和把钱存在银行中,(,或贷给其他企业,),这两种方案的优劣。如果纯收入为零,则工程的预期效益和在银行存款一样,但是开发一个系统要冒风险,因此从经济观点看这项工程可能是不值得投资的。如果纯收入小于零,那么这项工程显然不值得投资。,4.,投资回收率,把资金存入银行或贷给其他企业能够获得利息,通常用年利率衡量利息多少。类似地也可以计算投资回收率,用它衡量投资效益的大小,并且可以把它和年利率相比较,在衡量工程的经济效益时,它是最重要的参考数据。,已知现在的投资额,并且已经估计出将来每年可以获得的经济效益,那么,给定软件的使用寿命之后,怎样计算投资回收率呢,?,设想把数量等于投资额的资金存入银行,每年年底从银行取回的钱等于系统每年预期可以获得的效益,在时间等于系统寿命时,正好把在银行中的存款全部取光,那么,年利率等于多少呢,?,这个假想的年利率就等于投资回收率。,可行性研究进一步探讨问题定义阶段所确定的问题是否有可行的解。在对问题正确定义的基础上,通过分析问题,导出试探性的解,然后复查并修正问题定义,再次分析问题,改进提出的解法,。经过定义问题、分析问题、提出解法的反复过程,最终提出一个符合系统目标的高层次的逻辑模型。然后根据系统的这个逻辑模型设想各种可能的物理系统,并且从技术、经济和操作等各方面分析这些物理系统的可行性。最后,系统分析员提出一个推荐的行动方针,提交用户和客户组织负责人审查批准。,2.7,小结,在表达分析员对现有系统的认识和描绘他对未来的物理系统的设想时,系统流程图是一个很好的工具。系统流程图实质上是物理数据流图,它描绘组成系统的主要物理元素以及信息在这些元素间流动和处理的情况。,数据流图的基本符号只有,4,种,它是描绘系统逻辑模型的极好工具。通常数据字典和数据流图共同构成系统的逻辑模型。没有数据字典精确定义数据流图中每个元素,数据流图就不够严密;然而没有数据流图,数据字典也很难发挥作用。,成本,/,效益分析是可行性研究的一项重要内容,是客户组织负责人从经济角度判断是否继续投资于这项工程的主要依据。,2-1,在软件开发的早期阶段为什么要进行可行性研究,?,应该从哪些方面研究目标系统的可行性,?,2-2,为方便储户,某银行拟开发计算机储蓄系统。储户填写的存款单或取款单由业务员键入系统,如果是存款,系统记录存款人姓名、住址、存款类型、存款日期、利率等信息,并印出存款单给储户;如果是取款,系统计算利息并印出利息清单给储户。,请写出问题定义并分析此系统的可行性。,习题,2-3,为方便旅客,某航空公司拟开发一个机票预订系统。旅行社把预订机票的旅客信息(姓名、性别、工作单位、身份证号码、旅行时间、旅行目的地等)输入进该系统,系统为旅客安排航班,印出取票通知和账单,旅客在飞机起飞的前一天凭取票通知和账单交款取票,系统校对无误即印出机票给旅客。,请写出问题定义并分析此系统的可行性,。,2-4,目前住院病人主要由护士护理,这样做不仅需要大量护士,而且由于不能随时观察危重病人的病情变化,还会延误抢救时机。某医院打算开发一个以计算机为中心的患者监护系统,请写出问题定义,并且分析开发这个系统的可行性。,医院对患者监护系统的基本要求是随时接收每个病人的生理信号,(,脉搏、体温、血压、心电图等,),,定时记录病人情况以形成患者日志,当某个病人的生理信号超出医生规定的安全范围时向值班护士发出警告信息,此外,护士在需要时还可以要求系统印出某个指定病人的病情报告。,2-5,北京某高校可用的电话号码有以下几类:校内电话号码由,4,位数字组成,第,1,位数字不是,0,;校外电话又分为本市电话和外地电话两类,拨校外电话需先拨,0,,若是本市电话则再接着拨,8,位数字,(,第,1,位不是,0),,若是外地电话则拨,3,位区码再拨,8,位电话号码,(,第,1,位不是,0),。,请用,2.5.2,小节讲述的定义数据的方法,定义上述的电话号码。,
展开阅读全文