1、1,复习,软件危机 软件、软件工程的概念 软件工程基本原理 软件工程方法学 分类 要素 软件工程生命周期 软件开发过程 瀑布模型、快速原型、增量模型、螺旋模型、喷泉模型,2,第二章 可行性研究,3,内容,可行性研究的目的 可行性研究的内容和步骤 系统流程图 数据流图 数据字典,4,一、研究目的:用最小的代价在最小的时间内确定问题是否能够解决。 二、研究内容 技术可行性 经济可行性 操作可行性 法律及社会效益,2.1 可行性研究的任务,5,研究内容,(1)技术可行性 开发风险:在分析时给出的各种约束条件下,系统能否被设计出来。 资源有效性:用于开发系统元素的人员是否存在问题,是否具有建立系统的其
2、他资源。 技术:相关技术的发展是否能支持这个系统。,6,研究内容,(2)经济可行性 指以最小的成本开发具有最佳经济效益的软件产品,即估算开发成本和可能取得效益的评估。 基于计算机系统的成本一般由四部分组成: 购置并安装软硬件及有关设备的费用 系统开发费用 系统安装、运行和维护费用 人员培训费用,7,研究内容,(3)操作可行性 用户组织内的管理制度、人员素质、操作方式等是否可行。 (4)法律及社会效益 指新系统的开发,会不会在社会上或政治上引起侵权、破坏或其他责任问题。,8,2.2 可行性研究的八个步骤,一、复查系统规模和目标 确保分析员解决的是要求他解决的问题 二、研究目前正在使用的系统 了解
3、现有能做什么而不是怎么做 三、导出新系统的高层逻辑模型,9,2.2 可行性研究的八个步骤,四、进一步定义问题 分析员和用户一起再次复查问题定义、工程规模、目标,把数据流图和数据字典作为讨论的基础。 前4个步骤构成一个循环,直到逻辑模型完全符合系统目标。,10,2.2 可行性研究的八个步骤,五、导出和评价供选择的解法: 从系统逻辑模型导出若干较高层次(较抽象)的物理解法供比较选择。 从技术角度触发考虑解决方案。 从技术、操作、经济方面对方案进行可行性分析。 对可行的方案指定实现进度表。,11,2.2 可行性研究的八个步骤,六、推荐行动方针 选择一种最好的解法,并说明理由 对系统进行 成本/效益
4、分析 考虑其社会、经济、政治各方面的实际意义 七、草拟开发计划,包括: 工程进度表 开发人员和各种资源的需求 估计系统生命周期的每个阶段的成本 下一阶段(需求分析)的详细进度表和成本估计 八、书写文档提交审查,12,描绘物理系统 系统流程图数据流图逻辑模型数据字典,13,2.3 系统流程图,它是一种物理数据流图,用图形符号以黑盒子形式描绘物理系统的各部件,表达信息在系统各部件之间流动的情况。 基本符号:,例子:仓库清单系统 系统目标: 管理仓库各类零件数量的变化,并及时修改(更新库存清单文件)。 报告库存零件达到库存量临界值的订货报告,产生订货信息。 生成订货报表。 构成部件: 输入终端CRT
5、 事务处理部件(库存清单程序) 磁盘(存放库存清单主文件) 磁带(存放订货信息) 报告生成部件(报告生成程序) 打印的文档(订货报告),15,库存清单系统的系统流程图,16,2.3 系统流程图,分层 复杂的系统分层描绘,17,2.4 数据流图,数据流图(DFD):描述数据从输入到输出所经过的加工变换,即数据在软件中流动和被处理的逻辑过程。 与数据字典共同构成系统的逻辑模型。,18,2.4.1 符号,数据的源点或终点: 或数据处理: 或数据存储: 或 或数据流:,19,2.4.1 符号,数据流图的附加符号 * 表示数据流之间是“与”的关系(同时存在) + 表示数据流之间是“或”的关系 表示数据流
6、之间是“异或”的关系(不能同时存在)。 举例:,20,21,2.4.2 画数据流程图,画数据流图的步骤 画顶层数据流图 包括数据源点、终点,整个软件系统作为一个数据处理,流入和流出系统的数据流。 画分层数据流图 逐层分解数据处理。 画总的数据流图,22,例:订货系统,问题描述: 工厂采购部每天需要一张订货表,报表按零件编号编排,表中列出所有需要再次订货的零件(包括零件编号,零件名称,定货数量,当前价格,目前主要供应者,次要供应者)。 零件入库或出库称为事务,通过放在仓库中的CRT终端把事务报告给定货系统。 当某种零件的库存量少于库存临界值时就应该再次订货。,23,例:订货系统,基本系统模型:用
7、高层次的数据流图突出表明数据的源点和终点。 分析: 源点/终点:仓库管理员 / 采购员 数据流:事务、订货报表,24,例:订货系统,细化基本系统模型:得到功能级数据流图(一级细化)。 分析: 数据流:事务、订货报表 处理:处理事务、产生订货报表 数据存储:库存清单、订货信息,25,例:订货系统,26,例:订货系统,进一步分解功能级数据流图到涉及功能具体的实现为止(二级细化)。,27,2.4.2 画数据流程图,几点注意事项 数据存储和数据流都是数据,仅所处的状态不同,数据存储是静止状态的数据,数据流是运动状态的数据。 数据流图细化规则。 数据流图分层细化时必须保持信息的连续性,即细化前后对应功能
8、的输入输出数据必须相同。如果在把一个功能细化为子功能时需要写出程序代码,就不应该进行细化了。,28,2.4.2 画数据流程图,几点注意事项 调查研究表明,如果一张数据流图中包含的处理多于5-9个时,人们将难以领会它的含义,此时数据流图应该分层绘制。数据流图可分为高层总体数据流图和多张细化的数据流图。各层数据流图的上下对应关系应通过编号对应起来。,29,2.4.3 命名,命名(恰如其分) (1) 为数据流(或数据存储)命名 代表整个数据流的内容 名符其实,含义正确 命名困难可能是数据流图分解不正确 (2) 为处理命名 先为数据流命名,再为处理命名 动词(通常1个)+宾语 反映整体 命名困难可能是
9、数据流图分解不正确,30,2.4.4 用途,便于和用户交流信息 分析和设计的工具 系统流程图将功能和物理实现方案混在一起 数据流图重视描绘功能,若要配合系统设计,可以以图中不同处理的定时要求为指南,在图上画出多组自动化边界,每组即一个不同的物理系统。,31,批量更新库存 联机更新库存,32,2.5 数据字典,定义:是关于数据的信息集合,即对数据流图中包含的所有元素定义的集合。 作用:在软件分析和设计过程中给人提供关于数据的描述信息。 和数据流图共同构成系统的逻辑模型。 没有数据字典,数据流图就不严格; 没有数据流图,数据字典难于发挥作用。,33,2.5.1 数据字典的内容,数据流 来源、去向、
10、组成、流通量 数据流分量(数据元素/数据项) 名称、别名、取值范围、含义、数据长度、小数位数、简单描述 数据存储 数据结构及数据存放规则 数据处理 数据处理的逻辑功能和主要算法,34,数据流分量数据元素,数据的最小组成单位(不可再分)。包含: 数据元素的名称及编号,唯一的标识。命名时,要反应该数据项的含义,易于理解记忆,如货物编号,货物名称等。 别名(不同时期、用户、分析员对同一元素所用的不同名称,应尽量减少出现别名)。,35,数据元素,数据元素的取值范围和和取值含义: 如准考证号( 6位),第1位表示报考的专业,含义为:1法律;2行政等;第2位代表地区:1河北;2北京等,后4位表示考生序号。
11、 准考证号120023表示该考生报考法律专业,是北京的,序号为0023。 这些具体的准考证号编码规律应在数据字典中写明白。 数据元素的长度、定义,便于定义数据结构 如考生成绩规定为5位,小数点后取一位小数,小数点占1位,整数部分取三位。 数据元素的简单描述其他说明,36,数据元素构成的数据结构,描述了某些数据元素之间的关系。一个数据结构可由若干个数据项组成,也可由若干个数据结构组成,或由若干个数据项和数据结构组成。主要内容: 数据结构名称及其编号。 数据结构的组成:若是一个简单的数据结构,只需要列出其所包含的数据项即可。若是嵌套的数据结构,则只需列出其所包含的数据结构名称。,37,数据元素构成
12、的数据结构,例:顾客的订货单组成包括三项数据结构: 订货单标识:订货单编号,订货单日期 顾客档案:顾客名称、顾客地址、联系人姓名、电话、开户银行、账号 配件详情:配件名称、规格、订货数量 所以订货单数据结构组成:订货单标识+顾客档案+配件详情,38,2.5.2 定义数据的方法,由数据元素组成数据的方式: 顺序:依次连接两个或多个分量 选择:从两个或多个元素中选一个 重复:指定分量重复0次或多次 可选:一个分量是可有可无的 符号表示:= + | | () 等价 连接 选一 重复 可选 1A 表示 A 的内容至少要出现 1 次。 B 表示 B 的内容允许重复 0 至任意次。 13和13 含义相同
13、连续的分量可以用表示,如09,39,2.5.2 定义数据的方法,举例 成绩单学号姓名1课程名成绩3 举例 标识符字母字符字母数字串 字母数字串 0字母或数字7 字母或数字字母字符|数字字符,40,练习,某旅馆的电话服务如下: 可以拨分机号和外线号码。分机号是从7201至7299。外线号码先拨9,然后是市话号码或长话号码。长话号码是以区号和市话号码组成。区号是从100到300中任意的数字串。市话号码是以局号和分局号组成。局号可以是455、466、888、552中任一号码。分局号是任意长度为4的数字串。 要求:写出在数据字典中,电话号码的数据条目的定义(即组成)。,41,练习,电话号码=分机号|外
14、线号码 分机号=72017299 外线号码=9+市话号码|长话号码 长话号码=区号+市话号码 区号=100300 市话号码=局号+分局号 局号=455|466|488|552 分局号=4数字4 数字=09,42,2.5.3 数据字典的用途,在软件分析和设计的过程中给人提供关于数据的描述信息。 作为分析阶段的工具 估计改变一个数据将产生的影响 是数据库开发的第一步,43,2.5.4 数据字典的实现,实现途径: 全人工过程 全自动化过程 混合过程 小型系统没有数据字典处理程序,建议采用:数据字典卡片 小型软件系统使用,一张卡片描述一个数据的信息 名字、别名、描述、定义、位置,44,数据字典实例,名
15、字:订货报表 别名:订货信息 描述:每天一次送给采购员的需要订货的零件表 定义:订货报表 = 零件编号 + 零件名称 + 订货数量 +目前价格 + 主要供应者 + 次要供应者 + 规格 位置:输出到打印机,名字:订货数量 别名: 描述:某个零件一次订货的数量 定义:订货数量 = 1数字5 位置:订货报表、订货信息,名字:零件编号 别名: 描述:唯一地标识库存清单中一个特定零件的关键字 定义:零件编号=8字符8 位置:定货报表、定货信息、库存清单、事务,45,2.6 成本/效益分析,分析目的:从经济角度分析新系统的开发是否能盈利,帮助使用部门正确做出是否投资的决定。,46,2.6.1 成本估计,
16、代码行技术 把开发每个软件功能的成本和实现这个功能需要用的源代码行数联系起来。 软件成本 = 每行代码的平均成本 * 源代码行数 代码行技术取决于软件的复杂度和工资水平。,47,2.6.1 成本估计,任务分解技术 把软件开发过程分解为若干个相对独立的任务,再分别估计每个单独任务的成本,最后累加就得到总成本。 每个任务的成本 = 人力(以人月为单位) * 人平均工资 软件成本 = 独立任务的成本 通常按开发阶段划分任务。,48,2.6.1 成本估计,自动估计成本技术 利用自动估计成本技术的软件工具进行计算。,49,2.6.2 成本/效益分析方法,成本/效益分析步骤 估计开发成本、运行费用和新系统
17、带来的经济效益。 比较新系统的开发成本和经济效益。 常用的效益度量方法 货币的时间价值 投资回收期 纯收入 投资回收率,50,2.6.2 成本/效益分析方法,货币的时间价值: 设年利率为i,如果现在存入P元,则n年后可以得到的钱数为:F=P(1+i)n 反之,如果n年后能收入F元,则这些钱现在的价值为:P=F/(1+i)n,51,货币的时间价值例,在工程设计中用CAD系统来取代大部分人工设计工作,每年可节省9.6万元,若软件的生存期为5年,则5年可节省48万元,开发这个CAD系统投资了20万元。 设年利率为5%,则每年预计节省的钱的现在价值如下:,52,2.6.2 成本/效益分析方法,投资回收
18、期: 使累计的经济效益等于最初的投资(回本)所需要的时间。 例: 上例中两年的收益,可以节省17.85万元,比最初的投资还少2.15万元,第三年可节省8.29万元,则 2.15/8.29=0.259 所以,投资回收期为 2+0.259=2.259年。约2年零3个月,53,2.6.2 成本/效益分析方法,纯收入: 指在整个生存期内系统的累计经济效益(折合成现在值)与投资之差。 例: 上例中5年内的纯收入=41.563-20=21.563万元,54,2.6.2 成本/效益分析方法,投资回收率 资金存入银行或贷给他人获得利息,用年利率衡量,同样地计算投资回收率。P=F1/(1+j)+F2/(1+j)
19、2+Fn/(1+j)n P是现在的投资额;Fi是第i年年底的效益;n是软件的使用寿命;j是投资回收率,55,本章小结,了解: 可行性研究的任务、过程 理解: 成本估计技术 成本效益分析方法 掌握: 可行性研究的内容 系统流程图的基本符号 数据流图的符号、含义、画法、灵活应用 数据字典的符号、写法、灵活应用,56,作业,P54 5题 P73 3题,57,附: 可行性研究报告提纲 引言 编写目的 背景 定义 参考资料 可行性研究前提 要求 目标 条件、假定、限制 可行性研究方法 评价尺度 对现有系统进行分析 处理流程图和数据流图 工作负荷 费用开资 人员 设备 局限性,58,所建设开发的系统 对所建设系统说明 数据流图和数据字典 对现有系统的改进之处 影响 局限性 技术可行性评价 可选择的其他系统方案 可选择方案1 可选择方案n 所建议的系统经济可行性分析 支出 基本建设支出 其他一次性支出,59,收益 一次性收益 非一次性收益 不可定量收益 收益/投资比 投资回收期 敏感性分析 社会因素可行性分析 法律方面可行性 使用方面可行性 结论,