软件工程【二】

二、结构化设计


1、结构化分析概述

核心思想:分解简化问题、物理(实现细节)与逻辑(是什么、做什么)表示分开、进行数据与逻辑抽象

具体步骤:

(1)发现需求

发现需求方法:

  • 与用户交谈,向用户提问题;
  • 参观用户的工 作流程,观察用户的操作;
  • 向用户群体发调查问卷;
  • 与同行、专家交谈,听取他们的意见;
  • 分析已经存在的同类软件产品,提取需求;
  • 从行业标准、规则中提取需求;
  • 从Internet上搜查相关资料等。

(2)求精

​ 由于需求非常庞杂,所以需要对初步需求反复求精多次细化。

(3)建模

​ 语言描述会使得不同人阅读产生不同的想法,所以需要建立模型,用图形符号和组织规则书面描述事物。不同的软件开发方法建立的模型不同。在结构化分析中我们一般使用数据模型、功能模型、行为模型

  • 模型核心:数据字典
    描述软件使用和产生的所有数据对象。
  • 数据模型:E-R图表达
    描述数据对象间关系
    图中数据对象属性用“数据对象描述”表达。 
  • 功能模型:DFD表达
    描绘数据在软件中移动、变换及相应功能
    图中功能用“处理规格说明”表达。
  • 行为模型:状态转换图
    描绘系统状态和在不同状态间转换方式。
    图中软件控制附加信息用“控制规格说明”表达。

图+说明=模型。因为图的信息不够详细,还需要一定的说明

(4)规格说明

书写软件需求规格说明,作为分析阶段最终成果。具有国标模板等,它是开发和交付的依据。

(5)复审

2、数据模型

数据模型由数据对象、数据对象间关系、属性组成

数据对象:软件必须理解的复合信息表示,复合信息是具有一系列不同性质或属性的事物。例如:事务(报表)、地点(仓库)、角色(教师、学生)单位(会计科)、行为(打电话)等

属性:定义数据对象性质。例如:数据对象学生的属性可为学号、姓名、班级等。

关系:对象彼此间相互连接方式,也称联系。例如:教师和学生间存在“教”的联系。分三类,1:1 (一对一) 、 1:N (一对多) 、 M:N(多对多)。

实体用矩形框表示、属性用圆角矩形表示、关系用菱形

例如:某校教学管理系统E-R图

例题:请为某仓库的管理设计一个ER模型,该仓库主要管理零件的订购和供应等事项。仓库向工程项目供应零件,并且根据需要向供应商订购零件。“零件”的主要属性是:零件编号,零件名称,颜色,重量。 “工程项目”的属性主要是:项目编号,项目名称,开工日期。“供应商”的属性主要有:供应商编号,供应商名称,地址。

3、功能模型

数据流图是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换,表达了信息加工处理的过程。它没具体的物理元素,只描绘信息在系统中流动处理情况。数据流图是结构化分析的主要工具之一它是逻辑模型,它不考虑怎么做,只考虑做什么!

符号表示:

为了表达数据处理过程的数据加工情况,用一个数据流图是不够的,为了表达稍为复杂的实际问题,需要按照问题的层次结构进行逐步分解,并以分层的数据流图反映这种结构关系。

一些原则:

  • 数据流图上所有图形符号只限于前述四种基本图形元素
  • 数据流图的主图必须包括前述四种基本元素,缺一不可
  • 数据流图的主图上的数据流必须封闭在外部实体之间
  • 每个加工至少有一个输入数据流和一个输出数据流
  • 在数据流图中,需按层给加工框编号。编号表明该加工所处层次及上下层的亲子关系
  • 规定任何一个数据流子图必须与它上一层的一个加工对应,两者的输入数据流和输出数据流必须一致。即父图与子图的平衡
  • 图上每个元素都必须有名字
  • 局部数据存贮:在子图中出现的数据存贮,可以不出现在父图中,画父图时只需画出处理逻辑之间的联系,不必画出各个处理逻辑内部的细节。
  • 命名规则
    • 数据流(数据存储)命名
      • (1)用名词,区别于控制流。
      • (2)代表整个数据流(数据存储)内容,不仅仅反映某些成分。
      • (3)不用缺乏具体含义名字,如“数据”、“信息”。
    • 处理命名
      • (1)用动宾词组,避免使用“加工”、“处理”等笼统动词。
      • (2)应反映整个处理的功能,不是一部分功能。
      • (3)通常仅包括一个动词,否则分解
    • 数据源点/终点命名
      • 不属于数据流图的核心内容,可能是人员、计算机外部设备或传感器装置。采用它们在问题域中习惯使用的名字(如“采购员”、“仓库管理员’等)。

(1)画数据流图的方法

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

①从问题描述提取数据流图四种成分
  • 源点:仓库管理员
  • 终点:采购员
  • 处理:处理事务、产生报表等
  • 数据流:事务、订货信息、订货报表等
  • 数据存储:订货信息、库存信息
②画数据流图的基本系统模型。

③把基本系统模型细化,描绘系统主要功能

④主要功能进一步细化

⑤结束,进一步分解涉及如何具体实现功能时,不应再分解。

总结:

一.从问题描述提取数据流图四种成分

先考虑源点和终点再考虑处理最后考虑数据流和数据存储

二.画数据流图的基本系统模型。

只有一个处理过程,这一步主要是为了划定边界方便进一步细分。

三.把基本系统模型细化,描绘系统主要功能。

将系统的主要的各种功能呈现。

四.主要功能进一步细化。

对每一种功能进行细细划分

五.结束,进一步分解涉及如何具体实现功能时,不应再分解。

因为数据流图不涉及怎么做,所以当再分解时涉及到如何具体实现功能时,不应再分解。

(2)数据流图的应用

1、作为交流信息的工具

作为用户和系统分析员之间交流的工具。不需要专业培训就能看懂。文字表述容易引发歧义且不直观。相比之下数据流图就是个很好的工具

2、作为分析和设计的工具

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

例如:

这样相比较之下,联机方式更好,批量方式无法确定后来的订货信息能否满足条件,因为它是等待一批后处理。

(3)数据流图练习

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

计算工资

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

打印工资清单

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

工资转存

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

①从问题描述提取数据流图四种成分
  • 起点:人事部门、后勤部门
  • 终点:职工、银行
  • 处理:计算奖金、计算缺勤扣款、计算所得税、计算出实发工资、生成实发工资表和工资清单、打印工资清单、工资转存
  • 数据流:出勤表、业绩表、奖金、缺勤扣款、奖金发放表、工资基本信息库的信息、所得税、水电扣款、实发工资、工资表和工资清单
  • 数据存储:奖金发放表、工资基本信息库的信息、工资表和工资清单
②画数据流图的基本系统模型确立边界

③把基本系统模型细化,描绘系统主要功能。

④主要功能进一步细化

⑤结束,进一步分解涉及如何具体实现功能时,不应再分解

4、行为模型

状态:被观察到的系统行为模式。

事件:引起状态转换的外界事件抽象。箭头表示,箭头上标事件名。后跟〔条件〕,表状态转换条件。

行为:进入某状态所作动作。状态框内do:行为名。

初始状态(一般一个)——》若干中间状态——》若干初始状态

(1)实例:电话系统状态转换图

5、数据字典

数据字典是对系统使用的所有数据元素定义的集合,半形式化(介于事实和形式化直接)方法表达。

数据字典对四类元素定义:数据流、数据元素、数据存储、处理

(1) 数据流的描述

数据流名:

说明:简要介绍作用即它产生的原因和结果。

数据流来源:即该数据流来自何方。

数据流去向:去向何处。

数据流组成:数据结构。

每个数据量流通量:数据量、流通量。

(2)数据元素的描述

数据元素名:

类型:数字(离散值、连续值),文字(编码类型)

长度:

取值范围:

相关的数据元素及数据结构:

(3)数据存储的描述

数据存储名:

简述:存放的是什么数据。

输入数据:

输出数据:

数据文件组成:数据结构。

存储方式:顺序,直接,关键码。

(4)处理的描述

处理名:

处理编号:反映该处理的层次

简要描述:加工逻辑及功能简述

输入数据流:

输出数据流:

加工逻辑: 简述加工程序、加工顺序

(5)定义符号

定义数据方法:对数据自顶向下分解。

由数据元素组成数据的方式:①顺序: 以确定次序连接两个或多个数据元素;②选择: 从两个或多个可能元素中选一个;③重复: 把指定数据元素重复零次或多次; ④可选: 一个数据元素可有可无的。

例如:航班信息文件={航空公司名称+航班号+起点+终点+日期+起飞时间+降落时间}

航空公司名称=2{字母}8
航班号=3{十进制数字}3
字母=”a”..”z”
十进制数字=”0”..”9”
起点=终点=1{汉字}5
起飞时间=降落时间=时+分

时=”00”..”23”
分=”00”..”59”
日期=年+月+日
年=[2010|2011|2012|2013]
月=”01”..”12“
日=”01”..”31”

-----------------------本文结束 感谢阅读-----------------------
坚持原创技术分享,您的支持将鼓励我继续创作!恰饭^.^~