(一)名词解释1.软件:软件是计算机程序、数据以及相关的各种文档的集合。2.软件危机软件危机是在软件发展第二阶段末期的规模较大的项目开发中,出现了与当初的计划推迟交工、费用比预算大幅度上升、不能满足用户要求、可靠性低、维护困难等问题,导致了软件危机。3.数据流图数据流图是以图形的方式描述数据在系统中流动和处理的过程,只反映系统必须完成的逻辑功能,是一种功能模型。4.数据字典、数据字典是用来定义数据流图中的各个成分的具体含义的。它以一种准确的、无二义性的说明方式为系统的分析、设计及维护提供了有关元素的一致的定义和详细的描述。5.变换流变换流指数据流图(简称DFD)具有明显的输入、变换和输出界面。6.事务流事务流指数据流图中输入流被分离成许多数据流,形成许多加工路径,并根据输入值选择其中一条路径来执行。7.耦合性耦合性也称块间关系,指软件系统结构中各模块间相互联系紧密程度的一种度量。8.内聚性内聚性又称块内联系,指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。9.程序设计语言(PDL)程序设计语言(简称PDL),又称伪码,它是一种用于描述模块算法设计和处理细节的语言。(二)填空题1.在信息处理和计算机领域内,一般认为软件是_程序____、__文档___和__数据___。2.数据流图的基本组成部分有_数据流__、_加工_、_数据存储_、_数据源点或终点_。3.数据流图和数据字典共同构成了系统的__逻辑_模型,是需求规格说明书的主要组成部分。4.数据流图一般可分为_变换型_和_事务型_两类。5.结构化设计方法中,要把数据流图转换成软件结构,若某个加工将它的输入流分离成许多发散的数据流,形成许多加工路径,并根据输入的值选择其中一个路径来执行,这种特征的DFD称为_事务型_数据流图。6.PDL是描述处理过程“_怎么做_”的细节,结构化语言是描述加工“_做什么_”的。(三)选择题1.软件工程的概念是哪年提出的(B)。A.1988B.1968C.1948D.19282.影响输入输出风格的因素不包括(A)。A.数据状态B.通信环境C.用户经验D.输入/输出设备3.符合数据说明顺序规范的是(D)。A.全程量说明、局部量说明、类型说明、常量说明B.全程量说明、局部量说明、常量说明、类型说明C.类型说明、常量说明、全程量说明、局部量说明D.常量说明、类型说明、全程量说明、局部量说明4.瀑布模型的关键不足在于(D)。A.过于简单B.各个阶段需要进行评审C.过于灵活D.不能适应需求的动态变更5.以下哪一项不是软件危机的表现形式(C)。A.开发的软件不满足用户需要B.开发的软件可维护性差C.开发的软件价格便宜D.开发的软件可靠性差6.软件可行性研究实质上是要进行一次(A)需求分析、设计过程。A.简化、压缩的B.详细的C.彻底的D.深入的7.结构化设计是一种面向(A)的设计方法。A.数据流B.模块C.数据结构D.程序8.与确认测试阶段有关的文档是(A)。A.需求规格说明书B.概要设计说明书C.详细设计说明书D.源程序9.软件开发的需求活动,其主要任务是(D)。A.给出软件解决方案B.给出系统模块结构C.定义模块算法D.定义需求并建立系统模型10.需求分析阶段的研究对象是(A)。A.用户要求B.分析员要求C.系统要求D.软硬件要求11.可自动生成程序的详细设计方法是(D)。A.流程图B.IPO图C.盒图D.PAD图12.可行性研究采用(B)概括说明软件系统的物理模型。A.数据字典B.系统流程图C.数据流图D.成本-效益分析(四)简答题1.简述瀑布模型的阶段划分和各阶段的主要任务以及瀑布模型存在的问题。1.瀑布模型的阶段划分和各阶段的任务为:(1)需求分析和定义根据系统的使用者(需方)需求进行具体分析,制定系统应完成的功能、目标、各项服务和限制,确定工作范围和所花费的代价。并且以用户和软件开发人员都能理解的形式加以定义和明确。(2)系统和软件设计先把用户的需求分成硬件需求和软件需求,在此基础上确定整个系统的结构。在软件设计中,进一步把用户的要求和系统的目标在软件系统的各项功能中表现出来,并分别使之达到能够进行程序设计的程度。(3)编程和单元测试在这个阶段中,软件的设计已经以程序集合或单元程序的形式完成,并包含了验证各个单元程序是否满足式样要求的单元测试。(4)综合测试和系统测试把各个单元程序和程序组结合起来,作为一个完整的系统进行测试。在这种测试中,一方面要发现和排除系统或程序中的错误,更重要的是要确认已完成的系统是否满足用户和设计者的要求。测试后,把这个软件提供给用户。(5)运行和维护运行和维护是软件生存期中需要时间较长的一个阶段,在这一阶段,系统被实际装入并实际应用,那些在软件开发初期没有被发现的错误,或者是用户提出新的要求,都需要在这一阶段加以解决。瀑布模型的问题之一是对软件工程中的反复性质认识不足,另外还有一个缺点是在开发工程的初期,就必须把规格式样确定下来,而在有些情况下,由于用户的需求不明确,某些规格式样开始是不太好确定的。软件工程是复杂的、多变的工程,用单纯的线性模型很难完全表示出来。2.简述SA方法的优缺点。SA方法是软件需求分析中公认的、有成效的、技术成熟、使用广泛的一种分析方法。较适用于开发数据处理类型软件的需求分析。利用图形等半形式化工具表达需求,简明、易读,也易于使用。但也存在一些弱点,表现如下:SA方法仅是一个静态模型,没有反映处理的顺序,即控制流程,因此,不适合描述实时控制系统。SA方法使用DFD在分析与描述“数据要求”方面是有局限的,只有与数据库技术中的实体联系图(ER图)结合起来,才能较完整地描述用户对系统的需求。DFD不适合描述人机界面系统的要求、如一些人机交互较频繁的软件系统。SA方法要与形式化方法结合起来,才能更精确地描述软件需求。要借助需求分析工具,提高需求分析的质量及效率。3.变换分析设计与事务分析设计有什么区别?简述其设计步骤。变换分析设计是一个顺序结构,由输入、变换和输出三部分组成,其工作过程有3步:取得数据、变换数据和给出数据。事务分析设计是将它的输入流分离成许多发散的数据流,形成许多加工路径,并根据输入的值选择其中一个路径来执行。二者区别:变换分析设计适用于具有明显变换特征的数据流图,事务分析设计适用于具有明显事务特征的数据流图。变换分析设计步骤:①确定DFD中的变换中心、逻辑输入和逻辑输出:从物理输入端开始,沿着数据流方向向系统中心寻找,直到有这样的数据流,它不能再被看做是系统的输入,则它的前一个数据流是系统的逻辑输入。从物理输出端开始,逆数据流方向向中间移动,可以确定系统的逻辑输出。介于逻辑输入和逻辑输出之间的加工就是变换中心,即主加工。②设计软件结构的顶层和第一层——变换结构:顶层即主模块,主要完成所有模块的控制。第一层至少有3个功能模块:输入、输出和变换模块,即为逻辑输入设计一个输入模块,其功能是为顶层模块提供相应数据,为逻辑输出设计一个输出模块,其功能是输出顶层模块的信息,为变换中心设计一个变换模块,其功能是将逻辑输入进行变换加工,然后逻辑输出。③设计中、下层模块。对第一层的输入、变换、输出模块自顶向下逐层分解。输入模块下属模块的设计:可设计两个下属模块,一个接收,一个转换。输出模块下属模块的设计:可设计两个下属模块,一个转换,一个发送。变换模块下属模块的设计:按照模块独立性原则来组织其结构,一般对每个基本加工建立一个功能模块。④设计的优化:输入部分求精:为每个物理输入设置专门模块,其他输入模块与转换数据模块可适当合并。输出部分求精:为每个物理输出设置专门模块,其他输出模块与转换数据模块可适当合并。变换部分求精:根据设计准则,对模块进行合并或调整。事务分析设计步骤:①确定DFD的事务中心和加工路径:当数据流图中每个加工将一个输入数据分解成多个发散的输出数据流时,该加工就是事务中心,从事务中心辐射出去的数据流为各个加工路径。②设计软件结构的顶层和第一层——事务结构。顶层是一个全控模块,有两个部分:接收分支(与变换型DFD的输入部分设计方法相同)和发送分支(即调度模块,它控制管理所有下层的事务处理模块)。③设计中、下层模块、优化等工作,与变换分析设计相同。(五)应用题某单位住房分配方案如下:所有住户50平方米以内每平方米1000元,超过50平方米后:在本人住房标准面积以内每平方米1500元,其中住房标准为:教授105平方米,副教授90平方米,讲师75平方米;标准面积以外每平方米4000元。请用判定表和判定树表示各条件组合与费用之间的关系。S表示住房面积,M表示住房费用。条件取值表条件名取值符号取指数m住房面积S=50S50LBM2=2职务教授(105)副教授(90)讲师(75)PFJM3=3超标与否超标未超标CWM4=2判定表123456789101112住房面积LLBBLLBBLLBB职务PPPPFFFFJJJJ超标与否CWCWCWCWCWWC费用=1000*S√√√√√√费用=1000*50+(S-50)*1500√√费用=1000*50+(105-50)*1500+(S-105)*4000√费用=1000*50+(90-50)*1500+(S-90)*4000√费用=1000*50+(75-50)*1500+(S-75)*4000√判定树参考答案:(一)名词解释1.软件是计算机程序、数据以及相关的各种文档的集合。2.软件危机是在软件发展第二阶段末期的规模较大的项目开发中,出现了与当初的计划推迟交工、费用比预算大幅度上升、不能满足用户要求、可靠性低、维护困难等问题,导致了软件危机。3.数据流图是以图形的方式描述数据在系统中流动和处理的过程,只反映系统必须完成的逻辑功能,是一种功能模型。4.数据字典是用来定义数据流图中的各个成分的具体含义的。它以一种准确的、无二义性的说明方式为系统的分析、设计及维护提供了有关元素的一致的定义和详细的描述。5.变换流指数据流图(简称DFD)具有明显的输入、变换和输出界面。6.事务流指数据流图中输入流被分离成许多数据流,形成许多加工路径,并根据输入值选择其中一条路径来执行。7.耦合性也称块间关系,指软件系统结构中各模块间相互联系紧密程度的一种度量。8.内聚性又称块内联系,指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。9.程序设计语言(简称PDL),又称伪码,它是一种用于描述模块算法设计和处理细节的语言。(二)填空题1.程序文档数据2.数据流加工数据存储数据源点或终点3.逻辑4.变换型事务型5.事务型6.怎么做做什么(三)选择题1.B2.A3.D4.D5.C6.A7.A8.A9.D10.A11.D12.B(四)简答题1.瀑布模型的阶段划分和各阶段的任务为:(1)需求分析和定义根据系统的使用者(需方)需求进行具体分析,制定系统应完成的功能、目标、各项服务和限制,确定工作范围和所花费的代价。并且以用户和软件开发人员都能理解的形式加以定义和明确。(2)系统和软件设计先把用户的需求分成硬件需求和软件需求,在此基础上确定整个系统的结构。在软件设计中,进一步把用户的要求和系统的目标在软件系统的各项功能中表现出来,并分别使之达到能够进行程序设计的程度。(3)编程和单元测试在这个阶段中,软件的设计已经以程序集合或单元程序的形式完成,并包含了验证各个单元程序是否满足式样要求的单元测试。(4)综合测试和系统测试把各个单元程序和程序组结合起来,作为一个完整的系统进行测试。在这种测试中,一方面要发现和排除系统或程序中的错误,更重要的是要确认已完成的系统是否满足用户和设计者的要求。测试后,把这个软件提供给用户。(5)运行和维护运行和维护是软件生存期中需要时间较长的一个阶段,在这一阶段,系统被实际装入并实际应用,那些在软件开发初期没有被发现的错误,或者是用户提出新的要求,都需要在这一阶段加以解决。瀑布模型的问题之一是对软件工程中的反复性质认识不足,另外还有一个缺点是在开发工程的初期,就必须把规格式样确定下来,而在有些情况下,由于用户的