软件工程文档设计中的基本要求:关于每个文档究竟该写什么

首先看软件需求分析

需求分析阶段的任务分为四个阶段:需求获取,需求分析,需求定义,需求验证

需求获取这部分比较模糊,应该也是比较杂,比较灵活的一部分,先来个大概的功能叙述,然后将需求一项一项地列出来。

需求分析这部分要求对前面的需求进行规范

1,对每项需求给出清楚的描述

2,要求描述没有歧义

3,各项需求之间不能存在矛盾,软件需求和实际需求不能矛盾

4,对需求实现的可行性进行分析

  4.1 技术可行性:在现有条件和环境技术下考虑

  4.2经济可能性:小项目一般不考虑这个

  4.3社会可能性:考虑知识产权的侵害问题

5,获取的需求是否全面周到,从已知的需求是否隐含一些必须有的其他需求,以及深入探讨系统功能所产生的可能的对功能需求的补充。

需求定义,要求系统全面地写出软件需求规格说明

需求验证,要经过客户对需求规格说明的评审

(需求规格说明还没有搞清楚,在后面有时间补充

结构化的分析方法包括了以下几种元素

数据对象描述

实体-关系图

加工规格说明

数据流图

控制规格说明

状态-迁移图

数据字典

我们在结构化设计阶段的任务是写出概要设计和详细设计

概要设计包括:

      体系结构设计:

            数据流图相关

      接口设计:

            数据流图

      数据设计:

            数据对象描述

            数据字典

            实体-关系图

详细设计包括:

      过程设计:

            加工规格说明

            控制规格说明

            状态-迁移图

我们来解释一下上面结构化分析方法里出现的一些项目

功能建模

    数据流图有四种基本的图形符号

    椭圆或圆角矩形: 表示加工,对输入数据进行变换以产生输出数据,其中要注明加工的名字

    直角矩形或长方体:外部实体。即数据输入源,或数据输出汇点。其中要注明数据源或数据汇点的名字

    平行线或右面竖边缺的矩形:数据存储。要用名字或名词性短语为数据存储命名。

    一个箭头:数据流。描述被加工数据及传递方向。箭头旁边要注明数据流的名字,可用名词或名词性短语命名。

数据源或数据汇点表示图中要处理的数据的输入来源处理结果要送往何处,数据源或数据汇点不是目标系统的一部分,只是目标系统的外围环境

中的实体部分,因此成为外部实体。实际问题中它可能是组织,部门,人,相关的软件系统或硬件设备。

数据流表示数据沿箭头方向的流动。数据流可表示这些加工之间被传送的有名数据,也可表示在数据存储和加工之间传送的未命名数据,这些数据流虽然没有命名,但因其所连接的是有名加工和有名数据存储,所以其含义也是清楚的。

加工是对数据对象的处理或变换,加工的名字是动词短语,以表明所完成的加工。一个加工可能需要多个数据流,也可能产生多个数据流

数据存储在数据流图中起保存数据的作用,可以是数据库文件或任何形式的数据组织。从数据存储中引出的数据流可理解为从数据存储中读取数据或得到查询结果,指向数据存储的数据流可理解为向数据存储中写入数据

 

环境图也称为顶层数据流图(或0层数据流图),它仅包括一个数据处理过程(加工),也就是要开发的目标系统,(就是目标系统,输入输出,实体部分)。

 

数据流图的分层是为了解决图上过多的加工引起的不直观,如果我们的加工不多,那么分层也没有必要了。        

 

数据建模

区分数据对象和数据对象的实例

1.数据对象

数据对象是目标系统所需要的复合信息的表示。所谓复合信息是具有若干不同属性的信息。

在ER图中用矩形表示数据对象。与面向对象方法不同的是,此处数据对象只封装了数据,没有包含作用于这些数据上的操作。

 

2.属性

属性定义数据对象的特征。在ER图中用椭圆或圆角矩形来表示属性,并用无向边将属性与相关的数据对象连接起来。

 

3.关系

不同数据对象的实例之间是有关联联系的。在ER图上用无向边表示,在无向边上可以表明关系的名字,也可以不标名字。但在

无向边的两边应标识出关联实例的数量,也称为关联的多重性。从关联数量的角度,可以将实例的关联分为三种:

一对一    系和系主任  大学和大学校长

一对多   学生班和班干部  

多对多   学生和课程    一个学生可以选多门课程  一门课程可以被多名学生选

一条无向边的两端该用什么记号,应当分别看一端的实例到另一端的实例的数量对应关系

 

行为建模

 

在需求分析过程中应当建立起软件的行为模型。状态转换图通过描绘系统的状态及引起系统状态转换的事件来表示系统的行为。

1.状态

状态是任何可以被观察到的系统行为模式,一个状态代表系统的一种行为模式。状态规定了系统对事件的响应方式。系统对事件的响应,

既可以是做一个或一系列动作,也可以仅仅改变系统本身的状态,还可以是既改变状态又做动作

 

状态图中定义的状态可能有初态,终态,中间态。

初态用实心圆表示,终态用牛眼图表示,中间态用圆角矩形表示。

一张状态图中只能有一个初态,而终态可以有多个或没有。

 

中间态可能包含三个部分,第一部分为状态的名称,第二部分为状态变量的名字和值,第三部分是活动表。

二,三部分可选。

活动部分的语法如下:

事件名(参数表)/动作表达式

 

2.状态转换

状态图中两个状态之间带箭头的连线称为状态转换

状态的变迁通常是由事件触发的,在这种情况下应该在表示状态转换的箭头线上标出触发转换的事件表达式。

                     如果在箭头线上未标明事件,则表示在源状态的内部活动执行完之后自动触发转换。

 

3.事件

事件是某个特定时刻发生的事情,他是对系统从一个状态转换到另一个状态的外界事件的抽象。

事件表达式的语法如下:

事件说明[守卫条件]/动作表达式

事件说明的语法如下:

事件名(参数表)

 

守卫条件是一个布尔表达式。如果同时使用守卫条件和事件说明,则当且仅当事件发生且布尔表达式成立时,状态转换才发生。

如果只有守卫条件没有时间说明,则只要守卫条件为真,状态转换就发生。

 

动作表达式是一个过程表达式,当状态转换开始时执行该表达式

 

数据字典

数据字典以词条方式定义在数据模型、功能模型和行为模型中出现的数据对象及控制信息的特性,给出它们的准确定义,包括

数据流、加工、数据文件、数据元素、以及数据源点和数据汇点等。

数据字典成为把3种分析模型粘合在一起的粘合剂,是分析模型的核心。

数据字典精确地,严格地定义了每一个与系统相关的数据元素,并以字典顺序将他们组织起来,

使得用户和分析员对所有的输入、输出、存储成分和中间计算有共同的理解。

 

1.词条描述

对于在数据流图中每个被命名的图形元素加以定义,其内容包括图形元素的名字,图形元素的别名或编号,

图形元素类别(如加工,数据流,数据文件,数据元素,数据源点或数据汇点)

描述,定义,位置等。

1.1 数据流词条

  数据流是数据结构在系统内传播的路径。一个数据流词条应有以下几项内容:

  数据流名:要求与数据流图中该图形元素的名字一致

  简述:简要介绍它产生的结果与原因。

  组成:数据流的数据结构

  来源:数据流来自哪个加工或作为哪个数据源的外部实体

  去向:

  流通量:单位时间数据的流通量

  峰值:;流通量的极端值

1.2数据元素词条

  数据流图中每一个数据结构都是由数据元素构成的,数据元素是数据处理中最小的不可分割的单位,他直接反映事物的某一特征。

组成数据结构的这些数据元素必须在数据字典中给出描述。其描述需要以下信息。

  类型:数据元素分为数字型与文字型。

      数据型又分为离散值和连续值

      文字类型用编码类型和长度区分

  取值范围:

      离散值是取值或枚举,或是介于上下界的一组数

      连续值一般是有取值范围的实数集

      对于文字型,文字的取值需要加以定义

1.3数据存储文件词条

  数据存储文件是数据保存的地方。

 文件名:要求与数据流图中该图形元素的名字一致

 简述:简要介绍存放的是什么数据

 组成:文件的数据结构

   输入:从哪些加工获取数据

 输出:由哪些加工使用数据

  存取方式:分为,顺序,直接,关键码等不同存取方式

  存取频率:单位时间的存取次数

1.4加工词条

  加工可以使用诸如判定表、判定树和结构化语言等形式表达。

加工名:要求与数据流图中该图形元素的名字一致

编号:用以反映该加工的层次和“亲子”关系

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

输入:加工的输入数据流

输出:加工的输出数据流

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

 

1.5数据源点及数据汇点词条

数据源点和汇点应当比较少

名称:要求与数据流图中该外部实体的名字一致

简述:简要描述是什么外部实体

有关数据流:该实体与系统交互时涉及哪些数据流。

数目:该实体与系统交互的次数。

 

2.数据结构描述

2.1定义式

2.2Warnier图

 

3.2加工规格说明

在对数据流图的分解中,位于层次树最底层的加工,也称为基本加工或子加工,对于每一个基本加工都需要进一步说明

这称为加工规格说明

 

在需求分析阶段,可以直接写出基本加工的程序逻辑,即其处理的规则。如果每一个基本加工的详细逻辑功能都已写出

再自底向上综合,就能完成全部加工。

 

在编写基本加工的规格说明时,主要目的是表达“做什么”,而不是“怎样做”。因此它应满足如下要求

对数据流图的每一个基本加工,必须有一个加工规格说明;

加工规格说明必须描述基本加工如何把输入数据流变换成输出数据流,即加工规则

加工规格说明必须描述实现加工的策略而不是实现加工的细节

加工规格说明中包含的信息应是充足的、完备的、有用的、没有重复的多余信息。

 

使用伪代码来描述加工规格说明的工作应该推迟到详细设计阶段进行。

 

3.2.1

  决策表

3.2.2

  决策树

 

软件需求规格说明(GB/T 8567-2006《计算机软件文档编制规范》)

1.软件需求规格说明

一些项目:

1.引言

  软件标识号,标题,版本号

  ...

3.需求

  软件配置项的运行状态和运行方式

  需求概述

    目标

    软件开发意图,目标和范围

    主要功能,处理流程,数据流程

    外部接口和数据流的高层次说明

    运行环境

    用户类型和特点

    关键点

  需求详细说明

    软件功能总体结构/对象功能

    软件子系统功能/对象结构

    (结构图、流程图、对象图)

  软件配置项的外部接口需求

    用户接口

    硬件接口

    软件接口

    通信接口需求

  每一接口的需求

    接口优先级

    接口类型

    接口传送单个数据元素的特性

    接口传送数据元素集合的特性

    接口使用通信方法的特性

    接口使用协议的特性

    接口实体的物理兼容性

   计算机资源需求

    硬件需求

    软件需求

    通信需求

  故障处理

    说明属于软件系统的问题

    发生错误时的错误信息

    发生错误时可能采取的补救措施

2.数据需求说明

  描述了再整个开发过程中所需处理的数据,以及采集数据的要求等。

 静态数据

 动态输入数据

 动态输出数据

 内部生成数据

 数据约定(容量,文件,记录和数据元素个数的最大值)

 数据的采集

    要求和范围

    输入数据的来源

    输入数据所用的媒体和硬设备

    输出数据的接受者

    输出数据的形式和硬设备

    数据值的范围

    量纲

    更新和处理的频度

 预处理

 影响

 

正式需求评审所关心的一些因素

 

1.功能:是否清楚、明确地描述了所有的功能

2.性能:是否精确描述了所有性能需求和可容忍的性能降低程度

3.接口:是否清楚地定义了所有的外部接口和内部接口

4.数据:是否定义了系统所有的输入输出,合法性检查,异常数据结果的描述

5.硬件:内存需求和存储需求的极端值

6.软件:是否指定了需要的软件环境和硬件系统

7.通信:是否指定了目标网络和必需的网络协议

 

 

 

 

 

 

 

 

 

结构化设计

 模块结构及表示

1.模块

一个软件系统通常由很多模块组成,结构化程序设计中的函数和子程序都可称为模块,它是程序语句按逻辑关系建立起来的组合体。

模块用矩形框表示,并用模块的名字标记它。

模块可以按照在软件系统中的功能划分为四种类型

1.1传入模块

  传入模块的功能是去的数据或输入数据,经过某些处理,再将其传送给其他模块。

  它传送的数据流A叫做逻辑输入数据流,数据A可能来自外部,也可能来自系统的其他模块

1.2传出模块

  传出模块的功能是输出数据,在输出之前可能进行某些处理,数据可能输出到系统的外部,也可能

会输出到其他模块进行下一步处理,但最终的目标是输出到系统的外部

1.3变换模块

  变换模块也叫加工模块,他从上级调用模块取得数据,进行特定的处理转换成其他形式,再将加工结果返回给调用模块。

1.4协调模块

  协调模块一般本身不对数据进行加工,

2.模块结构

  2.1树状结构

·   2.2网状结构

3.结构图

  结构图是准确表达模块结构的图形表示工具。它作为软件设计文档的一部分,清楚地反映出软件模块之间的层次调用关系和联系。

它不仅严格地定义了各个模块的名字、功能和接口,而且还集中地反应了设计思想。

 

3.1模块的调用关系和接口

  在结构图中,两个模块之间用单向箭头联结。箭头从调用模块指向被调用模块,表示调用模块调用了被调用模块

  但其中隐含了一层意思,就是被调用模块执行完成之后,控制又返回了控制模块。

注意,有些结构图中模块间的调用关系将箭头简单地画为连线,这时只要调用与被调用模块的上下位置保持就是允许的。

 

3.2模块间的信息传递

  当一个模块调用另一个模块时,调用模块把数据或控制信息传送给被调用模块,以使被调用模块能够运行

而被调用模块在执行过程中又把它产生的数据或控制信息回送给调用模块。

  为了表示在模块之间传递的数据或控制信息,在联结模块的箭头旁边给出短箭头,并且用尾端有空心圆的短箭头表示数据信息,

  用尾端有实心圆的短箭头表示控制信息。

通常在短箭头附近应注有信息的名字。、

 

3.3两个辅助符号

  当模块A有条件地调用另外一个模块B时,在模块A的箭头尾部标一个菱形符号。

当一个模块A反复地调用模块C和模块D时,在调用箭头尾部则标以一个弧形符号。

这两个符号的条件通常无需注明

 

3.4结构图的形态特征

  模块间的连线:模块之间的调用箭头也可用没有箭头方向的直线表示

          在用直线表示时,用模块所处的位置表示他们之间的调用关系,位于上方的模块调用位于下方的模块。

  深度、宽度、模块的扇入扇出。

4数据结构及表示

  数据结构是数据的各个元素之间逻辑关系的一种表示

  数据结构设计应确定数据的组织、存取方式、相关程度以及信息的不同处理方法。

  标量是所有数据结构中最简单的一种。所谓标量项就是单个的数据元素,例如一个布尔量,一个整数、实数...。

  若将多个标量按某种先后顺序组织在一起时,就形成了线性结构。

  可以用链表或顺序向量(又称为一维数组)来存储线性结构的数据。

  把顺序向量可以扩展到n维向量空间。

组合上述基本数据结构可以构成其他数据结构。

 

 

体系结构设计

 

基于数据流方法的设计过程

1.复查并精化数据流图

2.确定数据流图中数据流的类型,典型的数据流类型有变换型数据流和事务型数据流,数据流类型决定了映射方法。

3.导出初始的软件结构图

4.逐级分解

5.精化软件结构

6.导出接口描述和全局数据结构:对每一个模块,给出进出该模块的信息,即该模块的接口描述

posted @ 2018-01-02 15:29  狡啮之仰  阅读(1588)  评论(0编辑  收藏  举报