软件工程导论题库

一、名词解释

1.软件开发模型(17、19)
软件开发模型(Software Development Model)是指软件开发全部过程、活动和任务的结构框架。软件开发包括需求、设计、编码和测试等阶段,有时也包括维护阶段。 软件开发模型能清晰、直观地表达软件开发全过程,明确规定了要 完成的主要活动和任务,用来作为软件项目工作的基础。
软件生存周期:一个软件从提出开发要求开始到该软件报废为止的整个时期。一般包括:问题定义—>可行性研究—>需求分析—>总体设计—>详细设计—>编码和单元测试—>综合测试—>软件维护。
软件生命周期模型(18 同4):是指人们为开发更好的软件而归纳总结的软件生命周期的典型实践参考。
软件过程:指为了获得高质量软件产品,在软件工具支持下,由软件人员完成的一系列软件工程活动的框架。
2.CMMI(17)
CMMI 的全称为 Capability Maturity Model Integration,即能力成熟度模型集成。是一个用于评估和改进组织的软件开发和服务过程的成熟度的框架。
CMM是对于软件组织在定义、实施、度量、控制和改善其软件过程的实践中各个发展阶段的描述。分为五级:初始级,可重复级,已定义级,可管理级,优化级。
CASE:计算机辅助软件工程。采取系统化工程方法,利用计算机帮助设汁人员完成设计任务的理论、方法和技术。
3.UML(17)
UML,即统一建模语言(Unified Modeling Language),是一种用于软件开发的标准图形化建模语言。
4.软件生命周期模型(18)
是指人们为开发更好的软件而归纳总结的软件生命周期的典型实践参考。
5.RUP(18)
统一软件开发过程,统一软件过程是一个面向对象且基于网络的程序开发方法论。
6.PDL(18)
PDL 语言也就是所谓的打印语言,也可称为伪码或结构化语言。
7.快速原型模型(19)
快速建立起来的可以在计算机上运行的程序,他所能完成的功能往往是最终产品能完成的功能的一个子集。
8.瀑布模型(21)
瀑布模型是一种传统的软件开发过程模型,通常用于大型软件项目的开发。瀑布模型的原理是将软件开发过程分为不同的阶段,并在每个阶段中完成特定的任务,每个阶段的输出成为下一个阶段的输入。这种顺序流程的方式可以使团队更好地协作,确保每个任务的完成和整个项目的顺利进行。
9.瀑布模型和快速原型模型的区别
瀑布模型和快速原型模型是软件开发中常用的两种模型,它们的区别在于开发过程和应用方式不同。瀑布模型强调计划性和顺序性,而快速原型模型则强调快速迭代和用户反馈。
瀑布模型是一种传统的软件开发模型,开发过程按照一定的顺序进行,包括需求分析、设计、编码、测试和维护等阶段。每个阶段都必须完成后才能进入下一个阶段,因此瀑布模型适用于开发周期较长、开发需求较为明确的项目。缺点是如果需求变更较大,就需要重新回到前面的阶段进行修改,导致时间和成本的浪费。
快速原型模型是一种快速迭代的开发模型,开发过程中会快速制作出一个初步的原型,供用户反馈和改进。这种模型适用于需求不确定或变化频繁的项目,可以快速验证需求,减少开发成本和时间。但是快速原型模型也存在一定的风险,因为开发过程中可能会出现一些技术难题或者设计不合理的方案,导致后续开发的困难。
10.程序设计风格(19)
程序设计风格指一个人编制程序时所表现出来的特点,习惯逻辑思路等。
11.测试用例(21)
是为特定的目的而设计的一组测试输入、执行条件和预期结果的文档。它的作用其实就是为了测试是否满足某个特定需求。测试用例是指导测试工作进行的依据。
12.PAD
问题分析图。二维树形结构的图来表示程序的控制流
13.扇入,扇出,宽度,深度
深度:指结构图控制的层次,即模块的层数。
宽度:指一层中最大的模块个数。
扇出:指一个模块直接下属模块的个数。
扇入:指一个模块直接上属模块的个数。
14.软件测试
是指针对软件系统的功能、性能、安全性、易用性等方面进行验证和检测的过程。

二、简答题:

1.为什么要进行可行性研究?从哪些方面进行可行性研究?(17)
可行性研究目的不是为了解决问题,而是确定问题是否值得解决。
一般来说,至少应该从下属 3 个方面研究每种解法的可行性:
1)技术可行性:现有的技术是否可以实现。
2)经济可行性:系统的经济效益能否超过他的开发成本。
3)操作可行性:系统的操作方式在这个用户组织内是否行得通。

2.以 G.J.Myers 的观点,简述对软件测试的定义软件测试是?(17)
1)为了发现错误而执行程序的过程。
2)一个好的用例能够发现至今尚未发现的错误的测试。
3)一个成功的测试是发现至今尚未发现的错误的测试

黑盒测试和白盒测试有什么区别?
(1)黑盒测试法: 把程序看作一个黑盒子,完全不考虑程序的内部结构和处理过程。它只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当地接收输入数据并产生正确的输出信息,程序运行过程中能否保持外部信息的完整性。黑盒测试又称为功能测试,包含等价类划分法、边界值法、错误推测法、因果图法等。
(2)白盒测试法: 是把程序看成装在一个透明的白盒子里,测试者完全知道程序的结构和处理算法。这种方法按照程序内部的逻辑测试程序,检测程序中的主要执行通路是否都能按预定要求正确工作。白盒测试又称为结构测试,包含逻辑覆盖法和基本路径测试法。

软件测试要经过哪些步骤?这些测试与软件开发各阶段之间有什么关系?
软件测试要经过的步骤是:单元测试→集成测试→确认测试→系统测试。
单元测试对源程序中每一个程序单元进行测试,检查各个模块是否正确实现规定的功能,从而发现模块在编码中或算法中的错误。该阶段涉及编码和详细设计文档。
集成测试是为了检查与设计相关的软件体系结构的有关问题,也就是检查概要设计是否合理有效。
确认测试主要是检查已实现的软件是否满足需求规格说明书中确定了的各种需求。
系统测试是把已确认的软件与其他系统元素(如硬件、其他支持软件、数据、人工等)结合在一起进行测试。以确定软件是否可以支付使用。

3.简述面向对象方法学的4个要点。(17)
(1)面向对象的软件系统是由对象组成的,软件中的任何元素都是对象,复杂的软件对象由比较简单的对象组合而成。
(2)把所有对象都划分成各种对象类,每个对象类都定义了一组数据和一组方法。数据用于表示对象的静态属性,是对象的状态信息。
(3)按照子类(或称为派生类)与父类(或称为基类)的关系,把若干个对象类组成一个层次结构的系统(也称为类等级)。
(4)对象彼此之间仅能通过传递消息互相联系。

面向对象四个特点
(1)抽象是指将对象的共性特征提取出来,忽略其细节差异,从而形成一个更为一般性的概念。
(2)继承子类可以继承父类的属性和方法,同时还可以根据需要进行扩展和重写。通过继承机制,实现类之间的复用,避免重复编写代码,提高开发效率。
(3)封装是指将数据和方法组合成一个单独的单元,使其对外部世界不可见。这可以防止外部世界对数据的不合理访问并确保数据的安全性。
(4)多态是指不同对象对同一消息做出不同的响应。

面向对象:面向对象是一种编程范型,它将现实世界中的事物抽象成对象,并通过对象之间的交互来实现程序的功能。

面向对象三个模型。
对象模型是指对系统中的对象进行抽象和描述,包括对象的属性、行为、关系等。在对象模型中,对象是系统中的核心,通过对象之间的关联和交互来实现系统的功能。
功能模型是指对系统功能进行分解和描述,包括系统的输入、输出、处理流程等。在功能模型中,系统被分解成多个模块或子系统,每个模块或子系统实现一个或多个特定的功能。
动态模型是指对系统中的行为进行建模和描述,包括系统的状态转换、事件响应、消息传递等。在动态模型中,系统被看作是一个有状态的机器,通过状态的变化和事件的触发来实现系统的功能。

面向对象分析五个步骤。
(1)识别对象
(2)识别对象的属性
(3)识别对象的行为
(4)识别对象所属的类
(5)定义主题词

面向对象与面向过程的区别
面向对象和面向过程是两种不同的编程范式。
面向过程编程是一种基于函数的编程方式,它以数据为中心,将问题分解为一系列步骤,每个步骤都是一个函数,通过函数之间的调用来解决问题。
面向对象编程则是一种基于对象的编程方式,它以对象为中心,将问题分解为一组相互关联的对象,每个对象都有自己的属性和方法,通过对象之间的交互来解决问题。

4.在软件定义时期为什么要进行需求分析?软件开发都有哪些基本需求?(18)
需求分析是软件定义时期的最后一个阶段,他的基本任务是准确地回答“系统必须做什么”这个问题,即对目标系统提出完整,准确,清晰,具体的要求。
(1)功能需求
(2)性能需求
(3)可靠性和可用性需求
(4)出错处理需求
(5)接口需求
(6)约束
(7)逆向需求
(8)将来可能提出的要求

5.简述软件项目需求获取的常用方法。(19)
面谈、问卷调查、原型演示、用户故事

6.简述面向数据流的设计方法(18)
面向数据流的设计方法是一种基于数据流的系统设计方法,它强调数据流和数据处理之间的关系。这种设计方法主要是为了解决复杂系统中数据处理过程的问题,包括数据的输入、处理、输出和存储等方面。

7.简述软件重用的概念与内容。(18)
重用也叫再用或复用,是指同一事物不作修改或稍加改动就多次重复使用,广义地说,软件重用可分为以下3个层次:
(1)知识重用(例如,软件工程知识的重用)
(2)方法和标准的重用
(3)软件成分的重用

8.简述模块独立性?用什么指标来衡量模块独立性(19)
模块独立性是指模块内部各部分及模块间的关系的一种衡量标准,由内聚和耦合来度量。

9.简述软件工程中,UML中活动图,状态图,顺序图的用途?(19)
活动图(Activity Diagram)
活动图用于描述系统中的业务流程、操作流程和活动流程。它能够清晰地描述业务流程、流程的顺序和步骤,以及每个步骤之间的关系。活动图通常用于需求分析、流程建模和系统设计,以及系统的实现和测试。
状态图(State Diagram)
状态图用于描述系统中的对象状态以及状态之间的转换。它能够清晰地描述系统中对象的状态变化,以及在不同状态下对象可以执行的操作。状态图通常用于需求分析、系统设计和实现,以及系统的测试。
顺序图(Sequence Diagram)
顺序图用于描述系统中对象之间的交互过程。它能够清晰地描述对象之间的消息交换顺序和步骤,以及每个步骤之间的关系。顺序图通常用于需求分析、系统设计和实现,以及系统的测试。它是一种重要的交互式图形,用于描述对象之间的通信和交互。

10.软件产品的固有特性?(21)
(1)可重复性:软件是可以重复地生产和使用的,每次生成的软件产品都是相同的。
(2)可变性:软件具有可变性,可以根据需要进行修改、扩展、升级等操作。
(3)抽象性:软件是一种抽象的概念,不像硬件产品那样具有物理形态。
(4)复杂性:软件系统由许多模块、组件、接口等构成,具有复杂性。
(5)可靠性:软件系统应该具有较高的可靠性,能够满足用户的需求,不会出现故障或错误。
(6)可维护性:软件系统应该具有较高的可维护性,能够方便地进行修改、维护和升级。
(7)可移植性:软件系统应该具有较高的可移植性,能够在不同的平台和环境中运行。
(8)可测试性:软件系统应该具有较高的可测试性,能够通过测试来验证其正确性和可靠性。
(9)可扩展性:软件系统应该具有较高的可扩展性,能够方便地进行功能扩展和升级。
(10)可用性:软件系统应该具有较高的可用性,能够方便、快捷地为用户提供服务。

11.简述面向对象设计中存在的模块内聚和耦合类型。(21)
内聚:
模块内聚是指模块内部元素之间的联系程度,即模块内部各个元素(如属性、方法等)之间的关联度和相互依赖程度。模块内聚越高,表示模块内部元素之间联系越紧密,模块功能越单一,模块的复用性和可维护性也更好。
模块内聚可以分为以下几种类型:
· 功能内聚:指模块内的所有元素都围绕着一个单一的功能展开,即模块内的所有元素都是为了完成该功能而存在的。
· 顺序内聚:指模块内的所有元素都按照一定的顺序排列,即前一个元素的输出是后一个元素的输入。
· 通信内聚:指模块内的所有元素都是为了完成某个任务而相互通信的。
· 过程内聚:指模块内的所有元素都是为了完成一系列相关的操作而存在的,这些操作通常是按照一定的顺序进行的。
· 时间内聚:指模块内的所有元素都是为了完成某个任务的某个时间段内存在的。
· 逻辑内聚:指模块内的所有元素都是为了完成某个逻辑操作而存在的。
· 偶然内聚:指模块内的所有元素都是因为偶然原因而存在的,它们之间没有任何关联。
耦合
模块耦合是指模块与其他模块之间的联系程度,即模块之间相互依赖的程度。模块耦合越低,表示模块之间的联系越少,模块的独立性越高,模块的复用性和可维护性也更好。
模块耦合可以分为以下几种类型:
· 数据耦合:模块之间通过共享数据来交流信息和完成任务。
· 控制耦合:模块之间通过共享控制信息来交流信息和完成任务。
· 特征耦合:模块之间通过共享特定特征来交流信息和完成任务。
· 公共耦合:模块之间通过共享公共资源来交流信息和完成任务。
· 内容耦合:模块之间通过共享信息内容来交流信息和完成任务。

12.什么是软件生命周期模型?(19)
是指人们为开发更好的软件而归纳总结的软件生命周期的典型实践参考。

13.什么是数据流图,包含哪些元素?(19)
数据流图(Data Flow Diagram,DFD)是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。
包含元素:加工、数据流、数据存储、实体

数据字典:数据字典是关于数据的信息的集合,是对数据流图中包含的所有元素的定义集合。

数据字典和数据流图的关系:数据字典和数据流图共同构成系统的逻辑模型,没有数据字典数据流图就不严格,然而没有数据流图数据字典也难以发挥作用。数据流图和数据字典每个元素精确定义在一起,才能共同构成软件的规格说明。

14.简述软件生命周期的 3 个时期和 8 个阶段的具体内容
三个时期:软件定义、软件开发、软件维护
八个阶段:问题定义、可行性研究、需求分析、概要设计、详细设计、编码和单元测试、综合测试、运行维护

15.什么是项目?项目管理与一般管理的区别是什么?简述软件项目管理的过程?
项目是人们通过努力,运用新的方法,将人力的、材料的和财务的资源组织起来,在给定的费用和时间约束规范内,完成一项独立的、一次性的工作任务,以期达到由数量和质量指标所限定的目标。
(1)项目管理:①充满了不确定因素②跨越部门的界限③有严格的时间期限要求
(2)一般的企业管理:①注重对效率和质量的考核②注重当前执行情况与前期进行比较。
过程:立项,需求调研,项目设计,项目开发,项目的测试,项目试运行,项目验收。

软件项目管理
软件项目管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对成本、人员、进度、质量、风险等进行分析和管理的活动

软件质量
软件与明确地和隐含地定义的需求相一致的程度

16.软件工程

  • 定义:是(1)将系统的、规范的、可定量的方法应用于软件的开发、运行和维护,即将工程化应用到软件上;(2)对(1)中所诉的方法研究。
  • 基本原理:
    (1)用分阶段的生命周期计划严格管理
    (2)坚持进行阶段评审
    (3)实行严格的产品控制
    (4)采用现代程序设计技术
    (5)结果应能清楚的审查
    (6)开发小组的人员应该少而精
    (7)承认不断改进软件工程实践的必要性

17.软件维护
软件维护(software maintenance)是指在软件产品在交付之后,为改正错误、改进性能或其他属性,或者为了适应变化了的环境而对软件产品所进行的修改活动。
(1)校正性维护。在软件交付使用后,一些隐含的错误在某些特定的使用环境下会暴露出来。为了识别和纠正错误,修改软件性能上的缺陷,应进行确定和修改错误的过程,这个过程就称为校正性维护。
(2)适应性维护。为了使应用软件适应计算机硬件、软件环境及数据环境的不断发生的变化而修改软件的过程称为适应性维护。
(3)完善性维护。为增加软件功能、增强软件性能、提高软件运行效率而进行的维护活动称为完善性维护。
(4)预防性维护。为了提高软件的可维护性和可靠性而对软件进行的修改称为预防性维护。
软件可维护性
软件可维护性的定义:软件能够被理解、校正、适应及增强功能的容易程度;
决定因素:
(1)可理解性
(2)可测试性
(3)可修改性
(4)可移植性
(5)可重用性

软件工程导论是考研电子信息专业的一门重要课程。根据引用和引用的内容,软件工程导论的学习可以通过以下步骤进行: 1. 下载和学习资料:可以下载引用中提到的xmind脑图和引用中提到的复试笔记。这些资料可以帮助你整理和理解软件工程导论的知识点。 2. 重点整理知识点:根据引用[1]中提到的xmind脑图,可以将软件工程导论的知识点进行整理和分类。可以根据复试笔记中的内容,将知识点分为不同的模块,如软件工程导论的基本概念、软件开发过程、软件项目管理等。 3. 学习管理信息系统和其他相关课程:引用中提到了管理信息系统和其他课程的知识点。这些课程与软件工程导论有一定的关联,学习这些课程可以帮助你更好地理解和应用软件工程导论的知识。 4. 复习编译原理、计算机网络和数据库:引用中提到了编译原理、计算机网络和数据库的知识点。这些知识点在软件工程导论中也是重要的内容,复习这些知识可以加深对软件工程导论的理解。 总之,软件工程导论的考研学习可以通过下载和学习相关资料,整理知识点,学习相关课程,并复习相关知识点来进行。这样可以帮助你更好地准备考研,掌握软件工程导论的重要知识。<span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* [【考研整理】软件工程导论.zip](https://download.csdn.net/download/weixin_40908748/12424518)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [电子信息专业 - 考研复试笔记分享(软件工程导论-第六版 + 管理信息系统-马慧).rar](https://download.csdn.net/download/weixin_41731475/12454588)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值