




已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
薁衿肁肂芁蚁羇肁蒃袇羃肀薆螀衿肀蚈薃膈聿莈螈肃肈蒀薁罿肇薂螆袅膆节蕿螁膅莄螅膀膄薆薇肆膄虿袃羂膃莈蚆袈膂蒁袁螄膁薃蚄肃芀芃衿罿艿莅蚂袅芈蒇袈螁芈蚀蚁腿芇荿薃肅芆蒂蝿羁芅薄薂袇芄芄螇螃莃莆薀肂莂蒈螅羈莂薀薈袄莁莀螄袀莀蒂蚇膈荿薅袂肄莈蚇蚅羀莇莇袀袆羄葿蚃螂肃薁衿肁肂芁蚁羇肁蒃袇羃肀薆螀衿肀蚈薃膈聿莈螈肃肈蒀薁罿肇薂螆袅膆节蕿螁膅莄螅膀膄薆薇肆膄虿袃羂膃莈蚆袈膂蒁袁螄膁薃蚄肃芀芃衿罿艿莅蚂袅芈蒇袈螁芈蚀蚁腿芇荿薃肅芆蒂蝿羁芅薄薂袇芄芄螇螃莃莆薀肂莂蒈螅羈莂薀薈袄莁莀螄袀莀蒂蚇膈荿薅袂肄莈蚇蚅羀莇莇袀袆羄葿蚃螂肃薁衿肁肂芁蚁羇肁蒃袇羃肀薆螀衿肀蚈薃膈聿莈螈肃肈蒀薁罿肇薂螆袅膆节蕿螁膅莄螅膀膄薆薇肆膄虿袃羂膃莈蚆袈膂蒁袁螄膁薃蚄肃芀芃衿罿艿莅蚂袅芈蒇袈螁芈蚀蚁腿芇荿薃肅芆蒂蝿羁芅薄薂袇芄芄螇螃莃莆薀肂莂蒈螅羈莂薀薈袄莁莀螄袀莀蒂蚇膈荿薅袂肄莈蚇蚅羀莇莇袀袆羄葿蚃螂肃薁衿肁肂芁蚁羇肁蒃袇羃肀薆螀衿肀蚈薃膈聿莈螈肃肈蒀薁罿肇薂螆袅膆节蕿螁 第二章 可行性研究我们在做任何工作以前,必须明确工作的性质、任务、制定完成任务的计划。显然完成一个软件系统的开发,也应解决好类似的问题。明确软件开发系统的任务,完成任务的价值,制定出完成任务的计划,是软件系统可行性研究的目的。2.1 可行性研究2.1.1可行性研究的任务如果不限时间、不限资源、则任何研制项目都是可行的!然而在开发以计算机为基础的系统时,需要用最小的代价,在尽可能短的时间内确定问题是否能够解决。这种可行性研究的目的是确定我们所研究的问题是否值得去解,系统完成后所能带来的效益是否大到值得投资开发这个系统的程度。可行性研究的实质就是要进行一次压缩,简化了的系统分析和设计的过程,也就是在较高层次上以较抽象方式进行系统分析和系统设计的过程,可行性研究应着重考虑如下五个方面。1.技术可行性。是指使用现有的技术能否实现这个系统。它包括开发风险在限制条件范围内达到必需的功能与性能;资源配置指现有的技术人员是否胜任,开发系统的软、硬件资源是否能如期得到;技术指现有的技术是否已发展到这样的水平,能够支持系统的研制。2.经济可行性。指新系统的经济效益能否超过开发成本。包括评价经济的合理性,权衡支出的费用和收到的利益,正确估计开发费用以及最终从所开发的系统获得的收入和利益。其中经济的合理性包括成本/效益分析,长期的总体的经营策略,对其他获利中心或获利产品的影响,开发工作需用资源的购置费用、潜在的市场等等。3.运行可行性。指为新系统规定的运行方式是否可行。如果新系统是建立在原来已担负其他任务的计算机系统上,就不能要求它在实时在线状态下运行,以免与原有的任务相矛盾。 4.操作可行性。指系统的操作方式在这个用户组织内是否行得通。它包括人事政策,科技政策和必要的管理措施。5.法律可行性。指新系统的开发是否会侵犯他人、集体或国家的利益,是否违反了国家的法律,并由此而承担法律责任。可行性研究并不保证一个系统经济上明显合理、技术风险低,很少法律问题,而且不存在其他合理方案。然而,我们之所以要进行可行性研究,其目的是对以后的行动方针提出建议。如果问题没有可行的解,那么分析员应该建议停止这项开发工程,以避免时间、资源、人力和金钱的浪费。如果问题值得解,那么分析员应该推荐一个较好的解决方案,并为工程制定一个初步计划。可行性研究需要的时间长短取决于系统的规模。一般来说,可行性研究的成本只是预期工程总成本的510%。2.1.2 可行性研究的步骤1.复查系统规模和目标。要仔细阅读和分析分析员在问题定义阶段书写的关于系统目标和规模的报告书,确定报告书的内容,修改不确切的叙述,清晰地描述对目标系统的一切限制和约束,确保分析员提交的报告书确实是用户要求解决的问题。2.研究现有的系统。现有系统是信息的重要来源,现有系统要完成的工作,就是新系统所必须具备的功能。现有系统存在的缺点,新系统必须加以改进。现有系统所不具备的功能,又是用户必须的,则新系统一定要预以增加。现有系统所需要的费用是新系统的一个重要的投资依据。这样的调查研究,是了解一个陌生应用领域的最快方法。既可以使新系统脱胎而生,又不全盘照抄。另外还要注意现有系统与其他系统之间的通信接口,这是新系统设计的重要约束条件。3.导出新系统的高层逻辑模型。软件工程设计总是从现有的物理系统出发,导出现有物理系统的逻辑模型;再以现有物理系统的逻辑模型为基础,设计出新系统的高层逻辑模型;最后根据高层逻辑模型建造新的物理系统。依据新系统的功能和约束条件,我们可以使用数据流图(DFD图)来描绘数据在系统中流动和处理的情况,使用数据字典来定义系统中使用的数据,从而完成新系统的逻辑模型。至于物理系统采用系统流程图来表示。4.重新定义问题。新系统的逻辑模型是否能满足用户的要求,分析员和用户应该一起进行复审。复审以数据流图和数据字典为依据,对问题的定义、工程模型和目标进行审查。如果有分岐和遗漏等问题,应立即进行改正。上述可行性研究步骤实质上是一个循环,即定义系统目标复查系统目标和规模研究现有系统设计新系统再定义系统目标。重复这个循环过程,直到提出的新系统逻辑模型完全符合系统目标和规模为止。5.提出供选择的方案。从系统的逻辑模型出发,以系统要求为目标,利用在数据流图上划分自动化边界的方法,我们可以提出若干种较高层次的物理解法供用户选择。针对多种供选方案,用户应从如下三个方面进行筛选:(1) 从技术角度排除那些不现实的方案;(2) 从操作角度去掉那些操作方式或操作过程用户不能接受的方案;(3) 从经济角度估算每个可能系统的成本/效益。一般来说,只有投资预计能带来利润的系统才值得开发。只有在技术、操作经济等方面都可行的系统,我们才为其制定实现进度表。此进度表不需要很详细,只是要估计生存周期每个阶段的工作量。6.推荐建议方案。在对上一步提出的各种可行方案的分析、比较的基础上,向用户提出推荐的方案,在推荐方案中应清楚地表明(1) 本项目的开发价值;(2) 推荐这个方案的理由;(3) 制定实现项目的进度表。7.决策。使用部门的负责人根据经济实力及分析员在可行性研究阶段对开发此项工程成本/效益情况的分析结论,决定是否继续这项开发工程。8.制定开发计划。分析员应为推荐的系统制定一份开发计划,它包括工程的进度、人材资源的需求及使用、设备资源的需求及使用(软、硬件工具)、估算生存周期每个阶段的成本等,最后给出下一阶段(需求分析)的详细进度表和成本估计。9.书写文档提交审查。把上述可行性研究各个步骤的结果写成清晰的文档,请用户和使用部门的负责人仔细审查,也可以召开论证会。论证会成员由用户、使用部门负责人及有关方面的专家组成,负责对提出的方案进行论证,最后由论证会成员签署意见,指明该开发计划是否通过。2.1.3 可行性论证报告的主要内容1.系统概述。是对问题的简单陈述,包括系统的开发目的、目标、业务对象和范围,新系统和它的各子系统的功能与特性,新系统与当前系统的比较,所需资源以及费用和进度的概况等。2.可行性分析。这是报告的主体部分,包括新系统在经济上、技术上、操作上、运行上、法律上的可行性,以及对新系统的主客观条件的分析。若存在多种方案,则应对各种方案进行比较,指明推荐的方案。3.限制。指对系统开发有影响的管理方面和技术方面的限制,包括项目的外部环境、接口、设计与实现、资源、费用或进度等。4.费用。估算软、硬件费用,制定出费用限额并注明。5.拟定开发计划。它包括工程进度表,人员配备情况,资源配备情况,估算出每个阶段的成本、约束条件等。6.结论意见。综上分析,说明新系统是否可行,其结论分为以下三类:(1) 可立即进行;(2) 推迟进行;(3) 不能或不值得进行。2.2 系统流程图系统流程图是描绘物理系统的传统工具。它的基本思想是用图形符号以黑盒子形式描绘系统里面的每个部件。包括程序、文件、数据库和各种表格、人工过程等。它表达了信息在系统各部件之间的流动情况。请读者注意它与程序流程图之间的区别。2.2.1 符号国家标准(GB1526-89)信息处理数据流程图、程序流程图、系统流程图、程序网络图和系统资源图的文件编制符号及约定为我们推荐了一套标准符号和使用约定。该标准是与国际标准化组织公布的标准ISO5807-85 Information processing documentation symbols and conventions for data, program and system flowcharts, program network charts and system resources charts相一致。系统流程图含有5种基本符号,如图2-1所示。11种系统符号如图2-2所示。符号 名称 说明处理 能改变数据值或数据位置的加工或部件,例如,程序、处理机、人工加工等都是处理。输入/输出 表示输入或输出(或既输入又输出),是一个广义的不指明具体设备的符号。连接 指出转到图的另一部分或从图的另一部分转来,通常在同一页上。换页连接 指出转到另一页图上或由另一页图转来。数据流 用来连接其他符号,指明数据流动方向。图2-1 基本符号符号 名称 说明穿孔卡片 表示用穿孔卡片输入或输出,也可表示一个穿孔卡片文件。文 档 通常表示打印输出,也可表示用打印终端输入数据。磁 带 磁带输入/输出,或表示一个磁带文件。联机存储 表示任何种类的联机存储,包括磁盘、磁鼓、软盘和海量存储器件等。磁 盘 磁盘输入/输出,也可表示存储在磁盘上的文件或数据库。磁 鼓 磁鼓输入/输出,也可表示存储在磁鼓上的文件或数据库。显 示 CRT终端或类似的显示部件,可用于输入或输出,也可既输入又输出。人工输入 人工输入数据的脱机处理,例如,填写表格。人工操作 人工完成的处理,例如,会计在工资支票上签名。辅助操作 使用设备进行的脱机操作。通信链路 通过远程通信线路或链路传送数据。图2-2 系统符号2.2.2 应用系统流程图是一种极好的设计工具,它有助于开发人员和用户交流信息,利用系统的每个具体物理元素可以更准确地估计成本和制定系统的开发进度。下面通过例子来说明系统流程图的使用。例 某工厂有一座零件仓库,仓库中现有各种零件的数量以及每种零件的库存量临界值等数据记录在库存清单主文件中。当仓库中零件数量发生变化时,应及时修改库存清单主文件。当某种零件的库存量少于它的库存量临界值时,则应报告给采购部门以便定货。规定每天向采购部门送一次定货报告。工厂使用一台微机处理更新库存清单主文件和产生定货报告的任务。仓库中的每一项业务都通过CRT终端输入到计算机中。系统中的库存清单程序负责对事务进行处理,更新存储在磁盘上的库存清单主文件,把必要的定货信息写在磁带上。每天由报告生成程序读一次磁带,生成并打印出定货报告。如图2-3所示。图中的箭头确定了信息流动的途径,对于复杂的系统,可以采用分层描述的方法来描绘整个系统。用一张高层次的系统流程图描绘系统总体概貌,然后分别把每个关键功能扩展到适当的详细程度,便于阅读者按照从抽象到具体的过程逐步深入地了解一个复杂系统。图2-3 库存清单系统的系统流程图HT2.3 数据流图数据流图简称DFD(Data Flow Diagram)图,它是描述数据处理过程的有力工具。数据流图从数据传送、加工的角度,以图形方式刻画数据处理系统的工作状况。数据流图描绘系统的逻辑模型,它是一种极好的通信工具。2.3.1 符号数据流图有四种基本符号,如图2-4(a)所示。有六种附加符号,如图2-4(b)所示。数据的源点/终点表示该系统数据的外部来源或去处,不受系统控制,是系统以外的人或事物。例如,仓库的管理员、工厂的采购员、供货单位、售票处等。也可以是另外一个数据处理系统向该系统提供数据或接收该系统向它发出的数据。加工(处理)并不一定是一个程序,它可以代表一系列程序,单个程序或者程序的一个模块,也可以代表用穿孔机穿孔或目视检查数据正确性等人工处理过程。数据存储不是指数据保存的物理地点或物理存储介质,而是对数据存储的逻辑描述。数据存储并不等同于一个文件,它可以表示一个文件,文件的一部分,数据库的元素或记录的一部分等等。数据可以存储在磁盘、磁带、主存、微缩胶片等介质上。数据存储有四种形式,即把一个数据存入数据存储;用一个数据去修改数据存储中的数据;从数据存储中读出一个数据;从数据存储中检索出一批数据。图2-4 数据流图的符号数据流表示数据在系统中的流动方向,一般分单向数据流和双向数据流两种。它可以由某一个外部项产生,也可以由某一个处理逻辑产生,还可以来自某一个数据存储。附加符号中的星号(*)表示数据流之间是“与”关系;加号(+)表示数据流之间是“或”关系;符号表示只能从数据流中选一个(互斥关系)。2.3.2 应用举例例1 一家工厂的采购部每天需要一张定货报表,报表按零件编号排序,列出所有需要再次定货的零件。对于需要订货的零件列出其零件编号、零件名称、定货数量、单价、供应者。零件入库或出库称为事务,通过放在仓库中的CRT终端把事务报告给定货系统。当某种零件的库存量少于临界值时就应该再次定货。下面用软件工程的方法画出该系统的数据流图。 分析过程如下:第一步首先确定系统的源点和终点,本题仓库管理员是数据的源点,采购员是数据的终点。其次是加工(处理),本题应该完成定货系统这样一个功能。最后考虑数据流,事务需从仓库送到系统中,显然事务是一个数据流;系统要把定货报表送给采购部,定货报表也是一个数据流。依据以上三点我们画出定货系统的基本数据流图,如图2-5所示。图2-5定货系统基本数据流图第二步首先将加工(处理)定货系统进行功能分解,变成事务处理和产生报表两部分。其次要考虑有关数据的存储问题,在本题中涉及到存储的信息有:库存清单、定货信息。依据图2-5和以上两点,我们画出定货系统功能级数据流图,见图2-6所示。图2-6定货系统功能级数据流图第三步将事务处理进一步分解为接收事务,更新库存清单、处理定货三部分。依据本分析和图2-6我们可以画出定货系统功能分解后的数据流图。见图2-7所示。其中1.1、1.2、1.3是图2-6中功能1的分解编号。图2-7定货系统功能分解后的数据流图例2 银行取款系统的数据流图(活期储蓄)。分析过程如下:第一步源点和终点都是储户。加工(处理)是完成取款的功能。数据流是取款单、存折、现款。依据以上三点画出银行取款系统的基本数据流图,如图2-8所示。图2-8取款系统基本数据流图第二步取款工作实际上是由储户资格审查、登录、付款三部分组成。数据存储部分涉及储户的帐卡和存折上数据的更新。依据图2-8及以上二点分析,我们可以画出取款系统的功能级数据流图,如图2-9所示。图2-9取款系统功能级数据流图读者可以根据自己的需要,将图2-9进一步细化,本书不再给出分解后的数据流图。例3 病员监视系统的数据流图。该系统监视病房中的每个病人的重要病情信号,更新及管理病人的病历,若出现问题立即通知护理人员,并且在需要时给出某一病人的有关报告。分析过程如下:第一步源点来自于病人本身或护士。终点是护士,因为一切报告和告警信息应汇集到护士处。加工(处理)是病员监视系统。数据流包括病情信号、报告、告警信息和要求报告。数据存储是指病员病历。依据以上分析,我们画出病员监视系统的基本数据流图,如图2-10所示。图2-10病员监视系统基本数据流图第二步对系统分析后,划分出四种功能,即通过一个床边监视器实现本地监视,在护士办公室实现中央监视,病人病历的更新,护士办公室提出报告。依据图2-10和以上分析,我们画出病员监视系统功能级数据流图,如图2-11所示。图2-11病员监视系统功能级数据流图第三步将中央监视系统划分为四个处理部分,包括分解病员信号,检查是否超出界限,产生告警信息,整理病员数据。依据图2-11和本次功能分解,我们可以画出病员监视系统功能分解后的数据流图,如图2-12所示。图2-12病员监视系统功能分解后的数据流图2.3.3 画数据流图的原则1.确定系统的源点和终点,对于数据流图而言它是系统的外部项。2.确定系统的输入和输出数据流。随着加工(处理)的细化,功能也就越来越具体,数据流也就越来越多,输入和输出也会相应地增加,但要保持分解前后输入/输出数据流必须相同。3.用“自顶向下”的方法,逐层画出数据流图。每张数据流图中加工(处理)的个数不能超过9个。4.将必要的存储与加工(处理)相匹配。5.在画数据流图时应避免线条交叉,必要时可使用重复的外部项(源点或终点)或数据存储符号。6.画出出错及例外条件处理情况。2.3.4 数据流图的用途1.作为交流信息的工具。系统分析人员把他对系统的认识或对目标系统的设想用数据流图描绘出来,供有关人员审查确认。由于数据流图中使用的符号不含任何物理实现细节,所以大多数用户都可以理解和评价它。2.作为分析和设计的工具。分析员在研究现有的系统,描绘其功能时常用数据流图表达他们对现有系统的认识,这种描绘方法形象、具体,它不同于系统流程图,使系统的功能和实现每个功能的具体方案区别开来。3.数据流图可以辅助物理系统的设计。在数据流图上依据不同处理的定时要求,可以画出许多组自动化边界,每组自动化边界就是一个不同的物理系统。例题1中的图2-7,由于自动化边界的划分方法不同,产生了两种不同的物理系统,即批处理方式和联机方式,见图2-13、2-14所示。4.数据流图对详细设计也有帮助,它是面向数据流设计(SD)方法的基础。图2-13这种划分自动化边界的方法暗示以批量方式更新库存清单图2-14另一种划分自动化边界的方法暗示以联机方式更新库存清单2.4数据字典数据字典是对数据流图中包含的所有元素定义的集合,即对数据流图中出现的所有名子(数据流、文件、数据单项、基本加工)进行定义。它的主要用途是供人们查阅对不了解条目的解释,在软件分析和设计过程中给人提供关于数据的描述信息。数据流图和数据字典共同构成系统的逻辑模型。数据流图描述了系统的“分解”,它表明系统由哪些部分组成。数据字典则为数据流图中出现的每一部分都给出“严格定义”,二者的有机配合,完整地描述了系统。2.4.1 数据字典的内容及定义方法一般来说,数据字典应该由如下四类元素组成,它们是数据流、文件、数据单项、基本加工(处理)。在组成数据字典时,要注意避免冗余,遵循有关数据流向在数据流图中描述,有关数据的组成在数据字典中描述,有关数据的加工细节在数据字典中描述的三原则。要尽量避免遗漏,如果确有遗漏发生,应该补充,这对于设计、编码、调试、维护会带来方便。同时应及时沟通,设法消除不一致性,减少别名的出现。1.数据流数据流通常有一个名字,它是由一组数据项组成的。数据流可以从加工流向加工,也可以从源点流向加工,或从加工流向终点。数据流还可以从加工流向文件,或从文件流向加工。任意两者之间可有一股或多股数据流,同一数据流图上不能有两股数据流同名。描述数据流时,要用到下述符号:=表示等价于(或定义为);+表示与;表示或; 表示重复;( )表示选择;mn表示界域。例如 运动员成绩=运动员号码+项目名+成绩+破记录课程=课程名+教员+教材名+课程表课程表=星期几+第几节课+教室2.文件文件是用来存储数据的,每个文件都有一个名子。文件的形式可以是数据库,也可以是规定结构的数据组织。指向文件的数据流可理解为写入文件,从文件引出的数据流可理解为自文件中读出数据。在分层的数据流图中,文件一般局部于某一层或某几层。例如 定期存款=帐号+户名+地址+款额+存期存期3.数据单项数据单项是指不可再分的数据项。例如 帐号=000000999999学生=姓名+年龄+性别+班级4.基本加工(处理)基本加工是加工的分量,是数据流图中不能再分解的加工。基本加工由基本加工的小说明和相应的描述构成。小说明集中描述一个加工“做什么”,目前小说明一般用自然语言、判定表和判定树来描述。(1) 用结构化自然语言描述小说明结构化自然语言是介于形式语言与自然语言之间的一种语言。结构化自然语言的语法通常分为内外两层,外层语法描述操作的控制结构顺序、选择、循环等,这些控制结构将加工中各个操作连接起来;内层语法一般没有限制。小说明的形式如下:加工编号:在数据流图中某个加工的编号加工名:在数据流图中某个加工的名字加工逻辑:此加工中实行的操作有关信息:执行此加工的条件例如 有一个加工为统计房产的功能可写为:加工编号:3.4加工名:统计房产加工逻辑:ZK()读房产文件,按面积分类,统计已分和未分配的住房数,输出统计表有关信息:有统计要求时执行此加工(2) 用判定表描述小说明判定表是用来描述一些不易用语言表达清楚的加工。它由条件类别、条件组合、操作、操作执行四部分组成。例 某旅游预订票系统规定,在旅游旺季7、8、9、12月份,如果订票数超过100张,则优惠票价的20%;100张以下,优惠10%。在旅游淡季,1至6月份、10、11月份,若订票数超过50张,则优惠25%;50张以下优惠10%。判定表的一般形式如表2-1所示。表2-1 旅游预订票系统判定表 (3) 用判定树描述小说明判定树本质上与判定表没什么两样,只不过它是图形表示法,更为人们熟悉和易于理解,上面的预订票系统,用判定树表示见图2-15所示。图2-15旅游预订票系统的判定树基本加工(处理)可用语言、表格、图形等多种形式来描述,也可将它们组合起来使用。2.4.2 数据字典的用途数据字典是分析阶段的工具,它有助于分析员和用户之间的交流与通信,它可以消除许多可能的误解与不一致性,是开发数据库系统的第一步。一般来说,中小规模的数据处理系统建立一个人工的数据字典就够了,对于大规模的数据处理系统,则应建立一个自动的数据字典。无论哪一种数据字典都应由专人管理,目的是保持其字典内容的一致与完整性,通常数据字典有如下五种用途。1.按要求列表,从数据字典中检索出所需要的信息,具有列全表、摘要列表、专项列表三种。2.修改和补充数据流图。数据流图初步画好后,相应的数据字典也随着建立起来。随着分析、设计的深入,修改和优化是再所难免的。对任何数据单项或数据结构,可通过数据字典找出使用该内容的项目,进行必要的修改,一般不会出现遗漏。3.可以由描述内容检索名称。若只知道一个数据单项的内容,而不知道它的名称,可通过内容检索知其名。4.保证一致性和完整性。根据数据字典,可以查出没有指明来源或去处的数据流,可以查出没有指明数据存储的数据单项和没有指明所属数据流的数据单项,可以指明没有被加工(处理)引用的数据单项,可以指明被加工(处理)引用而在输入数据流或输出数据流中未曾出现的数据单项等。5.数据定义可以直接使用在编程上。用户可以使用数据字典中的数据定义,对程序里的有关记录进行描述,帮助程序员进行程序设计。2.4.3 数据字典的实现方法数据字典的实现方法有三种,全人工过程、全自动化过程和混合过程。1.全人工过程(1) 为每个要定义的名字准备一张卡片;(2) 在卡片上注明其类型,即数据流、文件、数据单项、基本加工(处理)四种类型之一; (3) 写名子的定义;(4) 写该名子的其他特性或限制;(5) 将所有卡片按一定方式排序,如英文字母顺序或汉字笔画多少等。2.全自动化过程此类字典一般容量较大,有专门的计算机程序来管理,该管理程序本身应具有如下功能: (1) 规定字典的条目格式,条目指数据流、文件、数据单项等;(2) 接受按规定格式的字典条目的输入;(3) 具有查错措施,如报告非法输入、语法和重复定义错误等;(4) 具有编辑功能,对字典的条目能进行插、删、改等;(5) 能输出按次序的字典条目清单;(6) 能产生各类查阅报告。3.混合过程是将上述两种技术有机地结合在一起,形成数据字典的过程。其中字典的共性部分用全自动化过程完成,字典的某些个性部分用全人工过程来完成。具体实现不详述。但全人工过程一般适合于小系统,全自动化过程一般适合于大系统,混合过程一般适合于中等大小的系统或某些专门用途的系统。2.5 成本/效益分析开发一个系统实质上是一种投资,而投资的目的是为了在将来获得更大的经济效益。成本/效益分析从经济角度揭示了开发一个新系统是否划算,也为使用部门的负责人决策是否投资于某项开发工程提供了依据。2.5.1 成本估计成本估计是一种不精确的方法,使用时应该用几种不同的估计技术相互校验。下面介绍三类成本估算技术。1.代码行技术是一种比较简单定量的估算方法,把开发每个软件功能的成本和实现这个功能需要用的源程序代码行数联系起来,若有历史数据作参考的话,这种方法还是有效的。设 T软件成本;N软件源代码行数;A每行源代码的平均成本。则有:T=AN其中A取决于软件的复杂程度和工资水平。2.任务分解技术把软件系统分解为若干个独立的任务,然后再分别估计每个单独开发任务的成本,最后累加起来得到软件系统的总成本。设 T软件总成本;B每个单独开发任务的成本;系数。则有: T=B (1)又 C完成每个单独任务所需的人力(月);D每人每月的平均工资。则有 B=CD (2)由(1)和(2)得T=CD在典型环境下,各个阶段要使用的人力如表2-2所示。3.估算模型采用经验公式来计算软件的成本已有许多种方法,但到目前为止还没有任何一种估算模型能适用于所有各种软件和各种开发环境,而且大多数模型的一些经验数据都是从有限的项目样本中得出的,因此估算模型必须审慎地使用。(1) 参数方程大多数资源模型是根据过去的经验,并通过大量的统计和分析推导出来的。它们揭示了在一定条件下资源花费和软件规模的内在关系。1) 静态单变量静态单变量模型的一般形式如下:资源=C1(估计特点)eC2表2-2典型环境下各个开发阶段需要使用人力的百分比任务 人力%可行性研究 5需求分析 10设计 25编码和单元测试 20综合测试及维护 40 总计 100其中 资源通常指人力、开发工作所需的工作量,以人/月或人/日、人/年为单位计算。也可以是工程期限,需要的人数或文档数量等;C1、C经验数据;估计特点源代码行数。例 Doty在1977年发表的估算开发工作量的算法列在表2-3中。表2-3估算开发工作量的算法应用范围 目标码 源代码全 部 MM=4.790I0.991 MM=5.258I1.057命令和控制 MM=4.573I1.228 MM=4.089I1.263科学计算 MM=4.495I1.068 MM=7.054I1.019商业 MM=2.895I0.784 MM=4.495I0.781实用程序 MM=12.039I0.719 MM=10.078I0.811表中MM是开发所需要用的人力,包括分析、设计、编码、测试、调试等工作,以月为单位计算;I是估计的程序长度,单位以千条(或千行)计算。2) 静态多变量静态多变量模型是根据历史数据导出的经验公式,公式的典型形式为:资源=c11e1ec12+c21e2ec22+其中 ei软件的第i个特点;ci1,ci2与第i个特点有关的经验常数。3) 动态多变量是1979年putnam在软件开发生存期雷利(Rayleigh)曲线模型的基础上提出的SLIM商业化成本估算模型。这类模型把资源需求看作是开发时间的函数,则有:L=CkK1/3td4/3 (9-1)其中 L源代码行数;K开发所需用的人力,以人年为单位;td开发所需用的时间,以年为单位;Ck技术水平常数,它的典型值为:对于差的开发环境Ck=2500对于好的开发环境Ck=10000对于优越的开发环境Ck=12500从方程(9-1)可以解出开发所需要的工作量K=L3Ck-3td-44) IBM模型是由IBM公司的Waston和Felix在1977年总结了IBM联合系统中60个项目的数据而得出来的估算公式:E=5.2L0.91D=4.1L0.36=2.47E0.85S=0.54E0.6DOC=49L1.01其中 E工作量,单位为人/月;D项目持续时间,单位为月;DOC估算的源代码行数。从而有生产率 L=DD(;)29i=1DDWjXi其中 Xi取值为-1,0,+1,取决于第i个因素对项目的影响情况;Wj加权值,具体的计算为:Wj=0.5log10(PCi)其中 PCi生产率比值,与第i个项目成本因素有关系。(2) 标准值法本方法主要使用开发各类程序的标准生产率,估计开发工程的总工作量。标准生产率根据以往的开发经验导出。主要从使用的程序设计语言,处理方式(批处理,实时处理),程序难易程度,技术人员水平和开发范围几个方面来划分程序开发类型。使用标准值法估算开发工作量,首先需要确定程序的开发类型,并估计程序的规模。为了使程序规模的估计值更接近实际值,可请若干名有经验的软件工程师分别作出估计。每个人都应该估计程序的最小规模(a),最大规模(b)和最可能的规模(m),分别求出这三种规模的平均值a-,b-和m-之后,再用下式计算程序规模的估计值L=a-+4m-+b-/6然后使用开发该类程序的标准生产率和适当的修正系数估算开发工作量工作量=修正系数(程序长度/标准生产率)其中标准生产率的单位通常是每人日可开发的程序长度(源程序行数或目标指令条数),修正系数反映其他因素对开发工作量的影响,当考虑从需求分析直到测试的开发过程时,它的算法是:修正系数=1+0.1n其中n是符合下列条款的数目:1) 目标系统情况修改文档不完备的程序需求中有不明确的或尚未决定的内容系统规模较大工作带有试探性质(需多次试探)系统接口不明确或接口复杂联机实时系统(测试困难)数据库需要复杂的安全措施2) 项目管理和人员组成情况中途改变项目管理人项目组不协调(人事关系不好)新手或初级人员比例较高需要培训程序员项目管理人没有数据处理经验项目管理人没有应用领域经验系统分析员没有应用领域经验系统设计员没有应用领域经验程序员没有应用领域经验3) 用户情况用户对计算机数据处理知之甚少系统需要在不同场合使用系统需满足使用部门的标准或手续使用部门提供的测试数据没经过验证使用部门不同意开发计划开发过程中用户需求发生了变化使用部门负责人变动4) 开发环境情况现有的操作系统功能不足将来预定使用的计算机尚未测试工作场所分散主存和辅存受限制计算机使用时间不能充分保障计算机机房管理不善工作中途中断(3) COCOMO模型此模型是最精确的成本估计方法之一,是由Boehm于1981年出版的软件工程经济学一书中提出的,命名为构造性成本模型(Constructive Cost Model)。在这种模型中,软件开发工作量表示成据估计应该开发的代码行数的非线性函数:MM=C1KLOCaDD(;)15i=1DDfiJY(92)其中 MM开发工作量,以人月为单位;C1模型系数;KLOC估计代码行数,以千行为单位;a模型指数;fi成本因素,i=1到15。每个成本因素都根据它的重要程度和影响大小赋予一定数值,一般把成本因素划分成生产因素、计算机因素、人员因素和项目因素等。下面简单介绍主要的成本因素。1) 生产因素 要求的软件可靠性(RELY)这个因素反映了为保证软件可靠性应作出的努力的大小。例如,软件复审的次数和正式程度;正式应用质量保证和配置管理过程的程度;运行期间软件失效的影响。 数据库规模(DATA)应该开发或集成到目标系统中的数据库的规模和复杂程度。应该考虑数据库设计、信息元素的数目、访问方法和查询技术等等。 软件产品复杂程度(CPLX)所开发的软件的逻辑和结构等方面的复杂程度。2) 计算机因素 执行时间的约束(TIME)指软件需求中对程序执行时间限制的程度。一般说来,在实时应用和某些交互式系统中会遇到时间约束问题。 存储约束(STOR)对存放程序和数据时可以使用的存储容量的限制。 环境变更率(VIRT)软件外部环境(例如,计算机硬件、操作系统、数据库管理系统)在软件开发期间变动的频率和范围。 计算机换向时间(TURN)指程序设计环境的响应时间。3) 人员因素 系统分析员的能力(ACAP)分析员从事分析工作的经验和专门知识的多少。 应用经验(AEXP)开发人员对他们面临的应用领域所具有的经验的多少。 程序员的能力(PCAP)程序员在程序设计方面具有的经验和专门知识的多少。 环境知识(VEXP)开发人员对所用的软件开发环境的经验和专门知识的多少。 语言知识(LEXP)开发人员对这个工程项目选定的程序设计语言的经验和专门知识的多少。4) 项目因素 程序设计实践(MODP)在开发期间使用现代程序设计技术(自顶向下程序设计方法论,自顶向下测试技术,结构化编码方法,面向对象方法学等等)的程度。 软件工具(TOOL)软件工程每个步骤可以使用的软件工具的多少。 进度约束(SCED)对工程进度限制的程度,它影响应用软件工程技术的程度。5) 其他因素 语言经验表明,汇编语言或机器语言每条指令的成本,大约是高级程序设计语言每个源语句成本的两倍。 实时应用实时软件每条指令的成本大约是一般程序每条指令成本的5倍。 软件类型操作系统每条指令的成本大约是应用程序或实用程序的2.5倍。 经验开发不熟悉的程序比开发熟悉的程序大约需要多付出50100%的劳动。 文档数量经验表明,文档的成本大约占软件开发总成本的10%。 用户需求和开发环境的稳定程度这些是决定软件成本的重要因素,但是目前只能主观地估计它们的影响。 管理这是非常重要的因素,但是目前也只能主观地估计它的影响。COCOMO模型是层次型模型,按详细程度分成三级。最上层是对各种规模软件的宏观估计模型;最下层是微观模型,它具有任务分解结构和一系列阶段敏感因子。下面简单介绍中层COCOMO模型。软件开发项目可以分成组织式、半独立式和嵌入式三种模式。对组织式软件的要求通常不苛刻,开发人员经验丰富,而且对软件的使用环境很熟悉(通常是为自己所在的组织开发软件),程序规模一般不大(小于5万行代码)。例如,简单的商业数据处理系统即属于组织式。嵌入式软件需要在很强的约束条件下运行,通常和某些硬设备紧密结合在一起(例如,空中交通管理软件),对这类软件系统的要求通常十分苛刻。对半独立式软件的要求通常介于上述两类软件之间,但是这类软件的规模一般都比较大(可达30万行代码)。上述三种开发模式的正常工作量方程列在表2-4中。所谓正常开发工作量也就是所有影响成本的因素都取正常值,即在9-2式中fi=1(i=1,2,,15)如果某些因素不能取正常值,则需要把这些因素的实际值(称为工作量系数)乘以正常开发工作量,才能得出对系统实际开发工作量的正确估计。表25中列出了影响软件开发成本的工作量系数。表2-4正常开发工作量方程开发模式 正常开发工作量组织式 MM=3.2(KLOC)1.05半独立式 MM=3.0(KLOC)1.12嵌入式 MM=2.8(KLOC) 1.20利用表2-5中给出的工作量系数,不仅可以估计软件开发的实际成本,还可以分析比较不同开发条件的成本和效益,从而能够制定出正确的开发方针。表2-5影响软件开发成本的工作量系数成本因素 级别甚低 低 正常 高 甚高 特高RELY 0.75 0.88 1.00 1.15 1.40DATA 0.94 1.00 1.08 1.16CPLX 0.70 0.85 1.00 1.15 1.30 1.65TIME 1.00 1.11 1.30 1.66STOR 1.00 1.06 1.21 1.56VIRT 0.87 1.00 1.15 1.30TURN 0.87 1.00 1.07 1.15ACAP 1.46 1.19 1.00 0.86 0.71AE
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 配电线路技能鉴定实操培训课件
- 高效节能电机项目投资估算方案(范文模板)
- 城市污水管网建设工程安全管理方案(模板)
- 2025年高纯氮化铝粉体项目建议书
- 2025年银行监管及中央银行服务项目合作计划书
- 智慧物流概论 课件 04智慧运输
- 2025年医药级纤维素醚合作协议书
- 常用胰岛素种类及特点表
- 常用乌头类中药的毒性研究概述
- 航空航天零部件制造2025年高精度加工技术不锈钢成形技术研究报告
- 2025党考试题及答案
- 曲臂高空作业车安全操作规程
- 水路运输安全管理培训
- 中国支付体系行业市场运行现状及投资规划建议报告
- 自动化立体库培训
- 2025年苏州市中考历史试卷真题(含标准答案及解析)
- 2025年中国彩色超声多普勒诊断系统市场调查研究报告
- LS-T8014-2023高标准粮仓建设标准
- 焦化厂安全管理制度
- 油气储存企业安全风险评估细则(2025年修订版)
- 小儿心力衰竭的护理查房
评论
0/150
提交评论