软件工程期末复习必备知识点
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、概念解释
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)需求建模