软件工程[2] 可行性研究

主要内容有可行性研究的任务和方法,成本/效益分析,重点数据流图数据字典

#可行性研究的任务

不是解决问题,而是确定问题是否值得去解决。

分析可能解法的利弊;判定系统规模和目标是否能够实现;效益是否可观。

进一步分析和澄清问题定义;之后导出系统的逻辑模型;从逻辑模型出发,探索主要解法(实现方案);对每种解法从以下方面研究可行性:

  • 技术可行性 现有技术能否实现目标系统?
  • 经济可行性 能否收回投资并获得利润?
  • 操作可行性 操作方式是否适用于用户组织?
  • 法律、社会效益可行性 是否符合法律要求?

#可行性研究的过程

  • 复查系统规模和目标
  • 研究目前正在使用的系统(完成它的基本功能;解决它存在的问题;增加收入或减少支出)
  • 导出系统的高层逻辑模型(数据流图、数据字典)
  • 进一步定义问题(分析员与用户复查问题定义、工程规模和目标)
  • 导出和评价供选择的解法(从技术等方面研究可行性)
  • 推荐行动方针(是否继续进行该项目,若是则选择最佳解法,并进行成本/效益分析)
  • 草拟开发计划
  • 书写文档提交审查

#系统流程图

系统流程图是概括地描绘物理系统的传统工具。系统流程图表达的是数据在系统各部件之间流动的情况,而不是对数据进行加工处理的控制过程(程序流程图)。 程序流程图是描述过程设计的工具。

#数据流图(DFD)

在数据流图中没有任何具体的物理部件,只是描绘数据在软件中流动和被处理的逻辑过程。

#基本符号

符号 含义
正方形或立方体 数据源点或终点
圆角矩形或圆形 变换数据的处理
开口矩形或两条平行线 数据存储
箭头 特定数据流动方向

#分层

  • 顶层(0 层)数据流图。仅包含一个加工,它代表被开发系统。
  • 中间层数据流图。对其上层父图的细化,其每一加工可能继续细化,形成子图。
  • 底层数据流图。加工不需再做分解(基本加工)的数据流图。

数据流图分层

一个数据流图的具体例子:

#数据字典

数据字典是描述数据的信息的集合,是对系统中使用的所有数据元素的定义的集合。系统的逻辑模型由DFD和数据字典共同构成,缺一不可。

#数据字典的内容

  • 一般信息。名字,别名,描述等。
  • 定义。数据类型,长度,结构等。
  • 使用特点。值的范围,使用频率,使用方式(输入,输出,本地),条件值等。
  • 控制信息。来源,用户,使用它的程序,改变权,使用权等。
  • 分组信息。父结构,从属结构,物理位置(记录、文件和数据库)等。

#定义数据的方法

符号 含义 栗子
$=$ 定义为
$+$ $x = a + b$,表示 $x$ 由 $a$ 和 $b$ 组成
$[.. \mid ..]$ $x = [a \mid b]$,表示 $x$ 由 $a$ 和 $b$ 组成
$\{ \}$ 重复 $x = 3{a}8$,表示 $x$ 中至少出现 3 次 $a$, 至多出现 8 次 $a$,也可以用上下标的形式表示次数限制
$()$ 可选 $x=(a)$,表示 $a$ 可在 $x$ 中出现,也可不出现

🌰发票 = 单位名称 + 1{商品名+数量+单价+金额}5 + 总金额 + 日期 + (营业员)

#成本/效益分析

#成本估计

  • 代码行技术。人力成本=每行代码成本 $\times$ 代码行数。
  • 任务分解技术。对于每个任务,估计人力成本(人月为单位)。
  • 自动估计成本技术。采用相关软件自动估算。

#成本/效益分析的方法

  • 货币的时间价值。工程经济学 P 和 F 的关系。
  • 投资回收期。越短越好。
  • 纯收入。越多越好。
  • 投资回报率。衡量工程经济效益时最重要的参考依据。

learn more: 工程经济学

updatedupdated2022-05-032022-05-03