一、概念解释
1.软件:是程序,数据结构和文档的集合,用于实现系统所需要的逻辑方法、过程和控制。
2.软件危机:是软件开发和维护过程中所遇到的一系列严重的问题。
3.软件周期:是从软件从定义,开发,运行维护到废弃时经历的一个漫长的时期。
4.需求分析:是发现,求精,建模,规格说明和复审的过程。
5,概要设计:通过仔细分析需求规格说明,确定完成系统的模块以及各模块之间的关系,设计出完成预定功能的模块(软件结构),并建立借口。
详细设计:设计完成系统的模块内的算法和数据结构。
6.模块化:将软件划分成可以独立命名的且可以独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能来满足用户的需求。
信息隐藏:一个模块内包含的信息对于一个不需要这些的模块来说是不可访问的。
7.耦合:是一个软件结构内的每个模块互连程度的度量。
内聚:一个模块间各个元素之间的紧密的程度。
8.类:是对有相同数据和相同操作的一组相似对象的抽象描述。
对象:是客观世界中事物的抽象表示,其属性(状态、数据)和相关操作(行为、方法或服务)的封装体;对象之间靠消息传递相互作用。
9.消息:是对象之间相互通信的机制,是某个对象执行其操作的规格说明。
消息传递:一个对象向另一个对象发送消息时,接收消息的对象经过解释、给予响应,这种对象之间进行通信的机制成为消息传递。
10.继承:继承是子类(新类)自动的共享父类(已有类)中定义的数据的操作的机制。
子类可以继承父类的属性和操作;同时子类可以定义自己独有的属性和操作。
子类复用父类的定义,而不修改父类。
继承具有传递性。
多态性:在一个类层次中,不同对象对相同消息做出不同的响应。
11.软件重用:是指同一事物不做修改或者稍加修改就可多次重复使用,软件重用是降低软件开发成本,提高软件开发生产率和质量的有效途径。
12.软件测试:根据软件开发的规格说明和程序的内部结构而设计的一个测试用例,利用这些测试用例去运行程序以发现设计和程序错误的过程。
13.黑盒测试: 在程序接口进行的测试,它只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当地接收输入数据产生正确
的输出信息,并且保持外部信息(如,数据库或文件)的完整性。
白盒测试: 按照程序内部的逻辑测试程序,检查程序中的每条通路是否都能按预定要求正确工作。
14.单元测试:集中对源代码实现的每一程序模块进行测试。
继承测试:把模块装配在一起形成软件包,在装配的同时进行测试。
确认测试:对软件满足所用功能的,行为的和性能的需求的最终保证的测试,其标准是在需求分析阶段所确定下来的。
15.驱动模块:是一个主程序,它接收测试数据,把这些数据传送给被测试的模块,并且印出响应的结构。
存根模块:它使用被他代替的模块的接口,可能做最少量的数据操作,印出对入口的检验或操作的结构,并且把控制归还给调用它的模块。
二、简答题
1.什么是软件危机?其产生的原因是什么?如何消除软件危机?
答:计算机软件开发和维护过程中遇到的一系列严重问题。
原因:客观原因:①软件是计算机系统中的逻辑部件,缺乏“可见性”, 管理和控制软件开发过程相当困难
②软件在使用期间不存在机械磨损和老化问题,一旦 发现错误,通常意味着修改原来的设计,因此软件 难维护
③软件规模庞大,程序复杂性增加,需多人分工合作(不能保证每个人完成的工作合在一起构成一个高质量的大型软件系统)
主观原因:① 开发无计划
② 忽视软件需求分析的重要性
③ 轻视软件维护
④ 无过硬评测手段
⑤ 缺乏有力的开发方法和工具
⑥ 不重视开发文档
消除软件危机的途径:1)使用先进的开发技术(方法和工具)
l 、推广使用成功的技术和方法,并且研究探索更好更有效的技术和方法。
2、开发和使用更好的软件工具(软件工程支撑环境)
(2)对软件开发过程和产品进行严格的管理
1、软件开发应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目
2.简述软件工程的方法学包括的三要素及其含义。
①方法:完成软件开发各项任务的技术方法
②工具:为方法的高效运用,而提供的自动或半自动 的软件支撑环境
③过程:为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤
3.什么是软件生命周期?简述软件生命周期的组成阶段及各阶段基本任务?
答:一个软件从定义、开发、运行维护 ,直到最终被 废弃要经历一个漫长的时期,这个时期称为软件生命周期。
(1)问题定义阶段:
通过调研,提出关于问题的性质、工程目标和
工程规模的书面报告,并且需要得到客户的确认。
●回答“要解决的问题是什么?”
●文档:问题定义报告
(2)可行性研究阶段:
用最小的代价在尽可能短的时间内确定问题
是否能够解决。
① 进一步了解用户需求
② 提出若干种可能的系统实现方案
③ 分析每种方案的技术、经济、社会可行性
④ 最终确定这项工程的可行性
●回答“是否有行得通的解决方法?”
●文档:可行性研究报告,项目开发计划
(3)需求分析阶段:
对目标系统提出完整、准确、清晰、具体的要求。
① 得出经过用户确认的系统需求
② 用正式文档(需求规格说明)准确表达系统需求
回答 “系统必须做什么?”
文档:需求分析规格说明书
(4)概要设计阶段:
①设计系统实现方案
②设计程序的体系结构,即确定程序由哪些模块
组成以及模块间的关系。
概括地回答“怎样实现目标系统?”
文档:概要设计说明书
(5)详细设计阶段:设计实现每个模块功能所需要的算
法和数据结构
回答“应该怎样具体地实现这个系统?”
文档:详细设计说明书
(6)编码和单元测试:
写出正确的、易理解、易维护的程序模块代码;
测试编写出的每一个模块
文档:经过测试的程序源代码、
程序开发记录(模块开发卷宗)
(7)综合测试阶段:通过各种类型的测试(及相应的调试)
使软件达到预定的要求。
①集成测试(组装测试)。
②验收测试
测试文档:
测试计划、详细测试方案、实际测试结果
(8)软件维护阶段:
通过各种必要的维护活动使系统持久地满足
用户的需要。
5.什么是软件生命周期模型?典型的软件生命周期模型有哪些?
答:描述了把软件生命周期划分成哪些阶段及各个阶段的执行顺序。
瀑布模型,快速原型模型,增量模型,螺旋模型,喷泉模型。
6.什么是需求分析?简述需求分析的基本任务?
答:需求分析是发现、求精、建模、规格说明、和复审的过程。
1)准确了解用户情况和需要解决的问题
2)对需求反复求精和细化
3)需求建模
4)编制需求规格说明书
5)进行需求分析的评审
7.什么是模块独立性?如何度量和设计模块独立性?
答:模块独立性是指模块内部各部分及模块之间关系的一种度量标准。
其度量标准:模块之间耦合尽可能弱,每个模块的内聚尽肯能强。
8.为什么说只有合理划分模块才能保证软件开发成本达到最低?
答:当模块数目增加时每个模块的规模将减小,开发单个模块需要的成本减少了,但随着模块数目增加,设计模块间接口所需的工作量也将增加,根据这两个因素
知每个程序都相应的有一个适当多的模块是软件开发成本最低。
9.面向数据流方法进行概要设计的步骤是什么?
答:1)根据数据流图决定问题类型 2)根据问题类型,进行变换分析或事务分析,导出系统结构图 3)改进系统结构图
10.简述变换分析设计方法的步骤?
答:1)分析具有变换特征的数据流图,确定输入流和输出流的边界,孤立出变换中心
2)完成一级分解,设计软件结构的顶层和第二层
3)完成二级分解,把数据流图中每个处理映射成软件结构中一个适当模块
4)精化软件结构 5)简要描述每个模块
11,什么是耦合性?软件设计中应该如何设计耦合性?
答:(1)耦合表示一个软件结构内部不同模块之间的互连程度。
(2)耦合应该尽量采取如下准则:尽量数据耦合,少用控制耦合和特征耦合,
限制使用公共环境耦合的范围,完全不用内容耦合。
12,11,什么是内聚性?软件设计中应该如何设计内聚性?
答:(1)内聚标志着一个软件模块内部各个元素之间的结合的紧密程度。
(2)设计时候应该力求做到高内聚,通常中等程度的内聚也是可以采用的,而且效果和高内聚相差不多。
13,结构化程序的基本特征是什么?可以用什么工具进行描述?
答:(1) 一个程序的代码块仅仅通过顺序、选择和循环三种控制结构进行连接;并且每个代码块只有一个入口和一个出口
(2)图形:程序流程图,N-S图,PAD图 表格:判定树,判定表 语言:PDL
14, 简述对象和类的概念,二者的关系如何?
答:(1)对象是客观世界中事物的抽象表示;是其属性(状态、数据)和相关操作(行为、方法或服务)的封装体;对象之间
靠消息传递相互作用。
类是具有相同属性和操作和一组相似对象的抽象描述。
(2)类是对象的模板,对象是类的实例。
15,三种面向对象模型及其主要功能是什么?
答:三种面向模型分别是:对象模型、动态模型、功能模型
对象模型:是对模拟客观世界实体的对象以及对象彼此之间的关系的映射,描述了系统的静态结构。
动态模型:它规定了对象模型中的对象的合法变化序列。
功能模型:表示变化的系统的功能性质,它指明系统应该做什么,直接的反映了用户对目标系统的系统。
16,简述面向对象分析的简单步骤?
答:(1),确定类和对象 (2)识别结构 (3)划分主题 (4)定义属性 (5)建立动态模型 (6)建立功能模型 (7)定义服务
17,从面向对象的分析过程出发,讨论对象模型、动态模型、功能模型三者之间的关系?
答:三种模型分别从三个不同的侧面描述了所要开发的系统,这三种模型相互补充,相互配合,使得我们队系统的认识更加
全面,功能模型指明了对象做什么,动态模型规定了什么时候做,对象模型则定义了做事情的实体,对象模型是最基本的
也是最重要的,为其它模型奠定了基础。
18、简述继承的含义,并且通过一个具体例子加以说明。
答:①继承是子类(新类)自动地共享父类(已有类)中定义的数据和操作的机制。
②子类可继承父类的属性和操作;同时子类可定义自己独有的属性和操作。
③子类复用父类的定义,而不修改父类。
④继承具有传递性
23,软件测试过程如何体现"测试应该从小规模开始,并逐步进行大规模测试"的测试准则?
答:通常,首先重点测试单个程序模块,然后把测试重点转移到在集成的模块簇中寻找错误,最后在整个系统中寻找错误。
19.什么叫白盒测试?其中的逻辑覆盖包含哪些覆盖类型?
答:按照程序内部的逻辑测试程序,检查程序中的每条通路是否都能按预定要求正确工作。
包含(1)语句覆盖 (2)判定覆盖 (3)条件覆盖 (4)判定/条件覆盖 (5)条件组合覆盖
20.什么是黑盒测试?属于黑盒测试的主要方法有哪些?
答:对程序接口进行的测试,检查程序功能是否能按照规格说明书的规定正常使用。
包含(1)等价类划分 (2)边界值分析 (3)错误推测
21.什么是等价类划分法?该方法的设计用例的主要步骤是什么?
答:定义:把程序的可能的输入数据(或输出数据)划分成若干部分(等价类),然后从每一部分中选取少数有代表性的数据作为测试用例。
步骤:(1)确定等价类(包括合理等价类和不合理等价类)并顺序编号;
(2)确定测试用例:一个测试用例可以覆盖多个合理等价类;一个测试用例只能覆盖一个不合理等价类
22.软件测试要经过哪几个阶段?各阶段与前期的哪些文档有关?
答:阶段:(1)单元测试(详细设计说明书)(2)集成测试(概要设计说明书)(3)确认测试(需求规格说明书)(4)系统测试
23,软件测试过程如何体现"测试应该从小规模开始,并逐步进行大规模测试"的测试准则?
答:通常,首先重点测试单个程序模块,然后把测试重点转移到在集成的模块簇中寻找错误,最后在整个系统中寻找错误。
24.从自己理解和认识角度出发,谈谈“软件工程”这门学科(1)包含哪些内容?(2)解决什么问题
答:软件工程包含技术和管理两个方面的内容,是管理与技术的紧密结合。
管理:所谓管理就是通过计划、组织和控制等一系列活动,合理的配置和使用各种资源以达到既定目标的过程。
技术:通常把软件生命周期全过程中使用的一整套技术的集合成为方法学,也成为范型。
解决了什么问题:
25.软件工程有七条基本原理。谈谈对部分原理的认识?
答:(1)用分阶段的软件生命周期计划严格管理(认识:把软件生命周期划分成若干个阶段,并相应地制定出切实可行的计划,然后严格按照计划对软件的开发与维护工作进行管理。)
(2)坚持进行阶段评审:(认识:错误发现与改正得越晚,所付出的代价也越高。)
(3)实行严格的产品控制(软件中某一处的改变会影响到相关部分,甚至可能会影响到整个开发过程)
(4)采用新的软件设计技术
(5)结果应能清楚地审查(根据软件开发项目的总目标及完成期限,规定开发组织的责任和产品标准,从而使得结果能够清楚地审查。)
(6)开发人员少而精
(7)承认不断改进软件工程实践的必要性(不仅要积极主动的采纳新的软件技术,还要不断总结经验,评价新的软件技术的效果,用来指明必须着重开发的软件工具和应该优先研究的技术)
本文来源:https://www.2haoxitong.net/k/doc/c6208b1710a6f524ccbf85df.html
文档为doc格式