⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 数据流图(dfd)专题讲解[1]_爱我中华,从我做起.htm

📁 数据库系统工程师的考点 难点 很值得一看的有
💻 HTM
📖 第 1 页 / 共 3 页
字号:
					cmt.focus();
			}

			G("cancleReLink").style.display="none";
			cmtForm.btn_ok.value="发表评论";
		}

		function gotoreply()
		{//to checking whether reply cmt
			if( window.location.hash.indexOf("&re=1")<0) return;
			var cmtID=window.location.hash.split("&")[0].replace("#","");
			var cmtlinks=document.getElementsByTagName("a");
			for(var i=0,n=cmtlinks.length;i<n;i++)
			{
				if(cmtlinks[i].name==cmtID){ var rename=cmtlinks[i].getAttribute("rename");  repid=cmtlinks[i].getAttribute("repid"); break;}
			}
			if(typeof(rename)!="undefined"){
				cmtreply(rename, repid);
			}
		}

//-->
</SCRIPT>

<SCRIPT type=text/javascript>
    /*<![CDATA[*/

window.onerror=function(){return true;}

var RelatedDocData = null, GetAndEval = false;
(function(){
	var xhr = BdAjax.getXHR();
	if(xhr == null){
		RelatedDocData = -1;
		return;
	}

	xhr.open("GET", "/sys/search?type=8&word=%CA%FD%BE%DD%C1%F7%CD%BC%28DFD%29%D7%A8%CC%E2%BD%B2%BD%E2%5B1%5D&item=e859c8ee667b732e2df5341d&t=" + new Date().getTime(), true);
	xhr.onreadystatechange = function(){
		if(xhr.readyState == 4){
			if(xhr.status == 0 || xhr.status == 200){
				if(GetAndEval){
					eval(xhr.responseText);
				}else{
					RelatedDocData = xhr.responseText;
				}
			}
		}
	}
	xhr.send(null);
})();
/*]]>*/
</SCRIPT>

<META content="MSHTML 6.00.2900.5512" name=GENERATOR></HEAD>
<BODY onload=formatonlinpic();>
<CENTER>
<SCRIPT type=text/javascript>/*<![CDATA[*/if(top.location != self.location){	top.location = self.location;}var myref = encodeURIComponent("http://hi.baidu.com/jackwilling/blog/item/e859c8ee667b732e2df5341d%2Ehtml");/*]]>*/</SCRIPT>
<LINK href="数据流图(DFD)专题讲解[1]_爱我中华,从我做起.files/mods.css" type=text/css 
rel=stylesheet><LINK 
href="数据流图(DFD)专题讲解[1]_爱我中华,从我做起.files/b9590a4e2461e909b3de0523.css" 
type=text/css rel=stylesheet><LINK 
href="数据流图(DFD)专题讲解[1]_爱我中华,从我做起.files/space.css" type=text/css rel=stylesheet>
<STYLE type=text/css>#usrbar {
	PADDING-RIGHT: 10px; PADDING-LEFT: 0px; FONT-SIZE: 12px; BACKGROUND: #ffffff; FILTER: alpha(opacity=65); PADDING-BOTTOM: 3px; WIDTH: 100%; COLOR: #000000; LINE-HEIGHT: 19px; PADDING-TOP: 4px; FONT-FAMILY: Arial; LETTER-SPACING: normal; HEIGHT: 19px; TEXT-ALIGN: right; moz-opacity: 0.5
}
#usrbar A {
	COLOR: #0000cc; TEXT-DECORATION: underline
}
#usrbar A:link {
	COLOR: #0000cc; TEXT-DECORATION: underline
}
#usrbar A:visited {
	COLOR: #0000cc; TEXT-DECORATION: underline
}
#ft {
	CLEAR: both; FONT-SIZE: 12px; COLOR: #666666; LINE-HEIGHT: 20px; FONT-FAMILY: Arial; HEIGHT: 20px; TEXT-ALIGN: center
}
#ft A {
	COLOR: #7777cc; TEXT-DECORATION: underline
}
#ft A:link {
	COLOR: #7777cc; TEXT-DECORATION: underline
}
#ft A:visited {
	COLOR: #7777cc; TEXT-DECORATION: underline
}
#usrbar {
	LETTER-SPACING: normal
}
#usrbar A {
	LETTER-SPACING: normal
}
#usrbar A:link {
	LETTER-SPACING: normal
}
#usrbar A:visited {
	LETTER-SPACING: normal
}
#ft {
	LETTER-SPACING: normal
}
#ft A {
	LETTER-SPACING: normal
}
#ft A:link {
	LETTER-SPACING: normal
}
#ft A:visited {
	LETTER-SPACING: normal
}
</STYLE>

<DIV id=usrbar><NOBR><A id=hi_index href="http://hi.baidu.com/" 
target=_blank>百度空间</A>&nbsp;|&nbsp;<A href="http://www.baidu.com/" 
target=_blank>百度首页</A>&nbsp;
<SCRIPT type=text/javascript>		document.write('| <a href="https://passport.baidu.com/?login&tpl=sp&tpl_reg=sp&u=http://hi.baidu.com' + encodeURIComponent('/jackwilling/blog/item/e859c8ee667b732e2df5341d%2Ehtml') + '">登录</a>');		</SCRIPT>
 </NOBR></DIV>
<DIV id=newUserTip 
style="Z-INDEX: 30000; RIGHT: 0px; FLOAT: right; WIDTH: 225px; POSITION: absolute; TOP: 26px; HEIGHT: 130px; TEXT-ALIGN: right"><A 
id=newUserTipShadow 
style="DISPLAY: block; FONT-SIZE: 14px; Z-INDEX: 30001; RIGHT: 14px; BACKGROUND: none transparent scroll repeat 0% 0%; OVERFLOW: hidden; WIDTH: 55px; COLOR: #4242f9! important; POSITION: absolute; TOP: 108px; HEIGHT: 14px; TEXT-DECORATION: none! important" 
onclick=newUserRegLog() 
href="http://passport.baidu.com/?reg&amp;tpl=sp&amp;return_method=get&amp;skip_ok=1&amp;u=http://hi.baidu.com/sys/reg/" 
target=_blank>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</A> 
<EMBED id=newUserTipSwf style="WIDTH: 225px; HEIGHT: 130px" 
src=http://hi.baidu.com/ui/flash/userReg/guide.swf 
type=application/x-shockwave-flash wmode="transparent" 
allowScriptAcess="always"> </DIV>
<SCRIPT language=javascript>	<!--		function newUserTipShow(f)		{			if(f=="0"){//close				G("newUserTipSwf").style.width="40px";				G("newUserTip").style.width="40px";				G("newUserTipShadow").style.display="none";			}else{//show				G("newUserTip").style.width="225px";				G("newUserTipSwf").style.width="225px";				G("newUserTipShadow").style.display="block";			}		}		function newUserRegLog(){			var now=new Date();			now.setTime(now.getTime()+5*60*1000);			document.cookie="BDSP_REGFLAG=1;expires="+now.toGMTString()+";path=/";			new Image().src="http://hi.baidu.com/sys/statlog/1.gif?m=blog_newer_pro2_click&v=/jackwilling&t="+Math.random();		}	//-->	</SCRIPT>

<SCRIPT type=text/javascript>function set_cookie_4_bdtip(index/* start from one */, value){	var bdtip = document.cookie.match(/(^| )BDTIP=([^;]*)(;|$)/);	if(!bdtip){		bdtip=new Array(index);		for(var i=0,n=bdtip.length;i<n;i++)		{			if(bdtip[i]=="" || bdtip[i]==null)  bdtip[i]=0;			if(i == index - 1){				bdtip[i] = value;			}		}	}else{	bdtip = bdtip[2].split('-');	if(index > bdtip.length)  bdtip.length= index;	for(var i = 0, j = bdtip.length; i < j; i ++){		if(bdtip[i]=="" || bdtip[i]==null) bdtip[i]=0;		if(i == index - 1){			bdtip[i] = value;		}	}	}	bdtip = bdtip.join('-');	document.cookie = "BDTIP=" + bdtip+ ";expires=Wed, 28-Nov-37 01:45:46 GMT;path=/;domain=.baidu.com";}</SCRIPT>

<DIV id=main align=left><!--[if IE]>
<SCRIPT>
var objmain = document.getElementById("main");
function updatesize(){ var bodyw = window.document.body.offsetWidth; if(bodyw <= 790) objmain.style.width="772px"; else if(bodyw >= 1016) objmain.style.width="996px"; else objmain.style.width="100%"; }
updatesize(); window.onresize = updatesize;
</SCRIPT>
<![endif]-->
<DIV id=header>
<DIV class=lc>
<DIV class=rc></DIV></DIV>
<DIV class=tit><A class=titlink 
title="jackwilling的空间 http://hi.baidu.com/jackwilling" 
href="http://hi.baidu.com/jackwilling">爱我中华,从我做起</A></DIV>
<DIV class=desc>我们中国的钓鱼岛,我们的南沙,我们的台湾</DIV>
<DIV id=tabline></DIV>
<DIV id=tab><A href="http://hi.baidu.com/jackwilling">主页</A><A class=on 
href="http://hi.baidu.com/jackwilling/blog">博客</A><A 
href="http://hi.baidu.com/jackwilling/album">相册</A><SPAN>|</SPAN><A 
href="http://hi.baidu.com/jackwilling/profile">个人档案</A> <SPAN>|</SPAN><A 
href="http://hi.baidu.com/jackwilling/friends">好友</A> </DIV></DIV>
<DIV class=stage>
<DIV class=stagepad>
<DIV style="WIDTH: 100%">
<TABLE class=modth cellSpacing=0 cellPadding=0 width="100%" border=0>
  <TBODY>
  <TR>
    <TD class=modtl width=7>&nbsp;</TD>
    <TD class=modtc noWrap>
      <DIV class=modhead><SPAN class=modtit>查看文章</SPAN></DIV></TD>
    <TD class=modtc noWrap align=right></TD>
    <TD class=modtr width=7>&nbsp;</TD></TR></TBODY></TABLE>
<DIV class=modbox id=m_blog>
<DIV class=tit>数据流图(DFD)专题讲解[1]</DIV>
<DIV class=date>2008-12-02 17:33</DIV>
<TABLE style="TABLE-LAYOUT: fixed">
  <TBODY>
  <TR>
    <TD>
      <DIV class=cnt id=blog_text><FONT 
      color=#bc2931>http://www.educity.cn</FONT> 作者:<A 
      href="http://www.educity.cn/incSearch/search_author.asp?in=%CC%C6+%C7%BF" 
      target=_blank><FONT color=#bc2931>唐 
      强</FONT></A> 来源:希赛IT教育研发中心 2008年5月23日<A 
      href="http://www.educity.cn/incsearch/search.asp?key=%C8%ED%BC%FE%C9%E8%BC%C6%CA%A6" 
      target=_blank><BR>软件设计师</A>考试的下午题的第一道题,<A 
      href="http://www.educity.cn/incsearch/search.asp?key=%CA%FD%BE%DD%BF%E2%CF%B5%CD%B3%B9%A4%B3%CC%CA%A6" 
      target=_blank>数据库系统工程师</A>考试的下午题的第一道题都是数据流图题,而能够将这道题全部做对的考生是非常少的。根据历年的<A 
      href="http://www.educity.cn/incsearch/search.asp?key=%B8%A8%B5%BC" 
      target=_blank>辅导</A>和阅卷经验,发现很多考生不是因为这方面的解题能力不够,而是缺乏解这种题的方法与技巧。本文介绍一些解这种类型题的方法和技巧,希望起来抛砖引玉的效果。 

      <P>  <STRONG>一.解题当中考生表现出的特点</STRONG></P>
      <P>  由于这是下午考试的第一道题,所以很多考生从考前的紧张氛围当中逐渐平静下来开始答题,头脑还比较清醒,阅读起来比较流畅,速度还可以,自我感觉不错。可偏偏这道题有很多人不能全取15分,纠其原因有以下一些特点:</P>
      <P>  1.拿卷就做,不全面了解试卷,做到心中有数。这样会导致在解题过程当中缺少一种整体概念,不能明确自己在哪些题上必需拿分(多花时间),哪些题上自己拿不了分(少花时间)。这样,在解题时目标就会明确很多。</P>
      <P>  2.速度快,读一遍题就开始动手做。</P>
      <P>  3.速度慢,用手指逐个字的去看,心想看一遍就能做出题来。</P>
      <P>  4.在阅读题目时,不打记,不前后联系起来思考。</P>
      <P>  5.边做边怀疑边修改,浪费时间。</P>
      <P>  6.缺少的数据流找不准,可去掉的文件找不出来。</P>
      <P>  7.由于缺少项目开发经验,对一些事务分析不知如何去思考。</P>
      <P>  8.盲目乐观,却忽略了答题格式,丢了不应该丢的分。</P>
      <P>  <STRONG>二.解题的方法与技巧</STRONG></P>
      <P>  <STRONG>1.首先要懂得数据流图设计要略。</STRONG></P>
      <P>  有时为了增加数据流图的清晰性,防止数据流的箭头线太长,减少交叉绘制数据流条数,一般在一张图上可以重复同名的数据源点、终点与数据<A 
      href="http://www.educity.cn/incsearch/search.asp?key=%B4%E6%B4%A2" 
      target=_blank>存储</A>文件。如某个外部实体既是数据源点又是数据汇点,可以在数据流图的不同的地方重复绘制。在绘制时应该注意以下要点:</P>
      <P>  (1)自外向内,自顶向下,逐层细化,完善求精。</P>
      <P>  (2)保持父图与子图的平衡。</P>
      <P>  为了表达较为复杂问题的数据处理过程,用一个数据流图往往不够。一般按问题的层次结构进行逐步分解,并以分层的数据流图反映这种结构关系。根据层次关系一般将数据流图分为顶层数据流图、中间数据流图和底层数据流图,除顶层图外,其余分层数据流图从0开始编号。对任何一层数据流图来说,称它的上层数据流图为父图,在它的下一层的数据流图为子图。</P>
      <P>  顶层数据流图只含有一个加工,表示整个系统;输入数据流和输出数据流为系统的输入数据和输出数据,表明了系统的范围,以及与外部环境的数据<A 
      href="http://www.educity.cn/incsearch/search.asp?key=%BD%BB%BB%BB" 
      target=_blank>交换</A>关系。</P>
      <P>  底层数据流图是指其加工不能再分解的数据流图,其加工称为“原子加工”。</P>
      <P>  中间数据流图是对父层数据流图中某个加工进行细化,而它的某个加工也可以再次细化,形成子图。中间层次的多少,一般视系统的复杂程度而定。</P>
      <P>  任何一个数据流子图必须与它上一层父图的某个加工对应,二者的输入数据流和输出数据流必须保持一致,此即父图与子图的平衡。父图与子图的平衡是数据流图中的重要性质,保证了数据流图的一致性,便于分析人员阅读和理解。</P>
      <P>  在父图与子图平衡中,数据流的数目和名称可以完全相同;也可以在数目上不相等,但是可以借助数据字典中数据流描述,确定父图中的数据流是由子图中几个数据流合并而成的,也即子图是对父图中加工和数据流同时进行分解,因此也属于父图与子图的平衡,如图1所示。</P>
      <P align=center><IMG 
      src="数据流图(DFD)专题讲解[1]_爱我中华,从我做起.files/20085236913.gif"></P>
      <P align=center>  <STRONG>图1 父图与子图的平衡</STRONG></P>
      <P>  (3)保持数据守恒。也就是说,一个加工所有输出数据流中的数据必须能从该加工的输入数据流中直接获得,或者是通过该加工能产生的数据。每个加工必须有输入数据流和输出数据流,反映此加工的数据来源和加工变换结果。一个加工的输出数据流只由它的输入数据流确定。数据流必须经过加工,即必须进入加工或从加工中流出。</P>
      <P>  (4)加工细节隐蔽。根据抽象原则,在画父图时,只需画出加工和加工之间的关系,而不必画出各个加工内部的细节。当某层数据流图中的数据存储不是父图中相应加工的外部接口,而只是本图中某些加工之间的数据接口时,那么这些数据存储为局部数据存储。</P>
      <P>  为了强调局部数据存储的隐蔽性,一般情况下,局部数据存储只有作为某些加工的数据接口或某个特定加工的输入和输出时,才画出来。即按照自顶向下的分析方法,某数据存储首次出现时只与一个加工有关,那么这个数据存储应该作为与之关联加工的局部数据存储,在该层数据流子图中不必画出,而在该加工的子图中画出,除非该加工为原子加工。</P>
      <P>  (5)简化加工间的关系。在数据流图中,加工间的数据流越少,各个加工就越相对独立,所以应尽量减少加工间输入输出数据流的数目。</P>
      <P>  (6)均匀分解。应该使一个数据流中的各个加工分解层次大致相同。</P>
      <P>  (7)适当地为数据流、加工、文件、源/宿命名,名字应反映该成分的实际意义,避免空洞的名字。</P>
      <P>  (8)忽略枝节。应集中精力于主要的数据流,而暂不考虑一些例外情况、出错处理等枝节性的问题。</P>
      <P>  (9)表现的是数据流而不是控制流。数据流图与传统的程序流程图不同,数据流图是从数据的角度来描述一个系统的,而流程图则是从对数据加工的角度来描述系统的。数据流图中的箭头是数据流,而流程图中的箭头则是控制流,它表达的是程序执行的次序。数据流图适合于宏观地分析一个组织的业务概况,而程序流程图只适合于描述系统中某个加工的执行细节。</P>
      <P>  每个加工必须既有输入数据流,又有输出数据流;在整套数据流图中,每个文件必须既有读文件的数据流又有写文件的数据流,但在某一张子图中可能只有读、没有写,或者只有写、没有读。</P>
      <P>  <STRONG>2.解题的方法。</STRONG></P>
      <P>  (1) 数据平衡原则。</P>
      <P>  数据平衡原则分为两个方面:</P>
      <P>  ① 在分层数据流图中,父图和子图要平衡,也就是说,父图中某加工的输入输出数据流必须与它的子图的输入输出数据流在数量和名字上相同。</P>
      <P>  ②数据平衡的另一个方面是说:每个加工必须即有输入数据流又有输出数据流,而且一个加工所有输出数据流中的数据必须能从该加工的输入数据流中直接获得,或者是通过该加工能产生的数据。</P>
      <P>  (2) 要特别注意的几个细节问题。</P>
      <P>  ① 除了流向数据存储(文件)或从数据存储流出的数据流不必命名外,其它每个数据流都必须有一个合适的名字。</P>
      <P>  ②流向文件的数据流,表示写入数据,流出文件的数据流表示读文件。在整套数据流图中,每个文件必须既有读的数据流又有写的数据流,但在某一张子图中可能只有读没有写,或者只有写没有读。</P>
      <P>  ③在逐步精化的过程中,若一个文件首次出现时只与一个加工有关,既该文件是个加工的内部文件,那么该文件在当层图中不必画出,可在该加工的细化图中画出。</P>
      <P>  <STRONG>3.解题的技巧。</STRONG></P>
      <P>  (1)阅读题干的技巧。快速的阅读第一遍,基本了解题目所涉及到的知识点或者事务,打记实体对象和存储文件,甚至可以将数据流也标记一下;这一步重点落在问题上,一般问题不难,但一定要看清问题。带着问题来看第二遍,边看边解决。</P>
      <P>  (2)要有整体的概念,不能因一个点符合就断定是它,尤其是数据对象。</P>
      <P>  (3)注意解题的速度,一般在20分钟以内为最好。</P>
      <P>  (4)解题的过程中,每一条数据流都能够在[说明]中找到相应的语句。</P>
      <P>  (5)数据流名称要写对,每错一个字扣0.5分;流向也要写对。</P>
      <P>  (6)做好以后,复查一遍;不要边做边怀疑、边修改,那样会担误时间,且错误更多。</P>
      <P>  <STRONG>三.例题讲解</STRONG></P>
      <P>  例1:【软件设计师(数据库系统工程师)2007年11月真题】</P>
      <P>  试题一(共15分)</P>
      <P>  阅读以下说明和图,回答问题1至问题4,将解答填入答题纸的对应栏内。</P>
      <P>  【说明】</P>
      <P>  某高校欲开发一个成绩管理系统,记录并管理所有选修课程的学生的平时成绩和考试成绩,其主要功能描述如下:</P>
      <P>  1. 
      每门课程都有3到6个单元构成,每个单元结束后会进行一次测试,其成绩作为这门课程的平时成绩。课程结束后进行期末考试,其成绩作为这门课程的考试成绩。</P>
      <P>  2. 学生的平时成绩和考试成绩均由每门课程的主讲教师上传给成绩管理系统。</P>
      <P>  3. 
      在记录学生成绩之前,系统需要验证这些成绩是否有效。首先,根据学生信息文件来确认该学生是否选修这门课程,若没有,那么这些成绩是无效的;如果他的确选修了这门课程,再根据课程信息文件和课程单元信息文件来验证平时成绩是否与这门课程所包含的单元相对应,如果是,那么这些成绩是有效的,否则无效。</P>
      <P>  4. 
      对于有效成绩,系统将其保存在课程成绩文件中。对于无效成绩,系统会单独将其保存在无效成绩文件中,并将详细情况提交给教务处。在教务处没有给出具体处理意见之前,系统不会处理这些成绩。</P>
      <P>  5. 
      若一门课程的所有有效的平时成绩和考试成绩都已经被系统记录,系统会发送课程完成通知给教务处,告知该门课程的成绩已经齐全。教务处根据需要,请求系统生成相应的成绩列表,用来提交考试委员会审查。</P>
      <P>  6. 在生成成绩列表之前,系统会生成一份成绩报告给主讲教师,以便核对是否存在错误。主讲教师须将核对之后的成绩报告返还系统。</P>
      <P>  7. 
      根据主讲教师核对后的成绩报告,系统生成相应的成绩列表,递交考试委员会进行审查。考试委员会在审查之后,上交一份成绩审查结果给系统。对于所有通过审查的成绩,系统将会生成最终的成绩单,并通知每个选课学生。</P>
      <P>  现采用结构化方法对这个系统进行分析与设计,得到如图1-1所示的顶层数据流图和图1-2所示的0层数据流图。</P>
      <P align=center><IMG 
      src="数据流图(DFD)专题讲解[1]_爱我中华,从我做起.files/20085237765.gif"></P>
      <P align=center>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 图1-1 
      顶层数据流图</P>
      <P 
      align=left>From:http://www.educity.cn/rk/dbms/200805231637351347.htm</P></DIV></TD></TR></TBODY></TABLE><BR>
<DIV class=opt><A title=查看该分类中所有文章 
href="http://hi.baidu.com/jackwilling/blog/category/&Egrave;í&frac14;&thorn;&sup1;¤&sup3;&Igrave;">类别:软件工程</A> | <A 
title=将此文章添加到百度搜藏 onclick="return addToFavor();" 
href="http://cang.baidu.com/do/add" target=_blank>添加到搜藏</A> | 浏览(<SPAN 
id=result></SPAN>) | <A 
href="http://hi.baidu.com/jackwilling/blog/item/e859c8ee667b732e2df5341d.html#send">评论</A>&nbsp;(0)
<SCRIPT language=javascript>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -