本文最后更新于 2025-03-13,文章内容可能已经过时。

软件工程:第二章 可行性研究

导学目标

  1. 了解可行性研究的目的、任务等

  2. 掌握系统流程图的定义和基本思想

  3. 掌握数据流图的定义、基本符号以及分层结构的画法

  4. 掌握数据字典的4类元素、基本类型、以及数据元素的组成关系

  5. 了解成本/效益分析的目的以及手段

第一节 可行性研究

目的

  • 最小的代价最短时间内确定问题是否可以被解决

任务

  • 确定问题的定义(找准问题)

  • 导出系统的逻辑模型

    • 逻辑模型:概念上的模型

    • 物理模型:实实在在纯在的模型

  • 提供解法,从三个方面考究解法的可行性

    • 技术可行性

    • 经济可行性

    • 操作可行性

  • 制定初步的计划

步骤

  • 复查系统规模和目标

  • 研究目前正在使用的系统

  • 导出新系统的高层逻辑模型

    • 根据 【现有的物理模型】——>【现有的逻辑模型】——>【目标的逻辑模型】——>【目的的物理模型】

  • 进一步定义问题

  • 导出评价和供选择的解法

  • 推动行动方案

  • 草拟开发计划

  • 书写文档提交复查

第二节 系统流程图

2.2.1 概述

目的

  • 概括的描绘物理系统(是一种工具)

基本思想

  • 利用图形符号(黑盒子)描绘组成系统的每个部件

注意事项

  • 系统流程图表达的是数据在系统各个部件的流动情况

  • 系统流程图不等于程序流程图

2.2.1 系统流程图的基本符号

基本符号

image-20240728192933632

系统流程图示例

image-20240728193032008

第三节 数据流图(DFD)

2.3.1 数据流图

数据流图是一种图形化技术,它描述信息流和数据从输入移动到输出的过程中所经历的变换

数据流图(DFD)描述系统逻辑模型、图中并没有具体的物理元素,只描述信息在系统中流动处理情况

数据流图是系统逻辑的图形表示,可以方便用户理解

设计数据流图时只需要考虑系统必须完成的基本逻辑功能,不要考虑具体如何去实现它

2.3.2 数据流图的符号

四种基本符号

  • 正方形(或立方体):表示数据的原点或者终点

  • 圆角符号(或圆形):代表变换数据的处理

  • 开口矩形(或两条平行线):代表数据存储

  • 箭头:表示数据流,即数据特定的流动方向

    image-20240728193644626

注意事项

  • 数据流图不等于程序流程图,不会出现某个控制流的条件

数据流图的附加符号

image-20240728193909905

2.3.3 案例

问题描述

  • 工厂采购部采购员每天需一张订货报表,按零件编号排序列出所需订货零件。 对订货零件列下述数据:零件编号、名称、订货数量、目前价格,主次要供应者等。零件入库或出库称事务,通过仓库终端把事务报告订货系统。零件库存量少于库存临界值需订货。

数据流图的画法(由外向里画数据流图的步骤)

  1. 确定系统的输入输出

    • 由于系统包括了哪些功能一时难以弄清楚,可以使范围尽量大一些,把可能有的内容全部包括进去

    • 应该向用户了解系统从外界接受了什么数据、系统向外界输出了什么数据等信息

    • 根据用户的答复画出数据流图的外围

  2. 由外向里画系统的顶层数据流图

    • 首先,将系统的输入和输出数据用一连串的加工连接起来。

    • 在数据流的值发生变化的地方就是一个加工

    • 然后,给各个加工命名

    • 最后,给文件命名

  3. 自顶向下逐层分解,给出分层数据流图

    • 对于大型系统,为了控制复杂性,便于理解,需要采用自顶向下逐层分解的方法进行,即用分层的方法将一个数据流图分解成几个数据流图来分别表示

解法

从问题描述中提取数据流的4种成分

  • 先考虑数据的源点和终点

    • 源点:仓库管理员

    • 终点:采购员

  • 在考虑数据的处理

    • 处理:处理事务、产生报表等

  • 最后考虑数据流和数据存储

    • 数据流:事务、订货信息、订货报表等

    • 数据存储:订货信息、库存信息

解法

  • 画出数据流图的基本系统模型

    image-20240728195128239

  • 把基本系统模型细化,描述主要功能

    image-20240728195221335

  • 对系统主要功能进一步细化

    image-20240728195252278

  • 结束,涉及到具体如何实现功能时,不应再分解

2.3.4 数据流图分层

为表达数据加工情况,需采用层次结构数据流图。顶层数据流图包含一个加工项,底层流图指加工项不再分解的数据流图,中间层流图只在顶层和底层之间,是对其上层父图的细化

分层数据流图示意图如下

image-20240728195737855

2.3.5 数据流图命名

命名规则

  • 数据流(或数据存储)命名

    • 用名词,区别于控制流

    • 不使用缺乏具体含义的名词

    • 代表整个数据流的内存,而不仅仅反应它的某些成分

  • 处理命名

    • 名字应该反应整个处理过程,而不是一部分功能

    • 用动宾词语,尽量避免使用“处理”、“加工”等笼统动词

    • 通常仅包括一个动词,否则分解

2.3.6 数据流图用途

作为信息交流的工具

作为分析和设计的工具

  • 用数据流图辅助物理系统设计时,能够在数据流图上画出许多组自动化边界,每组自动化边界可能意味着一个不同的物理系统

自动化边界划分方案一

  • 方案一

image-20240728200035964

  • 方案二

image-20240728200109929

2.3.7 考题示例

工资计算系统包含如下功能:

  • 计算工资

    • 根据人事部门给出的出勤表和业绩表计算奖金和缺勤扣款,通过生成的奖金发放表及工资基本信息库的信息计算应发工资,根据应发工资表计算所得税,根据后勤部门给出的水电扣款及缺勤扣款表和所得税款计算出实发工资,生成实发工资表和工资清单。

  • 打印工资清单

    • 根据工资清单完成工资条的打印,给职工

  • 工资转存

    • 根据实发工资表生成职工工资存款清单并将其发送到银行

请画出数据流图

  • 顶层数据流图

    image-20240728201458955

  • 功能级数据流图

    image-20240728201523444

  • 细化功能级数据流图

    image-20240728201551705

第四节 数据字典(DD)

2.4.1 数据字典

定义

数据字典是数据流图中所有元素定义的集合

四类元素

  • 数据流

  • 数据元素(数据流分量)

  • 数据存储

  • 处理

定义方法

  • 对数据自顶向下进行分解

数据元素组成数据的方式

  • 顺序:已确定次序连接两个或者多个分量

  • 选择:从两个或者多个可能的元素中选择一个

  • 重复:把指定的分量重复0次或者多次

  • 可选:一个分量可有可无(0次或者1次)

定义符号

image-20240729101956584

2.4.2 考题案例

题目

  • 北京某高校可用的电话号码有以下几类:校内号码由4位数字组成,第一位数字不是0;校外号码又分为本市电话和外地电话两类,拨校外电话需先拨0,若是本市电话则再接着拨8位数字(第一位不是0),若是外地电话则拨3位区码,再拨8位电话号码(第一位不是0)

解法

电话号码 = [校内电话号码 | 校外电话号码]
校内电话号码 = 非零数字 + 3位数字
校外电话号码 = [本市号码 | 外地号码]
本市号码 = 数字零 + 8位数字
外地号码 = 数字零 + 3位数字 + 8位数字
​
非零数字 = [ 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 ]
3位数字 = 3 { 数字 } 3
8位数字 = 非零数字 + 7位数字
7位数字 = 7 { 数字 } 7
数字 = [ 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 ]

第五节 成本/效益分析

目的

  • 从经济的角度分析开发一个特定的新系统是否划算

成本估计

  • 软件开发成本主要表现为人力消耗,有三种估算技术

    • 代码行技术

    • 任务分解技术

    • 自动估计成本技术

成本效益分析的方法

  • 估计开发成本、运行费用、以及经济效益