《软件工程》课件-第2章 软件问题定义及可行性分析_第1页
《软件工程》课件-第2章 软件问题定义及可行性分析_第2页
《软件工程》课件-第2章 软件问题定义及可行性分析_第3页
《软件工程》课件-第2章 软件问题定义及可行性分析_第4页
《软件工程》课件-第2章 软件问题定义及可行性分析_第5页
已阅读5页,还剩123页未读 继续免费阅读

下载本文档

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

文档简介

第2章

软件问题定义及可行性分析XX大学XX系XXX软件工程教程电子科技大学出版社学习目标l

理解软件的生存周期的划分;l

理解如何进行可行性研究;l

理解可行性研究报告的描述;l

掌握可行性研究的要素;l

掌握可行性研究的含义和任务;l

掌握成本估计和效益度量的方法;l

掌握怎样选择好的方案以及如何决策;l

掌握用来描述系统物理模型的系统流程图;l

掌握图形化建模工具--数据流图;l

了解软件计划是软件开发前期的一个重要阶段(可分为问题定义、可行性研究和需求分析);l

了解新系统的开发目标。010203软件问题定义目录可行性研究的任务可行性研究的步骤系统流程图040506数据流图数据字典成本-效益分析0708本章小结软件问题定义01软件问题定义在软件工程项目开始时,先进行系统定义,它是整个工程的基础。系统定义所涉及的问题不完全属于软件工程的范畴,它为系统提供总体概貌,确定系统硬件、软件的功能和接口,它的主要任务具体表现为如下三个方面。(1)充分理解所涉及的问题,对问题的解决办法进行论证;(2)评价解决办法的不同实现方案;(3)表达解决方案,以便进行复审。软件问题定义系统定义后,软件的功能初步确定,接下来要进行软件问题定义、可行性研究、制定软件开发计划和复审。软件定义时期是生存周期的第一个时期,也是软件开发的基础。问题定义和可行性研究这两个阶段的主要任务就是分析用户要求,在对用户要求充分了解的前提下,分析新系统(即目标系统)的主要目标,分析开发系统的可行性。参加这个时期工作的人员有用户和系统分析员。软件问题定义通过对用户进行详细的调查研究,仔细阅读和分析有关资料,明确所开发的软件系统的名称,该软件系统同其他系统或其他软件之间的相互关系,明确系统的目标、规模和基本要求,并对现有系统进行分析,明确开发新系统的必要性。覆盖测试明确系统的目标、规模和基本要求在调查研究的基础上,弄清拟开发软件的基本要求、目标、假定、限制、可行性研究的方法、评价尺度等。(1)基本要求。包括软件的功能、性能、输入(数据的来源、类型、数量,数据的组织以及提供的频度)、输出(如报告、文件或数据,说明其用途、产生频度、接口及分发对象)、处理流程和数据流程、安全和保密方面的要求、同本系统相连接的其他系统等。(2)系统目标。例如,人力与设备费用的减少;处理速度的提高;控制精度或生产能力的提高;管理信息服务的改进;人员利用率的改进等。覆盖测试明确系统的目标、规模和基本要求(3)系统开发的条件、假定和限制。例如,系统运行寿命的最小值;经费、投资的来源和限制,法律和政策的限制;硬件、软件、运行环境和开发环境的条件及限制;可利用的信息和资源;完成期限等。(4)可行性研究的方法。可采用调查、加权、确定模型、建立基准点或仿真等方法进行可行性研究。(5)评价尺度。例如,经费的多少,各项功能的优先次序,开发时间的长短及使用的难易程度等。问题定义的方法在问题定义阶段,需要用户和系统分析员共同协作、紧密配合,方能圆满地完成问题定义报告。具体步骤如下。(1)系统分析员要针对用户的要求做详细的调查研究,认真听取用户对问题的介绍,阅读与问题有关的资料,必要时还要深入现场,亲自操作;调查开发系统的背景;了解用户对开发的要求。(2)与用户反复讨论,以使问题进一步确定化。经过用户和系统分析员充分协商,确定问题定义的内容。设计新系统可能的解决方案系统分析员在分析现有系统的基础上,针对新系统的开发目标,设计出新系统的若干种高层次的可能解法。可以用高层数据流图和数据字典来描述系统的基本功能和处理流程。先从技术的角度出发提出不同的解决方案,再从经济可行性和操作可行性进行考虑,优化和推荐方案,最后要将上述分析设计结果整理成文档,供用户方的决策者选择。现在尚未进入需求分析阶段,对系统的描述不是完整的、详细的,只是概括的、高层的。最后写出双方均认可的问题定义报告,如例2.1所示。设计新系统可能的解决方案例2.1:

某高校教务处提出用微机管理教务工作的要求,经过系统分析员的调查研究并与用户协商,写出了如下问题定义报告。解:某高校教务管理系统问题定义报告如下:设计新系统可能的解决方案系统目标和范围说明书1、项目名称:XX学院教务管理系统。2、背景:目前教务人工管理,效率低,易出错。3、项目目标:在网络上建立一个高性能的、无差错的教务管理系统。4、项目范围:利用现有的校园网,教务处及各系均配备一台专用微机,软件开发费用不超过1万元。5、初步设想:在网上实现上报各种信息(学生成绩、教师课时费等)、排课、下通知等功能。可行性研究的任务02技术可行性技术可行性是指对设备条件、技术解决方案的实用性和技术资源的可用性的度量。在决定采用何种开发方法和工具时,必须考虑设备条件,通常选择实用的、开发人员掌握较好的一类;还要考虑用”户使用可行性和操作可行性。其中,用户使用可行性是指使用软件对用户内部组织管理制度的影响程度;用户操作可行性是指软件系统所采用的操作方式对用户来说是否可行。经济可行性经济可行性是指以最小的成本开发出具有最佳经济效益的软件产品。它主要进行投资及效益分析,内容如下。(1)支出。说明所需的费用,包括基本建设投资,移动设备和固定设备购置费用,操作系统、应用软件、网络软件和数据库管理软件费用,其他一次性支出及非一次性支出费用。”(2)收益。包括开支的减少,速度的提高和管理方面的改进,一次性收益、价值的增加、非一次性收益、不可定量的收益等。(3)收益/投资比。(4)投资回收周期(一般假定为5年)。(5)敏感度分析。社会因素方面的可行性社会因素方面的可行性主要从法律、用户等方面分析可行性,其中,法律方面的可行性是指要开发的”项目是否存在任何侵权,妨碍等责任问题;用户方面的可行性是指对用户内部组织管理制度的影响程度,用户操作方式是否可行等。操作可行性要考虑开发项目的运行方式在用户组织内是否行得通,现有管理制度、人员素质和操作方式是否可行。可行性研究要在分析的基础写出书面报告《可行性论证报告》。可行性分析必须有一个明确的结论。可行性研究结”论可能会是下列情形之一。(1)可以进行开发;(2)需要等待某些条件(例如资金、人力、设备等)落实之后才能开发;或需要对开发目标进行某些修改之后才能开发;操作可行性(3)不能进行或不必进行开发(例如所需技术不成熟、经济上不划算等)。可行性研究阶段不要急于着手解决问题,其主要目的是得到系统确实可行的结论,或及时中止不可行的项目。”可行性报告要得到用户单位决策者的认可,所提出的结论要有具体、充分的理由。由用户单位的决策者根据可行性报告,从分析员推荐解决方案中选择决定所采用的具体解决方案;如果问题没有可行的解,及时中止不值得投资的工程项目,避免时间、资源、人力和金钱上更大的浪费。可行性研究的步骤03可行性研究的步骤在可行性研究时,根据项目的性质、特点及开发团队的能力进行开发,可行性研究的步骤不是固化的,一般可归结为以下八个步骤。系统定义系统定义是一个系统的关键,如果系统没有定义好,也就是没有确定系统的边界,就谈不上确定规模和目标。可行性分析人员要访问相关人员,阅读分析可以掌握的材料,确认用户需要解决的问题实质,对项目的规模和目标进行定义和确认,描述项目的一切限制和约束,进而明确系统的目标及为了达到这些目标系统所需的各种资源。对现行系统进行分析研究现行系统是信息的重要来源,需要研究它的基本功能、性能、环境、存在的问题,以及运行现行系统需要多少费用,对新系统有什么新的功能要求,新系统运行时能否减少使用费用等。具体方法可以实地考察现行系统,收集、研究和分析现行系统的文档资料,分析员应该画出描绘现有系统的高层系统流程图,系统数据流分析和业务流程紧密相连,可以用数据流图和数据字典来表示,并请有关人员检验他对现有系统的认识是否正确。导出新系统的逻辑摸型根据对现行系统的分析研究,导出现有系统的逻辑模型,设想目标系统的逻辑模型,最后根据目标系统的逻辑模型建造新的物理模型。用建立逻辑模型的工具数据流图和数据字典描绘数据在系统中流动和处理的情况,从而概括地表达出对新系统的设想。设计方案新系统的逻辑模型实质上表达了分析员对新系统必须做什么的看法。用户是否也有同样的看法呢?分析员应该和用户一起再次复查问题定义、工程规模和目标,这次复查应该把数据流图和数据字典作为讨论的基础。如果分析员对问题有误解或者用户曾经遗漏了某些要求,那么现在是发现和改正这些错误的时候了。分析员定义问题,分析这个问题,导出一个试探性的解;在此基础上再次定义问题,再一次分析这个问题,修改这个解;继续这个循环过程,直到提出的逻辑模型完全符合系统目标。推荐可行的方案分析员应该从他建议的系统逻辑模型出发,导出若干个较高层次的(较抽象的)物理解法供比较和选择。导出供选择的解法的最简单的途径,是从技术角度出发考虑解决问题的不同方案。当从技术角度提出一些可能的物理系统之后,应该根据技术可行性的考虑初步排除一些不现实的系统。推荐可行的方案操作可行性方面,分析员应该根据使用部门处理事务的原则和习惯检查技术上可行的那些方案,去掉其中从操作方式或操作过程的角度看用户不能接受的方案。经济可行性方面,分析员应该估计余下的每个可能的系统的开发成本和运行费用,并且估计相对于现有的系统而言这个系统可以节省的开支或可以增加的收入。在这些估计数字的基础上,对每个可能的系统进行成本/效益分析,只有投资预计能带来利润的系统才值得进步考虑。推荐可行的方案根据技术可行性、经济可行性、社会可行性和操作可行性等方面对各种方案进行评估,去掉行不通的解法,得到可行的解法。推荐行动方针在对上一步提出的各种方案分析比较的基础上,分析员向用户推荐一种最好的方案,并且说明选择此解决方案的理由,在推荐方案中应清楚地表明。(1)本项目的开发价值;(2)推荐这个方案的理由;(3)制定实现进度表,这个进度表不需要也不可能很详细,通常只需要估计生存周期每个阶段的工作量。草拟开发计划分析员应该为所推荐的方案草拟一份开发计划,除了制定工程进度表之外还应该估计对各类开发人员(例如:系统分析员、程序员)

和各种资源(计算机硬件、软件工具等)的需要情况,应该指明什么时候使用以及使用多长时间。此外还应该估计系统生存周期每个阶段的成本草拟开发计划分析员应该为所推荐的方案草拟一份开发计划,除了制定工程进度表之外还应该估计对各类开发人员(例如:系统分析员、程序员)和各种资源(计算机硬件、软件工具等)的需要情况,应该指明什么时候使用以及使用多长时间。此外还应该估计系统生存周期每个阶段的成本。编写可行性研究报告可行性研究的最后一步就是撰写可行性研究报告。此报告包括项目简介、可行性分析过程和结论等内容,如图2.1所示:(1)要求、目的、条件与限制、可行性研究方法及评价尺度;(2)处理流程、工作负荷、费用开销和局限性;(3)处理流程、运行环境和局限性;(4)技术条件的可行性;(5)经济方面的可行性;(6)社会条件的可行性;(7)其他可供选择的系统;(8)结论的顺序写成可行性研究报告。可行性研究报告1.项目背景编写可行性研究报告2.客户需求3.商务前景如图2.1所示,提请用户和使用部门仔细审查,从而决定该项目是否进行开发,是否接受可行的实现方案。4.战略可行性5.操作可行性6.计划可行性7.技术可行性8.社会可行性9.市场可行性10.经济可行性11.风险可行性12.结论图2.1可行性研究报告系统流程图04系统流程图在进行可行性研究的过程中,需要了解和分析现行系统,把新系统的逻辑模型转变成为物理模型,用物理模型对当前物理系统和新物理系统进行描述,需要描述未来新系统的概貌。那么如何描述系统的概貌?系统流程图是用来描述系统物理模型的一种传统工具。系统流程图的作用用系统流程图来描述物理系统,也就是一个单位、组织的信息处理的具体实现的系统。在可行性研究中,对于旧系统的理解和新系统的构想,可以通过画出系统流程图来表示要开发项目的大概处理流程、范围和功能等,系统流程图不仅能用于可行性研究,还能用于需求分析阶段。系统流程图的作用系统流程图是由一系列图形符号组成。系统研究初期,项目负责人要制定一个系统标准。标准中规定了各种符号所代表的含义。在画系统流程图时,首先要搞清业务处理过程以及处理中的各个元素,同时要理解系统流程图的各个符号的含义,选择相应的符号来代表系统中的各个元素。所画的系统流程要反映出系统的处理流程。系统流程图的作用在可行性研究过程中,现行系统的高层逻辑模型一般是用概括的形式描述,并通过概要设计变成所建议系统的物理模型。概要设计和建议系统的物理模型都可以用系统流程图来描述。系统流程图的基本内容系统流程图的基本内容如下。(1)用图形符号以黑盒子形式描述系统内的每一个成分(例如:程序、文件、数据库、硬件设备、人工过程等)。(2)用“→”表示信息在系统各个成分之间的流动情况(不要误认为“→”表示信息的加工和控制过程)。系统流程图的符号系统流程图用图形符号来表示系统中的各个元素。这些符号在不同的文献中引用也不一样。但都是用图形符号表示系统中的各个元素。例如,输入和输出、人工处理、数据处理、数据库、文件和设备等,它表达了系统中各个元素之间的信息流动的情况。系统流程图的符号一般使用如表2.1所示的内容。系统流程图的符号表2.1系统流程图符号符

称处理说

明能改变数据值或位置的加工,例如,程序模块、处理机等都是处理表示输入或输出,是一个广义的不指明具体设备的符号指出转到图的另一部分或从图的另一部分转过来,通常在同一页输入/输出连接系统流程图的符号指出转到另一页图上或由另一页图转换页连接数据流文档来用来连接其他符号,指明数据流动方向通常表示打印输出,也可表示用打印终端输入数据表示任何种类的联机存储,包括磁盘,软盘和海量存储器件等联机存储系统流程图的符号CRT终端或类似的显示部件,可用于输入或输出,也可既输入又输出人工输入数据的脱机处理,例如填写表格显示人工输入人工完成的处理,例如,会计在工资支票上签名人工操作辅助操作使用设备进行的脱机操作通信链接

通过远程通信线路或链路传送数据系统流程图的示例例2.2:某图书馆借书流程如图2.2所示,读者须先被验明证件后才能进入查询室。读者在查询室内通过检书卡或利用终端检索图书数据库来查找自己所需的图书。找到所需图书并填好索书单后到服务台借书。如果所借图书还有剩余,管理员将填好借书单,从库房中取出图书交给读者。如图2.2所示的系统流程图描述了上述系统的概貌。图中的每个符号定义了组成系统的一个部件,而并没有指明每个部件的具体工作过程。图中的箭头指定了系统中信息的流动路径。系统流程图的示例读者验证取书图书查询检书卡借书图书数据库借书单索书单图2.2图书馆借书系统流程图系统流程图的示例对于复杂的系统,一个比较好的方法是分层次地描绘这个系统。首先用一张高层次的系统流程图描绘系统总体概貌,表明系统的关键功能。然后分别把每个关键功能扩展到适当的详细程度,画在单独的一页纸上。这种分层次的描绘方法便于阅读者按从抽象到具体的过程逐步深入地了解一个复杂的系统。数据流图05数据流图当数据在软件系统中移动时,它将被一系列“变换”修改。数据流图(Data

Flow

Diagram,DFD)是一种图形化建模工具,也是结构化分析的最基本的工具。它描述系统由哪几部分组成,各部分之间有什么联系以及描绘信息流和数据从输入移动到输出的过程中所经历的变换。在数据流图中没有任何具体的物理部件,它只是描绘数据在软件中流动和被处理的逻辑过程,是软件系统逻辑功能的图形表示。在设计数据流图时只需要考虑系统必须完成的基本逻辑功能,完全不需要考虑怎样具体地实现这些功能,所以数据流图也是今后进行软件设计的很好的出发点。数据流图的表示符号(1)数据流图的4种基本符号数据流图的基本符号如图2.3所示有三种不同的表示方法,归纳起来数据流图只有4种基本符号元素,数据流(Data

Flow)、数据处理(Process)、数据存储(DataStore)和外部实体(External

Entity)。数据流图的表示符号外部实体数据处理数据流数据存储图2.3数据流图的基本符号数据流图的表示符号1)

数据流用箭头表示数据流,箭头方向表示数据流向,数据流名标在数据流线上。数据流由一组数据项组成,但在数据流图中只有其名称。所以,应尽量准确地给数据流命名。数据流是沿箭头传送数据的通道,是描绘数据流图中各种成分的接口。数据流的方向从加工流向加工,从加工流向数据存储,从数据存储流向加工、从源点流向加工或从加工流向终点。数据流的含义如下。数据流图的表示符号①数据流是一组成分已知的信息包,信息包中可以有一个或多个已知信息;②两个加工间可以有多个数据流;③数据流应有良好的名字,便于进一步地了解系统;④同一数据流可以流向不同的加工,不同加工可以流出相同的流(合并与分解);数据流图的表示符号⑤

流入或流出到存储的数据流不需要命名,因为数据存储的名字已经有足够的信息来表达数据的意义;⑥

数据流不代表控制流。数据流反映了处理的对象,控制流是一种选择或用来影响加工的性质,而不是对它进行加工的对象。数据流图的表示符号2)加工加工也称为数据处理,或称为变换,是对数据进行处理的单元。数据处理名称写在方框内。它对数据流进行某些操作或变换,每个加工也要有名字,通常是动词短语,简明地描述完成什么加工。在分层的数据流图中,加工还应编号。数据流图的表示符号3)数据存储数据存储是由若干数据元素组成的,它为数据处理提供数据处理所需要的输入流或为数据处理的输出数据流提供储存“仓库”。数据流图的表示符号数据存储在数据流中起保存数据的作用,可以是数据库文件或任何形式的数据组织、可以表示文件、文件的一部分、数据库的元素或记录的一部分等。在数据流图中要注意指向数据文件的箭头的方向,读数据的箭头是指向加工处理的,写数据的箭头是指向数据存储的,如果既有读又有写,则是双向箭头。数据流图的表示符号4)数据源点和终点数据源点和终点是数据的始发点和终止点,表示系统和环境的接口,是软件系统外部环境中的实体(包括人员、组织或其他软件系统),统称外部实体,其作用是提供系统和外界环境之间关系的注释性说明。它们是为了帮助理解系统界面而引入的,一般只出现在数据流图的顶层图中,表示了系统中数据的来源和去处,不需要对它进行软件设计和实现。因此,在命名时应符合环境的真实状况。数据流图的表示符号有时为了增加数据流图的清晰性,防止数据流的箭头线太长,在一张图上可重复画同名的源/终点(如某个外部实体既是源点也是终点的情况)。数据流图的表示符号(2)数据流图的几种附加符号在数据流图中,如果有两个以上数据流指向一个加工,或从一个加工中引出两个以上的数据流,这些数据流之间存在一定的关系。在图2.4中给出描述这些关系所用符号及其含义。其中:1)

*

表示相邻两个数据流之间是“与”的关系(同时出现);2)+表示相邻两个数据流之间是“或”的关系;3)⊕表示相邻两个数据流只能选取其中一个(互斥关系)。数据流图的表示符号图2.4数据流图附加符号使用示例数据流图的表示符号(a)数据A和数据B同时输入时才能转换成数据C(b)数据A转换成数据B和数据C(c)数据A或数据B,也可以是数据A和数据B两者转换成数据C(d)数据A转换成数据B或数据C,也可是数据B和数据C两者(e)只有数据A或只有数据B转换成数据C(f

)数据A转换成数据B或数据C两者之一设计数据流图的步骤数据流图的基本要点是描述“做什么”,而不考虑“怎么做”。通常数据流图要忽略出错处理,也不包括诸如打开文件和关闭文件之类的内部处理。绘制数据流图的原则是由外向里,自顶向下描述问题的处理过程,通过一系列的分解步骤,逐步求精地表达出整个系统功能的内部关系。设计数据流图的步骤(1)找出系统的输入和输出把整个系统看作一个大的加工,然后根据系统从外界的哪些源接收什么数据流,以及系统输出的哪些数据流送到外界的哪些终点,就可以画出软件系统顶层数据流图。设计数据流图的步骤(2)画系统内部将顶层数据流图中的加工分解成若干个加工,并用数据流将这些加工连接起来,使得图中的输入数据流经一连串的加工处理后变换成顶层的输出数据流。从一个加工画出一张数据流图的过程,就是对这个加工的分解过程。确定数据流的方法是:当用户把若干数据看作一个整体来处理(这些数据一起到达,一起加工)时,可把这些数据看成一个数据流。通常可以把实际工作中的单据作为一个数据流。设计数据流图的步骤(3)为每一个数据流命名数据流命名的好坏与数据流图的可理解性密切相关。名字要反映整个数据流的含义,而不是其中的一部分。避免使用空洞的名字,如“输入信息”、“输出数据”等不能反映实质性内容的名字。设计数据流图的步骤(4)为加工命名一般先命名数据流,在命名加工,这个次序反映了结构化分析方法的自顶向下的特性。命名应注意名字要反映整个加工,而不是它的一部分。名字应当是一种“动词+宾语”的形式。数据流图的层次结构(1)分层为了表达数据处理过程中的数据加工情况,需要采用层次结构的数据流图,即按照系统的层次结构进行逐步分解。以分层的数据流图反映这种结构关系,能清楚地表达和容易理解整个系统。数据流图的层次结构在多层数据流图中,顶层数据流图仅包含1个加工,它代表被开发系统。它的输入流是该系统的输入数据,输出流是系统所输出的数据。底层流图是指其加工不需再做分解的数据流图,它处在最底层。中间层流图则表示对其上层父图的细化,它的每一个加工可能继续细化,形成子图如图2.5所示。数据流图的层次结构图2.5分层的数据流图数据流图的层次结构(2)分层的原则①

父图与子图的关系。对任一层数据流图来说,称其上层图为它的父图,其下层图为它的子图。要注意平衡相邻两层数据流图之间的父子关系。如果父图有5个加工处理,就有可能存在≤5个子图。子图代表了父图中某个加工的细节,父图表示了子图之间的接口,两者代表了同一个内容。数据流图的层次结构②

平衡规则。进入子图的数据流与父图上相应加工的数据流本质上是一致的,所以子图的输入/输出数据流和父图的相应加工上的输入/输出数据流必须一致,这一特点称为“平衡”规则。数据流图的层次结构③

分层程度(即底层数据流图的确定)。如果一张图中有很多加工处理,会影响理解;反之如果每张图中只有两三个加工处理,有十几层,也不容易管理和理解。因此,一般-张数据流图中加工最多不要超过7土2个,这样才不会因为加工过多而使人眼花缭乱。但分解应力求自然,保证分解后各界面清晰,意义明确。当底层加工的说明能在一页纸上写下时,分解细化即可停止。数据流图的举例例2.3:某高校教学管理系统的工作过程如下:在每学期开学吋,学生需要注册登记,只有注册成功后才能成为该学校的正式学生。学校实行校级、系级两级管理,学生如果因健康或学习跟不上等原因要求休学、退学吋,需要先向系里提出申请,系里核实情况后再提交学校教处审批,然后将审批结果通知学生。每学期学生都可以进行选课,在得到确认后就可以听课并参加考试。在期末教师要将学生的考试成绩上报教务处,教务处将登记、备案。考试不及格需要补考,如果超过3门不及格,则要留级或降级。对于优秀学生,学校还给予奖励,根据学习成绩发放奖学金。数据流图的举例解:(1)数据流分析①数据源点:学生、系办、教务处、教师。②数据终点:学生、系办、教师。③数据流:与学生有关的数据流包括注册申请、学籍申请、补考通知、学籍资格变动通知;与教师有关的数据流包括教学安排、学生修课成绩;与系办有关的数据流包括新生名単、学籍审理意见、奖学金统计等;与教务处有关的数据流包括成绩统计、学籍审理意见。数据流图的举例(2)画出系统顶层数据流图在任何系统都由若干个数据源点、终点和一个代表系统对数据加工变换的基本功能的处理组成。数据流图的举例(3)第一步分解基本系统模型的数据流图非常抽象,因此,需要把基本功能细化,描绘系统的主要功能。我们采用从外向里的方法对教学管理系统进行分解。按功能细化后可分为“注册管理”、“成绩管理”、“学籍管理”和“奖励管理”4个主要功能,同时增加“学生名册”和“成绩档案"两个数据存储,并绘制了细化的数据流,如图2.7所示。数据流图的举例图2.7教学管理系统数据流图数据流图的举例(4)第二步细化对描绘系统的各个功能进行细化,可得到进步的数据流程描述。例如,对“学籍管理”

进一步细化,得出底层数据流图,如图2.8所示。数据流图的举例图2.8学籍管理底层数据流图数据流图的举例学籍管理包括“学籍变动处理”、“留级处理”和“毕业处理”。而“学籍变动处理”又细分为“初步审查学生申请”ꢀ与“审查报批申请”。学籍变动需要经过两级审批处理,系里先要进行初步审查,核实学生申请报告,了解学习成绩或身体状况等情况,提出初审意见上报教务处,教务处综合考虑学生的情况后做出最后审批,并将结果通知学生本人。“留级处理”则是直接由系办根据学生考试情况做出决定。“毕业处理”则是由教务处每年根据学生的学习情况统一处理,负责发放毕业证书。数据流图的举例例2.4:有如下的一个简单考务处理系统,要求完成一下工作:(1)对考生送来的报名单进行检查;(2)对合格的报名单编好准考证号后将准考证送给考生,并将汇总后的考生名单送给阅卷站;(3)对阅卷站送来的成绩单进行检查,并根据考试中心制定的合格标准审定合格者;(4)制作考生通知单(含成绩及合格/不合格标志)送给考生;(5)按地区进行成绩分类统计和试题难度分析,产生统计分析表。数据流图的举例解:我们对需求进行关键字提取,并用红色标出实体,绿色标出关键的数据流。(1)顶层数据流图:系统的输入输出(顶层图)①确定源或宿:考生、阅卷站和考试中心(它们都是既是源又是宿)。②顶层唯一的加工:考务处理系统。③确定数据流:系统的输入/输出信息。数据流图的举例输入数据流:报名单(来自考生)、成绩清单(来自阅卷站)、合格标准(来自考试中心)。输出数据流:准考证(送往考生)、考生名单(送往阅卷站)、考生通知书(送往考生)、统计分析表(送往考试中心)。额外的输出数据流(考虑系统的健壮性):报名单(返回给考生)、错误成绩单(返回给阅卷站)。通过分析得到考务处理系统的顶层数据流图,如图2.9所示:数据流图的举例图2.9考务处理系统的顶层数据流图数据流图的举例(2)第0层数据流图经过分析,考务业务处理主要功能应当有登记报名单、统计成绩两个主要数据流,输入的源点和输出的终点是考生、考试中心和阅卷站。从输入端开始,根据考务业务工作流,画出数据流流经的各加工框,逐步画到输出端,得到0层数据流图,如图2.10所示。数据流图的举例图2.10考务处理系统的0层数据流图数据流图的举例(3)第1层数据流图以0层图中加工1(登记报名表)为例,根据业务处理流程来确定加工1的分解,与加工1有关的业务流程:首先检查考生送来的报名单,然后编准考证号,并产生准考证,最后产生考生名单和考生名册(文件)。确定加工1分解的3个子加工:检查报名单、编准考证号、登记考生。除了原有数据流,增加了“合格报名单”和“正式报名单”。加工1的第1层数据流图,如图2.11所示。数据流图的举例图2.11考务处理系统中加工1细化的1层数据流图数据流图的举例同理,得到0层图中加工2的1层数据流图,如图2.12所示。图2.12考务处理系统中加工2细化的1层数据流图数据字典06数据字典数据字典(Data

Dictionar

y,

DD)

是结构化分析的另一种有力的工具。数据流图描述了系统的分解,但没有对图中各个成分进行说明。数据字典是为数据流图中的每个数据流、数据存储、数据处理以及组成数据流或文件的数据项做出说明。数据字典的作用是在软件分析和设计过程提供数据描述,是数据流必不可少的辅助资料。数据流和数据字典共同构成系统的逻辑模型,两者缺一不可。数据字典的内容数据字典是关于数据信息的集合,是数据流图中所有元素的定义的集合(每个元素对应数据典中的一个条目)。数据字典中的条目应按一定次序排列,以方便人们查阅。数据字典通常由数据元素、数据流、数据存储、数据处理4类条目组成。数据字典的内容(1)数据元素(数据项):是数据的最小组成单位,它包含以下内容:①数据元素的名称、编号,如学号、准考证号;②数据元素的别名;③数据元素的取值范围和取值含义;④

数据元素的长度定义,应便于定义数据库结构。例如,考生成绩规定为5位,小数点后取1位小数,小数点占一位,整数部分取3位;⑤数据元素的简单描述;数据字典的内容(2)数据流:主要包括数据流的来源、去处、组成数据流的数据项、数据流的流通量。(3)数据存储:描述文件的结构及数据文件中记录的存取规则。(4)数据处理:数据字典中可以描述数据处理的逻辑功能计算法,如计算公式、简明的处理描述等。数据字典使用的符号在数据字典中,通常采用以下符号表示系统中使用数据项的情况,以及数据项之间的相互关系。=:表示“等价于”或“定义为”。+:表示“和”,连接两个数据元素。[]:表示“或”,对[]中列举的各数据元素,用“|”分隔,表示可任选其中某一项。数据字典使用的符号例如,储户到银行存款时,可选择存款期限为活期、半年期、1年期、3年期或5年期中的某一种,可表示为存款期限=[活期半年|1年|3年|5年]。其中,{

}:表示“重复”,对{}中的内容可重复使用。数据字典使用的符号(

):表示“可选”,对(

)中的内容可选、可不选,各选项之间用“,”号隔开。如果要对{

}表示的重复次数加以限制,可将重复次数的下限和上限写在花括号的左右(或在花括号左边分别用下角标和上角标表示)。数据字典使用的符号例如,成绩单=准考证号+姓名+1{课程名+成绩}3,表示最少有1门、最多有3门课程的考试成绩。也可写为:成绩单=准考证号+姓名+

{课程名+成31绩}。特别地,1{A}表示A的内容至少要出现1次;{B}表示B的内容允许重复零至任意次。数据字典的示例图2.13、图2.14和图2.15所示是对“高校教学管理系统”中数据字典的部分数据条目的定义。数据流名:注册申请简述:每学期开学需要学生注册登记别名:无组成:注册申请=学号+姓名+入学日期+注册日期数据量:2000次/开学-周峰值:第一周每天下午1:00到5:00有300次注释:到2019年还将增加到3000人图2.13注册申请数据流条目数据字典的示例文件名:成绩档案简述:包括所有在册学生各门课程的考试成绩和学分信息别名:无组成:成绩档案=学号+姓名+课程名称+考试成绩+学分数据量:2000×6次/考试结束一周内峰值:学期最后一周每天下午1:00到5:00有2000×6次注释:到2019年还将增加到3000人图2.14成绩档案存储条目数据字典的示例文件名:学号简述:每个在校学生的编号别名:无组成:学号=XX+XX+XXX年级专业序号值类型:7位数字取值范围图2.15学号数据项条目数据字典的示例实现数据字典的常见方法有3种:全人工过程、全自动过程和混合过程。全自动过程一般依赖于数据字典处理软件。混合过程是指利用已有的实用程序(例如,正文编辑程序或报告生成程序等)来辅助人工过程。数据字典的示例无论用哪种方法来实现,数据字典应具有以下特点:①通过名字能方便地查阅数据定义;②

没有冗余,尽量不重复在规格说明的其他组成部分中已出现的信息;③容易修改和更新;④能单独处理描述每个数据元素的信息;⑤定义的书写方法简便而严格。成本-效益分析07成本-效益分析系统效益包括经济效益和社会效益。前者是有形的,后者是无形的。成本效益分析的目的是从经济角度评价开发一个新的软件项目是否可行。成本-效益分析首先是估算将要开发系统的开发成本,然后与可能取得的效益进行比较和权衡,效益分有形效益和无形效益两种。有形效益可以用货币的时间价值、投资回收期和纯收入等指标进行度量;无形效益主要从性质上、心理上进行衡量,很难直接进行量的比较。成本估计一个软件开发的成本主要表现在人力和时间的消耗。工作量是指在软件项目建设过程中需要投入的人力和时间,一般用人月数进行度量。项目的建设分为开发阶段、实施阶段、运行维护阶段。故工作量需要分阶段进行估算。工作量=开发工作量+实施工作量+维护工作量。由于这种消耗估计不是精确的科学计算,因此可以用几种方法计算后相互验证。成本估计(1)代码行定量估算方法开发软件中实现每一个功能所需要的源代码行数与成本联系起来。根据历史数据和经验,估计实现一个功能需要的源程序行数。当有了源程序的行数后,再根据软件的复杂度和当时的工资水平确定每行代码的平均成本。每行代码的平均成本与源程序的总行数的乘积就是总成本。如果以往开发过类似的项目或有历史的数据参考,这种方法比较有效。成本估计(2)开发阶段工作量估算两种估算方式:功能点估算法和任务估算法1)功能点估算法:该方法是依据软件项目的功能需求来评估开发工作量。通过分析系统需求计算项目规模(功能点数),再乘以各阶段完成每个功能点所需要投入的人工时(开发成本系数),就可以计算出完成项目所需要的人月数。适用于立项阶段需求分析比较详细的项目或者用于项目完成阶段的最终工作量估算。成本估计开发工作量D(人月)=(项目功能点FP*开发成本系数k/H/W)其中,H是指国家规定的一天工作时数,W指一个月工作天数。开发成本系数k主要考虑项目的非技术难度,如开发周期,协调难度,业务的复杂度,需求的不确定性。k的取指范围一般如表2.2所示。成本估计表2.2k取值一般范围功能点数(FP)<3000开发成本系数(人工时/FP)3.5-4.04.0-4.54.5-5.0(3000,8000)>8000成本估计2)任务估算法:任务估算法是把软件项目功能分解为若干个相对独立的任务,再分别估计完成每个任务需要的人员搭配比例及投入时间,每个人员的工作量之和就是该任务的工作量。最后将各个任务的工作量累加起来就得出软件项目的总工作量。该方法适用于立项阶段的工作量估算。软件开发工作可分为:需求分析、设计、编码、测试。设计各个岗位人员工作量可基于以下标准计算:成本估计①以程序员的工作量为标准;②高级程序员的工作量为标准工作量的1.5倍;③系统分析员的工作量为标准工作量的2.5倍;④测试工程师的工作量为标准工作量;⑤高级测试工程师的工作量为标准工作量的1.5倍;成本估计⑥项目管理人员的工作量为标准工作量的3倍;⑦市场营销人员的工作量为标准工作量;⑧技术支持工程师的工作量为标准工作量;⑨文秘的工作量为标准工作量的0.5倍;⑩

如果遇到类似的项目,就可以比较有把握地进行估算。但是在软件工程中,受到人、问题、过程、生产、资源等因素的影响比较多,因此要得到准确的结果并不容易。成本估计例2.5:以已有项目的经验,研发部门每一万行C语言源代码形成的源文件(.c和.h文件)约为250K。一个已结束的研发项目,经过统计,源文件大小为3.75M。该项目投入成本为360万元,人工价是18000元/人月。问:①该项目的规模是多少KLOC(源代码行数)?②工作量是多少人月?③生产率是多少?④每行代码的价值是多少?成本估计解:①3.75M/250K=15万行=150KLOC;②工作量=成本/人工价=360万元/18000元/人月=200人月;③生产率=规模/工作量=150KLOC/200人月=750LOC/人月;④360万元/15万行=24元/行。货币的时间价值成本估算的目的是为了对项目的投资有所了解。经过成本估算后,得到项目开发时需要的费用,该费用就是项目的投资。另一方面,项目开发后的经济效益是使用新系统增加的收入和节约的运行费用,而经济效益和运行费用在软件生存周期中都存在,这就是说经济效益与软件的生存周期的长度有关,所以应该合理地估计软件的寿命。在估计软件寿命时,估计使用的时间越长,系统被淘汰的可能性越大。一般生存周期的长度按5年估计。所以在进行成本-效益分析时,就要考虑货币的时间价值,通常用利率表示货币的时间价值。货币的时间价值设现在存入年利率为i的货币P元,则n年后可得钱数为F,若不计复利,则:F=P*(1+i)n(公式2.1)F就是P元在n年后的价值。反之,若n年后能收入F元,那么这些钱现在的价值(现值)为:P=F/(1+i)n(公式2.2)货币的时间价值例2.6

修改一个已有的库存清单系统,使它能在每天送给采购员一份定货报表。修改已有的库存清单程序并且编

温馨提示

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

评论

0/150

提交评论