软件工程(数据字典)

数据字典

数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。

任何字典最主要的用这都是供人查阅对不了解的条目的解释,数据字典的作用也正是在软件分析和设计的过程中给人提供关于数据的描述信息。
数据流图和数据字典共同构成系统的逻辑模型,没有数据字典,数据流图就不严格,然而没有数据流图,数据字典也难于发挥作用。只有数据流图和对数据流图中每个元素的精确定义放在一起,才能共同构成系统的规格说明。

数据字典的内容

一般说来,数据字典应该由对下列4类元素的定义组成。
(1)数据流;
(2)数据流分量(即数据元素);
(3)数据存储;
(4)处理。

但是,对数据处理的定义用其他工具(如IPO图或PDL)描述更方便,因此本书中数据字典将主要由对数据的定义组成,这样做可以使数据字典的内容更单纯,形式更统.。除了数据定义之外,数据字典中还应该包含关于数据的一些其他信息。典型的情况是,在数据字典中记录数据元素的下列信息:一般信息(名字,别名,描述等),定义(数据类型,长度,结构等) ,使用特点(值的范围,使用频率,使用方式一一输人、输出 、本地,条件值等),控制信息(来源,用户,使用它的程序,改变权,使用权等)和分组信息(父结构,从属结构,物理位置一记录 、文件和数据库等)。
数据元素的别名就是该元素的其他等价的名字,出现别名主要有下述3个原因:
(1)对于同样的数据,不同的用户使用了不同的名字。
(2)一个分析员在不同时期对同一个数据使用了不同的名字。
(3)两个分析员分别分析同一个数据流时,使用了不同的名字。
虽然应该尽量减少出现别名,但是不可能完全消除别名。

定义数据的方法

定义绝大多数复杂事物的方法,都是用被定义的事物的成分的某种组合表示这个事物,这些组成成分又由更低层的成分的组合来定义。从这个意义上说,定义就是自顶向下的分解,所以数据字典中的定义就是对数据自顶向下的分解。那么,应该把数据分解到什么程度呢?一般说来, 当分解到不需要进一步定义,每个和工程有 关的人也都清楚其含义的元素时,这种分解过程就完成了。
由数据元素组成数据的方式只有下述3种基本类型:

(1)顺序即以确定次序连接两个或多个分 量。
(2)选择即从两个或多个可能的元素中选取一个。
(3)重复即把指定的分量重复零次或多次。

因此,可以使用上述3种关系算符定义数据字典中的任何条目。为了说明重复次数,重复算符通常和重复次数的上下限同时使用(当上下限相同时表示重复次数固定)。当重复的上下限分别为1和0时,可以用重复算符表示某个分量是可选的(可有可无的)。但是,“可选”是由数据元素组成数据时一种常见的方式,把它单独列为一种算符可以使数据字典更清晰一些。因此,增加了下述的第4种关系算符。(

(4)可选即一个分量是可有可无的(重复零次或一次)。

虽然可以使用自然语言描述由数据元素组成数据的关系,但是为了更加清晰简洁,建议采用下列符号:
=  意思是等价于(或定义为);
+  意思是和(即连接两个分量);
[ ]  意思是或(即从方括弧内列出的若干个分量中选择-个), 通常用“1”号隔开供选择的分量;
{ }  意思是重复(即重复花括弧内的分量);
( )  意思是可选(即圆括弧里的分量可有可无)。

常常使用上限和下限进一步注释表示重复的花括弧。 一种注释方法是在开括弧的左边用上角标和下角标分别表明重复的上限和下限;另一种注释方法是在开括弧左侧标明重复的下限,在闭括弧的右侧标明重复的上限。例如{A}和1{A}5含义相同。

下面举例说明上述定义数据的符号的使用方法:某程序设计语言规定,用户说明的标识符是长度不超过8个字符的字符串,其中第一个字符必须是字母字符,随后的字符既可以是字母字符也可以是数字字符。使用上面讲过的符号,可以像下面那样定义标识符:
标识符=字母字符+字母数字串
字母数字串=0{字母或数字}7
字母或数字=[字母字符|数字字符]

由于和项目有关的人都知道字母字符和数字字符的含义,因此,关于标识符的定义分解到这种程度就可以结束了。

数据字典的用途

数据字典最重要的用途是作为分析阶段的工具。在数据字典中建立的一组严密一致的定义很有助于改进分析员和用户之间的通信,因此将消除许多可能的误解。对数据的这一系列严密一致的定义也有助于改进在不同的开发人员或不同的开发小组之间的通信。如果要求所有开发人员都根据公共的数据字典描述数据和设计模块,则能避免许多麻烦的接口问题。

数据字典中包含的每个数据元素的控制信息是很有价值的。因为列出了使用一个给定的数据元素的所有程序(或模块),所以很容易估计改变一个数据将产生的影响,并且能对所有受影响的程序或模块作出相应的改变。最后,数据字典是开发数据库的第一步,而且是很有价值的一步。

数据字典的实现

目前,数据字典几乎总是作为CASE结构化分析与设计工具”的一-部分实现的。在开发大型软件系统的过程中,数据字典的规模和复杂程度迅速增加,人工维护数据字典几乎是不可能的。如果在开发小型软件系统时暂时没有数据字典处理程序,建议采用卡片形式书写数据字典,每张卡片上保存描述一一个数据的信息。 这样做会使更新和修改比较方便,而且能单独处理描述每个数据的信息。每张卡片上主要应该包含下述这样-些信息:名字、别名、描述、定义、位置。当开发过程进展到能够知道数据元素的控制信息和使用特点时,再把这些信息记录在卡片的背面。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/534329.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qt图形界面编程入门(Qt的历史、Qt安装资源链接、Qt Creator简介)

Qt的历史渊源 Qt是1991年由挪威的奇趣科技(Trolltech)公司开发的跨平台C图形用户界面(GUI)用程序开发框架,2008年,奇趣科技公司被诺基亚公可收购,Qt也因此成为诺基亚公司旗下的编程语言工具,曾称霸一时的Symbian手机操作系统就是…

Qt图形界面编程入门(创建一个简单的程序)

1,手工编码方式 利用手工编码方式建立“Hello Qt!”程序 第一步: 得到界面 2,无UI的向导方式 从图中,我们发现向导为窗口程序提供了3个基类,分别外QMainWindow、QWidget、QDialog,3个基类的区…

Linux基础(Vim编辑器与Shell命令脚本)

1、Vim文本编辑器 Vim文本编辑器有三种模式 命令模型:控制光标移动,可对文本进行复制、粘贴、删除和查找得等工作。 输入模式:正常的文本录入 末行模式:保存或退出文档,以及设置编辑环境。 在每次运行Vim编辑器时&…

Python二级笔记(16)

知识点: 1,进程调度仅负责对CPU进行分配 2,带链的队列是采用链式存储结构表示的队列。链式存储的存储单元是不连续的,因为是不连续的存储空间,所以指针将不会有规律的地连续变化。当front rear NULL时,…

Python二级笔记(17)

操作题: 1,接收用户输入的一个浮点数,输出这个浮点数的小数部分各字符的和,以10为宽度,靠右显示,,采用星号*填充。 代码: s input("请输入一个小数:") s s[::1] cs () for c in…

Python二级笔记(18,19合集操作篇)

操作题: 1,键盘输入正整数n,按要求把n输出到屏幕,格式要求:宽度为25个字符,等号字符()填充,右对齐,带千位分隔符。如果输入正整数超过25位,则按照真实长度输…

Qt图形界面编程入门(信号和槽通信机制)

信号和槽机制是Qt的核心机制,可以让编程人员将互不相关的对象绑定在一起,实现对象之间的通信。 声明了信号的对象,当其状态改变时,信号就由该对象发送出去,而且该对象只负责发送信号,它不知道另一端是谁在…

Python二级笔记(18,19合集知识点篇)

知识点: 1,软件测试的目的是发现程序中的错误。调试是作为成功测试的后过而出现的步骤,也就是,调试是在测试发现错误之后排除错误的过程。软件调试的任务是诊断和改成程序中的错误。 2,深度等于控制的层数 3&#x…

软件工程(成本/效益分析)

一般说来,人们投资于一项事业的目的是为了在将来得到更大的好处。开发一个软件系统也是一种投资,期望将来获得更大的经济效益,经济效益通常表现为减少运行费用或增加收入。但是,投资开发新系统往往需要冒一定的风险。系统的开发成…

Linux基础(用户身份和文件权限)

用户身份与能力 Linux是一个多用户、多任务的操作系统,具有很好的稳定性与安全性,在幕后保障Linux系统安全则是一系列复杂的配置工作。 Linux系统的管理员之所以是root,并不是因为它的名字叫root,而是因为该用户的身份号码即UID…

Centos 8 RHEL 8 破解root密码

https://blog.csdn.net/u014042047/article/details/107309890/

TensorFlow实验(1)

实验1-2 搭建深度学习开发环境 1)安装Anaconda 2)创建虚拟环境: 3)激活环境 4)安装tensorflow 5)安装jupyter notebook 安装完成之后,运行第一个程序“Hello,World” 要求:详细安装步骤&…

TensorFlow实验(2)

实验3-4 数据结构-张量 1)已知两个张量[1,3,5,7]和[2,4,4,8],编写一个模型,计算两个张量的加法,输出结果,并在tensorboard中显示 2)已知张量[1,2,3,4,5,6,7,8,9,10,11,12]有12个元素,利用tf.reshape()将其…

Linux基础(文件权限续篇)

文件的特殊权限 在复杂多变的生产环境中,单纯设置文件的rwx权限无法满足我们对安全和灵活性的需求,因此便有了SUID,SGID,SBIT的特殊权限位。这是一种对文件权限进行设置的特殊功能,可以与一般权限同时使用,以弥补一般权限不能实现…

Linux基础(存储结构和磁盘划分)

一切从“/”开始 在Linux系统中,目录、字符设备、块设备、套接字、打印机等都被抽象成了文件,一切皆为件 与windows操作系统不同,Linux系统内不存在C/D/E/F盘等,一切文件都是从根(/)目录开始的 Linux系统…

软件工程(需求分析)

需求分析 为了开发出真正满足用户需求的软件产品,首先必须知道用户的需求。对软件需求的深人理解是软件开发工作获得成功的前提条件,不论人们把设计和编码工作做得如何出色,不能真正满足用户需求的程序只会令用户失望.给开发者带来烦恼。 需求分析是软…

TensorFlow构建二维数据拟合模型(1)

知识图谱 TensorFlow运行机制 TensorFlow是基于计算图的深度学习编程模型 Tensor表示张量,其实质上是某种类型的多维数组 Flow表示基于数据流图的计算,实质上是张量在不同节点间的转化过程。 在TensorFlow中,计算图中的节点称为OP&…

Qt图形界面编程入门(标签与槽机制习题分享)

标签对象初始显示0&#xff0c;每次单击标签对象后&#xff0c;其显示内容就加1&#xff0c;依次变为1、2、3等。 #ifndef DIALOG_H #define DIALOG_H#include <QDialog> #include <QPushButton> //包含命令按钮类 #include "MyLabel.h"class Dialo…

js中执行到一个if就停止的代码_Node 中如何引入一个模块及其细节

在 node 环境中&#xff0c;有两个内置的全局变量无需引入即可直接使用&#xff0c;并且无处不见&#xff0c;它们构成了 nodejs 的模块体系: module 与 require。以下是一个简单的示例const fs require(fs)const add (x, y) > x ymodule.exports add虽然它们在平常使用…

二级MS Office公共基础知识错题本(1)

1&#xff0c;顺序程序具有顺序性、封闭性和可再现性的特点&#xff0c;不具备并发性 2&#xff0c;为了降低算法的空间复杂度&#xff0c;主要应减少输入数据所占的存储空间以及额外空间&#xff0c;通常采用压编存储技术。 3&#xff0c;树的总的结点数为树中所有结点的度数…