软件工程第二章

软工第二章:可行性研究

参考书目

《软件工程导论(第6版)》是2013年8月1日清华大学出版社出版的图书,作者是张海藩、牟永敏。本书主要讲述了软件工程的概念、原理和典型的方法学,并介绍了软件项目的管理技术。本书正文共13章,第1章是概述,第2~8章顺序讲述软件生命周期各阶段的任务、过程、结构化方法和工具,第9~12章分别讲述面向对象方法学引论、面向对象分析、面向对象设计和面向对象实现,第13章介绍软件项目管理。附录讲述了用面向对象方法开发软件的过程,对读者深入理解软件工程学很有帮助,也是上机实习的好材料。[^1]:百度

[^2]: @当当网

系列文章目录

软件工程第0章:点击跳转文章

软件工程第一章:点击跳转文章

文章目录

软工第二章:可行性研究

参考书目

系列文章目录

写作风格说明

正文

一、可行性研究

(一)是什么?

(二)为什么?

(三)怎么办?

二、系统流程图

(一)是什么?

(二)为什么?

(三)怎么办?

三、数据流图(DFD)

(一)是什么?

(二)为什么?

(三)怎么办?

四、数据字典

(一)是什么?

(二)为什么?

(三)怎么办?

五、成本/效益分析

(一)是什么?

(二)为什么?

(三)怎么办?

总结

写作风格说明

在软件工程这个专栏,我将会尽可能围绕知识点进行剖析,主要撰写重难点,不计较细枝末节。重点关注问题是什么,为什么,怎么样?每周一更,一篇文章基本上是参考书目的一章内容,当然,遇到重难点或是篇幅较长的章节将会适当分割。

正文

一、可行性研究

(一)是什么?

从技术、经济、工程等角度对项目进行调查研究和分析比较,并对项目建成以后可能取得的财务、经济效益及社会环境影响进行科学预测,为项目决策提供公正、可靠、科学的软件咨询意见。主要从经济、技术、社会环境等方面分析所给出的解决方案是否可行,当解决方案可行并有一定的经济效益或社会效益是才开始真正的基于计算机的系统的开发。

主要内容:技术可行性:现有技术对系统功能和性能的支持经济可行性:成本-效益分析操作可行性:系统能否在用户组织内正常运作此外还包括法律、社会效益等方面的分析与研究

(二)为什么?

目的:以最小的代价在最短的时间内确定该项目是否可能开发、是否值得开发,从而能够避免盲目投资,减少不必要的损失。

(三)怎么办?

可行性研究过程:①复查并确定系统规模和目标②研究正在使用的系统(如果存在的话)③导出新系统的高层逻辑模型④进一步定义问题,直到提出的逻辑模型完全符合系统目标⑤导出和评价供选择的解法⑥推荐行动方针,即确定是否要将项目进行下去,如果要的话,用什么解决方案,并说明理由⑦草拟开发计划(进度、资源、成本)⑧书写文档提交审查

二、系统流程图

(一)是什么?

系统流程图是概括的描绘系统物理模型的传统工具。它的基本思想是用图形符号以黑盒子形式描绘系统里面的每个具体部件(程序、文件、数据库、表格、人工过程等),表达数据在系统各个部件之间流动的情况。

(二)为什么?

在进行可行性研究时需要了解和分析现有的系统,并以概括的形式表达对现有系统的认识;进入设计阶段以后应该把设想的新系统的逻辑模型转变成物理模型,因此需要描绘未来的物理系统的概貌。

(三)怎么办?

系统流程图(基本符号)

系统流程图(系统符号)

举例:添加用户操作流程图

三、数据流图(DFD)

(一)是什么?

数据流图(Data Flow Diagram):简称DFD,它从数据传递和加工角度,以图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程,是结构化系统分析方法的主要表达工具及用于表示软件模型的一种图示方法。

(二)为什么?

当数据在软件系统中移动时,它将被系列“变换”所修改。数据流图(DFD)是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。在数据流图中没有任何具体的物理部件,它只是描绘数据在软件中流动和被处理的逻辑过程。数据流图是系统逻辑功能的图形表示,即使不是专业的计算机技术人员也容易理解它,因此是分析员与用户之间极好的通信工具。此外,设计数据流图时只需考虑系统必须完成的基本逻辑功能,完全不需要考虑怎样具体地实现这些功能,所以它也是今后进行软件设计的很好的出发点。

(三)怎么办?

1、DFD的基本符号:

数据流程图中有以下几种主要元素:数据流。数据流是数据在系统内传播的路径,因此由一组成分固定的数据组成。如订票单由旅客姓名、年龄、单位、身份证号、日期、目的地等数据项组成。由于数据流是流动中的数据,所以必须有流向,除了与数据存储之间的数据流不用命名外,数据流应该用名词或名词短语命名。

数据源或宿(“宿”表示数据的终点)。代表系统之外的实体,可以是人、物或其他软件系统。对数据的加工(处理)。加工是对数据进行处理的单元,它接收一定的数据输入,对其进行处理,并产生输出。

数据存储。表示信息的静态存储,可以代表文件、文件的一部分、数据库的元素等

2、DFD的扩展符号:

根据层级数据流图分为顶层数据流图、中层数据流图和底层数据流图。除顶层数据流图外,其他数据流图从零开始编号。

顶层数据流图只含有一个加工表示整个系统;输出数据流和输入数据流为系统的输入数据和输出数据,表明系统的范围,以及与外部环境的数据交换关系。

中层数据流图是对父层数据流图中某个加工进行细化,而它的某个加工也可以再次细化,形成子图;中间层次的多少,一般视系统的复杂程度而定。

底层数据流图是指其加工不能再分解的数据流图,其加工称为“原子加工”。

3、DFD分层原则:

在单张数据流图时,必须注意以下原则:

1. 一个加工的输出数据流不应与输入数据流同名,即使它们的组成成分相同。

2. 保持数据守恒。也就是说,一个加工所有输出数据流中的数据必须能从该加工的输入数据流中直接获得,或者说是通过该加工能产生的数据。

3. 每个加工必须既有输入数据流,又有输出数据流。

4. 所有的数据流必须以一个外部实体开始,并以一个外部实体结束。

5. 外部实体之间不应该存在数据流

4、DFD画法

1. 确定系统的输入输出由于系统究竟包括哪些功能可能一时难于弄清楚,可使范围尽量大一些,把可能有的内容全部都包括进去。此时,应该向用户了解“系统从外界接受什么数据”、“系统向外界送出什么数据”等信息,然后,根据用户的答复画出数据流图的外围。

2. 由外向里画系统的顶层数据流图首先,将系统的输入数据和输出数据用一连串的加工连接起来。在数据流的值发生变化的地方就是一个加工。接着,给各个加工命名。然后,给加工之间的数据命名。最后,给文件命名。

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

5、举例:使用Visio2007制作

1. 订货系统的DFD(教材p44图2.7)

2. 机票预定系统航空公司为给旅客乘机提供方便,需要开发一个机票预定系统。各个旅行社把预定机票的旅客信息(姓名、性别、工作单位、身份证号码(护照号码)、旅行时间、旅行始发地和目的地,航班舱位要求等)输入到系统中,系统为旅客安排航班。当旅客交付了预订金后,系统打印出取票通知和账单给旅客,旅客在飞机起飞前一天凭取票通知和帐单交款取票,系统核对无误即打印出机票给旅客。

四、数据字典

(一)是什么?

数据字典是指对数据的数据项、数据结构、数据流、数据存储、处理逻辑等进行定义和描述,其目的是对数据流程图中的各个元素做出详细的说明,使用数据字典为简单的建模项目。简而言之,数据字典是描述数据的信息集合,是对系统中使用的所有数据元素的定义的集合。

(二)为什么?

数据字典最重要的作用是作为分析阶段的工具。任何字典最重要的用途都是供人查询对不了解的条目的解释,在结构化分析中,数据字典的作用是给数据流图上每个成分加以定义和说明。换句话说,数据流图上所有的成分的定义和解释的文字集合就是数据字典,而且在数据字典中建立的一组严密一致的定义,很有助于改进分析员和用户的通信。

数据库数据字典不仅是每个数据库的中心,而且对每个用户也是非常重要的信息。用户可以用SQL语句访问数据库数据字典。

(三)怎么办?

目前,数据字典几乎总是作为CASE结构化分析与设计工具”的一部分实现的。 在开发大型软件系统的过程中,数据字典的规模和复杂程度迅速增加,人工维护数据字典几乎是不可能的。

如果在开发小型软件系统时暂时没有数据字典处理程序,建议采用卡片形式书写数据字典,每张卡片上保存描述一个数据的信息。这样做会使更新和修改比较方便,而且能单独处理描述每个数据的信息。每张卡片上主要应该包含下述这样一些信息:

名字、别名、描述、定义、位置。

当开发过程进展到能够知道数据元素的控制信息和使用特点时,再把这些信息记录在卡片的背面。

五、成本/效益分析

(一)是什么?

成本效益分析是通过比较项目的全部成本和效益来评估项目价值的一种方法,成本—效益分析作为一种经济决策方法,将成本费用分析法运用于政府部门的计划决策之中,以寻求在投资决策上如何以最小的成本获得最大的收益。常用于评估需要量化社会效益的公共事业项目的价值。

(二)为什么?

在激烈竞争的经济环境下,成本控制成为每个企业关注的焦点问题。如何科学分析企业的各项成本构成及影响利润的关键要素,找到成本控制的核心思路和关键环节,使企业更好地应对竞争压力下的成本控制问题。

成本控制绝对不仅仅是单纯的压缩成本费用,它需要与宏观经济环境、企业的整体战略目标、经营方向、经营模式等有效结合,需要建立起科学合理的成本分析与控制系统,让企业的管理者全面、清晰地掌握影响公司业绩的核心环节,全面了解企业的成本构架、盈利情况,从而把握正确的决策方向,从根本上改善企业成本状况,真正实现有效的成本控制。

(三)怎么办?

1. 货币的时间价值:设年利率为i,P元钱在n年后的价值为:F=P(1+i)^n

2. 投资回收期:即工程累计经济效益等于最初投资所需要的时间

3. 纯收入:在整个生存周期内新系统的累计经济效益与投资之差

4. 投资回收率:P=F1/(1+j)+F2/(1+J)^2…+Fn/(1+j) ^n其中P为现在的投资额;Fj是第i年年底的效益(i=1,2,3,…,n);n是系统的使用寿命;j是投资回收率。

总结

可行性研究进一步探讨问题定义阶段所确定的问题是否有可行的解。在对问题正确定义的基础上,通过分析问题(往往需要研究现在正在使用的系统),导出试探性的解,然后复查并修正问题定义再次分析问题,改进提出的解法……经过定义问题、分析问题、提出解法的反复过程最终提出一个符合系统目标的高层次的逻辑模型。然后根据系统的这个逻辑模型设想各种可能的物理系统、并且从技术、经济和操作等各方面分析此物理系统的可行性。最后,系统分析员提出一个推荐的行动方针,提交用户和客户组织负责人审查批准。

在表达分析员对现有系统的认识和描绘他对未来的物理系统的设想时,系统流程图是一个很好的工具。系统流程图实质上是物理数据流图,它描绘组成系统的主要物理元素以及信息在这些元素间流动和处理的情况。

数据流图的基本符号只有4种,它是描绘系统逻辑模型的极好工具。通常数据字典和数据流图共同构成系统的逻辑模型。没有数据字典精确定义数据流图中每个元素,数据流图就不够严密;然而没有数据流图,数据字典也很难发挥作用。

成本/效益分析是可行性研究的一项重要内容,是客户组织负责人从经济角度判断是否继续投资于这项工程的主要依据。

读者应该着重理解可行性研究的必要性,以及它的基本任务和基本步骤,在此基础上再进一步学习具体方法和工具。对具体方法和工具的深人认识,又可以反过来加深对可行性研究过程的理解。但是,不要陷于具体方法和工具的细节中面忽略了对软件工程基本原理和概念的学习

你可能感兴趣的:(软件工程第二章)