第一篇:软件工程期末复习题
1、软件定义:问题定义、可行性研究,需求分析
2、软件开发:总体设计,详细设计,编码和单元测试,综合测试
3、软件维护:改正性维护、适应性维护、完善性维护、预防性维护
4、软件过程:瀑布模型,快速原型模型,增量模型,螺旋模型,喷泉模型,Rational统一过程,敏捷过程与极限编程,微软过程
5、从3个方面研究每种解决的可行性:技术可行性、经济可行性、操作可行性
6、软件需求分析阶段的工作:可以分为以下4个方面:对问题的识别、分析与综合、编写需求分析文档以及需求分析评审
7、设计原理:模块化、抽象、逐步求精、信息隐藏和局部化、模块独立性(耦合、内聚)
8、决定软件可维护性的因素:可理解性、可测试性、可修改性、可移植性、可重用性
一、假设要求你开发一个软件,该软件的功能是把读入的浮点数开平方,所得到的结果应该精确到小数点后4位。一旦实现并测试完之后,该产品将被抛弃。你打算选用哪些软件生命周期模型?请说明你作出选择的理由。
答:对这个软件的需求很明确,实现开平方功能的算法也很成熟,因此,既无须通过原型来分析需求也无须用原型来验证设计方案。此外,一旦实现并测试完之后,该产品将被抛弃,因此也无须使用有助于提高软件可维护性的增量模型或螺旋模型来开发该软件。综上所述,为了开发这个简单的软件,使用大多数人所熟悉的瀑布模型就可以了
二、假设你被任命为一家软件公司的项目负责人,你的工作是管理该公司已被广泛应用的字处理软件的新版本开发。由于市场竞争激烈,公司规定了严格的完成期限并且已对外公布。你打算采用哪种软件生命周期模型?为什么?。
答:对这个项目的一个重要要求是,严格按照已对外公布了的日期完成产品开发工作,因此,选择生命周期模型时应该着重考虑哪些模型有助于加快产品开发的进度。使用增量模型开发软件时可以并行完成开发工作,因此能够加快开发进度。
这个项目是开发该公司已被广泛应用的字处理软件的新版本,从上述事实至少可以得出3点结论:第一,旧版本相当于一个原型,通过收集用户对旧版本的反映,较容易确定对新版本的需求,没必要再专门建立一个原型系统来分析用户的需求;第二,改公司的软件工程师对字处理软件很熟悉,有开发字处理软件的丰富经验,具有采用增量模型开发新版字处理软件所需要的技术水平;第三,该软件受到广大用户的喜爱,今后很可能还要开发更新的版本,因此,应该把该软件的体系结构设计成开放式的,以利于今后的改进和扩充。综上所述,采用增量模型来完成这个项目比较恰当。
三、考虑一个修改磁带上主文件的系统。文件管理员把修改信息穿孔在卡片上,系统读入穿孔卡片上的信息并按照记录号把修改信息顺序排列好。然后系统逐个读入主文件上的记录,根据记录上的校验码校核每个读入的记录,丢掉出错的记录,按照修改信息修改余下的记录,产生的新文件存储在磁盘上。最后,系统输出一份修改报告供文件管理员参阅。请分层次地画出上述主文件修改系统的数据流图。
答:本系统的数据源点和终点都是文件管理员,他既向系统提供修改信息,又接收系统生成的修改报告。系统功能主要有:接收修改信息,读主文件,校核记录,修改原始记录和产生报告。注意,问题陈述中所描述的“系统安装记录号把修改信息顺序排列好”,是具体的实现方法。在数据流图中无须描述具体实现方法,因此,在本系统的数据流图中不需要包含“排序”功能。类似地,“文件管理员把修改信息穿孔在卡片上,系统读入穿孔卡片上的信息”,是系统接收修改信息的具体方法。在数据流图中无须描绘这个具体的实现方案,因此,在本系统的数据流图中不需要包含“穿卡片”和“读卡片”的功能。
本系统包含的数据存储是:修改信息,主文件和修改后的主文件。图2.6是本系统的基本系统模型,图2.7是功能级数据流图。
四、用Jackson图描绘下述的一列火车的构成:
一列火车最多有两个火车头。只有一个火车头时则位于列车最前面,若还有第二个火车头时,则第二个火车头位于列车最后面。火车头既可能是内燃机车也可能是电气机车。车厢分为硬座车厢、硬卧车厢和软卧车厢等3种。硬座车厢在车内所有车厢的前面部分,软卧车厢在所有车厢的后面部分。此外,在硬卧车厢和软卧车厢之间还有一节餐车。
答:Jackson图善于描绘复杂事物的组成。用Jackson图描绘一列火车的构成的方法至少有两种,一种方法是把火车分为一个车头和两个车头两类,另一种方法是把后车头作为可选的。图3.29给出了描绘一列火车的构成的Jackson图。
解法1(b)解法2
五、为方便出乎,某银行拟开发计算机储蓄系统,储户填写的存款单或取款单由业务员输入系统,如果是存款,系统记录存款人姓名、住址、存款类型、存款日期、利率等信息,并印出存款单给储户,如果是取款,系统计算利息并印出利息清单给储户。写出问题定义并分析系统的可行性。
答:技术上的可行性:开发系统的计算机硬件已经非常普及,完全没有问题;现在的计算机各方面的技术都非常成熟,相对来说开发此系统的技术也要求比较简单,因此在技术方面是可行的;同时银行还必须有一定量的系统管理和维护的专业人员,在这方面可以通过培训原来的技术人员成为新的需要的技术人员,也可以雇用所需这方面的专业技术员;若按计划,在规定的期限内,本系统的开发是可以完成的。
操作可行性:开发的系统操作要非常简单,以便适合大人小孩老人各类人们都可以很方便操作使用。还有,要有经过培训的专业人员在指导,以便当储户有什么疑难问题时能及时得到正确的答复 社会、政策允许的可行性:全部软件购买正版,机器设置通过正当途径购得
六、分析图3.1所示的层次图,确定每个模块的内聚类型。分析图3.2,确定模块之间的耦合类型
图3.1 计算多地点日平均温度的程序
答:从图3.1所示的层次图可以看出,这个程序的功能是计算若干个指定地点的每日平均温度。变量sum保存某地一天之内在指定的时间取样点的温度之和。程序运行时首先初始化变量sum并打开文件,然后读取地点、时间和温度等原始数据,创建用于保存这些数据的温度记录,接下来计算特定地点的日平均温度,存储温度记录。重复调用“读取地点、时间和温度”、“创建新的温度记录”、“计算特定地点的日平均温度”和“存储温度记录”等模块,直至计算出并保存好所有指定地点的日平均温度。最后,打印平均温度并关闭文件。
从上述叙述可知,“计算多个地点的日平均温度”、“读取地点、时间和温度”、“创建新的温度记录”、“计算特定地点的日平均温度”和“存储温度记录”等5个模块,每个都完成一个单一的功能,模块内所有元素都为完成同一个功能服务,彼此结合的十分紧密,因此,这5个模块的内聚类型都是功能内聚。
初看起来,由于初始化变量sum和打开文件这两个操作都是在程序运行的初始阶段完成的,“初始化变量sum和打开文件” 这个模块的内聚类型似乎是时间内聚。但是,初始化变量sum是本程序特有的操作,而打开文件是硬件要求的操作,是任何使用文件的程序都包含的一个操作,并非本程序特有的操作。当可以分配两个或更多个不同级别的内聚类型给一个模块时,规则是分配最低级别的内聚类型给该模块。因此,“初始化变量sum和打开文件”这个模块的内聚类型都是偶然内聚。同理,“关闭文件并打印平均温度” 这个模块的内聚类型也是偶然内聚。
分析图3.2,确定模块之间的耦合类型。
图3.2 一个程序的模块互连图 在图3.2中已经给模块之间的接口编了号码,表3.1描述了模块间的接口。表3.1 模块接口描述
综合分析图3.2和表3.1所提供的信息可知各个模块之间的耦合情况。例如,当模块p调用模块 q时(接口1),它传递一个参数----飞机类型。当模块q把控制返还给模块p时,它传回一个状态标志。
某些模块之间的耦合类型是明显的,例如,模块p和q之间(接口1)、模块r和t之间(接口5)及模块s和u之间(接口6)都是数据耦合,因为它们传递的都是一个简单变量。
如果两个模块中的一个模块给另一个模块传递控制元素,也就是说,如果一个模块明显地控制另一个模块的逻辑,则它们之间具有控制耦合。例如,当给具有逻辑内聚的模块传递功能代码时就传递了控制元素。另一个控制耦合的例子是把控制开关作为一个参数传递。图3.2中模块q调用模块r时(接口3)传递一个功能代码,因此,这两个模块之间是控制耦合。
图3.2右侧文字说明,模块p、t和u更新同一个数据库,因此,它们之间具有公共环境耦合。
当模块p调用模块s时(接口2),如果模块s使用或更新模块p传递给它的零件清单中的所有元素,则模块p和s之间的耦合是数据耦合;但是,如果模块s只访问该清单中的一部分元素,则模块p和s之间的耦合是特征耦合。模块q和s之间(接口4)的耦合情况与此类似。由于图3.2和表3.1中给出的信息尚不足以准确地描述各个模块的功能,所以不能确定这两对模块之间的耦合是数据耦合还是特征耦合。
第二篇:软件工程复习题
第三章 软件工程
一、软件工程基本概念
1.软件是计算机系统中与硬件相互依存的重要部分,包括程序、数据及相关的 文档。其中,程序 是软件开发人员根据用户需求开发的、用程序设计语言描述的、适
合计算机执行的指令(语句)序列。
2.下列叙述中,正确的是(D)。A.软件就是程序清单B.软件就是存放在计算机中的文件 C.软件应包括程序
清单及运行结果D.软件包括程序和文档3.软件按功能可以分为:应用软件、系统软件、支撑软件(或工具软件)
4.软件工程的出现是由于(软件危机的出现)5.开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称做(软件危机)
软件工程概念的出现源自软件危机。所谓软件危机是泛指在计算机软件的开发和维护过程中所遇到的一系列严重问题。总之,可以将软件危机归结为成本、质量、生产率等问题。
6.开发大型软件时,产生困难的根本原因是(大型系统的复杂性)。
7.软件危机出现于20世纪60年代末,为了解决软件危机,人们提出了 软件工程学 的原理来设计软件这就是软件工程诞生的基础。
8.下列不属于软件工程的3个要素的是(D)A.工具B.过程C.方法D.环境 软件工程过程与软件生命周期
9.软件工程过程是把输入转化为输出的一组彼此相关的 资源 和活动。通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为 软件生命周期 10.软件生命周期中所花费用最多的阶段是(软件维护)11.软件开发的结构化生命周期方法将软件生命周期划分成(定义、开发、运行维护)。12.软件生命周期一般包括可行性研究与需求分析、设计、实现、测试、交付使用以及维护等活动。软件工程的目标与原则
13.软件工程的理论和技术性研究的内容主要包括:软件开发技术和软件工程管理。软件开发技术包括:软件开发方法学、开发过程、开发工具和软件工程环境,主体内容是软件开发方法学。软件工程管理包括:软件管理学、软件工程经济学、软件心理学等内容。14.软件工程的理论和技术性研究的内容主要包括软件开发技术和(软件工程管理)
15.软件工程的原则包括抽象、信息隐藏、模块化、局部化、确定性、一致性、完备性和可验证性。
软件开发工具与软件开发环境
16.开发软件时对提高开发人员工作效率至关重要的是(先进的软件开发工具和环境)17.软件开发环境是全面支持软件开发全过程的 软件工具 集合。常用的软件开发方法和技术可以分为三大类:瀑布型、增量型和变换型。瀑布型开发方法将软件生命周期的各项活动规定为按固定顺序连接的若干阶段,强调早期的需求分析和开发的阶段性,强调产品测试;但是不能适应需求的变化。增量型则先建立一个不完全的系统,通过对需求的理解再进一步扩充和完善。例:瀑布模型突出的缺点是不适应(D)的变动 A.算法B.平台C)程序语言D.用户需求
二、结构化分析方法需求分析与需求分析方法
18.在软件生产过程中,需求信息的给出是(软件用户)。19.需求分析中,开发人员要从用户那里了解(软件做什么)。
20.需求分析阶段的任务是确定(软件系统功能)21.需求分析的任务是发现需求、求精、建模和定义需求的过程。需求分析将创建所需的数据模型、功能模型和 控制模型
22.需求分析阶段的工作:需求获取、需求分析、编写需求规格说明书、需求评审
下列工具中属于需求分析常用工具的是(D)。A)PADB)PFDC)N—SD)DFD 结构化分析方法 常用的需求分析方法:
(1)结构化分析方法。主要包括:面向数据流的结构化分析方法(SA),面向数据结构的Jackson方法(JSD)和面向数据结构的结构化数据系统开发方法(DSSD)(2)面向对象的分析方法(OOA)
23.结构化方法的核心和基础是 结构化程序设计理论24.下列不属于结构化分析的常用工具的是(D)。A)数据流图B)数据字典C)判定树D)PAD图 25.在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是(B)
A)可行性分析 B)需求分析C)详细设计D)程序编码
26.数据流图用于抽象描述一个软件的逻辑模型.数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是(A)。
A)控制流B)加工C)数据存储D)源和潭 说明:数据流图中的主要图形元素与说明: 27.在数据流图(DFD)中的箭头代表的是(数据流)28.在数据流图(DFD)中,带有名字的箭头表示(数据的流向)。
29.在结构化分析方法中,用于描述系统中所用到的全部数据和文件的文档称为 数据字典软件需求规格说明书
30.软件需求规格说明书 是需求分析阶段的最后结果 31.下列叙述中,不属于软件需求规格说明书的作用的是(D)
A.便于用户、开发人员进行理解和交流B.反映出用户问题的结构,可以作为软件开发工作的基础和依据C.作为确认测试和验收的依据D.便于开发人员进行需求分析
32.(数据描述)是对软件系统所必须解决的问题做出的详细说明
说明:需求规格说明书一般包括以下内容:概述、数据描述、性能描述、功能描述、参考文献目录等。其中概述从系统角度描述软件的目标和任务;功能描述中描述了为解决用户问题所需要的每一项功能的过程细节;性能描述说明系统应达到的性能和应该满足的限制条件、检测的方法和标准。
三、结构化设计方法软件设计的基本概念
33.在软件开发中,下面任务不属于设计阶段的是(D)A)数据结构设计 B)给出系统模块结构 C)定义模块算法 D)定义需求并建立系统模型
34.软件设计包括软件的结构、数据、接口和过程设计,其中软件的过程设计是指(系统结构部件转换成软件的过程描述)。
说明:结构设计:定义软件系统各主要部件之间的关系;数据设计:将分析时创建的模型转化为数据结构的定义;接口定义:描述软件内部、软件和协作系统之间以及软件与人之间如何通信;过程设计:把系统结构部件转换成软件的过程性描述。
35.下面不属于软件设计原则的是(C)A.抽象 B.模块化C.自底向上D.信息隐藏
36.耦合和内聚是评价模块独立性的两个主要标准,其中内聚 反映了模块内各成分之间的联系,耦合反映了模块间互相连接的紧密程度。
37.内聚性是信息隐蔽和局部化概念的自然扩展,一个模块的内聚性越强,则该模块的模块独立性越 强。一个模块与其它模块的耦合性越强,则它的模块独立性越 弱。38.下列叙述中,正确的是(C)
A.接口复杂的模块,其耦合程度一定低B.耦合程度弱的模块,其内聚程度一定低C.耦合程度弱的模块,其内聚程度一定高D.以上都不对
39.下列选项中,不属于模块间耦合的是(B)。A.数据耦合B.同构耦合C.异构耦D.公用耦合40.软件设计中,有
利于提高模块独立性的一个准则是(C)。
A.低内聚低耦合B.低内聚高耦合C.高内聚低耦合D.高内聚高耦合 概要设计
41.软件的概要 设计又称为总体结构设计,其主要任务是建立软件系统的总体结构,设计数据结构及数据库,编写概要设计文档,概要设计文档评审。
42.在结构化方法中,软件功能分解属于下列软件开发中的阶段是(C)
A.详细设计 B.需求分析 C.总体设计 D.编程调试 43.在概要设计阶段,常用的软件结构设计工具是 结构图(sc),也称程序结构图。生成的结构图中,带有箭头的连线表示(模块之间的调用关系),矩形表示模块。44.在概要设计阶段,一般采用面向数据流的设计方法。数据流的类型有 变换型和事务型。将变换型映射成结构图称为 变换分析。将事务型映射成结构图称为 事务分析。
45.好的软件设计结构通常 顶层 高 扇出,中间扇出较少,底层 高 扇入。46.模块的控制范围包括它本身以及它所有的从属模块,模块的作用范围是指模块内一个判定的作用范围,凡是受到这个判定影响的所有模块都属于这个判定的作用范围。理想的情况是(模块的作用范围应在控制范围内)详细设计
47.详细设计 的任务是为软件结构图中的每一个模块确定实现算法和局部数据结构,用选定的表达工具表示算法和数据结构的细节。确定怎样来具体实现所要求的系统。48.为了避免流程图在描述程序逻辑时的灵活性,提出了用方框图来代替传统的程序流程图,通常也把这种图称为(N—S图)。
49.详细设计的结果基本决定了最终程序的(质量)。50.软件设计模块化的目的是 降低复杂性。51.详细设计的典型语言描述工具是(PDL)
结构化分析(需求阶段)的常用工具有:数据流图(DFD)、数据字典(DD)、判定树和判定表
结构设计(概要设计阶段)工具是:结构图(SC, structure chart)
过程设计(详细设计阶段)常见的工具有:程序流程图、N—S图、PAD图(问题分析图,)和PDL(过程设计语言)
四、软件测试 软件测试的目的52.在软件测试设计中,软件测试的主要目的是(D)。A.实验性运行软件B.证明软件正确 C.找出软件中全部错误D.发现软件错误而执行程序
(注意:不是为了证明软件的正确性,也不是为了找出全部错误)
软件测试的准则
53.下列叙述中.不属于测试的特征的是(C)。A.测试的挑剔性B.完全测试的不可能性C.测试的可靠性D.测试的经济性 软件测试技术与方法
软件测试方法从是否需要执行被测试软件的角度,可以分为 静态测试 和 动态测试 ;按功能划分为 白盒测试 和 黑盒测试。
静态测试包括 代码检查、静态结构分析、代码质量量度 等
白盒测试和黑盒测试都属于 动态测试
白盒测试的主要方法: 逻辑覆盖、基本路径测试 等 黑盒测试的主要方法: 等价类划分法、边界值分析法、错误推测法、因果图 等
54.下列不属于静态测试方法的是(B)。
A.代码检查B.白盒法C.静态结构分析D.代码质量度量
55.在软件工程中,白箱测试法可用于测试程序的内部结构。此方法将程序看做是(A)。
A.路径的集合B.循环的集合C.目标的集台D.地址的集合56.完全不考虑程序的内部结构和内部特征,而只是根据程序功能导出测试用例的测试方法是(A)A.黑箱测试法B.白箱测试法C.错误推测法D.安装测试法
57.黑盒测试是对软件已经实现的功能是否满足需求进行测试和验证,不考虑程序内部的逻辑结构,在软件接口处进行。常用的黑箱测试有等价分类法、边界值分析法、因果图法和错误推测法4种。软件测试的实施
58.软件测试过程一般按4个步骤进行,即单元测试、集成测试、验收测试(确认测试)和系统测试58.检查软件产品是否符合需求定义的过程称为(A)A.确认测试B.集成测试C.验证测试D.验收测试 说明:软件的测试过程一般按4个步骤进行:单元测试:对软件设计的最小单位—模块进行正确性检验的测试,发现模块内部可能存在的错误。由于模块通常不是一个独立的程序,不能单独运行,所以常常需要用到模拟环境。可以采用静态测试和动态测试(以白盒测试为主)。
集成测试:测试和组装模块的过程,主要是发现与接口有关的错误,依据是概要设计说明书。涉及的内容有:软件单元的接口测试、全局数据结构测试、边界条件和非法输入的测试等。通常采用两种方式:非增量方式组装域增量方式组装
验收测试(确认测试):验证软件的功能和性能以及其
他特性是否满足了需求规格说明书中确定的各种需求,以及软件配置是否完全、正确。采用黑盒测试。系统测试:将软件与硬件、用户、数据等组合,在实际运行环境下对整个系统进行集成测试和确认测试。59.软件开发离不开系统环境资源的支持.其中必要的测试数据属于(D)。
A.硬件资源B.通信资源C.支持软件D.辅助资源
软件测试过程中,辅助资源包括测试用例(测试数据)、测试计划、出错统计和最终分析报告等。60.为了提高测试的效率,应该(D)
A.随机选取测试数据B.取一切可能的输入数据作为测试数据 C.在完成编码以后制定软件的测试计划D.集中对付那些错误群集的程序
61.为了便于对照检查,测试用例应由输入数据和预期的 输出结果 两部分组成。
四、程序的调试
软件调试(Debug,即排错)的任务是诊断和改正程序中的错误,与软件测试不同,软件测试是尽可能多地发现软件中的错误。软件测试贯穿整个软件生命期,调试主要在开发阶段。
62.程序调试的基本步骤:错误定位、修改和设计代码以排除错误、进行回归测试防治引进新的错误。63.下列叙述正确的是(D)
A.测试和调试工作必须由程序编制者自己完成B.测试用例和调试用例必须完全一致
C.一个程序经调试改正错误后,一般不必再进行测试 D.上述三种说法都不对 软件调试方法
64.下列不属于软件调试技术的是(B)。
A.强行排错法B.集成测试法C.回溯法D.原因排除法
六、软件维护
65.软件维护活动包括以下几类:校正性维护、适应性维护、完善性维护和预防性维护。
第三篇:软件工程期末小结
第一章 软件工程概述
1.对“引入同一变动付出的代价随时间变化的趋势”:在软件开发的不同阶段进行修改需要付出的代价是很不相同的,在早期引入变动,涉及的面较少,因而代价也比较低;而在开发的中期,软件配置的许多成分已经完成,引入一个变动要对所有已完成的配置成分都做相应的修改,不仅工作量大,而且逻辑上也更复杂,因此付出的代价剧增;在软件“已经完成”是再引入变动,当然需要付出更高的代价。根据美国一些软件公司的统计资料,在后期引入一个变动比在早期引入相同的变动所需付出的代价高2~3个数量级。
2.软件是程序、数据及相关文档的完整集合。程序是能够完成预定功能和性能的可执行的指令序列;数据是使程序能够适当地处理信息的数据结构;文档是开发、使用和维护程序所需要的图文资料。
3.为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。软件工程正是从管理和技术两方面研究如何更好地开发和维护计算机软件的一门新兴学科。
4.软件工程是:(1)把系统的、规范的、可度量的途径尽快应用于软件开发、运行和维护过程,也就是把工程应用于软件;(2)研究(1)中提到的途径。
5.软件工程本质特性(理解,判断):软件工程关注与大型程序的构造,软件工程的中心课题是控制复杂性,软件经常变化,开发软件的效率非常重要,和谐地合作是开发软件的关键,软件必须有效地支持它的用户,在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品。
6.软件工程方法学包含3个要素:方法、工具和过程。
7.软件生命周期由软件定义、软件开发和运行维护3个时期组成。软件定义时期的任务是:确定软件开发的工程必须完成的总目标;确定工程的可行性;导出实现工程目标应该采用的策略及系统必须完成的功能;估计完成该项工程需要的资源和成本,并且制定工程进度表。这个时期的工作通常又称为系统分析,有系统分析员负责完成。软件定义时期通常进一步划分成3个阶段,即问题定义、可行性研究和需求分析。这个时期产生的文档有可行性研究报告、需求规格说明书。开发时期具体设计和实现在前一个时期定义的软件,它通常由下述4个阶段组成:总体设计,详细设计,编码和单元测试,综合测试。其中前两个阶段又称为系统设计,后两个阶段又称为系统实现。这个阶段需要的人员为高级技术人员和初级程序员。产生的文档有:软件结构图,软件说明书,数据库。维护时期的主要任务是使软件持久的满足用户的需要。
8.软件一个生命周期包括:问题定义、可行性研究、需求分析、总体设计、详细设计、编码和单元测试、综合测试。
9.软件维护阶段的关键任务是,通过各种必要的维护活动使系统持久地满足用户的需要。通常有4类维护活动:改正性维护,也就是诊断和改正正在使用过程中发现的软件错误;适应性维护,即修改软件以适应环境的变化;完善性维护,即根据用户的要求改进或扩充软件使它更完善;预防性维护,即修改软件,为将来的维护活动预先做准备。
第二章 可行性研究
1.可行性研究包括以下:技术可行性、经济可行性、操作可行性、法律可行性。
2.系统流程图的概括地描绘物理系统的传统工具。
3.在数据流图中没有任何具体的物理部件,它只是描绘数据在软件中流动和被处理的逻辑过程。数据流图是系统逻辑功能的图形表示。
4.数据字典有下列元素的定义组成:数据流、数据流分量(即数据元素)、数据存储。
5.成本估计技术有:代码行技术、任务分解技术、自动估计成本技术。
第四篇:软件工程-期末总结
软件工程期末总结
课程:姓名:学号:班级:xxxxx xxxxx xxxxxx xxxxxx
目录
1.软件工程学概述.........................................................1 1.1软件危机..........................................................1 1.2软件工程..........................................................1 1.3软件生命周期......................................................2 1.4软件过程..........................................................2 2.可行性研究:............................................................2 2.1可行性研究的任务..................................................2 2.2可行性研究的过程..................................................3 2.3数据流图..........................................................3 3.需求分析...............................................................3 4.形式化说明技术.........................................................4 5.模块设计...............................................................4 1.耦合:............................................................4 2.内聚..............................................................4 6.详细设计...............................................................5 6.1结构程序设计......................................................5 6.2人机界面设计......................................................5 7.软件测试...............................................................5 7.1软件测试的目标....................................................5 7.2软件侧试准则......................................................6 7.3测试方法..........................................................6 8.软件可靠性.............................................................7 8.1软件质量..........................................................7
1.软件工程学概述
1.1软件危机
1.1.1 软件危机的介绍:是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。具体地说,软件危机主要有以下一些典型表现:1.对软件开发成本和进度的估计常常很不准确。2.用户对“已完成的”软件系统不满意的现象经常发生。3.软件产品的质量往往靠不住。4.软件常常是不可维护的。5.软件通常没有适当的文档资料。6.软件成本在计算机系统总成本中所占的比例逐年上升。7.软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。1.1.2产生软件危机的原因:在软件开发和维护的过程中存在这么多严重问题,一方面与软件本身的特点有关,另一方面也和软件开发与维护的方法不正确有关。软件不同于硬件,它是计算机系统中的逻辑部件而不是物理部件。1.1.3消除软件危机的途径:
1、认识到软件是程序、数据及相关文档的完整集合。2.认识到软件是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目;
3、推广使用在实践中总结出来的开发软件的成功的技术和方法,探索更好更有效的技术和方法;
4、开发和使用更好的软件工具。总之,为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。软件工程正是从管理和技术两方面研究如何更好地开发和维护计算机软件的一门新兴学科。
1.2软件工程
1.2.1软件工程的介绍:软件工程是指导计算机软件开发和维护的一门工程学科。定义:采用工程的概念、原理和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它。1.2.2软件工程的基本原理:
1、用分阶段的生命周期计划严格管理
2、坚持进行阶段评审
3、实行严格的产品控制
4、采用现代程序设计技术
5、结果应能清楚地审查
6、开发小组的人员应该少而精
7、承认不断改进软件工程实践的必要性 1.2.3 软件工程方法学:通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称为范型。软件工程方法学包含3个要素方法、工具和过程。目前使用得最广泛的软件工程方法学,分别是传统方法学和面向对象方法学
1.3软件生命周期
软件生命周期由软件定义、软件开发和运行维护3个时期组成,每个时期又进一步划分成若干个阶段。软件定义的3个阶段:问题定义、可行性研究、需求分析;软件开发的四个阶段:总、详(系统设计)、编、综(系统实现)软件生命周期每个阶段:1.问题定义2.可行性研究3.需求分析4.总体设计5.详细设计6.编码和单元测试7.综合测试8.软件维护
1.4软件过程
软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。
1.4瀑布模型瀑布模型
一直是唯一被广泛采用的生命周期模型,有下述的几个特点:1.阶段间具有顺序性和依赖性(1)必须等前一阶段的工作完成之后,才能开始后一阶段的工作(2)前一阶段的输出文档就是后一段的输入文档,因此,前一阶段的输出文档必须正确。2.推迟实现的观点;3.质量保证的观点(1)每个阶段都必须完成规定的文档,没有交出合格的文档就是没有完成该阶段的任务,(2)每个阶段结束前都要对所完成的文档进行评审,以便尽早发现问题改正错误。
优点:可强迫开发人员采用规范的方法;严格地规定每个阶段必须提交的文档;要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。缺点:瀑布模型是由文档驱动的
2.可行性研究: 可行性研究的目的,就是用最小的代价在尽可能短的时间内确定问题是否能够解决。
2.1可行性研究的任务
可行性研究的目的不是解决问题,而是确定问题是否值得去解决。可行性研究实质上是要进行一次大大压缩简化了的系统分析和设计的过程,也就是在较高层次上以较抽象的方式进行的系统分析和设计的过程。在澄清了问题定义之后,分析员应该导出系统的逻辑模型。然后从系统逻辑模型出发,探索若干种可供选择的主要解法(即系统实现方案)。对每种解法都应该仔细研究它的可行性,一般说来,至少应该从下述3个方面研究每种解法的可行性。
1)技术可行性 使用现有的技术能实现这个系统吗?
2)经济可行性 这个系统的经济效益能超过它的开发成本吗? 3)操作可行性 系统的操作方式在这个用户组织内行得通吗?
必要时还应该从法律、社会效益等更广泛的方面研究每种解法的可行性。可行性研究需要的时间长短取决于工程的规模。一般来说,可行性研究的成本只是预期的工程总成本的5%-10%。
2.2可行性研究的过程
步骤:1.复查系统规模和目标2.研究目前正在使用的系统3.导出新系统的高层逻辑模型4.进一步定义问题5.导出和评价供选择的解法6.推荐行动方针7.草拟开发计划8.书写文档提交审查
2.3数据流图
数据流图(DFD)是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。在数据流图中没有任何具体的物理部件,它只是描绘数据在软件中流动和被处理的逻辑过程。数据流图有四种基本符号:
正方形(或立方体)表示数据的源点或终点; 圆角矩形(或圆形)代表变换数据的处理; 开口矩形(或两条平行横线)代表数据存储; 箭头表示数据流,即特地数据的流动方向。
在数据流图中应该描绘所有可能的数据流向,而不应该描绘出现某个数据流的条件。数据存储和数据流都是数据,仅仅所处的状态不同。数据存储是处于静止状态的数据,数据流是处于运动中的数据。数据流图的基本要点是描绘“做什么”,而不是“怎么做”。数据流图的4种成分:源点或终点,处理,数据存储,数据流数据流图的基本目的是利用它作为交流信息的工具,另一个主要用途是作为分析和设计的工具。
3.需求分析
3.1.1确定对系统的综合需求1.功能需求2.性能需求3.可靠性和可用性需求4.出错处理需求5.接口需求6.约束7.逆向需求8.将来可能提出的需求
4.形式化说明技术
PSL/PSA系统的主要优点是它改进了文档质量,能保证文档具有完整性、一致性和无二义性,从而可以减少管理和维护的费用。数据存放在数据库中,便于增加、删除和更改,这也是它的一个优点。
5.模块设计
模块独立的概念是模块化、抽象、信息隐藏和局部化概念的直接结果。开发具有独立功能而且和其他模块之间没有过多的相互作用的模块,就可以做到模块独立。
1.耦合:
耦合是对一个软件结构内不同模块之间互连程度的度量。耦合强弱取决于模块间接口的复杂程度因此,模块间的耦合程度强烈影响系统的可理解性、可测试性、可靠性和可维护性。公共环境耦合的复杂程度随耦合的模块个数而变化,当耦合的模块个数增加时复杂程度显著增加。如果只有两个模块有公共环境,那么这种耦合有下面两种可能。1.一个模块往公共环境送数据,另一个模块从公共环境取数据。这是数据耦合的于一种形式,是比较松散的耦合。2.两个模块都既往公共环境送数据又从里面取数据,这种耦合比较紧密,介于数据耦合和控制耦合之间。如果两个模块共享的数据很多,都通过参数传递可能很不方便,这时可以利用公共环境耦合。最高程度的耦合是内容耦合。如果出现下列情况之一,两个模块间就发生了内容耦合。一个模块访问另一个模块的内部数据。一个模块不通过正常入口而转到另二个模块的内部。两个模块有一部分程序代码重叠(只可能出现在汇编程序中)。一个模块有多个入口(这意味着一个模块有几种功能)。应该坚决避免使用内容耦合。事实上许多高级程序设计语言已经设计成不允许在程序中出现任何形式的内容耦合。总之,耦合是影响软件复杂程度的一个重要因素。应该采取下述设计原则:尽量使用数据耦合,少用控制耦合和特征耦合,限制公共环境耦合的范围,完全不用内容耦合。
2.内聚
内聚标志着一个模块内各个元素彼此结合的紧密程度,它是信息隐藏和局部化概念的自然扩展。简单地说,理想内聚的模块只做一件事情。内聚和耦合是密切相关的,模块内的高内聚往往意味着模块间的松耦合。内聚和耦合都一是进行模块化设计的有力工具,但是实践表明内聚更重要,应该把更多注意力集中到提高模块的内聚程度上。低内聚:偶然内聚、时间内聚、逻辑内聚;中内聚主要有两类:过程内聚和通信内聚;高内聚也有两类:顺序内聚和功能内聚。功能内聚是最高程度的内聚。
6.详细设计
详细设计阶段的根本目标是确定应该怎样具体地实现所要求的系统,也就是说,经过这个阶段的设计工作,应该得出对目标系统的精确描述,从而在编码阶段可以把这个描述直接翻译成用某种程序设计语言书写的程序。详细设计阶段的任务还不是具体地编写程序,而是要设计出程序的“蓝图”,以后程序员将根据这个蓝图写出实际的程序代码。因此,详细设计的结果基本上决定了最终的程序代码的质量。考虑程序代码的质量时必须注意,程序的“读者”有两个,那就是计算机和人。在软件的生命周期中,设计测试方案、诊断程序错误、修改和改进程序等都必须首先读懂程序。实际上对于长期使用的软件系统而言,人读程序的时间可能比写程序的时间还要长得多。因此,衡量程序的质量不仅要看它的逻辑是否正确.性能是否满足要求,更主要的是要看它是否容易阅读和理解。详细设计的目标不仅仅是逻辑上正确地实现每个模块的功能,更重要的是设计出的处理过程应该尽可能简明易懂。结构程序设计技术是实现上述目标的关键技术,因此是详细设计的逻辑基础。
6.1结构程序设计
如果一个程序的代码块仅仅通过顺序,选择和循环这3种基本控制结构进行连接,并且每个代码块只有一个入口和一个出口,则称为程序的结构化。
6.2人机界面设计
人机界面设计是接口设计的一个重要的组成部分。在设计人机界面过程会遇到下面4个问题:系统响应时间,用户帮助设施,出错信息处理和命令交互。用户界面设计过程是一个迭代的过程,首先创建设计模型,再用原型实现这个设计模型,并由用户试用和评估,然后根据用户意见进行修改。为了支持上述迭代过程,各种用于界面设计和原型开发的软件工具产生。它们为简化窗口,菜单,设备交互,出错信息,命令及交互环境的许多其它元素的疮疖提供各种历程或对象。用户界面评估周期如下,完成初步设计之后就创建第一级原型,用户使用并评估该原型,直接向设计者表述对界面的评价,设计中根据用户意见修改设计并实现下一级原型。
7.软件测试
7.1软件测试的目标
1.测试是为了发现程序中的错误而执行程序的过程。2.好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案。3.成功的测试是发现了至今为止尚未发现的错误的测试。从上述规则可以看出,测试的正确定义是“为了发现程序中的错误而执行程序的过程”。这和某些人通常想象的“测试是为了表明程序是正确的”,“成功的
测试是没有发现错误.的测试”等是完全相反的。正确认识测试的目标是十分重要的,测试目标决定了测试方案的设计。如果为了表明程序是正壑耍进行测试,就会设计一些不易暴露错误的测试方案;相反,如果测试是为了发现程序中的错误,就会力求设计出最能暴露错误的测试方案。由于测试的目标是暴露程序中的错误,从心理学角度看,由程序的编写者自己进行测试是不恰当的。因此,在综合测试阶段通常由其他人员组成测试小组来完成测试工作。此外,应该认识到测试决不能证明程序是正确的。即使经过了最严格的测试之后,仍然可能还有没被发现的错误潜藏在程序中。测试只能查找出程序中的错误,不能证明程序中没有错误。关于这个结论下面还要讨论。
7.2软件侧试准则
怎样才能达到软件测试的目标呢?为了能设计出有效的测试方案,软件工程师必须深人理解并正确运用指导软件测试的基本准则。下面讲述主要的测试准则。1.所有测试都应该能追溯到用户需求。2.应该远在测试开始之前就制定出测试计划。3.把Paret原理应用到软件测试中。Pareto原理说明,测试发现的错误中的80%很可是由程序中20%的模块造成的。当然,问题是怎样找出这些可疑的模块并彻底地测试它们。4.应该从“小规模”测试开始,并逐步进行“大规模”测试。通常,首先重点测试单个程序模块,然后把测试重点转向在集成的模块簇中寻找错误,最后在整个系统中寻找错误。5.穷举测试是不可的。所谓穷举测试就是把程序所有可能的执行路径都检查一遍的测试。即使是一个中等规模的程序,其执行旋的排列数也十分庞大,由于受时间、人力以及其他资源的限制,在测试过程中不可能执行每个可能的路径。囚此,测试只能证明程序中有错误,不能证明程序中没有错误。但是,精心地设计测试方案,有可能充分覆盖程序逻辑并使程序达到所要求的可靠性。6.为了达到最佳的测试效果,应该由独立的第三方从事测试工作。所谓“最佳效果”是指有最大可能性发现错误的测试。由于前面已经讲过的原因,开发软件的软件工程师并不是完成全部测试工作的最佳人选(通常他们主要承担模块测试工作)。
7.3测试方法
测试任何产品都有两种方法:如果已经知道了产品应该具有的功能,可以通过测试来检验是否每个功能都能正常使用琅口果知道产品的内部工作过程,可以通过测试来检验产品内部动作是否按照规格说明书的规定正乒进行。前一种方法称为黑盒测试,后一种方法称为白盒测试。对于软件测试而言,黑盒测试法把程序看作一个黑盒子,完全不考虑程序的内部结均和处理过程。也就是说,黑盒测试是在程序接口进行的测试,它只检查程序功能是否能按照规格说明书的规定正常使用,程序否能适当地接收输人数据并产生正确的输出信息,程序运行过程中能否保持外部信息(例如,数据库或文件)的完整性。黑盒测试又称为功能测试。白盒测试法与黑盒测试法相反,它的前提是可以把程序看成装在一个透明的白盒子里,测试者完全知道程序的结构和处理算法。这种方法按测程序中的主要执行通路是否都能按预定要求正确工作。照程序内部的逻辑测试程序,白盒测试又称为结构测试。
8.软件可靠性
可靠性定义:软件可靠性是程序在给定的时间间隔内,按照规格说明书的规定成功的运行的概率可用性定义:软件可用性是程序在给定的时间点,按照规格说明书的规定,成功的运行的概率基本假定 1.在测试之前每1000条指令中大约有5~20个错误 2.失效率正比于剩余的错误数,平均无故障时间MTTF与剩余错误数成反比3.为了简化讨论假设发现的每一个错误都立即正确地改正了。
8.1软件质量
概括地说,软件质量就是“软件与明确地和隐含地定义的需求相一致的程度”。更具体地说,软件质量是软件与明确地叙述的功能和性能需求、文档中明确描述的开发标准以及任何专业开发的软件产品都应该具有的隐含特征相一致的程度。上述定义强调了下述的6个要点: 1.正确性(它按我的需要工作吗?)系统满足规格说明用户目标的程度,即,在预定环境下能正确的完成预期功能的程度。
2.健壮性(对息外环境它能适当地响应吗?)在硬件发生故障、输入的数据无效或操作错误等意外环境下,系统能做出适当的响应程度。
3.效率〔完成预定功能时它需要的计算机资源多吗?)为了完成预定的功能,系统需要的计算资源的多少。
4.完整性(安全性)(它是安全的吗?)对未经授权的人使用软件或数据的企图,系统能够控制(禁止)的程度。
5.可用性(我能使用它吗?)系统在完成预定应该完成的功能时令人满意的程度。6.风险(能按预定计划完成它吗?)按预定的成本和进度把系统开发出来,并且为用户所满意的概率。
第五篇:GIS软件工程期末考试复习题
《软件工程》选择题
一、选择题(在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内,每小题1分)
1.软件产品的开发主要是(D)。
A.复制B.再生产C.拷贝D.研制
2.可行性研究的目的是决定(B)。
A.开发项目B.项目值得开发否C.规划项目D.维护项目
3.SA方法用DFD描述(D)。
A.系统的控制流程B.系统的数据结构
C.系统的基本加工D.系统的功能
4.进行需求分析可使用多种工具,但(C)是不适用的。
A.数据流图(DFD)B.判定表C.PAD图D.数据字典
5.软件设计阶段一般又可分为(B)。
A.逻辑设计与功能设计B.总体设计与详细设计
C.概念设计与物理设计D.模型设计与程序设计
6.软件设计中划分模块的一个准则是(C)。
A.低内聚低耦合B.低内聚高耦合C.高内聚低耦合D.高内聚高耦合7.下列语言中哪个语言是低级语言(D)
A.PASCALB.VISUAL BASICC.C++D.汇编语言
14.软件测试的目的是(B)。
A.试验性运行软件B.发现软件错误
C.证明软件正确D.找出软件中全部错误
8.软件测试中,白盒法是通过分析程序的(B)来设计测试用例的。
A.应用范围B.内部逻辑C.功能D.输入数据
9.黑盒法是根据程序的(C)来设计测试用例的。
A.应用范围B.内部逻辑C.功能D.输入数据
10.把一组具有相似特性的对象组合在一起,称之为(C)。
A、多态性B、继承性C、类D、消息
11.面向对象的主要特征除对象唯一性、封装、继承外,还有(A)
A、多态性B、完整性C、可移植性D、兼容
12.软件生存周期中时间最长的是(D)阶段。
A.需求分析B.概要设计C.测试D.维护
13.与计算机科学的理论研究不同,软件工程是一门(C)学科。
A.理论性B.原理性C.工程性D.心理性
14.从结构化的瀑布模型看,在它的生命周期中的八个阶段中,下面的几个选项中哪个环节
出错,对软件的影响最大(C)。
A、详细设计阶段B、总体设计阶段C、需求分析阶段D、测试和运行阶段
15.软件工程的出现主要是由于(C)。
A.程序设计方法学的影响B.其它工程科学的影响 C.软件危机的出现D.计算机的发展
16.SA方法的基本思想是(C)
A.自底向上逐步抽象B.自底向上逐步分解C自顶向下逐步分解 D.自顶向下逐步抽象
17、为了提高软件测试的效率,应该(D)。
A.随机地选取测试数据
B.取一切可能的输入数据作为测试数据
C.在完成编码以后制定软件的测试计划
D.选择发现错误可能性较大的数据作为测试用例
18.与设计测试用例无关的文档是(A)。
A.项目开发计划B.需求规格说明书C.设计说明书D.源程序
19.使用白箱测试方法时确定测试数据应根据(A)和指定的覆盖标准。
A.程序的内部逻辑B.程序的复杂程度C.使用说明书D.程序的功能
20.软件部件的内部实现与外部可访问性的分离,是指软件的(C)。
A.继承性B.共享性C.封装性D.抽象性
21、软件管理的具体内容包括对(D)
A.开发人员、组织机构B.用户管理、配置管理C.控制、文档资料 D.(A)、(B)和(C)
22.软件需求分析阶段的工作,可以分为四个方面:对问题的识别.分析与综合.编写需求分
析文档以及(B)
A.软件的总结B.需求分析评审C.阶段性报告D.以上答案都不正确
23..数据流图是常用的进行软件需求分析的图形工具,其主要图形元素是(C)
A.输入.输出.外部实体和加工B.变换.加工.数据流和存储
C.加工.数据流.数据文件和源或宿D.变换.数据存储.加工和数据流
24、软件的集成测试工作最好由(D)承担,以提高集成测试的效果。
A.该软件的设计人员B.该软件开发组的负责人
C.该软件的编程人员D.不属于该软件开发组的软件设计人员
25.软件生命周期的最后的一个阶段是(B)
A.书写软件文档B.软件维护C.稳定性测试D.书写详细用户说明McCall提出了表明软件质量的11个质量特性。它们是正确性、可靠性、可使用性、完整性、(D)、可移植性、可复用性、效率、可测试性、互联性。
A.模块独立性、安全性B.文档完备性、灵活性
C.可维护性、安全性D.可维护性、灵活性
27、每个对象可用它自己的一组属性和它可以执行的一组(C)来表征。
A、行为B、功能C、操作D、数据
28、面向对象软件技术的许多强有力的功能和突出的优点,都来源于把类组织成一个层次结构的系统,一个类的上层可以由父类,下层可以有子类,这种层次结构系统的一个重要性质是(B),一个类获得其父亲的全部描述(数据和操作)
A、传递性B、继承性C、复用性D、并行性
29、软件开发在需求分析、设计、编码、测试这几个阶段所需不同层次的技术人员大致是
(C)
A.初级、高级、高级、初级B.中级、中级、高级、中级
C.高级、中高级、初级、中高级D.中级、中高级、中级、初级
30、软件重用的单位是(A)。
A.软件模块 B.性能C.系统D.功能
31、软件开发常使用的两种基本方法是结构化和原型化方法,在实际的应用中,它们之间的关系表现为(B)
A、相互排斥B、相互补充C、独立使用D、交替使用
32、系统分析员是(B)
A、用户中系统的直接使用者B、用户和软件人员的中间人
C、软件的编程人员D、用户和软件人员的领导
33、结构化分析SA方法以数据流图、(D)和加工说明等描述工具,即用直观的图和简洁的语言来描述软系统模型。
A、DFD图B、PAD图C、IPO图D、数据字典
34、在E-R 模型中,包含以下基本成分(C)。
A、数据、对象、实体B、控制、联系、对象
C、实体、关系、属性D、对象、属性、操作
35、结构设计是一种应用最广泛的系统设计方法,是以(A)为基础、自顶向下、逐步求精和模块化的过程。
A、数据流B、数据流图C、数据库D、数据结构
36、初步用户手册在(B)阶段编写。
A.可行性研究 B.需求分析 C.软件总体设计 D.软件详细设计
37、在软件结构化设计中,好的软件结构设计应该力求做到(B)。
A、顶层扇出较少,中间层扇出较高,底层模块低扇入
B、顶层扇出较高,中间层扇出较少,底层模块高扇入
C、顶层扇入较少,中间层扇出较高,底层模块高扇入
D、顶层扇入较少,中间层扇入较高,底层模块低扇入
38、软件详细设计主要采用的方法是(D)。
A、模块设计B、结构化设计C、PDL语言D、结构化程序设计
39、软件测试的手段有多种,通过人工来评审文档或程序,借以发现其中错误,该手段是(D)。
A、黑盒测试B、正确性测试C、动态测试D、静态测试
40、黑盒测试在设计测试用例时,主要需要研究(A)。
A、需求规格说明与概要设计说明B、详细设计说明
C、项目开发计划D、概要设计说明与详细设计说明
41、在整个软件维护阶段所花费的全部工作中,(C)所占比例最大。
A、改正性维护B、适应性维护C、完善性维护D、预防性维护
42.软件需求分析阶段的工作,可以分为以下4个方面:对问题的识别、分析与综合、编写需
求分析文档以及(C)。
A.总结B.阶段性报告C.需求分析评审D.以上答案都不正确
43.在结构化分析方法中,用以表达系统内数据的运动情况的工具有(A)。
A.数据流图B.数据词典C.结构化语言 D.判定表与判定树
44.来辅助软件开发、运行、维护、管理、支持等过程中的活动的软件称为软件开发工具,通常也称为(D)工具。
A.CADB.CAIC.CAMD.CASE
45.螺旋模型综合了(A)的优点,并增加了风险分析。
A.瀑布模型和演化模型B.瀑布模型和喷泉模型
C.演化模型和喷泉模型D.原型和喷泉模型
46.SA方法的分析步骤是首先调查了解当前系统的工作流程,然后(A)。
A.获得当前系统的物理模型,抽象出当前系统的逻辑模型,建立目标系统的逻辑模型
B.获得当前系统的物理模型,抽象出目标系统的逻辑模型,建立目标系统的物理模型
C.获得当前系统的物理模型,建立当前系统的物理模型,抽象出目标系统的逻辑模型
D.获得当前系统的物理模型,建立当前系统的物理模型,建立目标系统的物理模型
47.设计软件结构一般不确定(C)。
A.模块的功能B.模块的接口
C.模块内的局部数据D.模块间的调用关系
48.结构分析方法就是面向(D)自顶向下逐步求精进行需求分析的方法。
A.目标B.功能C.对象D.数据流
49.软件是一种(B)产品。
A.物质B.逻辑C.有形D.消耗
50.瀑布模型把软件生命周期划分为八个阶段:问题的定义、可行性研究、软件需求分析、系统总体设计、详细设计、编码、测试和运行、维护。八个阶段又可归纳为三个大的阶段:计划阶段、开发阶段和(C)。
A、详细计划B、可行性分析C、运行阶段D、测试与排错
51.结构化分析方法是一种预先严格定义需求的方法,它在实施时强调的是分析对象的(B)
A、控制流B、数据流C、程序流D、指令流
52.在软件的可行性研究中,可以从不同的角度对软件的可行性进行研究,其中是从软件的功能可行性角度考虑的是(B)
A、经济可行性B、技术可行性C、操作可行性D、法律可行性
53、下述任务中,不属于软件工程需求分析阶段的是(D)。
A.分析软件系统的数据要求B.确定软件系统的功能需求
C.确定软件系统的性能要求D.确定软件系统的运行平台
54、火车是一种陆上交通工具,火车和陆上交通工具之间的关系是(D)关系。
A.组装B.整体成员C.has aD.一般具体
55.瀑布模型的存在问题是(B)
A.用户容易参与开发B.缺乏灵活性
C.用户与开发者易沟通D.适用可变需求
56.开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称做(C)
A.软件工程B.软件周期
C.软件危机D.软件产生
57.软件测试的目的是(B)。
A. 评价软件的质量B.发现软件的错误
C. 找出软件的所有错误D.证明软件是正确的58.需求分析最终结果是产生(B)。
A.项目开发计划B.需求规格说明书
C.设计说明书D.可行性分析报告
59.快速原型模型的主要特点之一是(D)
A.开发完毕才见到产品B.及早提供全部完整的软件产品
C.开发完毕后才见到工作软件D.及早提供工作软件
60.结构分析方法就是面向(B)自顶向下逐步求精进行需求分析的方法。
A. 目标B.数据流C.功能D.对象
61.研究开发所需要的成本和资源是属于可行性研究中的(B)研究的一方面。
A.技术可行性B.经济可行性C.社会可行性D.法律可行性
62.为了提高软件的可维护性,在编码阶段应注意(D)
A.保存测试用例和数据B.提高模块的独立性
C.文档的副作用D.养成好的程序设计风格
《软件工程》填空题
二、填空题(请把答案写在相应的横线上,每小题1.5分)
1、面向对象开发方法包括 OOA、OOD、OOP 三部分。
2、在单元测试时,需要为被测模块设计 驱动模块和桩模块。
3、软件工程管理的具体内容包括对开发人员、组织机构、用户、文档资料等方面的管理。
4、可行性研究的三个方面是 技术可行性、社会可行性 和__经济可行性__。
5、对象的抽象是___类___。
6、软件工程包括软件开发技术和__软件工程管理__两大部分内容。
7、需求分析阶段产生的最重要的文档是__需求规格说明书_。
8、结构化方法是一种面向数据流的开发方法。由结构化分析、_结构化设计_、结构化程序设计构成。
9、对象之间进行通信的构造叫做_消息_。
10、结构化分析方法的分析策略是__自顶向下逐步求精__。
11、规定功能的软件,在一定程度上能从错误状态自动恢复到正常状态,则称该软件为___容错__软件。
12、软件生存周期包括问题定义、可行性研究,需求分析,总体设计,详细设计,_编码_,测试,维护活动,可以将这些活动以适当方式分配到不同阶段去完成13、___可行性研究___的目的就是用最小的代价在尽可能短的时间内确定该软件项目是否能够开发,是否值得去开发。
软件工程简答题
三、简答题(简要回答下列问题,每小题4分*5=20)
1、什么是软件工程?它目标和内容是什么?
软件工程就是用科学的知识和技术原理来定义,开发,维护软件的一门学科。
软件工程目标:付出较低开发成本;达到要求的功能;取得较好的性能;开发的软件易于移植;只需较低的维护费用;能按时完成开发任务,及时交付使用;开发的软件可靠性高。
软件工程内容:包括开发技术和开发管理两个方面。
2、什么是软件生存周期?它有哪几个活动?
软件生存周期:一个软件从提出开发要求开始直到该软件报废为止的整个时期。
包括:可行性分析和项目开发计划,需求分析,概要设计,详细设计,编码,测试,维护。
3、衡量模块独立性的两个标准是什么?各表示什么含义?
内聚和耦合。
内聚:又称为块内联系,指模块内部各成分之间相互关联的程度,以高内聚为设计目标。耦合:也称块间联系,模块之间相互联系程度的度量,联系越紧密,耦合性越强,独立性越差,以低耦合为设计目标。
4、软件设计的基本原理包括哪些内容?
⑴模块化:模块是软件的组成部分,是具有独立功能且可命名的一段程序,所有模块组成整体,可以满足问题的要求。
⑵抽象:认识复杂现象过程所使用权的工具,只考虑事物本质的共同特性,忽略细节和其它因素。通过抽象确定组成软件的过程实体。
⑶信息隐蔽:将模块实现自身功能的细节与数据“隐蔽”起来。模块间仅交换为完成系统功能所必须的信息。
⑷模块独立性:每个模块只完成系统要求的独立的子功能。
5、软件生命周期划分为哪几个阶段?
软件生命周期分为三个时期八个阶段:
软件定义:问题定义、可行性研究;
软件开发:需求分析、概要设计、详细设计、编码、测试;
软件运行:软件维护
《软件工程》应用题
四、综合应用题(每小题10分*3=30)
1.给你一个GIS软件开发任务由 你负责,你将怎样进行?
2.目前常用的GIS开发、应用平台软件有哪些,各有什么特点
3.合格的GIS软件工程负责人应该有什么样的素质和知识?