软件工程_第七章_面向数据流的设计方法
- 格式:doc
- 大小:355.00 KB
- 文档页数:26
一、填空题1.由于维护或在维护过程中其他一些不期望的行为引入的错误称为维护的________________。
2.软件工程由___方法____、工具和__过程_____三部分组成,称软件工程的三要素。
3.可行性研究从技术可行性、经济可行性、___操作可行性_____三方面进行分析。
4.调试的目的是__在测试发现错误之后排除错误的过程________________。
5.划分模块时尽量做到低耦合高内聚__________________,以保持模块的独立性。
6.决定软件可维护性的因素主要有____可理解性________、可测试性、可修改性、可靠性和_可重用性___________。
7.对软件需求应从一致性、_____完整性_____、现实性和__现实性________四个方面验证。
8.为了便于对照检查,测试用例应由输入数据和_预期的输出结果____________两部分组成。
9.面向数据流的设计方法把信息流映射成软件结构,信息流有__________和__________两种类型。
10.软件工程是从____技术____和__管理______两方面研究如何更好地开发和维护计算机软件的一门新兴学科。
11.在基类的基础上新建立的类我们称之为___子类_____。
12.若年利率为i,不计复利,n年后可得钱数为F,则现在的价值P=__F/(1+i)n次方________。
二、单选题(每小题1分,共20分)1.产生软件维护的副作用,是指_____。
A.开发时的错误B.隐含的错误C.因修改软件而造成的错误 D.运行时误操作2.汽车有一个发动机。
汽车和发动机之间的关系是_____关系。
A.一般具体 B.整体部分C.分类关系 D.主从关系3.在变更控制中,______可以用来确保由不同用户所执行的并发变更。
A.异步控制 B.同步控制C.存取控制D.基线控制4.在详细设计阶段,经常采用的工具有__A___。
A.PAD B.SA C.SC D.DFD5.软件生命周期中所花费用最多的阶段是_D____。
《软件工程》作业班级2000(春)计算机本科姓名罗国南学号001000490 成绩____________一、判断题可行性研究的最根本的任务是对以后的行动方针提出建议。
√PDL语言是详细设计的重要工具,可方便地实现程序的自动生成。
√模块的控制域应该在作用域之内。
面向对象方法把对象作为数据及可以施加在这些数据上的操作所构成的统一体。
√软件是一种逻辑实体,而不是具体的物理实体。
√软件测试时经常要输入无效的,不合理的数据进行测试。
√高级程序设计语言从应用的角度看,可以分为基础语言、结构化语言和专用语言三大类。
√软件维护的前提是不能失去原有软件的基本功能。
√Gantt图可以明确地表示出各子任务之间的依赖与制约关系。
×与其它开发的方法相比较,结构化方法的主要优点之一是对用户需求的变更响应迅速。
×适应性维护的目的是为了适应计算机软、硬件环境的变化。
√系统流程图可以描述系统的逻辑模型,它的基本思想是用图形符号以黑盒子形式描绘系统里的每个部件。
×工程网络图可以描绘各子任务作业的工作时间和可以机动(延长)时间。
√在面向对象方法中,对象是进行处理的主体。
√调试是在测试出错误之后,找到错误的位置并改正的过程。
√不允许使用GOTO语句是结构程序的特征。
×面向对象技术的最大优点是减少了软件的开发时间。
×用盒图和PAD图设计出来的算法必定是结构化的。
√逻辑输入数据流是离物理输入端最远,且沿同一输入路径输入的数据流。
√可行性研究的结果有可能将软件开发项目否定。
√在面向对象方法学中,使用“对象”不仅需要知道它向外界提供的接口形式,而且必须知道它的内部实现算法。
×传统的流程框图不能用来进行结构化程序设计。
×一个模块执行时,必须引用另一个模块的某些数据,则这个模块的独立性不强。
√成功的测试是没有发现错误的测试。
×改正性维护是改正软件中测试阶段未发现的错误。
一、填空题(每空1分,共25分)1.软件生存周期一般可以划分为,问题定义、____________、____________、设计、编码、测试和____________.2.基于软件的功能划分,软件可以划分成__________、__________、__________三种.3.可行性研究,应从、技术可行性、运行可行性、和开放方案可行性等方面研究。
4.系统流程图是描绘的传统工具。
它的基本思想是用图形符号以描绘系统里面的每个部件。
5.数据流图的基本四种成分:数据输入的源点和数据输出汇点、、和。
6.结构化分析方法是面向________________进行需求分析的方法。
结构化分析方法使用________________与________________来描述。
7.是自动地共享类、子类和对象中的方法和数据的机制.8.软件详细设计工具可分为3类,即________________、________________和________________。
9.为了在软件开发过程中保证软件的质量,主要采取下述措施:________________、复查和管理复审、________________。
10.大型软件测试包括、、确认测试和四个步骤.1、可行性研究需求分析运行与维护2、系统软件支撑软件应用软件3、经济可行性法律可行性4、物理系统黑盒子形式5、加工数据流数据存储文件6、数据流数据流图DFD 数据字典DD7、继承性8、图示工具、设计语言表格工具9、审查测试10、单元测试集成测试系统测试1.软件设计中划分模块的一个准则是()。
A、低内聚低耦合B、低内聚高耦合C、高内聚低耦合D、高内聚高耦合2.Jackson设计方法是由英国的M。
Jackson提出的,它是一种面向()的软件设计方法.A、对象B、数据流C、数据结构D、控制结构3.试判断下列叙述中,哪个(些)是正确的( ).a、软件系统中所有的信息流都可以认为是事务流b、软件系统中所有的信息流都可以认为是变换流c、事务分析和变换分析的设计步骤是基本相似的A、aB、bC、cD、b和c4.()是用户和设计交换最频繁的方法.A、原型化方法B、瀑布模型方法C、螺旋模型方法D、构件组装模型5.软件工程方法学的目的是:使软件生产规范化和工程化,而软件工程方法得以实施的主要保证是()。
《软件工程》试题A《软件工程》期末试题选择题(共30分)1.软件生命周期中所花费用最多的阶段是(D)A.详细设计 B.软件编码 C.软件测试 D.软件维护2.可行性分析是在系统开发的早期所做的一项重要的论证工作,它是决定该系统是否开发的决策依据,因必须给出(B)的回答。
A.确定 B.行或不行 C.正确 D.无二义3.下列关于瀑布模型的描述正确的是(C)。
A.瀑布模型的核心是按照软件开发的时间顺序将问题简化。
B.瀑布模型具由于良好的灵活性。
C.瀑布模型采用结构化的分析与设计方法,将逻辑实现与物理实现分开。
D.利用瀑布模型,如果发现问题则修改的代价很低。
4.E-R图是用于描述应用系统的(B)数据模型A.逻辑结构B.概念结构C.数据结构D.实体关系5.软件测试的一条重要原则是(B)A.软件测试可以完全保证软件的质量B.测试可以发现程序中的错误,但不能够证明程序中没有错误C.测试能够完全证明程序的可靠性D .测试能够证明程序中没有错误6.确认软件的功能是否与需求规格说明书中所要求的功能相符的测试属于(C)A.集成测试B.恢复测试C.验收测试D.单元测试7.软件危机出现的本质原因是(A)A.人们对软件产品认识的不足以及对软件开发的内在规律的理解偏差B.软件维护费用的急剧增加C.软件生产技术进步缓慢D.软件规模庞大8.面向对象程序设计中的数据隐藏指的是(D)。
A.输入数据必须输入保密口令B.数据经过加密处理C. 对象内部数据结构上建有防火墙D.对象内部数据结构的不可访问性9.下面说法错误的是(D)A.抽象是为了降低问题的复杂性,可以得到问题领域中比较简单的概念B.模块的内聚性越低则模块的独立性越强C.耦合性越高则模块的独立性越弱D.在软件详细设计阶段,抽象的层次最低,系统的实现被完全精化10.下列不属于结构化设计工具的有(C)A.流程图B.PAD图C.数据流图D.N-S图11.软件是(C )。
A. 处理对象和处理规则的描述B. 程序C. 程序及其文档D. 计算机系统12.软件需求规格说明的内容不应包括(B)。
软件工程复习题(带答案)软件工程复习题一、单选题1、软件开发的结构化设计(SD)方法,全面指导模块划分的最重要原则应该是( c )A模块高内聚 B模块低耦合 C模块独立性 D程序模块化2、软件工程方法的提出起源于软件危机,而其目的应该是最终解决软件的什么问题?( D )A产生危机 B质量保证 C开发效率 D生产工程化3、软件工程开发的可行性研究是决定软件项目是否继续开发的关键,而可行性研究的结论主要相关于( A )A软件系统目标 B软件的性能C软件的功能 D软件的质量4、软件需求分析一般应确定的是用户对软件的( D )A.功能需求B.非功能需求C.性能需求D.功能需求和非功能需求5、软件测试是满足软件的功能和性能要求,保证软件正确性的措施,一般软件测试计划的制订应始于软件开发的哪个阶段? ( D )A.需求分析B.软件设计C.程序编码D.软件计划6、软件工程方法是在实践中不断发展的方法,而早期的软件工程方法主要是指( B )A.原型化方法B.结构化方法C.面向对象方法.D.功能分解法7、数据流图描述数据在软件中流动和被处理变换的过程,它是以图示的方法来表示,即.( A )A.软件模型B.软件功能C.软件结构D.软件加工8、软件工程学涉及到软件开发技术和工程管理两方面的内容,下述内容中哪一个不属于开发技术的范畴?(D)A.软件开发方法B.软件开发工具C.软件工程环境D.软件工程经济9、软件文档是软件工程实施中的重要成份,它不仅是软件开发的各阶段的重要依据,而且也影响软件的()A.可理解性B.可维护性C.可扩展性D.可靠性10、从( )语言开始,软件摆脱了对硬件的依赖。
A.第一代B.第二代C.第三代D.第四代11、在下面列出的基本成分中,哪个不是实体关系图的基本成分? ( )A.实体B.数据存储C.关系 D属性13、结构化程序设计主要强调程序的(C)A.效率B.速度C.可读性D.大小14、在软件工程中根据程序的功能说明,而不关心程序内部逻辑的测试方法为( A )A.黑盒法B.白盒法C.灰盒法D.综合法15、软件开发的结构化分析方法,常用的描述软件功能需求的工具有( C )A业务流程图,数据字典 B.软件流程图,模块说明C.数据流图,数据字典D.系统流程图,程序编码16、结构化程序设计思想的核心是要求程序只由顺序、循环和( A )三种结构组成。
4. 面向对象的分析方法主要是建立三类模型,即( D )。
A) 系统模型、ER模型、应用模型B) 对象模型、动态模型、应用模型C) E-R模型、对象模型、功能模型D) 对象模型、动态模型、功能模型5. 在E-R模型中,包含以下基本成分( )。
A) 数据、对象、实体B) 控制、联系、对象C) 实体、联系、属性D) 实体、属性、操作9.若有一个计算类型的程序,它的输入量只有一个X,其范围是[-1.0, 1.0],现从输入的角度考虑一组测试用例:-1.001, -1.0, 1.0, 1.001.设计这组测试用例的方法是( c )A.条件覆盖法 B.等价分类法C.边界值分析法 D.错误推测法10、详细设计的基本任务是确定每个模块的( d )A.功能B.调用关系C.输入输出数据 D.算法11.设函数C(X)定义问题X的复杂程序,函数E(X)确定解决问题X需要的工作量(时间)。
对于两个问题P1和P2,如果C(P1)>C(P2)显然E(P1)>E(P2),则得出结论E(P1+P2)>E(P1)+E(P2)就是:( a )A.模块化的根据B.逐步求精的根据C.抽象的根据D.信息隐藏和局部化的根据13.面向数据流的设计方法把( D )映射成软件结构。
A.数据流B.系统结构C.控制结构D.信息流14.内聚程度最低的是( A.偶然 )内聚A.偶然 B.过程 C.顺序 D.时间15.确定测试计划是在( D )阶段制定的.A.总体设计 B.详细设计 C.编码 D.测试16.需求分析的产品是( D )A.数据流程图案B.数据字典C.判定表D.需求规格说明书17.数据字典是软件需求分析阶段的最重要工具之一,其最基本的功能是( C )A.数据库设计B.数据通信C.数据定义D.数据维护18.( D )引入了“风险驱动”的思想,适用于大规模的内部开发项目。
A.增量模型B.喷泉模型C.原型模型D.螺旋模型(×)2、系统测试的主要方法是白盒法,主要进行功能测试、性能测试、安全性测试及可靠性等测试。
作业1:1. 软件是计算机系统中与硬件相互依存的另一部分,它是包括( A )、( B )及( C )的完整集合。
其中,( A )是按事先设计的功能和性能要求执行的指令序列。
( B )是使程序能够正确操纵信息的数据结构。
( C )是与程序开发、维护和使用有关的图文材料。
供选择的答案:A~C. ①软件②程序③代码④硬件⑤文档⑥外设⑦数据⑧图表2. 开发软件时对提高软件开发人员工作效率至关重要的是( A )。
软件工程中描述生存周期的瀑布模型一般包括计划、( B )、设计、编码、测试、维护等几个阶段,其中设计阶段在管理上又可以依次分成( C )和( D )两步。
供选择的答案:A.①程序开发环境②操作系统的资源管理功能③程序人员数量④计算机的并行处理能力B.①需求分析②需求调查③可行性分析④问题定义C、D.①方案设计②代码设计③概要设计④数据设计⑤运行设计⑥详细设计⑦故障处理设计⑧软件体系结构设计3. 从供选择的答案中选出适当字句填入下列关于软件发展过程的叙述中的( )内。
有人将软件的发展过程划分为4个阶段:第一阶段(1950~1950年代末)称为“程序设计的原始时期”,这时既没有( A ),也没有( B ),程序员只能用机器指令编写程序。
第二阶段(1950年代末~1960年代末)称为“基本软件期”。
出现了( A ),并逐渐普及。
随着( B )的发展,编译技术也有较大的发展。
第三阶段(1960年代末~1970年代中期)称为“程序设计方法时代”。
这一时期,与硬件费用下降相反,软件开发费急剧上升。
人们提出了( C )和( D )等程序设计方法,设法降低软件的开发费用。
第四阶段(1970年代中期~现在)称为“软件工程时期”。
软件开发技术不再仅仅是程序设计技术,而是包括了与软件开发的各个阶段,如( E )、( F )、编码、单元测试、综合测试、(G )及其整体有关的各种管理技术。
供选择的答案:A ~ D:①汇编语言②操作系统③虚拟存储器概念④高级语言⑤结构式程序设计⑥数据库概念⑦固件⑧模块化程序设计E ~ G:①使用和维护②兼容性的确认③完整性的确认④设计⑤需求定义⑥图象处理4. 软件工程过程有哪几个基本过程活动?试说明之。
软件工程基础(一)一、选择题1. 软件工程学的提出起源于软件危机,而其目的应该是最终解决软件的______ 问题。
A.质量保证B.生产危机C.生产工程化D.开发效率答案:C2. 软件生命周期分为几个阶段,需求分析属于______ 阶段的任务。
A.定义B.开发C.维护D.编码答案:A3. 软件工程方法是在实践中不断发展的方法,而早期的软件工程方法主要是指______。
A.结构化方法B.面向对象方法C.二者都对D.二者都不对答案:A4. 软件生命周期一般可以分为3大的阶段,它们分别是______ 。
A.分析、设计和维护B.定义、开发和测试C.分析、编码和测试D.定义、开发和维护答案:D5. 软件工程上常用的表达工具有______ 。
A.图形工具B.表格工具C.语言工具D.以上全是答案:D6. 软件工程环境一般应具有某些特征,下列叙述中______ 不是它必须具备的特征。
A.一组工具的集合B.按方法或模式组合的工具C.提供完善的移植工具D.支持全周期或阶段的工具答案:C7. 结构化分析方法(SA) 是一种______ 。
A.自顶向下逐层分解的分析方法B.自底向上逐层分解的分析方法C.面向对象的分析方法D.以上都不对答案:A8. 自顶向下设计把下列______ 结合起来交叉进行。
A.设计、编码、维护B.设计、编码、测试C.设计、编码、调试D.模块设计、程序设计、算法设计答案:C9. 数据流图是进行软件需求分析常用的工具,其中最基本的图符是:变换、数据流、数据存储和外部实体,其中用______ 图符来代表图中的数据池(数据最终的目的地)。
A.变换B.数据流C.数据存储D.外部实体答案:D10. 由事务型数据流图映射为软件结构的设计首先应设计一个______ ,它有两个功能:接收事务数据,根据事务类型调度相应的处理模块。
A.总控模块B.事务中心C.变换中心D.事务调度答案:B11. 面向数据流的设计方法把______ 映射成软件结构。
第一章软件工程概述软件工程的基本原则是什么?1,抽象:采用分层次抽象,自顶向下逐层细化的办法控制软件开发过程的复杂性。
2,模块化:模块化有助于信息隐蔽和抽象,有助于表示复杂的系统。
3,信息隐蔽:将模块化设计成“黑箱”,实现的细节隐蔽在模块内部,不让模块的使用直接访问,这就是信息封装。
4,局部化:保证模块之间具有松散的耦合,模块内部具有较强的内聚,这有助于控制模块的复杂性5,一致性:整个软件系统使用一致的概念符号和术语。
6,完整性:软件系统不丢失任何重要成分,可以完全实现系统所要求功能的程度。
7,不可验证性:易于检查、测试、评审,确保系统的正确性。
第二章可行性研究选择题1,研究开发所需要的成本和资源属于可行性研究中(经济可行性)研究的一方面。
2,可行性分析研究的目的是(项目值得开发与否)。
3,软件分析的第一步要做的工作在于(分析系统开发的可行性)。
4,可行性研究目的主要在于(用最小的代价确定问题定义阶段所确定的目标和规模是否可实现,可解决)。
5,软件可行性分析是着重确定系统的目标和规模。
对功能,性能及约束条件的分析应属于下列(技术可行性分析)。
简答题简述可行性研究的步骤?1,复查系统规模和目标2,研究目前正在使用的系统3,导出新系统的高层逻辑模型4,重新定义问题5,导出和评价供选择方案6,推荐一个方案并说明理由7,推荐行动方针8,书写计划任务书9,提交审查应用题设计一个软件的开发成本为5万元,寿命为3年。
未来3年的每年收益预计为22000元,24000元,26620元,银行年利率为10%。
试对此项目进行成本效益分析,以决定其经济可行性。
答:设银行的年利率是10%,则下列出每年的收益第一年:22000/1.1=20000第二年:24000/1.21=19834.71第三年:26620/1.331=20000因此:现有值收益为20000+19834.71+20000=59834.71投资回收期2+10165/20000=2.51纯收入59835-50000=9834.71第三章需求分析需求分析的原则有哪些?1.需求分析方法应该容易被用户理解。
第七章面向数据流的设计方法面向数据流的设计方法,即通常所说的结构设计法(简称SD方法),是根据需求阶段对数据流的分析(一般用数据流图和数据字典表示)设计软件结构。
数据流图主要描绘信息在系统内部加工和流动的情况,面向数据流的设计方法根据数据流图的特性定义两种“映射”,这两种映射能机械地将数据流图转换为程序结构。
该方法的目标是为软件结构设计提供一个系统化的途径,使设计人员对软件有一个整体的认识。
本章所述技术用于软件的概要设计描述,包括模块、界面和数据结构的定义,这是所有后续开发工作的基础。
每种软件设计方法都有长处和不足,先用哪种方法首先应考虑它适用的范围。
任何软件系统都可以用数据流图表示,理论上,面向数据流的设计方法可用于任一种软件系统的开发。
然而,该方法对那些顺序处理信息且不含层次数据结构的系统最为有效,例如过程控制、复杂的数值分析过程、以及科学与工程方面的应用,等等。
当SD方法用于完全的数据处理时,即使系统中作用层次数据也同样行之有效。
从系统设计的角度出发,软件设计方法可以分为三大类。
第一类是根据系统的数据流进行设计,称为面向数据流的设计或者过程驱动的设计,以结构化设计方法为代表。
第二类是根据系统的数据结构进行设计,称为面向数据结构的设计或者数据驱动的设计,以LCP(程序逻辑构造)方法、Jackson 系统开发方法和数据结构化系统开发(DSSD)方法为代表。
第三类设计方法即面向对象的设计。
第一节基本概念和设计过程面向数据流设计方法是基于模块化、自顶向下细化、结构化程序设计等程序设计技术基础上发展起来的。
该方法实施的要点是:①建立数据流的类型。
②指明流的边界。
③将数据流图映射到程序结构。
④用“因子化”方法定义控制的层次结构。
⑤用设计测量和一些启发式规则对结构进行细化。
一、在系统结构图(SC)中的模块在系统结构图中不能再分解的底层模块为原子模块。
如果一个软件系统的全部实际加工(数据计算或处理)都由底层的原子模块来完成,而其他所有非原子模块仅仅执行控制或协调功能,这样的系统就是完全因子分解的系统。
如果系统结构图是完全因子分解的,就是最好的系统。
一般地,在系统结构图中有4种类型的模块(如图7-1-1):图7-1-1 系统结构图的四种模块类型·传入模块:从下属模块取得数据,经过某些处理,再将其传送给上级模块。
·传出模块:从上级模块获得数据,进行某些处理,再将其传送给下属模块。
·变换模块:即加工模块。
它从上级模块取得数据,进行特定的处理,转换成其他形式,再传送回上级模块。
大多数计算模块(原子模块)属于这一类。
·协调模块:对所有下属模块进行协调和管理的模块。
在系统的输入/输出部分或数据加工部分可以找到这样的模块。
在一个好的系统结构图中,协调模块应在较高层出现。
在实际系统中,有些模块属于上述某一类型,还有一些模块是上述各种类型的组合。
二、结构化设计的步骤SD方法能方便地将数据流图转换为软件结构,其过程分为五步:(1)确定信息流的类型;(2)划定流界;(3)将数据流图映射为程序结构;(4)提取层次控制结构;(5)通过设计复审和使用启发式策略进一步精化所得到的结构。
第三步所用映射方法涉及信息流的类型。
信息流分为变换流和事务流两种类型。
①变换流。
在基本系统模型(即顶级数据流图)中信息通常以“外部世界”所具有的形式进入系统,经过处理后又以这种形式离开系统,如图7-1-2 所示。
输入信息流沿传入路径进入系统,同时由外部形式变换为内部形式,经系统变换中心加工、处理,作为输出信息流又沿传出路径离开系统,并还原为外部形式。
如果数据流图所描述的信息流具有上述特征,则称作变换流。
图7-1-2 信息流②事务流。
由于基本系统模型呈变换流,故任意系统中的信息均可用变换流刻画。
但若数据流具有如图7-1-3所示形状,则称为“事务流”。
此时,单个数据项称为事务(transaction) 沿传入路径(也称接受通道)进入系统,由外部形式变换为内部形式后到达事务中心,事务中心根据数据项计值结果从若干动作路径中选定一条继续执行。
图7-1-3 事务流值得注意的是在大系统的DFD中,变换流与事务流往往交织在一起。
如,在基于事务流的系统中,当信息沿动作路径流动时可能呈现变换流的特征,因此,下面两节讨论的变换分析法与事物分析法常常需要交叉使用。
图7-1-4描绘了面向数据流的软件设计过程,当然,任何设计过程都不应该也不可能完全机械化,人的判断力和创造性往往起决定作用。
图7-1-4 面向数据流的设计第二节变换分析一、变换流与变换型系统结构变换型数据处理问题的工作过程大致分为三步,即取得数据,变换数据和给出数据。
如图7-2-1所示。
这三步反映了变换型问题数据流的基本思想。
其中,变换数据是数据处理过程的核心工作,而取得数据只不过是为它做准备,给出数据则是对变换后的数据进行后处理工作。
图7-2-1 变换型数据流变换型系统结构图如图7-2-2所示,相应于取得数据、变换数据、给出数据,系统的结构图由输入、中心变换和输出等三部分组成。
图7-2-2 变换型的系统结构图二、变换映射变换映射是体系结构设计的一种策略。
运用变换映射方法建立初始的变换型系统结构图,然后对它做进一步的改进,最后得到系统的最终结构图。
设计的步骤如下。
步骤1:复审基本系统模型(0层数据流图和支持信息)。
评估系统规格说明和软件需求规格说明。
步骤2:复审和细化软件的数据流图。
重画数据流图时,可以从物理输入到物理输出,或者相反. 还可以从顶层加工框开始,逐层向下。
步骤3:确定数据流图中含有变换流特征还是含有事务流特征。
通常,系统的信息流总能表示为变换型,但其中也可能遇到明显的事务流特征,这时可采用变换型为主,在局部范围采用事务型的设计方法。
步骤4:区分输入流、输出流和中心变换部分,即标明流的边界。
不同的设计人员可能选择不同的流边界,这将导致不同的系统结构图。
步骤5:进行一级“因子化”分解,设计顶层和第一层模块。
首先设计主模块,用程序名字为它命名,将它画在与中心变换相对应的位置上。
做为系统的顶层,它调用下层模块,完成系统所要做的各项工作。
系统结构第一层的设计方针:为每一个逻辑输入设计一个输入模块,它为主模块提供数据;为每一个逻辑输出设计一个输出模块,它将主模块提供的数据输出;为中心变换设计一个变换模块,它将逻辑输入转换成逻辑输出。
第一层模块与主模块之间传送的数据应与数据流图相对应。
步骤6:进行二级“因子化”分解,设计中、下层模块。
这一步工作是自顶向下,逐层细化,为每一个输入模块、输出模块、变换模块设计它们的从属模块。
输入模块要向调用它的上级模块提供数据,因而它必须有两个下属模块:一个是接收数据;另一个是把这些数据变换成它的上级模块所需的数据。
输出模块是从调用它的上级模块接收数据,用以输出,因而也应当有两个下属模块:一个是将上级模块提供的数据变换成输出的形式;另一个是将它们输出。
中心变换模块的下层模块没有通用的设计方法,一般应参照数据流图的中心变换部分和功能分解的原则来考虑如何对中心变换模块进行分解。
步骤7:利用一些启发式原则来改进系统的初始结构图,直到得到符合要求的结构图为止。
三、例变换分析由一系列设计步骤组成,经过这些步骤就能把具有变换流特点的数据流图按预先确定的模式映射成软件结构。
下面以“家庭保安系统”的传感器监测子系统为例说明变换分析的各个步骤。
步骤1:复审基本系统模型基本系统模型指顶级DFD和所有由外部提供的信息。
这一设计步骤是对系统规格说明书和软件需求规格说明书进行评估。
这两个文档描述软件界面上信息的流程和结构。
图7-2-3和7-2-4分别为“家庭保安系统”的顶层和第一层数据流图。
图7-2-3 “家庭保安系统”的顶级数据流图图7-2-4 “家庭保安系统”的第一级DFD步骤2:复审和精化软件数据流图这一步主要是对软件需求规格说明书中的分析模型进行精化,直至获得足够详细的DFD。
例如由“传感器监测子系统”的第一级(图7-2-4的局部)和第二级(图7-2-5)DFD进一步推导出第三级数据流图(图7-2-6),此时,每个变换对应一个独立的功能,可望用一个具有较高内聚度的模块实现,至此已有足够的信息可用于设计“传感器监测子系统”的程序结构,精化过程亦可结束。
图7-2-5 “传感器监测子系统”的第二级DFD图7-2-6 “传感器监测子系统”的第三级DFD步骤3:确定DFD的特性,判定它为变换流还是事务流。
一般说来,系统内部的信息流总可以用变换流表示,倘若具有明显的事务特性,还应该采用针对事条流的映射方法。
因此,设计人员首先要判定DFD中占主导地位的信息流,并确定其特性,然后孤立具有变换特性或事务特性的支流,这些支流将用于精化由主导数据流推出的程序结构。
仍以图7-2-6所示DFD为例,数据沿一个传入路径进来,沿三个传出路径离开,无明显的事务中心,因此,该信息流应属变换流。
步骤4:划定输入流和输出流的边界,孤立变换中心输入、输出流边界的划分可能因人而异,不同的设计人员可能把边界沿着数据通道向前推进或后退一个处理框,不过这对最后的软件结构影响不大。
“传感器监测子系统”的流界在图7-2-6中用虚线表示。
步骤5:执行“一级分解”(first level factoring)一级分解的目标是导出具有三个层次的程序结构,顶层为主控模块;底层模块执行输入、计算和输出功能;中层模块控制、协调底层的工作。
程序结构可用yourdon结构图表示。
结构图中,方框代表模块,方框内注明模块名称或主要功能。
方框之间的有向边(无二义时也可用无向边)表示模块间的调用关系。
图7-2-7所示的结构图对应于一级分解的上两层模块,即主控模块和下面几个中层控制模块:①输入流控制模块,接收所有输入数据;②变换流控制模块,对内部形式数据进行加工、处理;③输出流控制模块,产生输出数据。
图7-2-7 一级分解图7-2-7展示的是一个简单三叉结构,实际处理大型系统的复杂数据流时,可能需要两个甚至多个模块对应上述一个模块的功能。
“一级分解”总的原则是,在完成控制功能并保持低耦合度、高内聚度的前提下尽可能减少模块数。
“传感器监测子系统”一级分解如图7-2-8所示,其中控制模块的名字概括了所有下属模块的功能。
图7-2-8 传感器监测子系统一纷分解结果步骤6:执行“二级分解”二级分解的任务是把数据流图中每个处理框映射成程序结构中一个适当的模块,二级分解过程是从变换中心的边界开始沿输入、输出通道向外移动,把遇到的每个处理框映射为程序结构中的一个模块,其方法如图7-2-9所示。
图7-2-9 二级分解虽然图7-2-9中,DFD的处理框与程序结构模块一一对应,但按照软件设计原则进行设计时,可能需要把几个处理框聚合为一个模块,或者把一个处理框裂变为几个模块。