软件工程导论第4版第2章_第1页
软件工程导论第4版第2章_第2页
软件工程导论第4版第2章_第3页
软件工程导论第4版第2章_第4页
软件工程导论第4版第2章_第5页
已阅读5页,还剩69页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第2章可行性研究2.1可行性研究的任务2.2可行性研究过程2.3系统流程图2.4数据流图2.5数据字典2.6本钱/效益分析2.7小结习题可行性研究的目的不是解决问题,而是确定问题是否值得去解决。怎样到达这个目的呢?当然不能靠主观猜测而只能靠客观分析。必须分析几种主要的可能解法的利弊,从而判断原定的系统规模和目标是否现实,系统完成后所能带来的效益是否大到值得投资开发这个系统的程度。因此,可行性研究实质上是要进行一次大大压缩简化了的系统分析和设计的过程,也就是在较高层次上以较抽象的方式进行的系统分析和设计的过程。2.1可行性研究的任务首先需要进一步分析和澄清问题定义。在问题定义阶段初步确定的规模和目标,如果是正确的就进一步加以肯定,如果有错误就应该及时改正,如果对目标系统有任何约束和限制,也必须把它们清楚地列举出来。在澄清了问题定义之后,分析员应该导出系统的逻辑模型。然后从系统逻辑模型出发,探索假设干种可供选择的主要解法(即系统实现方案)。对每种解法都应该仔细研究它的可行性,一般说来,至少应该从下述三方面研究每种解法的可行性。可行性研究最根本的任务是对以后的行动方针提出建议。如果问题没有可行的解,分析员应该建议停止这项开发工程,以防止时间、资源、人力和金钱的浪费;如果问题值得解,分析员应该推荐一个较好的解决方案,并且为工程制定一个初步的方案。可行性研究需要的时间长短取决于工程的规模。一般说来,可行性研究的本钱只是预期的工程总本钱的5%~10%。典型的可行性研究过程有下述一些步骤:1.复查系统规模和目标分析员访问关键人员,仔细阅读和分析有关的材料,以便对问题定义阶段书写的关于规模和目标的报告书进一步复查确认,改正模糊或不确切的表达,清晰地描述对目标系统的一切限制和约束。这个步骤的工作,实质上是为了确保分析员正在解决的问题确实是要求他解决的问题。2.2可行性研究过程没有一个系统是在“真空〞中运行的,绝大多数系统都和其他系统有联系。应该注意了解并记录现有系统和其他系统之间的接口情况,这是设计新系统时的重要约束条件。3.导出新系统的高层逻辑模型优秀的设计过程通常总是从现有的物理系统出发,导出现有系统的逻辑模型,再参考现有系统的逻辑模型,设想目标系统的逻辑模型,最后根据目标系统的逻辑模型建造新的物理系统。通过前一步的工作,分析员对目标系统应该具有的根本功能和所受的约束已有一定了解,能够使用数据流图(参看2.4节),描绘数据在系统中流动和处理的情况,从而概括地表达出他对新系统的设想。通常为了把新系统描绘得更清晰准确,还应该有一个初步的数据字典(参看2.5节),定义系统中使用的数据。数据流图和数据字典共同定义了新系统的逻辑模型,以后可以从这个逻辑模型出发设计新系统。4.进一步定义问题新系统的逻辑模型实质上表达了分析员对新系统必须做什么的看法。分析员应该和用户一起再次复查问题定义、工程规模和目标,这次复查应该把数据流图和数据字典作为讨论的根底。如果分析员对问题有误解或者用户曾经遗漏了某些要求,那么现在是发现和改正这些错误的时候了。可行性研究的前4个步骤实质上构成一个循环。分析员定义问题,分析这个问题,导出一个试探性的解;在此根底上再次定义问题,再一次分析这个问题,修改这个解;继续这个循环过程,直到提出的逻辑模型完全符合系统目标。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分层2.4数据流图数据流图(DataFlowDiagram简称DFD)是结构化分析的一种主要工具,是软件系统开发的主要工具,是组织中信息运动的抽象,是系统逻辑模型的主要形式。它使用一组简单的符号,描述系统的数据由外部“流入〞系统,经过多级的加工处理,经过不同结构的存储,最后以用户所需要的各种形式“流出〞的全过程。它是面向功能的。①①DFD是结构化分析工具、是系统开发的重要工具、是组织中信息运动的抽象、是系统逻辑模型的重要形式。②DFD是系统设计的主要依据。③采用自顶向下、逐层分解、先整体后局部的思想〔结构化思想〕进行设计。具体分为:顶层图:反映系统总的处理功能及系统的外部环境〔外部实体、数据流〕。一级细化图(第一层):对顶层图功能的分解与细化。二级细化图(第二层):对一级细化图每个处理功能的进一步分解细化。④

上层图的概括与抽象程度高,而下层图的细化程度高。⑤细化原那么:细化不是无止境的,以功能单一为止。1.数据流图说明2.数据流图符号

外部实体:系统之外向系统提供原始数据的实体及接受系统结果数据的实体。Rm①实体可以是人或机构。②DFD中的实体与业务流程图中的实体不是一一对应的,业务流程图中进行系统内部处理的实体在DFD中不属于外部实体。③有些查询信息的接收者较多,可用“有关人员〞来表示外部实体。④有些输入或输出的数据流涉及多个外部实体,可用概括的名称来表示。如:“基层单位〞、“各车间〞等。说明:PmC处理:计算机对数据的加工处理。

说明:①

处理的名称用动宾结构。②分解、细化的过程中要注意代码的对应反映出在处理DFD中的层次关系。如:P;P1,P2…;P1.1,P1.2…;P2.1,P2.2…DnS数据存储:保存数据的数据库文件。说明:①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〕子图与父图的输入、输出必需保持一致的原那么。D1XP1.1A子图P1.2P1XA父图4.数据流图设计规那么说明4.数据流程图设计规则说明〔2〕各子图可通过公共的存储联系起来。P3的细化DFDP3.2P3.1P2.1P2.2BP2的细化DFDD1D2D2D3Y4.数据流程图设计规则说明〔3〕存储的输入来源与输出去向不能是外部实体,而只能是处理。F1RD1错误的输入F8D1R错误的输出4.数据流程图设计规则说明〔4〕非正常的错误情况处理,在DFD中不予表示。P2.1F1D1R正确的F1不正确的F1错误的数据流表示校核F1〔5〕处理与处理是通过存储联系的,不能直接用数据流线连结。4.数据流程图设计规则说明(6)任何一个处理至少应有一个输入的数据流和一个输出的数据流。4.数据流程图设计规则说明〔7〕同一个数据流在同一个图中不能重复出现。4.数据流程图设计规则说明P2.1P2.2D1D2F1F1〔1〕明确用户需求及业务处理详细过程与方法;〔2〕明确系统的界限;〔3〕做好数据库的概念设计;〔4〕考虑网络环境下各子系统的数据共享问题;〔5〕设计顶层图;〔6〕设计一级细化DFD;〔7〕设计二级细化DFD;〔8〕设计三级及三级以下的细化DFD。5.数据流图设计步骤〔1〕功能分解。根据处理业务而逐步细化,就是将一个整体业务,先分成几个局部,再进一步将每个局部分解成小的局部,……。在实际设计中,高层按功能分解,低层按输入、处理、输出三局部分解。〔2〕宽度与深度的考虑。在分解功能时,既不能过细,也不应过粗,一般一个处理分解后的处理个数应在3—7之间为宜。宽度大那么深度小,宽度小那么深度大,设计时应很好地权衡这两方面。〔3〕细化不是越细越好,原那么是数据处理具有单一功能。6.DFD设计考虑的几个问题方案1:按业务处理功能分解

(1)学生成绩管理顶层DFD教师P成绩管理各院系重修通知F5留级通知F6成绩单F1处长成绩统计表F77.学生成绩管理DFD设计举例(2)学生成绩管理一级细化DFD成绩输入重修处理成绩统计留级处理D2

重修名单F1F5F6F7D1

成绩薄P2P3P4P1(3)学生成绩管理二级细化DFD确定重修名单打印重修通知D1F5D2P2的细化DFDP2.2P2.1D3留级名单F6确定留级名单打印留级通知D2P3的细化DFDP3.2P3.1统计计算打印成绩统计表D1D4成绩统计表F7

P4的细化DFDP4.2P4.1方案2:按“输入、处理、输出〞的方法分解(1)学生成绩管理顶层DFD教师P成绩管理各院系重修通知F5留级通知F6成绩单F1处长成绩统计表F7(2)学生成绩管理一级细化DFDP1成绩单输入P2成绩处理P3报表打印F1F6F5F7D4成绩统计表D3留级名单D2

重修名单D1

成绩薄(3)学生成绩管理二级细化DFDD1P2.3D4成绩统计D1P2.1D2P2.2D3确定重修名单确定留级名单F6P3.2打印留级通知D3F7P3.3打印成绩统计表D4F5P3.1D2打印重修通知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本钱/效益分析2.6.1本钱估计本钱/效益分析的第一步是估计开发本钱、运行费用和新系统将带来的经济效益。运行费用取决于系统的操作费用(操作员人数,工作时间,消耗的物资等等)和维护费用。系统的经济效益等于因使用新系统而增加的收入加上使用新系统可以节省的运行费用。因为运行费用和经济效益两者在软件的整个生命周期内都存在,总的效益和生命周期的长度有关,所以应该合理地估计软件的寿命。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小结在表达

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论