软件工程–可行性研究
为什么要进行可行性研究?
并非任何问题都有简单明显的解决办法,事实上,许多问题不可能在预定的系统规模或时间期限之内解决,那么花费在这项工程上的任何时间、人力、软硬件资源和经费,都是无谓的浪费.
可行性研究的目的?
- 用最小的代价在尽可能短的时间内确定问题是否能够解决!
- 可行性研究的目的不是解决问题,而是确定问题是否值得去解决.
可行性研究的任务
进行问题定义。
- 系统分析员确定问题的性质,工程的目标及规模。
- 短时间内对用户的要求有一个比较准确的估计。
- 系统分析员需去抽象和概括所要做的事情。并写成书面报告,提交给用户和使用部门的负责人进行审查,以验证对问题的理解。
系统分析员的分析过程:
- 进一步分析和澄清问题定义。
- 导出系统的逻辑模型(包括 数据流图和数据字典 等)
- 探索若干种可供选择的解法。
- 技术可行性。
- 经济可行性。
- 操作可行性。
- 社会可行性(法律,社会效益)
可行性研究的过程
典型的可行性研究过程的8个步骤:
- 复查系统规模和目标
- 研究目前正在使用的系统
- 导出新系统的高层逻辑模型
- 进一步定义问题
- 导出和评价供选择的解法
- 推荐行动方针
- 草拟开发计划书
- 写文档提交审查
系统流程图
系统流程图的作用:
- 是概括地描绘物理系统的传统工具。
基本思想:
- 用图形符号以黑盒子形式描绘组成系统的每个部件(程序、文档、数据库、人工过程等).
注意:
1: 系统流程图表达的是数据在系统各部件之间流动的情况,不是对数据进行加工处理的控制过程.
2: 系统流程图是 物理数据流图,不是 程序流程图。
系统流程图基本符号:
系统流程图详细符号:
例题:
某装配厂有一座存放零件的仓库,仓库中现有的各种零件的数量以及每种零件的库存量临界值等数据记录在库存清单主文件中。当仓库中零件数量有变化时,应该及时修改库存清单主文件,如果哪种零件的库存量少于它的库存量临界值,则应该报告给采购部门以便订货,规定每天向采购部门送一次订货报告,该装配厂使用一台小型计算机处理更新库存清单主文件和产生订货报告的任务。零件库存量的每一次变化称为一个事务,由放在仓库中的CRT终端输入到计算机中;系统中的库存清单程序对事务进行处理,更新存储在磁盘上的库存清单主文件,并且把必要的订货信息写在磁带上。最后,每天由报告生成程序读一次磁带,并且打印出订货报告。
对应的系统流程图为:
数据流图
什么是数据流图?
- 数据流图(DFD,Data Flow Diagram)是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换.
- 数据流图没有具体的物理部件,它只是描述数据在软件中流动和被处理的逻辑过程.
- 数据流图是系统逻辑功能的图形表示,设计它只需考虑基本逻辑功能,不需考虑如何实现功能.
数据流图的作用?
- 基本目的是利用它作为交流信息的工具.
- 另一个主要用途是作为分析和设计的工具.
DFD四种基本符号
数据流图的平衡原则:
- 父图与子图的平衡(父图与子图的数据流及方向要对应)
- 子图内平衡(每个处理要有输入流和输出流)
数据流图附加符号:

数据流图的设计原则:
- 数据守恒原则。
- 守恒加工原则(加工的输入和输出数据流要体现变化的性质)
- 对于每个加工,必须既有输入数据流,又有输出数据流。
- 外部实体与外部实体之间不存在数据流。
- 外部实体与外部存储之间不存在数据流。
- 数据存储与数据存储之间不存在数据流。
- 父图与子图平衡的原则。
- 数据流与加工有关,且必须经过加工。
例题1:
假设一家工厂的采购部每天需要一张订货报表,报表按零件编号排序,表中列出所有需要再次订货的零件。
对于每个需要再次订货的零件应该列出下述数据:零件编号,零件名称,订货数量,目前价格,主要供应者,次要供应者。
零件入库或出库称为事务,通过放在仓库中的CRT终端把事务报告给订货系统。当某种零件的库存数量少于库存量临界值时就应该再次订货。
画数据流图的步骤:
-
从问题描述中提取数据流图的四种成分。
- 首先考虑数据的源点和终点,从上面对系统的描述可以知道“采购部每天需要一张订货报表”,“通过放在仓库中的CRT终端把事务报告给订货系统”,所以采购员是数据终点,而仓库管理员是数据源点。
- 再一次阅读问题描述,必须有一个用于产生报表的处理。事务的后果是改变零件库存量,然而任何改变数据的操作都是处理,因此对事务进行的加工是另一个处理。注意,在问题描述中并没有明显地提到需要对事务进行处理,但是通过分析可以看出需要。
- 考虑数据流和数据存储.系统把订货报表送给采购部,因此订货报表是一个数据流;事务需要从仓库送到系统中,显然事务是另一个数据流。产生报表和处理事务这两个处理在时间上明显不匹配——每当有一个事务发生时立即处理它,然而每天只产生一次订货报表。因此,用来产生订货报表的数据必须存放一段时间,也就是应该有一个数据存储。
-
绘制顶层数据流图。
-
绘制功能级数据流图。
-
绘制细化级数据流图。
例题2:
- 提取数据流图的四种成分。
- 绘制顶层数据流图
- 绘制功能级数据流图。
- 绘制细化级数据流图。
数据流命名应注意的问题
- 名字应代表整个数据流的内容,而不是仅仅反映它的某些成分
- 不要使用空洞的、缺乏具体含义的名字
- 在为某个数据流(或数据存储)起名字时遇到了困难,则很可能是因为对数据流图分解不恰当造成的,应该试试重新分解.
处理命名应注意的问题
- 通常先为数据流命名,然后再为与之相关联的处理命名
- 名字应该反映整个处理的功能,而不是它的一部分功能
- 名字最好由一个具体的及物动词加上一个具体的宾语组成
- 通常名字中仅包括一个动词,如果必须用两个动词才能描述整个处理的功能,则把这个处理再分解成两个处理可能更恰当些。
- 如果在为某个处理命名时遇到困难,则很可能是发现了分解不当的迹象,应考虑重新分解
系统流程图和数据流图的区别
相同点:
- 两者都是描绘数据的流动情况。
不同点:
- 系统流程图允许硬件,文档,甚至人工的介入,有物理设备等。
- 数据流图无硬件设备,系统物理部件等,只是描述数据在系统中加工变换的逻辑情况。
数据字典
什么是数据字典?
- 数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合.
- 数据字典是关于数据流图中信息的描述,属于"信息的信息"。
数据字典的内容?
- 数据流。
- 数据流分量。
- 数据存储。
- 处理。
数据字典的用途?
- 数据字典最重要的用途是作为分析阶段的工具
- 数据字典中包含的每个数据元素的控制信息是很有价值的
- 数据字典是开发数据库的第一步,而且是很有价值的一步
定义数据的方法
由数据元素组成数据的方式只有下述4种基本类型
- 顺序,即以确定次序连接两个或多个分量
- 选择,即从两个或多个可能的元素中选取一个
- 重复,即把指定的分量重复零次或多次。
- 可选,一个数据元素可有可无。
=意思是等价于(或定义为);
+意思是和(即连接两个分量);
[]意思是或(即从方括弧内列出的若干个分量中选择一个),通常用“|”号隔开供选择的分量;
{}意思是重复(即重复花括弧内的分量);
()意思是可选(即圆括弧里的分量可有可无)。
数据字典的定义符号:
数据流的描述:
数据元素的描述:
数据存储的描述:
处理的描述:
例题:
北京某高校可用的电话号码有以下几类:
(1):校内电话号码由4位数字组成,第一位数字不是0
(2):校外电话分为本市电话和外地电话两类
(3):拨校外电话需先拨0
(4):若是本市电话则再接着拨8位数字(第一位不是0)
(5):若是外地电话则拨3位区码再拨8位电话号码(第一位不是0)
解答:
电话=[校内电话|校外电话]
校内电话号码=非零数字+3位数字
校外电话=[本市电话|外地电话]
本市电话=数字零+8位数字
外地电话=数字零+3位数字+8位数字
----------------------
数字零=0
非零数字=[1|2|3|4|5|6|7|8|9] 或 0..9
3位数字=3{数字}3
8位数字=非零数字+7位数字
7位数字=7{数字}7
数字=0..9
成本效益分析
成本估计
成本估计的三种估算技术
- 代码行技术。(估计出源代码的行数,用每行代码的平均成本乘以行数)
- 任务分解技术。
- 任务分解技术最常用的办法是按开发阶段划分任务。
- 分别估计每个单独任务的成本,再进行累加就是总成本。
- 自动估计成本技术。(利用自动估计成本的软件工具,需要历史数据支持)
成本/效益分析的方法
- 货币的时间价值。
- 投资回收期。
- 纯收入。
- 投资回收率。
投资回收率计算方式:
-
解出高阶代数方程。
-
快速求解方法: 1 / 投资回收期 = 投资回收率。
The End!!创作不易,欢迎点赞/评论!!欢迎关注个人公众号