资源描述
,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,什么是GOTO语句?,在以前的程序设计课程中,老师说goto语句很重要,为什么在这里说不那么重要呢?,简单明确的概述什么是自顶向下、逐步求精的思想,它和自底向上的分析方法有什么不同?,结构化设计程序的方法在软件工程提出后产生,主要是提出取消“GOTO“语句的使用。我想问的是在结构化中的模块之间的接口不就算是“GOTO”语句吗?,问题一:书中104在讲到结构化程序设计(SP)中提到的“只要三种控制结构(顺序、选择、重复)就是能表达用一个入口和一个出口的流程图所能表达的任何程序逻辑”该做如何理解?,问题二:该如何来理解结构化方法的指导思想(自顶向下、逐步求精)与两个基本原则(抽象、分解)的联系?,什么叫软件重用的问题?,需求分析的任务(),获得当前系统的物理模型,107页:“建立当前系统的物理模型时,这一模型包含了许多具体因素”中“具体因素”指的是什么?,建立出来的物理模型具体是什么样的?,抽象出当前系统的逻辑模型,应该怎么样去抽取当前系统的逻辑模型?,物理模型反映了系统“怎么做”的具体实现,去掉物理模型中非本质的因素,抽取出本质的因素,这里的非本质和该如何理解?,由当前系统的逻辑模型导出目标系统的逻辑模型,107页:在建立目标系统的逻辑模型时,分析人员根据自己的经验,采用自顶向下的逐步求精的分析策略,除了自顶向下的分析方法外,是否还有其它的方法?,又如何去具体建立目标系统的逻辑模型?,(3)需求分析方法,结构化分析方法( SA),面向对象的分析方法,形式化分析方法,问题: 软件分析方法有哪些?各种方法的特点及其应用在哪些软件分析中更合理?,SA分析对软件工程项目开发有什么联系?,8.1 概述,在p104中,提到只要有三种控制程序,就能表达用一个入口和一个出口的流程图所能表达的任何程序逻辑,这句话没有能够理解。,104页:“1969年,Bohm和Jacopini首次证明了只要三种控制结构就能表达一个入口和一个出口的流程图所能表达的任何程序逻辑”中“一个入口和一个出口的流程图”。,结构化分析方法(SA),结构化分析方法是一种面向数据流的需求分析方法,适合于数据处理类型软件。,策略:自顶向下逐层分解,问题:“自顶向下逐层分解”是不是和程序设计一样分成模块来单独进行开发,结构化分析为什么是自顶向下逐层分解,那为什么不是自底向上的分解?,结构化分析方法(SA),工具:数据流图、数据字典、结构化英语(语言)、判定表和判定树等。,结构化方法最适用于哪种软件生存周期模型?,106页:“SA方法利用图形等半形式的描述方式表达需求”中“半形式的描述方式”。,P105:2、IDEF、SA分别各指什么?,、数据流图(DFD)(3.5),作用:用来描述数据处理过程的。它从数据传递和加工的角度,以图形的方式刻画数据流从输入到输出的传输变换过程。它表示了系统内部信息的流向,并表示了系统的逻辑功能(做什么)。,DFD的符号体系,DFD的画法,注意事项,DFD与其他流程图的区别,:“数据流图是SA方法中用于表示系统逻辑模型的一种工具,它以图形的方式描绘数据在系统中流动和处理的过程。由于它只反映系统给必须完成的逻辑功能,所以它是一种功能模型。”功能模型具体是指什么呢,该如何理解?(8.3, p107),数据流图的作用到底是什么?,如何快速简介的制作一张数据流图?,基本符号,扩充符号,DFD的符号体系,返回,(i)、DFD的基本符号,加工,数据流,数据存储,实体名,实体名,数据的源点/终点(汇点),或,或,或,1,2(软设),编号,加工名,数据流名,编号,文件名,文件名,加工名,编号,返回,编号,文件名,或,或,或,实体名,编号,加工名,3(系分),P110: 第(8)个注意事项,给出了数据流图的另一套基本符号。我不知道何时该用原来的那一套基本符号,何时用这套基本符号?这两套符号分别用在什么场合,?,数据流图的基本符号表示了什么含义?除了4种基本图形符号还有别的图形符号吗?,111页:图8.7所表示的是与图8.2等价的DFD,那么在实际画DFD时,我们怎样确定具体使用哪一种符号?这两种符号有什么区别和联系?,书上给出了两种类型的数据流图,那我们在画数据流图时应该选择哪种呢?,1、数据流图的画法有两种,哪一种比较适合我们?,数据流图矩形里面的内容是什么含义,椭圆里面的内容又是什么含义,矩形与椭圆之间用箭头表示有什么联系?,数据源点/终点(汇点),外部实体:系统之外的实体,包括人、物或其他软件系统。,数据源点:给系统提供数据的外部实体。,数据终点(汇点):接收系统输出数据流的外部实体。,2、 一个数据源点也可以是数据终点吗?(p108 8.3.1.4 ),源点和终点(汇点)可以是同一外部实体。,返回,加工,也称为数据处理或变换或处理,是对数据处理的单元。,加工(处理)的命名规则:,顶层的加工名就是软件项目的名字。,加工的名字最好使用动宾词组。可以用主谓词组。,不要使用意义空洞的动词作为加工名,即只有动词或主语。,如果在命名时遇到困难,说明你可能对数据流的分解不恰当,应进行重新分解。,问题六:基本加工是靠自己的经验来确定的,还是有一定的标准?,返回,数据流,表示数据的流向。,数据流由一组数据项组成。,命名规则和注意事项:,数据流的名字用名词或名词词组,应尽量使用现实系统中已有的名字,把现实环境中传递的一组数据中最重要的那个数据的名字作为数据流的名字,不要把控制流作为数据流,不要使用意义空洞的名词作为数据流名,如”数据“、“信息“等。,如果在命名时遇到困难,说明你可能对数据流的分解不恰当,应进行重新分解。,对流进或流出文件的数据流不需标注名字。,返回,问题,数据流图中的数据流有哪几种类型?,关于数据流程图的绘制,其中对于数据流、加工等部分的命名很模糊?,数据存储,由若干数据元素组成,是数据暂时保存的处所,统称为文件。,命名规则与数据流的命名规则类似。,问题五:数据流图(DFD)中的数据存储可以理解成是临时数据库或者虚拟的吗?,返回,DFD的扩充符号,如果同一个符号在图中出现在n个地方,则在这个符号的一个角上画n-1条短斜线做标记。,问题P108:在数据流图中,用方框表示数据的源头及终点,然后用方框的右下角加斜线表示一个实体,这两者有什么区别,难道不在有下角加斜线就不是实体了吗?在书上的例子中旅客不属于实体吗?我觉得应该是实体?但是为什么又没加斜线?,为什么说数据存储也需要重复标识?,返回,怎样画DFD呢?,()、DFD的画法,采用自顶向下,逐层分解的方法。即先把整个系统当作一个处理功能来看,画出系统的概图(顶层DFD),然后逐层下分解(0层,1层。)。,顶层数据流是什么?怎么画顶层数据流图?,返回,()、DFD的画法,具体步骤,画系统的输入(接收的数据)/输出(向外界送出的数据),以确定系统的范围。,顶层数据流图中是否一定不能有数据存储,在画数据流图时,根据顶层图,如何画下层数据流图,如何对数据流图进行分层,在分层当中有哪些规律可循?,画系统的内部。将系统的输入/输出流用一连串的加工连接起来。从输入开始或从输出回溯。,返回,具体步骤:,画加工的内部,对草图进行检查和合理布局。,和用户交流。,问题: 是否要一层一个数据流图?还是数据流图可以合并?(),注意事项,画数据流图的步骤中一项叫注意事项?,命名,画数据流而不是画控制流,问题1:数据流和控制流的区别?,一般不画物质流,问题2:什么叫物质流?,问题3:数据流图中哪些“流”该画上去,哪些可以不用画上去?,注意事项,每个加工至少有一个输入数据流和一个输出数据流,编号:加工编号由图号、小数点及局部号组成。,父图与子图的平衡。,问题P110 怎样准确的判断出父图与子图的平衡?,父图与子图平衡吗?,父图与子图平衡吗?,问题,110页图8.6为什么平衡不清楚。,P110 对父图与子图的平衡的理解:图8.6中如果不存在图8.4的情况下,那么这个父图与子图就不符合自图的平衡了,对吗?,画数据流图中,父图与子图怎样保持平衡?,P110:第(6)个注意事项第二段第一句:有时考虑平衡可忽略一些枝节性的数据流。我对本句中的“枝节性的数据流”不太理解,不知道什么叫“枝节性的数据流”,枝节性的数据流有何特点?,问题:,父图与子图的画法?,怎样处理数据流图中父图与子图,比如给你一个父图,怎样画出子图,总结:父图有几个输入输出,子图也要有几个输入输出,但是父图的输入输出在子图中可表现为分解出来的多个数据流?,注意事项,局部数据存储只有当它作为某些加工的数据接口或某个加工特定的输入或输出时,才把它画出来。,中第七小点,“局部数据存储”不太明白。,只与一个加工环节有关的数据存储,如果不是公用的或特别重要的,可不必画出。,每张图的加工项目以不超过7-8个为宜。,加工间的数据流最好控制在1-2条。否则考虑对加工进行合并或删除。,返回,注意事项,分解要均匀。应避免出现某些加工已是最小功能单元而另一些加工却还要等待继续分解好几层的情况出现。,如何理解?,画数据流图时怎样掌握层的具体划分才更加合理?,返回,问题,“上层的加工是由下层的基本加工分解而来”这就话我不能理解,应该是下层的基本加工是上层的基本加工分解而来。希望老师能帮我理解一下。,P110 怎样把一个加工分解成子加工?,图8.8(销售管理系统的分层数据流图)没理解明白,麻烦老师分析一下。,P111页如何用SA方法画出销售管理系统的分层DFD的?,问题,107页 图8.2飞机机票预订系统这个图不是太懂,希望老师能够在具体的讲解一下。,了解了数据流图的注意事项还是不能完全正确的画出数据流图怎么办?,数据流图怎么才能画的准确无误?,问题,画数据流图是在需求分析时用到的吗?,2、P107 飞机机票预定系统的数据流图是不是缺少了一个数据流旅行社要将取票通知单交给旅客?,画数据流图的几个部分:系统的输入输出、系统内部、注意事项。这三个部分具体怎么理解?(),3.根据书上所说的第二套符号描述数据流图时,生成编号的规则是什么?,107页图8.2中的DFD与111页8.7中的数据流图是如何等价的?,它与数据库中的E-R图有何异同?,数据流图与其他流程图的区别,与系统流程图的区别,系统流程图不仅有数据流,还有物质流和资金流。数据流图将物质流与资金流排除在外,或者将它们抽象为数据流的形式。,与程序流程图的区别,程序流程图中的处理框之间有严格的时间上的顺序,而数据流图只反映数据的流向、处理逻辑和必要的数据存储,不反映处理逻辑之间的先后顺序。,与程序结构图的区别:,程序结构图反映模块之间的控制关系以及模块之间的调用关系。,与控制流的区别:,如果某条线上没有数据,则是控制流。,数据字典(3.7),用来描述数据流图中出现的每一个成分给出定义。,数据字典条目的类型:,数据项条目,数据流条目,数据文件条目,加工条目,数据字典怎样在数据流图中使用?,问题,数据字典的应用领域及运用方法?,数据字典的具体含义是什么?,在软件工程中数据字典有何作用?,数据字典的解释中有数据流条目、数据条目、基本加工条目,在什么情况下才会用到这些条目。,数据字典的4类条目之间的区别,数据字典中的各种定义字符是否可以自己构建?不需要使用书上的字符,还是有规范的数据字典的定义字符?,如何使用数据字典,以及使用数据字典所带来的哪些便利?,(i)、数据流条目,符号,含义,例及说明,=,被定义为,+,与,X=a+b,|,或,X=a|b,重复,X=a,mn或,重复,X=2a5,(),可选,X=(a),“”,基本数据元素,X=“a”,.,连接符,X=1.9,主要内容,数据流名称及编号,数据流描述,别名,数据流的组成,数据流的来源,数据流的去处,数据流的流通量,高峰时期的流通量,注释,数据流名:事务,描述:零件入库或出库,别名:无,组成:零件编号+数量,来源:仓库管理员,去向:接收事务加工,数据量:无,高峰值:无,注释:无,内容是否均有多种描述?(,),问题,数据字典的内容中姓名=字母那句话中的2和18搞不懂是哪儿来的。,P113:对数据流条目分不清楚?,P113例题的解答有点不清楚。,(ii)数据文件条目,数据文件的名称及其编号,流入、流出的数据流,数据文件的组成:,存储方式:顺序、直接、关键字,存取频率,数据文件名:库存清单,描述:用于记库库存情况,别名:无,编号:D1,组成:零件编号+库存量+库存量临界值,流入的数据流:库存清单,流出的数据流:库存清单,数据量:无,组织方式:按零件的编码方式,存取要求:关键字为零件编号,存取频率:无,注释:无,(iii)、数据项条目,数据项名称及编号:只能有一个,别名:同一数据项可以有多个别名,数据项描述,取值范围和取值的含义,数据项的长度:数据项包含的字符或数字的位数。,数据项名:零件编号(001),别名:无,描述:用于惟一标识零件,值类型:数字字符,取值范围:0000-1000,字长:4,取值含义:无,问题:,(P114)“数据项条目中的别名,取值范围及含义”不太懂,加工条目,加工的名称及编号,描述,输入,输出,主要功能,处理逻辑小说明,:对处理逻辑的功能作明确的描述,详细地描述其输入/输出的数据流及这些数据的基本转换路径和策略,问题,114页加工条目为什么说上层的加工时由下层的基本加工分解而来的?,P114 对加工条目中一句话的理解:0层的加工是由顶层的加工分解而来的,也就是说下层的加工是由上层的加工分解的,这句话对吗?如果正确,为什么书上说:由于上层的加工是由下层的基本加工分解而来的?,加工条目中的编号是不是随便“编”都可以?,加工逻辑小说明的描述工具,结构化语言,判定表,判定树,问题:,加工逻辑的描述是对数据字典里描述加工条目的加工逻辑的具体描述吗?,加工逻辑的描述为什么那么重要,需要用一小节来进行解释。,结构化语言,是介于自然语言和形式化语言之间的一种半形式化的语言。,问题:什么是形式语言?,分为外层和内层,外层:三种基本控制结构,内层:使用数据字典中的名词和有限的自定义词。,P115问题:结构化语言不易被理解的内容是什么?,怎样使用结构化语言?,例:,铁路运费若省内运输,快件每千克1.5元,慢件每千克1.0元。若省间运输,重量不大于20kg,快件每千克2.0元,慢件每千克1.5元,超重部分按每千克2.0元计算。请写出计算托运费的加工逻辑小说明,if 省内运输,if 快件,托运费=重量*1.5,else,托运费=重量*1.0,else,if 重量20,。,操作,W重量*1.5,。,问题:,117页8-3判定表中的年龄、性别、婚姻是如何对应后面符号的?,判定表是用什么方式来进行判定的,问题1:是不是要先画一个条件取值表后,再花判定表。还有条件取值表属于数据字典吗?条件取值表也是对有关元素的定义和详细描述。,判定表与通常说的表有哪些区别?,怎样根据条件取值表制作判定表,感觉条件取值表比判定表清晰一点,为什么不直接用条件取值表来表示条件组合与应做动作之间的对应关系?,问题:,图8.10是怎样得来的,在书本117面,图8.10中的进一步合并中不是缩小范围了吗?,判定树,铁路远输费,省内,省外,。,怎样画判定树?,判定表变形成判定树?,问题,判定树与二叉树有什么区别,并且他们有什么优缺点?,个人觉得判定表有些冗余且繁琐难以查询,而判定树简单直观,为什么还会存在判定表这种方法?,图8.1的判定树可不可以画成像数据结构中画的那种从上往下画的树?,判定树只能是二叉树?,问题,结构化语言,判定表,判定树之间的关系及各自的优缺点是什么?,结构化语言,判定表,判定树三种工具的适用范围是什么?,结构化方法、判定树、判定表让描述加工的方法更加直观和可修改性,但是它们给我有一种差异的感觉,而我又分辨不出来。还有就是在他们三种方法在用户检查、逻辑检查、机器可读性、机器可编程等方面的差异到底是什么,是否存在不同的方法在不同的方面存在优劣?,3种工具的比较,工具,逻辑验证,表达直观,编程,可读性,可修改性,结构化语言,好,中,好,好,高,判定表,好,差,好,好,差,判定树,差,好,差,差,中,8.4.2 数据字典的实现,手工建立,关于数据字典的实现,我对手工建立数据字典不清楚,什么是图号,如何对数据流、数据项、数据存储和加工进行编写,敬请老师能够举例编写几个数据字典的例子!P115页。,利用计算机辅助建立并维护,PSL/PSA,数据库,问题:每个系统的数据字典应该不同,用计算机建立数据字典的话会不会反而增加了工作量?,“利用计算机辅助建立并维护”中的维护能达到怎样的程度?,13.手工建立数据字典和计算机建立数据字典各有什么优缺点?,问题:,在结构化分析的描述工具数据流图、数据词典和描述加工逻辑的结构化语言、判定表及判定树中,各种方法各有什么优缺点?,数据流图和数据字典是结构化方法的两种使用工具,它们实现的是不同的功能,在具体应用中,它们有什么联系?,数据流图跟数据字典二者之间有什么联系和区别?,问题:,P106: 介绍了三种SA的描述工具。我们在实际实践时是否需要同时用这三种描述工具?如果同时利用这三种描述工具,我感觉有些啰嗦,就是说第三种工具判定表和判定树描述的内容与前两种工具描述的内容大同小异,是否可以只用数据流图和数据字典来进行需求说明?,问题:,在8.4中对数据字典对那个中间的“数据流条目”和“加工条目”“数据存储条目”都是一个动做,它们怎么可以做成表,不就像是面向对象中的设计方法吗。,对数据存储条目,数据项条目,加工条目的分工不是很明确。,问题,数据流和数据词典只是在结构化设计的需求分析中应用吗?,面向对象的就只用ER图之类的就可以,而不需要数据流和数据词典?,优点,105页结构化方法的优点说适合瀑布模型,为什么?,结构化方法存在的问题,在p105中,说对于规模大的项目,结构化方法不适用,不知道不适用的原因。,结构化方法为什么会难于解决软件重用的问题?,为什么说结构化方法难于适应需求的变化?,在对结构化分析存在的问题时,说道了四点,我不能好好的理解,不知道为什么?所以希望老师能在上课时扩展一下,便于我们记忆。,结构化方法存在的问题用什么方法可以解决,不明白的问题,6.“加工逻辑描述”与“要求说明书”有什么区别,状态转换图(3.6),状态:是任何可以被观察到的系统行为模式,它规定了系统对事件的响应方式。状态分为初态,终态和中间状态。初态只能有一个,而终态可以有0或多个。,事件:引起系统变化的原因(外部事件)的抽象。,符号体系,状态图的符号体系,状态名,状态名,状态名,状态变量,活动表,事件,初态,终态,中间状态,需外部事件引起的转换,无需外部事件引起的转换,面向对象分析方法,面向对象分析方法:以识别问题域内对象为主的分析方法,适用于所有软件系统的分析。,工具:,UML,、DFD图。,软件需求规格与评审,见文档编写指南,3、一个完整的需求分析说明书应包含哪些部份?,3、数据要求说明书,见文档编写指南,评审,正确性,无歧义性,完全性,可验证性,一致性,可理解性,可修改性,可追踪性,(二)需求管理,需求管理是一个对系统需求变更、了解和控制的过程。,主要活动,变更控制,版本控制,需求跟踪,需求状态跟踪,需求管理强调,控制对需求基线的变动,保持项目计划与需求一致,控制单个需求和需求文档的版本情况,管理需求和联系链,或者管理单个需求和其他项目可交付产品之间的依赖关系。,跟踪基线中的需求状态。,1、变更控制,过程,问题分析和变更描述,变更分析和成本计算,变更实现,策略,所有需求变更必须遵循变更控制过程,对于未获得批准的变更,不应该做设计和实现工作,变更应该由项目变更控制委员会决定实现哪些变更,项目风险承担者应该能够了解变更数据库的内容,决不能从数据库中删除或者修改变更请求的原始文档,每一个集成的需求变更必须能跟踪到一个经核准的变更请求,建立变更控制委员会在保证权威性的前提下应尽可能精简人员,变更控制委员会:可由一个小组担任,也可以由多个不同的组担任。,可包括以下部门的人:,产品或计划管理部门,项目管理部门,开发部门,测试或质量保证部门,市场部或客户代表,制作用户文档的部门,技术支持部门,帮助桌面或用户支持热线部门,配置管理部门,返回,2、需求跟踪,包括编制每个需求同系统元素之间的联系文档,这些元素包括别的需求、体系结构、其他设计部件、源代码模块、测试、帮助文件和文档等。,客户需求向前追溯到需求,从需求回溯相应的客户需求,从需求向前追溯到下一级工作产品,从产品部件回溯到一个需求,返回,四、需求工程的工具,CASE2000,SADT,PSL/PSA,WORD、EXCEL,UML工具,Calober,DOORS,QSSrequireit,RTM,Vial Link,PSL/PSA,PSL/PSA:系统分析辅助工具。它由问题说明语言PSL和问题说明分析器PSA组成。,
展开阅读全文