结构化开发方法分析与设计提纲
一、分析阶段:
(一)收集信息
分析员通过与用户交谈或观察商业过程得到信息。
注意:使用活动图来表示工作流程
(二)定义系统需求
功能需求信息:需要系统完成什么样的工作(逻辑模型、物理模型)
非功能需求信息:技术需求、性能需求、可用性需求、安全需求
(三)划分需求优先级
确定关键问题:系统要完成的最重要的事是什么?
(四)构建可用性和发现原型
构建原型(发现原型)的主要目的是为了更好地理解用户的需求。
原型的构建不为实现所有的功能,而是用来检验商业需求某种实现方法的可行性
(五)系统需求建模:
1. 把所有事件罗列出来并加以分析(事件:可以描述、值得记录的在某一特定时间和地
点发生的事情。)
事件的分类:(1)外部事件:系统之外发生的事件,通常都是由外部实体或动作参与者触发的。
(2)临时(时序)事件:由于到达某一时刻所发生的事件,系统是自动产生所需要的输出结果而不需要用户进行操作。
(3)状态事件:当系统内部发生了需要处理的情况时所引发的事件。基
于系统从一个状态或条件到另一个状态或条件的转变触发过程。通常状态事件作为外部事件的结果而发生
注意:确定一个事情的出现是事件还是随事件而发生的一部分交互行为,
采用的方法是看二者之间是否有较长的停顿或间隔
2. 关注每一个事件、利用事件表描述事件
3.事物分析
(1)考查事件列表、罗列以下事物,根据不同的分析和设计方法的要求对其加以调整。
①实实在在的事物;
②人所充当的角色;
③组织部门;
④突发事件或重要的交互行为信息
(事物构成系统存储信息的相关数据)
(2)分析事物的关系
基数/重数:发生在事物间关联的数目。
根据每件事物的关联数目来理解每种关系的本质非常重要的。
(3)分析事物的属性
• 属性:有关事物的一条特定信息。
• 标识符(关键字):能惟一标识事物的一个属性。
• 复合属性:包括了许多相关属性的属性。
(4)分析系统需要存储其信息的事物(数据实体)
用ERD图描绘数据实体间的关系
4.DFD的定义、符号、作用(与事件表、ERD图的联系)
数据的一致性
DFD中的处理对应于RMO事件表中的一个活动。
DFD的数据存储(条目可用性)信息没包含在事件表中。
DFD中的每一个数据存储在ERD中代表一个数据实体。
在DFD中的处理使用了在系统的ERD中所提供的数据实体及其属性信息。 DFD将事件触发的处理和在ERD中定义的数据实体相结合。
5.DFD的抽象水平(分层、关联图、0层图、DFD片段)
(1) 抽象水平:把系统分解成一个逐渐细化的分层集合的建模技术。
(2) 关联图(顶层图):在单个处理符号中概括系统内所有处理活动的DFD,
或者说
是描述系统抽象概念的DFD。
每个关联图对应一个外部事件的触发器变成一个输入数据流,而其来源变成
一个外部实体。
每一个响应变成一个输出数据流,并且其目的源变成一个外部实体。
对应短暂事件的触发器不是数据流,所以没有对应短暂事件的数据流。
注意:关联图DFD能够直接从事件表创建。
(3)DFD片段:用一个单一处理符号表示系统响应一个事件的DFD。
(4)DFD片段组合成0层图
6. DFD的详细描述(处理描述、数据字典)
首先,需要详细描述每一个最低层处理。(结构化的英语、决策树、决策表)
其次,系统分析员需要根据数据流包含的数据元素来定义数据流。数据存储也需要根据数据元素定义。
最后,系统分析员也需要定义每一个数据元素
数据元素定义包括以下内容:
数据项的名称
数据项的值域
数据项的数据类型
数据项的长度
对数据项的简单描述、与之相关的数据项或数据结构、处理过程等加以说明
二、系统设计阶段:
(一)采用结构化方法进行应用程序结构的设计
模块:具有输入/输出、逻辑功能、运行程序、内部数据属性的一组程序语句。模块
的输入来源和输出去向都是同一个调用者,模块从调用者那里获得输入,然后再把产生的数据返回给调用者;
逻辑功能:指它能够做什么事情,表达了它把输入转换成输出的功能;
内部数据:指属于该模块自己的数据;
运行程序:指它如何用程序实现这种逻辑功能。
(二) 系统流程图
对组成一个完整系统的各计算机程序、文件、DB,以及相关手工过程的表示。 表达系统执行过程;描述所有I/O和与之有关的处理;包括所有文件的建立过程;
表达数据在系统中的流向。
生成时应考虑:信息处理的步骤和内容;每一步骤所涉及的物理过程;各步骤间的
物理和逻辑关系。
系统流程图用图形的方式描述哪些子系统是系统自动完成的,哪些需要人工的参与,
画出数据流和控制流。
其标出整个系统的文件、程序及人工处理部分。通过确认文件媒介(磁盘、磁带)来
增加物理实现的描述。
提供整个系统的总体情况。
描述多层系统中层与层之间的交互。
其重点放在物理对象的实现上(如可执行的程序、文件和文档等)(与DFD不同)。
3.结构图
(1)结构图:用来展示一个计算机程序模块间关系的层次图。
结构图的层次描述系统每部分的功能和子功能。
在结构图上用矩形框表示功能,每个矩形框代表一个模块。
模块之间的连线表示高层模块对低层模块调用的某种结构,其上的小箭头表示在模
块间传递的数据,以及各个模块的输入和输出。
从结构图上不能了解模块内部的内容,但可知道模块以何种方式实现其名称所表示
的功能,如何使用输入数据,以及如何产生输出数据。
程序调用:
每一次调用中,控制由调用模块传向被调用模块,被调用模块接着执行一系列
程序语句,当调用过程结束后,被调用模块立即把控制权返回给调用模块,程
序紧接着执行下面的声明或指令
从高层模块到低层模块的箭头表示程序调用,调用的顺序总是从左到右的。
结构图在表示调用结构时仍是具有严格的层次。一个低层的模块永远不会调用高层模块。 注意:
结构图还必须与系统流程图相一致。
如果在开发中结构图发生了改变,项目组也要相应地更新系统流程图。
逐一地建立结构图,再组成完整的结构图。
(2)结构图开发方法:
1. 事务分析
2. 变换分析
(3)评价结构图的质量
模块耦合:模块与其他模块的相关程序,较好的耦合是数据耦合。
模块内聚:模块内部的凝聚程度。
(4) 模块算法设计:伪码
系统流程图和结构图,提供整个系统的结构和每个程序的内部结构。
描述模块内部逻辑方法:流程图(描述程序逻辑的可视化方法)、结构化英语和伪码。