软件工程
电子教案
王树林
2.1 可行性研究的任务
目的,用最小的代价在尽可能短的时间内确定
问题是否能够解决 。
途径,必须分析几种主要的可能解法的利弊,
从而判断原定的系统目标和规模是否
现实, 系统完成后所能带来的效益是
否大到值得投资开发这个系统的程度 。
?进一步分析和澄清问题定义 。
?分析员应该导出系统的逻辑模型 。
? 从系统逻辑模型出发, 探索若干种可代
选择的主要解法 (即系统实现方案 )。
实质,在较高层次上以较抽象的方式进行
的系统分析和设计的过程 。
1、技术可行性
? 软件和硬件资源 。
? 开发队伍 。
? 开发技术 。
? 开发风险 。
2、经济可行性
? 经济效益:成本-效益分析
? 社会效益,? 经济利益
3、操作可行性
如果问题没有可行的解, 分析员应该建
议停止这项开发工程 。
分析员应该推荐一个较好的解决方案,
并且为工程制定一个初步的计划 。
现有的系统是信息的重要来源 。 新的目
标系统必须也能完成它的基本功能, 新系统
必须能解决旧系统中存在的问题 。
一、复查系统规模和目标
2.2 可行性研究的步骤
二、研究目前正在使用的系统
分析员应该画出描绘现在系统的高层
系统流程图 。
错误方法,过多时间去分析现有的系统。
目的,了解现有系统能做什么。
通过前一步的工作, 能够使用数据流图,
描绘数据在系统中流动和处理的情况 。
还应该有一个初步的数据字典, 定义系统
中使用的数据 。 数据流图和数据字典共同定义
了新系统的逻辑模型 。
三、导示新系统的高层逻辑模型
分析员应该和用户一起再次复查问题定
义, 工程规模和目标, 把数据流图和数据字
典作为讨论的基础 。 前四个步骤实质上构成
一个循环 。
四、重新定义问题
应该根据技术可行性的考虑初步排除一
些不现实的系统 。 其次人可以考虑操作方
面的可行性 。 接下来应该考虑经济方面的
可行性 。
五、导示和评价供选择的解法
根据可行性研究结果应该做出的一个关
键性决定是, 是否继续进行这项开发工程 。
分析员认为值得继续进行这项开发工程, 那
么他应该选择一种最好的解法, 并说明选择
这个解决方案的理由 。
六、推荐行动方针
?工程进度表;
? 各种开发人员 (系统分析员, 程序员, 资料
员等等 );
七、草拟开发计划
草拟一份开发计划:
? 各种资源 (计算机硬件, 软件工具等等 )的
需要情况, 指明什么时候使用以及使用多
长时间 。 此外还应该会计系统生命周期每
个阶段的成本 。 最后应该给出下一阶段
(需求分析 )的详细进度表和成本估计 。
把可行性研究各个步骤的结果写成清晰
的文档, 请用户和使用部门的负责人仔细审
查, 以决定是否继续这项工程以及是否接受
分析员推荐的方案 。
八、书写文档提交审查
可行性研究的步骤图示
复查系统规模和目标
研究目前应用的系统
导示系统的高级模型
重新定义问题
问题定义清楚
没有
清楚了
导示和评价供选择的解法
推荐行动方针
草拟开发计划
书写文档提交审查
系统流程图是描绘物理系统的传统工具 。
基本思想,图形符号以黑盒子形式描绘系
统里面的每个部件 。 表达的是信息在系统各部
件之间流动的情况 。
2.3 系统流程图
符号 名 称 说 明
处理
能改变数据值或数据位置的加工或部件,例
如,程序、处理机、人工加工等都是处理。
输入 /输出
表示输入或输出 (或既输入又输出 ),是一
个广义的不指明具体设备的符号。
连接 指出转到图的另一部分或从图的另一部分转来,通常在同一页上。
换页连接 指出转到另一页图上或由另一页图转来。
数据流 用来连接其他符号,指明数据流动方向。
一、符号
1,基本符号
符号 名 称 说 明
穿孔卡片
表示用穿孔卡片输入或输出,也可表示一个
穿孔卡片文件。
文档
通常表示打印输出,也可表示用打印终端
输入数据。
磁带 磁带输入 /输出,或表示一个磁带文件。
联机存储 表示任何种类的联机存储,包括磁盘、磁鼓、软盘和海量存储器。
磁盘 磁盘输入 /输出,也可表示存储在磁盘上的文件或数据库。
2,系统符号
续表
符号 名 称 说 明
显示
CRT终端或类似的显示部件,可用于输入或输
出,也可既输入又输出。
人工输入 人工输入数据的脱机处理,例如,填写表格。
人工操作 人工完成的处理,例如,会计在工资支票上签名。
辅助操作 使用设备进行的脱机操作。
通信链路 通过远程通信线咱或链路传送数据
磁鼓 磁鼓输入 /输出,也可表示相邻在磁鼓上的文件或数据库。
系统
流程图的
习惯画法
是使信息
在图中从
顶向下或
从左向右
流动 。
事务
库存清单程序
定货
信息
报告生成程序
定货报告
库存清单
主文件
库存清单系统的
系统流程图
二、案例
面对复杂的系统时, 一个比较好的方法
是分层次地描绘这个系统 。
三、分层思想
数据流图描绘系统的逻辑模型, 图中没
有任何具体的物理元素, 只是描绘信息在系
统中流动和处理的情况 。 设计数据流程图只
需考虑系统必须完成的基本逻辑功能 。
2.4 数据流图
或 数据的源点 /终点
或 变换数据的处理
或 数据存储
数据流
(a) 基本符号的含义
一、符号
T
C
数据 A和 B同时输入才能变换成数据 C*B
A
T CA
B
数据 A变换成 B和 C
T
C+
B
A
数据 A或 B,或 A和 B同时输入变换成 C
T CA
B
数据 A变换成 B或 C,或 B和 C
T
C
B
A
+ 只有数据 A或只有数据 B(但不能 A,B同时 )
输入时变换成 C
T CA
B
+ 数据 A变换成 B或 C,但不能变换成 B和 C
(b)附加符号的含义
数据流图有四种成份:
二、案例
?源点或终点;
?处理;
?数据存储;
?数据流。
把处理事务的功能进一步分解后的数据流图
仓库
管理员 接收
事务
1.1事务
D1 库存清单
更新库
存清单
1.2 定货
报表
处理
定货
1.3
产生
报表
2
采购员
库存清单
D2 定货信息
定货
信息
定货信息
事务 库存
信息
1.为数据流 (或数据存储 )命名
(1) 名字应代表整个数据流 (或数据存储 )的内容,
而不是仅仅反映它的某些成分 。
三、命名
命名规则:
(2) 不要使用空洞的, 缺乏具体含义的名字 (如
,数据,,, 信息,,, 输入, 之类 )。
(3) 如果在为某个数据流 (或数据存储 )起名字
时遇到了困难, 则很可能是因为对数据流
图分解不恰当造成的, 应该试试重新分解,
看是否能克服这个困难 。
2.为处理命名
(1) 通常先为数据流命名, 然后再为与之相关联的
处理命名 。
(2) 名字应该反映整个处理的功能, 而不是它的一
部分功能 。
(3) 名字最好由一个具体的及物动词, 加上一个具
体的宾语组成 。
(4) 通常名字中仅包括一个动词 。
(5) 如果在为某个处理命名时遇到困难, 则很可能
是发现了分解不当的迹象, 应考虑重新分解 。
数据源点 /终点是目标系统的外围环境部
分, 为数据源点 /终点命名时采用它们在问题
域中习惯使用的名字 。
命名需要注意的问题:
? 利用它作为交流信息的工具 。 数据流图
应该分层, 并且在把功能级数据流图细化
后得到的处理超过 9个时, 应该采用画分
图的办法 。
四、数据流图的用途
画数据流图的基本目的:
? 作为分析和设计的工具 。 系统流程图描绘一
个系统时, 系统的功能和实现每个功能的具
体方案是混在一起的 。 分析员希望以另一种
方式进一步总结现有的系统, 这种方式应该
着重描绘系统所完成的功能而不是系统的物
理实现方案 。 数据流图是实现这个目标的极
好手段 。
当用数据流图辅助物理的设计时, 以图中
不同处理的定时要求为指南, 能够在数据流图
上画出许多组自动化边界, 每组自动化边界可
能意味着一个不同的物理系统, 因此可以根据
系统的逻辑模型考虑系统的物理实现 。
例如, 考虑图 2.7,事务随时可能发生, 因此
处理 1.1(“接收事务, )必须是联机的;采购员每天
需要一次定货报表, 因此处理 2(“产生报表, )应该
以批量方式进行 。 问题描述并没有对其他处理施
加限制, 例如, 可以联机地接收事务并放入队列
中, 然而更新库存清单, 处理定货和产生报表以
批量方式进行 (图 2.8)。 当然, 这种方案需要增加
一个数据存储以存放事务数据 。
仓库
管理员 接收
事务
1.1事务
事务
D3 事务
D3 事务
事务
更新库
存清单
1.2
处理
定货
1.3
定货
报表产生报表
2
采购员
库存清单
D2 定货信息
定货
信息
定货
信息
这种划分自动化边界的方法暗示以
批量方式更新库存清单
改变自动化边界, 把处理 1.1,1.2和 1.3放在
同一个边界内 (图 2.9),这个系统将联机地接收事
务, 更新库存清单和处理定货及输出定货信息;
然而处理 2将以批量方式产生定货报表 。 还能设
想出建立自动化边界的其他方案吗? 如果把处理
1.1和处理 1.2放在一个自动化边界内, 把处理 1.3
放在另一个边界内, 意味着什么样的物理系统呢?
另一种划分自动化边界的方法建议
以联机方式更新库存清单
仓库
管理员 接收
事务
1.1事务
D3 事务
更新库
存清单
1.2
处理
定货
1.3 定货
报表产生报表
2
采购员
库存清单
D2 定货信息
库存
信息
定货信息
事务
定货
信息
数据流图对更详细的设计步骤也有帮
助, 本书第四章将讲述从数据流图出发映
射出软件结构的方法 ——面向数据流的设
计方法 。
数据字典是善于数据的信息的集合, 也就
是对数据流图中饮食的所有元素的定义集合 。
数据流图和数据字典共同构成系统的逻辑
模型, 数据流图和对数据流图中的每个元素的
精确定义放在一起, 才能共同构成系统的规格
说明 。
2.5 数据字典
数据字典应该由对下列四类元素的定义组成:
(1) 数据流
(2) 数据流分量 (即数据元素 )
(3) 数据存储 。
(4) 处理
一、数据字典的内容
除了数据定义之外, 数据字典中还应该
包含关于数据的一些其他信息 。
典型的情况是, 在数据字典中记录数据
元素的下列信息:
?一般信息
?定义
?使用特点
?控制信息和分组信息 。
数据元素的别名就是该元素的其他等价的, 出现
别名主要有下述三个原因:
(1) 对于同样的数据, 不同的用户使用了不同的
名字;
(2) 一个分析员在不同时期对同一个数据使用了
不同的名字;
(3) 不同价值个分析员分别分析同一个数据流时,
使用了不同的名字 。
虽然应该尽量减少出现别名, 但是不可能完全消
除别名 。
数据字典中的定义就是对数据自顶向下的
分解 。 那么, 应该把数据分解到什么程度呢?
一般说来, 当分解到不需要进一步定义, 每个
和工程有关的人也都清楚其含义的元素时, 这
种分解过程就完成了 。
二、定义数据的方法
由数据元素组成数据的方式只有下述三种基本类型:
(1) 顺序 即以确定次序连接两个或多个分量;
(2) 选择 即从两个或多个可能的元素中选取一
个;
(3) 重复 即把指定的分量重复零次或多次 。
(4) 可选 即一个分量是可有可无的 (重复零次或
一次 )。
=意思是等价于 (或定义于 );
+意思是和 (即,连接两个分量 );
[ ]意思是或 (即,从方括弧内列出的若干个
分量中选择一个 );
{ }意思是重复 (即,重复花括弧内的分量 );
( )意思是可选 (即,圆括弧里的分量可有可
无 )。
为了更加清晰简洁起见,建议采用下列符号:
数据字典最重要的用途是作为分析阶段
的工具 。 数据字典是开发数据的第一步, 而
且是很有价值的一步 。
三、数据字典的用途
?全人工过程
?全自动化过程
?混合过程
实现数据字典有三种觉的途径:
四、数据字典的实现
数据字典的特点:
(1) 通过名字能方便地查阅数据的定义;
(2) 没有冗余;
(3) 尽量不重复在规格说明的其他组成部分中已
经出现的信息;
(4) 容易更新和修改;
(5) 能单独处理描述每个数据元素的信息;
(6) 定义的书写方法简单方便而且严格 。
成本 /效益分析的目的正是要从经济角
度分析开发一个特定的新系统是否划算 。
2.6 成本 /效益分析
一、成本估计
通常根据经验和历史数据估计实现一个
功能需要的源程序行数 。 每行代码的平均成
本主要取决于软件的复杂程度和工资水平 。
1,代码行技术
软件开发成本主要表现为人力消耗。
首先把软件开发工程分解为若干个相对
独立的任务 。 再分别估计每个单独的开发任
务的成本, 最后累加起来得出软件开发工程
的总成本 。
2,任务分解技术
典型环境下各个开发阶段需要使用使
用的人力的百分比
任 务 人 力 (%)
可行性研究
需求分析
设计
编码和单元测试
综合测试
总计
5
10
25
20
40
100
采用自动会计成本的软件工具可以减轻
人的劳动, 并且使得估计的结果更客观 。 但
是, 采用这种技术必须有长期搜索集的大量
历史数据为基础, 并且需要有良好的数据库
系统支持 。
3,自动会计成本技术
成本 /效益分析的第一步是估计开发成本,
运行费用和新系统将带来的经济效益 。 运行费
用取决于系统的操作费用和维护费用 。 系统的
经济效益等于因使用新系统而增加的收入加上
使用新系统可以节省的运行费用 。 在进行成本 /
效益分析时一律假设生命周期为 5年 。
二、成本 / 效益分析的方法
niPF )1( ??
niFP )1/( ??
1,货币的时间价值
不能简单比较成本效益, 应考虑货币的
时间价值 。
通常用投资回收期衡量一项开发工程的
价值 。
投资回收期仅仅是一项经济指标, 为了
衡量一项开发工程的价值, 还应该考虑其他
经济指标 。
2,投资回收期
衡量工程价值的另一项经济指标是工程
的纯收入, 整个生命周期内系统的累计经济
效益 (折成现在值 )与投资之差 。
如果纯收入小于零, 那么这项工程显然
不值得投资 。
3,纯收入
计算投资回收率, 用它衡量投资效益
的大小, 并且可以把它和年利率相比较,
在衡量工程的经济效益时, 它是最重要的
参考数据 。
4,投资回收率
电子教案
王树林
2.1 可行性研究的任务
目的,用最小的代价在尽可能短的时间内确定
问题是否能够解决 。
途径,必须分析几种主要的可能解法的利弊,
从而判断原定的系统目标和规模是否
现实, 系统完成后所能带来的效益是
否大到值得投资开发这个系统的程度 。
?进一步分析和澄清问题定义 。
?分析员应该导出系统的逻辑模型 。
? 从系统逻辑模型出发, 探索若干种可代
选择的主要解法 (即系统实现方案 )。
实质,在较高层次上以较抽象的方式进行
的系统分析和设计的过程 。
1、技术可行性
? 软件和硬件资源 。
? 开发队伍 。
? 开发技术 。
? 开发风险 。
2、经济可行性
? 经济效益:成本-效益分析
? 社会效益,? 经济利益
3、操作可行性
如果问题没有可行的解, 分析员应该建
议停止这项开发工程 。
分析员应该推荐一个较好的解决方案,
并且为工程制定一个初步的计划 。
现有的系统是信息的重要来源 。 新的目
标系统必须也能完成它的基本功能, 新系统
必须能解决旧系统中存在的问题 。
一、复查系统规模和目标
2.2 可行性研究的步骤
二、研究目前正在使用的系统
分析员应该画出描绘现在系统的高层
系统流程图 。
错误方法,过多时间去分析现有的系统。
目的,了解现有系统能做什么。
通过前一步的工作, 能够使用数据流图,
描绘数据在系统中流动和处理的情况 。
还应该有一个初步的数据字典, 定义系统
中使用的数据 。 数据流图和数据字典共同定义
了新系统的逻辑模型 。
三、导示新系统的高层逻辑模型
分析员应该和用户一起再次复查问题定
义, 工程规模和目标, 把数据流图和数据字
典作为讨论的基础 。 前四个步骤实质上构成
一个循环 。
四、重新定义问题
应该根据技术可行性的考虑初步排除一
些不现实的系统 。 其次人可以考虑操作方
面的可行性 。 接下来应该考虑经济方面的
可行性 。
五、导示和评价供选择的解法
根据可行性研究结果应该做出的一个关
键性决定是, 是否继续进行这项开发工程 。
分析员认为值得继续进行这项开发工程, 那
么他应该选择一种最好的解法, 并说明选择
这个解决方案的理由 。
六、推荐行动方针
?工程进度表;
? 各种开发人员 (系统分析员, 程序员, 资料
员等等 );
七、草拟开发计划
草拟一份开发计划:
? 各种资源 (计算机硬件, 软件工具等等 )的
需要情况, 指明什么时候使用以及使用多
长时间 。 此外还应该会计系统生命周期每
个阶段的成本 。 最后应该给出下一阶段
(需求分析 )的详细进度表和成本估计 。
把可行性研究各个步骤的结果写成清晰
的文档, 请用户和使用部门的负责人仔细审
查, 以决定是否继续这项工程以及是否接受
分析员推荐的方案 。
八、书写文档提交审查
可行性研究的步骤图示
复查系统规模和目标
研究目前应用的系统
导示系统的高级模型
重新定义问题
问题定义清楚
没有
清楚了
导示和评价供选择的解法
推荐行动方针
草拟开发计划
书写文档提交审查
系统流程图是描绘物理系统的传统工具 。
基本思想,图形符号以黑盒子形式描绘系
统里面的每个部件 。 表达的是信息在系统各部
件之间流动的情况 。
2.3 系统流程图
符号 名 称 说 明
处理
能改变数据值或数据位置的加工或部件,例
如,程序、处理机、人工加工等都是处理。
输入 /输出
表示输入或输出 (或既输入又输出 ),是一
个广义的不指明具体设备的符号。
连接 指出转到图的另一部分或从图的另一部分转来,通常在同一页上。
换页连接 指出转到另一页图上或由另一页图转来。
数据流 用来连接其他符号,指明数据流动方向。
一、符号
1,基本符号
符号 名 称 说 明
穿孔卡片
表示用穿孔卡片输入或输出,也可表示一个
穿孔卡片文件。
文档
通常表示打印输出,也可表示用打印终端
输入数据。
磁带 磁带输入 /输出,或表示一个磁带文件。
联机存储 表示任何种类的联机存储,包括磁盘、磁鼓、软盘和海量存储器。
磁盘 磁盘输入 /输出,也可表示存储在磁盘上的文件或数据库。
2,系统符号
续表
符号 名 称 说 明
显示
CRT终端或类似的显示部件,可用于输入或输
出,也可既输入又输出。
人工输入 人工输入数据的脱机处理,例如,填写表格。
人工操作 人工完成的处理,例如,会计在工资支票上签名。
辅助操作 使用设备进行的脱机操作。
通信链路 通过远程通信线咱或链路传送数据
磁鼓 磁鼓输入 /输出,也可表示相邻在磁鼓上的文件或数据库。
系统
流程图的
习惯画法
是使信息
在图中从
顶向下或
从左向右
流动 。
事务
库存清单程序
定货
信息
报告生成程序
定货报告
库存清单
主文件
库存清单系统的
系统流程图
二、案例
面对复杂的系统时, 一个比较好的方法
是分层次地描绘这个系统 。
三、分层思想
数据流图描绘系统的逻辑模型, 图中没
有任何具体的物理元素, 只是描绘信息在系
统中流动和处理的情况 。 设计数据流程图只
需考虑系统必须完成的基本逻辑功能 。
2.4 数据流图
或 数据的源点 /终点
或 变换数据的处理
或 数据存储
数据流
(a) 基本符号的含义
一、符号
T
C
数据 A和 B同时输入才能变换成数据 C*B
A
T CA
B
数据 A变换成 B和 C
T
C+
B
A
数据 A或 B,或 A和 B同时输入变换成 C
T CA
B
数据 A变换成 B或 C,或 B和 C
T
C
B
A
+ 只有数据 A或只有数据 B(但不能 A,B同时 )
输入时变换成 C
T CA
B
+ 数据 A变换成 B或 C,但不能变换成 B和 C
(b)附加符号的含义
数据流图有四种成份:
二、案例
?源点或终点;
?处理;
?数据存储;
?数据流。
把处理事务的功能进一步分解后的数据流图
仓库
管理员 接收
事务
1.1事务
D1 库存清单
更新库
存清单
1.2 定货
报表
处理
定货
1.3
产生
报表
2
采购员
库存清单
D2 定货信息
定货
信息
定货信息
事务 库存
信息
1.为数据流 (或数据存储 )命名
(1) 名字应代表整个数据流 (或数据存储 )的内容,
而不是仅仅反映它的某些成分 。
三、命名
命名规则:
(2) 不要使用空洞的, 缺乏具体含义的名字 (如
,数据,,, 信息,,, 输入, 之类 )。
(3) 如果在为某个数据流 (或数据存储 )起名字
时遇到了困难, 则很可能是因为对数据流
图分解不恰当造成的, 应该试试重新分解,
看是否能克服这个困难 。
2.为处理命名
(1) 通常先为数据流命名, 然后再为与之相关联的
处理命名 。
(2) 名字应该反映整个处理的功能, 而不是它的一
部分功能 。
(3) 名字最好由一个具体的及物动词, 加上一个具
体的宾语组成 。
(4) 通常名字中仅包括一个动词 。
(5) 如果在为某个处理命名时遇到困难, 则很可能
是发现了分解不当的迹象, 应考虑重新分解 。
数据源点 /终点是目标系统的外围环境部
分, 为数据源点 /终点命名时采用它们在问题
域中习惯使用的名字 。
命名需要注意的问题:
? 利用它作为交流信息的工具 。 数据流图
应该分层, 并且在把功能级数据流图细化
后得到的处理超过 9个时, 应该采用画分
图的办法 。
四、数据流图的用途
画数据流图的基本目的:
? 作为分析和设计的工具 。 系统流程图描绘一
个系统时, 系统的功能和实现每个功能的具
体方案是混在一起的 。 分析员希望以另一种
方式进一步总结现有的系统, 这种方式应该
着重描绘系统所完成的功能而不是系统的物
理实现方案 。 数据流图是实现这个目标的极
好手段 。
当用数据流图辅助物理的设计时, 以图中
不同处理的定时要求为指南, 能够在数据流图
上画出许多组自动化边界, 每组自动化边界可
能意味着一个不同的物理系统, 因此可以根据
系统的逻辑模型考虑系统的物理实现 。
例如, 考虑图 2.7,事务随时可能发生, 因此
处理 1.1(“接收事务, )必须是联机的;采购员每天
需要一次定货报表, 因此处理 2(“产生报表, )应该
以批量方式进行 。 问题描述并没有对其他处理施
加限制, 例如, 可以联机地接收事务并放入队列
中, 然而更新库存清单, 处理定货和产生报表以
批量方式进行 (图 2.8)。 当然, 这种方案需要增加
一个数据存储以存放事务数据 。
仓库
管理员 接收
事务
1.1事务
事务
D3 事务
D3 事务
事务
更新库
存清单
1.2
处理
定货
1.3
定货
报表产生报表
2
采购员
库存清单
D2 定货信息
定货
信息
定货
信息
这种划分自动化边界的方法暗示以
批量方式更新库存清单
改变自动化边界, 把处理 1.1,1.2和 1.3放在
同一个边界内 (图 2.9),这个系统将联机地接收事
务, 更新库存清单和处理定货及输出定货信息;
然而处理 2将以批量方式产生定货报表 。 还能设
想出建立自动化边界的其他方案吗? 如果把处理
1.1和处理 1.2放在一个自动化边界内, 把处理 1.3
放在另一个边界内, 意味着什么样的物理系统呢?
另一种划分自动化边界的方法建议
以联机方式更新库存清单
仓库
管理员 接收
事务
1.1事务
D3 事务
更新库
存清单
1.2
处理
定货
1.3 定货
报表产生报表
2
采购员
库存清单
D2 定货信息
库存
信息
定货信息
事务
定货
信息
数据流图对更详细的设计步骤也有帮
助, 本书第四章将讲述从数据流图出发映
射出软件结构的方法 ——面向数据流的设
计方法 。
数据字典是善于数据的信息的集合, 也就
是对数据流图中饮食的所有元素的定义集合 。
数据流图和数据字典共同构成系统的逻辑
模型, 数据流图和对数据流图中的每个元素的
精确定义放在一起, 才能共同构成系统的规格
说明 。
2.5 数据字典
数据字典应该由对下列四类元素的定义组成:
(1) 数据流
(2) 数据流分量 (即数据元素 )
(3) 数据存储 。
(4) 处理
一、数据字典的内容
除了数据定义之外, 数据字典中还应该
包含关于数据的一些其他信息 。
典型的情况是, 在数据字典中记录数据
元素的下列信息:
?一般信息
?定义
?使用特点
?控制信息和分组信息 。
数据元素的别名就是该元素的其他等价的, 出现
别名主要有下述三个原因:
(1) 对于同样的数据, 不同的用户使用了不同的
名字;
(2) 一个分析员在不同时期对同一个数据使用了
不同的名字;
(3) 不同价值个分析员分别分析同一个数据流时,
使用了不同的名字 。
虽然应该尽量减少出现别名, 但是不可能完全消
除别名 。
数据字典中的定义就是对数据自顶向下的
分解 。 那么, 应该把数据分解到什么程度呢?
一般说来, 当分解到不需要进一步定义, 每个
和工程有关的人也都清楚其含义的元素时, 这
种分解过程就完成了 。
二、定义数据的方法
由数据元素组成数据的方式只有下述三种基本类型:
(1) 顺序 即以确定次序连接两个或多个分量;
(2) 选择 即从两个或多个可能的元素中选取一
个;
(3) 重复 即把指定的分量重复零次或多次 。
(4) 可选 即一个分量是可有可无的 (重复零次或
一次 )。
=意思是等价于 (或定义于 );
+意思是和 (即,连接两个分量 );
[ ]意思是或 (即,从方括弧内列出的若干个
分量中选择一个 );
{ }意思是重复 (即,重复花括弧内的分量 );
( )意思是可选 (即,圆括弧里的分量可有可
无 )。
为了更加清晰简洁起见,建议采用下列符号:
数据字典最重要的用途是作为分析阶段
的工具 。 数据字典是开发数据的第一步, 而
且是很有价值的一步 。
三、数据字典的用途
?全人工过程
?全自动化过程
?混合过程
实现数据字典有三种觉的途径:
四、数据字典的实现
数据字典的特点:
(1) 通过名字能方便地查阅数据的定义;
(2) 没有冗余;
(3) 尽量不重复在规格说明的其他组成部分中已
经出现的信息;
(4) 容易更新和修改;
(5) 能单独处理描述每个数据元素的信息;
(6) 定义的书写方法简单方便而且严格 。
成本 /效益分析的目的正是要从经济角
度分析开发一个特定的新系统是否划算 。
2.6 成本 /效益分析
一、成本估计
通常根据经验和历史数据估计实现一个
功能需要的源程序行数 。 每行代码的平均成
本主要取决于软件的复杂程度和工资水平 。
1,代码行技术
软件开发成本主要表现为人力消耗。
首先把软件开发工程分解为若干个相对
独立的任务 。 再分别估计每个单独的开发任
务的成本, 最后累加起来得出软件开发工程
的总成本 。
2,任务分解技术
典型环境下各个开发阶段需要使用使
用的人力的百分比
任 务 人 力 (%)
可行性研究
需求分析
设计
编码和单元测试
综合测试
总计
5
10
25
20
40
100
采用自动会计成本的软件工具可以减轻
人的劳动, 并且使得估计的结果更客观 。 但
是, 采用这种技术必须有长期搜索集的大量
历史数据为基础, 并且需要有良好的数据库
系统支持 。
3,自动会计成本技术
成本 /效益分析的第一步是估计开发成本,
运行费用和新系统将带来的经济效益 。 运行费
用取决于系统的操作费用和维护费用 。 系统的
经济效益等于因使用新系统而增加的收入加上
使用新系统可以节省的运行费用 。 在进行成本 /
效益分析时一律假设生命周期为 5年 。
二、成本 / 效益分析的方法
niPF )1( ??
niFP )1/( ??
1,货币的时间价值
不能简单比较成本效益, 应考虑货币的
时间价值 。
通常用投资回收期衡量一项开发工程的
价值 。
投资回收期仅仅是一项经济指标, 为了
衡量一项开发工程的价值, 还应该考虑其他
经济指标 。
2,投资回收期
衡量工程价值的另一项经济指标是工程
的纯收入, 整个生命周期内系统的累计经济
效益 (折成现在值 )与投资之差 。
如果纯收入小于零, 那么这项工程显然
不值得投资 。
3,纯收入
计算投资回收率, 用它衡量投资效益
的大小, 并且可以把它和年利率相比较,
在衡量工程的经济效益时, 它是最重要的
参考数据 。
4,投资回收率