第二章可行性研究第2章Content2.1可行性研究的任务2.2可行性研究过程2.3系统流程图2.4数据流图2.5数据字典2.6成本/效益分析2.7小结开始问题定义可性行研究可行否?项目实施计划终止项目的建议结束YN问题的定义与可行性研究Who为谁设计,用户是谁?What要解决哪些问题?Why为什么要解决这些问题有用的软件3W可行性研究目的:用最小的代价在尽可能短的时间内确定问题是否能够解决。不是解决问题,而是确定问题是否值得去解决。2.1可行性研究的任务可行性研究的主要任务是“了解客户的要求及现实环境,从技术、经济和社会因素等三方面研究并论证本软件项目的可行性,编写可行性研究报告,制定初步项目开发计划。”GB8566-88《计算机软件开发规范》可行性研究的最根本任务对软件开发以后的行动方针提出建议。2.2可行性研究过程1.复查系统规模和目标2.研究目前正在使用的系统3.导出新系统的高层逻辑模型4.进一步定义问题5.导出和评价供选择的解法6.推荐行动方针7.草拟开发计划8.书写文档提交审查可行性研究报告的编写1引言1.1编写目的1.2背景1.3定义1.4参考资料2可行性研究的前提2.1要求2.2目标2.3条件、假定和限制2.4进行可行性研究的方法2.5评价尺度可行性研究报告的编写3对现有系统的分析3.1数据流程和处理流程3.2工作负荷3.3费用开支3.4人员3.5设备3.6局限性4所建议的系统4.1对所建议系统的说明4.2数据流程和处理流程4.3改进之处4.4影响4.5局限性4.6技术条件方面的可行性可行性研究报告的编写5可选择的其它系统方案5.1可选择的其它系统15.2可选择的其它系统2......6投资及收益分析6.1支出6.2收益6.3收益/投资比6.4投资回收周期6.5敏感性分析7社会条件方面的可行性7.1法律方面的可行性7.2使用方面的可行性2.3系统流程图系统流程图是概括地描绘物理系统的传统工具。它的基本思想是用图形符号以黑盒子形式描绘组成系统的每个部件(程序,文档,数据库,人工过程等)。系统流程图表达的是数据在系统各部件之间流动的情况,而不是对数据进行加工处理的控制过程,因此尽管系统流程图的某些符号和程序流程图的符号形式相同,但是它却是物理数据流图而不是程序流程图。2.3系统流程图是概括地描绘物理系统的传统工具。它的基本思想是用图形符号以黑盒子的形式描绘组成系统的每个部件(程序、文档、人工过程和数据库)。表达的是数据在系统各部件之间流动的情况,而不是对数据进行加工处理的控制过程。它是物理数据流图,不是程序流程图。符号处理:能改变数据值或数据位置的加工或部件,例如,程序、处理机、人工加工等都是处理输入输出:表示输入或输出(或既输入又输出),是一个广义的不指明具体设备的符号连接:指出转到图的另一部分或从图的另一部分转来,通常在同一页上换页连接:指出转到另一页图上或从另一页图转来数据流:用来连接其他符号,指明数据流动方向穿孔卡片:表示用穿孔卡片输入或输出,也可表示一个穿孔卡片文件通常表示打印输出,也可表示用打印终端输入数据磁带:磁带输入输出,或表示一个磁盘文件联机存储:表示任何种类的联机存储,包括磁盘、磁鼓、软盘和海量存储器件等磁盘:磁盘输入输出,也可表示存储在磁盘上的文件或数据库磁鼓输入输出,也可表示存储在磁鼓上的文件或数据库显示:CRT终端或类似的显示部件,可用于输入或输出,也可既输入又输出人工输入:人工输入数据的脱机处理品,例如,填写表格人工操作:人工完成的处理,例如,会计在工资支票上签名辅助操作:使用设备进行的脱机处理通信链路:通过远程通信线路或链路传送数据系统符号---具体地描绘一个物理系统所用符事务库存清单程序定货信息报告生成程序库存清单主文件定货报告分层次的描绘这个系统。首先用一张高层次的系统流程图描绘系统总体概貌,表明系统的关键功能,然后分别把每个关键功能扩展到适当的详细程序,画在单独的一页纸上购书单终端审查并开发票发票学生收书费发书领书单开领书单发票收讫各班学生用书表教材存量表2.4数据流图DFD----DataFlowDiagram一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。在数据流图中没有任何具体的物理部件,它只是描绘数据在软件中流动和被处理的逻辑过程,是系统逻辑功能的图形表示。设计数据流图时只需考虑系统必须完成的基本逻辑功能,完全不需要考虑怎样具体地实现这些功能,所以它也是今后进行软件设计的很好的出发点。数据流图数据流图是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经过的变换。它是描绘数据在软件中流动和被处理的逻辑过程。基本符号数据的源点/终点变换数据的处理数据存储数据流ABC*ABCABCABCABCABC*++⊕⊕数据A和B同时输入才能变成C数据A变成B和C数据A或B,或A和B同时输入才能变成C数据A变成B或C,或B和C只有数据A或只有数据B(但不能A、B同时)输入时变成C数据A变换成B或C,但不能变换成B和CTTTTTT运动中的数据静止状态的数据数据流图的层次结构为了表达数据处理过程的数据加工情况,需要采用层次结构的数据流图。按照系统的层次结构进行逐步分解,并以分层的数据流图反映这种结构关系,能清楚地表达和容易理解整个系统。在多层数据流图中,顶层流图仅包含一个加工,它代表被开发系统。它的输入流是该系统的输入数据,输出流是系统所输出数据。底层流图是指其加工不需再做分解的数据流图,它处在最底层。中间层流图则表示对其上层父图的细化。它的每一加工可能继续细化,形成子图。分层的数据流图数据流图的例子假设一家工厂的采购部每天需要一张定货报表,报表按零件编号排序,表中列出所有需要再次定货的零件。对于每个需要再次定货的零件应该列出下述数据:零件编号,零件名称,定货数量,目前价格,主要供应者,次要供应者。零件入库或出库称为事务,通过放在仓库中的CRT终端把事务报告给定货系统。当某种零件的库存数量少于库存量临界值时就应该再次定货。数据源点:仓库管理员数据终点:采购员事务的后果是改变零件库存量。数据流:定货报表,事务数据存储:定货信息,库存清单数据流图的例子(续)源点/终点处理采购员仓库管理员产生报表处理事务数据流数据存储定货报表零件编号零件名称定货数量目前价格主要供应者次要供应者事务零件编号*事务类型数量*定货信息(见定货报表)库存清单*零件编号库存量库存量临界值数据流图的例子(续)仓库管理员定货系统采购员事务定货报表D1库存清单仓库管理员1处理事务2产生报表采购员D2定货信息事务定货报表D1库存清单仓库管理员1.1接收事务2产生报表采购员D2定货信息事务定货报表1.2更新库存清单1.3处理定货事务库存信息定货信息命名为数据流命名名字应代表整个数据流(或数据存储)的内容,而不是仅仅反映它的某些成分不要使用空洞的、缺乏具体含义的名字(如“数据”、“信息”、“输入”之类)如果在为某个数据流(或数据存储)起名字时遇到了困难,则很可能是因为对数据流图分解不恰当造成的,应该试试重新分解,看是否能克服这个困难为处理命名通常先为数据流命名,然后再为与之相关联的处理命名。这样命名比较容易,而且体现了人类习惯的“由表及里”的思考过程。名字应该反映整个处理的功能,而不是它的一部分功能名字最好由一个具体的及物动词加上一个具体的宾语组成。尽量避免使用“加工”、“处理”等空洞笼统的动词作名字。命名通常名字中仅包括一个动词,如果必须用两个动词才能描述整个处理的功能,则把这个处理再分解成两个处理可能更恰当些。如果在为某个处理命名时遇到困难,则很可能是发现了分解不当的迹象,应考虑重新分解。用途交流信息的工具从数据流图的基本目标出发,可以考虑在一张数据流图中包含多少个元素合适的问题可以作为分析和设计的工具系统流程图和数据流图的差别当用数据流图辅助物理系统的设计时,以图中不同处理的定时要求为指南,能够在数据流图上画出许多组自动化边界,每组自动化边界可能意味着一个不同的物理系统,因此可以根据系统的逻辑模型考虑系统的物理实现D1库存清单仓库管理员1.1接收事务2产生报表采购员D2定货信息事务定货报表1.2更新库存清单1.3处理定货事务库存信息定货信息联机处理批处理D3事务事务D1库存清单仓库管理员1.1接收事务2产生报表采购员D2定货信息事务定货报表1.2更新库存清单1.3处理定货事务库存信息定货信息联机处理批处理数据字典数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合数据字典的作用也正是在软件分析和设计的过程中给人提供关于数据的描述信息数据流图和数据字典共同构成系统的逻辑模型,没有数据字典数据流图就不严格,然而没有数据流图数据字典也难于发挥作用。定义数据的方法定义绝大多数复杂事物的方法,都是用被定义的事物的成分的某种组合表示这个事物,这些组成成分又由更低层的成分的组合来定义。组成数据的方式的三种基本类型:顺序选择重复可选符号表示法=意思是等价于+意思是和[]意思是或(即,从方括弧中列出的若干个分量中选择一个),通常用“|”号隔开供选择的分量()意思是可选(即圆括弧里分量可有可无)使用上限和下限进一步注释表示重复的花括1{A}5定义数据的方法(续)使用方法:某程序设计语言规定,用户说明的标识符是长度不超过8个字符的字符串,其中第一个字符必须是字母字符,随后的字符既可以是字母字符也可以是数字字符。标识符=字母字符+字母数字串字母数字串=0{字母或数字}7字母或数字=[字母字符|数字字符]数据字典的内容数据字典的内容数据项数据结构数据流数据存储处理过程数据项是数据的最小组成单位若干个数据项可以组成一个数据结构数据字典通过对数据项和数据结构的定义来描述数据流、数据存储的逻辑内容。⒈数据项数据项是不可再分的数据单位对数据项的描述数据项描述={数据项名,数据项含义说明,别名,数据类型,长度,取值范围,取值含义,与其他数据项的逻辑关系}取值范围、与其他数据项的逻辑关系定义了数据的完整性约束条件⒉数据结构数据结构反映了数据之间的组合关系。一个数据结构可以由若干个数据项组成,也可以由若干个数据结构组成,或由若干个数据项和数据结构混合组成。对数据结构的描述数据结构描述={数据结构名,含义说明,组成:{数据项或数据结构}}⒊数据流数据流是数据结构在系统内传输的路径。对数据流的描述数据流描述={数据流名,说明,数据流来源,数据流去向,组成:{数据结构},平均流量,高峰期流量}数据流来源是说明该数据流来自哪个过程数据流去向是说明该数据流将到哪个过程去平均流量是指在单位时间(每天、每周、每月等)里的传输次数高峰期流量则是指在高峰时期的数据流量⒋数据存储数据存储是数据结构停留或保存的地方,也是数据流的来源和去向之一。对数据存储的描述数据存储描述={数据存储名,说明,编号,流入的数据流,流出的数据流,组成:{数据结构},数据量,存取方式}流入的数据流:指出数据来源流出的数据流:指出数据去向数据量:每次存取多少数据,每天(或每小时、每周等)存取几次等信息存取方法:批处理/联机处理;检索/更新;顺序检索/随机检索⒌处理过程处理过程的具体处理逻辑一般用判定表或判定树来描述。数据字典中只需要描述处理过程的说明性信息处理过程说明性信息的描述处理过程描述={处理过程名,说明,输入:{数据流},输出:{数据流},处理:{简要说明}}简要说明:主要说明该处理过程的功能及处理要求功能:该处理过程用来做什么处理要求:处理频度要求(如单位时间里处理多少事务,多少数据量);响应时间要求等处理要求是后面物理设计的输入及性能评价的标准数据字典的实现名字:定货报表别名:定货信息描述:每天一次送给采购员的需要定货的零件表定义:定货报表=零件编号+零件名称+定货数量+目前价格+主要供应者+次要供应者位置:输出到打印机名字:定货数量别名:描述:某个零件一次定