软件工程大题题库

2021-09-06 15:16:09 浏览数 (2)

文章目录

  • 第一章 软件工程概述
    • 1 软件的特点
    • 2 计算机软件与硬件相比有什么特点
    • 3 为什么说软件工程的发展在一定程度上解决了软件危机的各种弊端?
    • 4 简述软件工程的基本原则
    • 5. 软件工程的研究内容
    • 6. 软件工程的三要素
    • 7. 软件工程的目标
    • 8. 软件开发方法
    • 9. 软件工程工具
  • 第二章 软件过程
    • 1 如何理解软件生命周期的内在特征?
    • 2 请对比各软件过程模型
    • 3 在统一软件开发过程模型中,核心工作流程包括哪些?
    • 4 软件过程的定义和基本活动
  • 第三章
    • 1.可行性研究的内容
    • 2. 需求分析的原则与常用方法
    • 3 可行性研究步骤
  • 第十章 面向对象设计
    • 1. 简述面向对象的设计原则
  • 面向对象的名词解释
    • 1.对象:
    • 2.类
    • 3.实例

第一章 软件工程概述

1 软件的特点

  1. 软件是一种逻辑实体,不能够直接观察到物理结构,因此软件具有抽象性。
  2. 关于软件的使用受到极大的社会因素影响
  3. 软件不具有像硬件一样的损耗,但是会老化,需要维护更新。
  4. 软件没有明确的创造过程,对于软件质量的控制必须立足于软件开发的方面。
  5. 软件的开发与运行往往受到计算机系统的限制,必须依赖于特定的计算机系统。
  6. 软件的成本相当昂贵
  7. 软件本身是复杂的。
  8. 迄今为止,软件开发尚未完全摆脱手工的的方式。

2 计算机软件与硬件相比有什么特点

  1. 硬件是一种物理实体,可以直接观察其内部结构,但是软件是一种逻辑实体,具有抽象性,人们不能直接观察计算机软件的物理形态,只能通过观察其运行情况来了解其功能,特性,质量。 (软件具有抽象性,硬件具有物理性)
  2. 人们在分析、设计、开发、测试软件产品的过程中,以及在软件开发的项目管理过程中,渗透了大量的脑力劳动,人类的逻辑思维和智力活动和技术水平是生产软件产品的关键。 (软件开发是依靠人的逻辑和智力以及当前的技术水平的)
  3. 计算机软件不会存在着像计算机硬件一样的磨损和老化情况,也不会受到计算机硬件的老化的环境因素影响,但是计算机软件却存在着退化需要缺陷维护和技术更新的问题。 (软件不会磨损老化,但是要缺陷维护和技术更新)
  4. 软件开发和运行必须依赖特定的计算机系统环境。
  5. 软件具有可复用性

3 为什么说软件工程的发展在一定程度上解决了软件危机的各种弊端?

因为软件工程提出是为了解决软件危机所带来的各种弊端。具体的讲,软件工程的目标主要包括以下几点:

  1. 使软件的开发成本控制在预计的合理范围之内。
  2. 使软件产品的各项功能和性能能够满足用户需求。
  3. 提高软件产品的质量。
  4. 提高软件产品的可靠性。
  5. 使生产出来的软件产品易于移植,维护,升级和使用。
  6. 使软件的开发周期能够控制在预计的合理时间范围内。

4 简述软件工程的基本原则

1.将软件的生命周期划分为多个阶段,对各个阶段实行严格的项目管理。软件开发的生命周期可以划分为可行性研究,需求分析,软件设计,软件实现,软件测试,产品验收和交付手段。 2. 坚持阶段评审制度,以确保软件产品的质量。 3. 实施严格的产品控制,以适应软件规格的变更。在软件开发过程中,用户需求很可能不断发生变化。 4. 采用现代程序设计技术。 5. 开发出来的软件产品应该能够清楚地被审查。 6. 合理的安排开发软件小组人员,并且开发小组人员要小而精。 7. 不断地改进软件工程实践。

5. 软件工程的研究内容

软件工程研究的内容主要包括以下两个部分:

  1. 软件开发技术。主要研究软件开发方法、软件开发过程、软件开发工具和环境。
  2. 软件开发过程管理。主要研究软件工程经济学和软件管理学。

6. 软件工程的三要素

  1. 过程
  2. 方法
  3. 工具

7. 软件工程的目标

  1. 使软件的开发成本控制在预计的合理范围之内。
  2. 使软件产品的各项功能和性能能够满足用户需求。
  3. 提高软件产品的质量。
  4. 提高软件产品的可靠性。
  5. 使生产出来的软件产品易于移植,维护,升级和使用。
  6. 使软件的开发周期能够控制在预计的合理时间范围内。

8. 软件开发方法

  1. 结构化方法
  2. 面向数据结构方法
  3. 面向对象方法
  4. 形式化方法

9. 软件工程工具

需求分析阶段: 面向对象软件设计的Rational Rose 用于数据库设计的Power Designer 更加集成化的工具Enterprise Architect 编码: 功能测试工具WinRunner 性能测试工具LoadRunner 测试管理工具TestDirector Web服务测试工具Qtester 配置管理: Microsoft VSS、CVS和SVN Git Microsoft Project 原型设计: 快速原型构件系统Dreamweaver 在线协作办公系统Microsoft Office Online 在线协作软件设计平台Processon

第二章 软件过程

1 如何理解软件生命周期的内在特征?

软件产品的生命周期是指从设计该产品的构想开始,到软件需求的确定、软件设计、软件实现、产品测试与验收、投入使用以及产品版本的不断更新,到最终该产品被市场淘汰的全过程。软件生命周期这个概念从时间的角度将软件的开发和维护的复杂过程分解为了若干个阶段,每个阶段都完成特定的相对独立的任务。由于每个阶段的任务相对于总任务难度会大幅度降低,在资源分配、时间把握和项目管理上都会比较容易控制。合理地划分软件生命周期的各个阶段,使各个阶段之间既相互区别又相互联系,为每个阶段赋予特定的任务

2 请对比各软件过程模型

瀑布模型 瀑布模型是出现得比较早的软件开发模型。在这种模型中,各阶段之间的组织方式就如同瀑布流水一样,逐级下落。开发人员必须在完成前一阶段的任务后,才能开始下一阶段的工作,各个阶段之间通常是按固定顺序连接的,前一-阶段的输出往往就是后- -阶段的输入。 根据瀑布模型的理论,这种模型具有以下几个特点。

  1. 瀑布模型是一种线性的软件开发模型,回溯性很差。
  2. 瀑布模型是一种基于里程碑的阶段过程模型。
  3. 瀑布模型强调软件开发过程的阶段性,每个阶段完成特定的任务。瀑布模型适用于具有以下特征的软件开发项目:
    1. 在软件开发的过程中,需求不发生或很少发生变化,并且开发人员可以一次性获取到全部需求
    2. 软件开发人员具有丰富的经验,对软件应用领域很熟悉。
    3. 软件项目的风险较低。 瀑布模型不具有完善的风险控制机制。

瀑布模型的优点是阶段性强,易于对项目进行管理,缺点是开发过程不灵活,不能适应环境的变化。如果后续阶段中发现前期工作的错误或需求发生了变更,会造成巨大的损失。


原型模型 原型模型是开发人员为了快速而准确地获取需求经常采用的方法。在初步获取需求后,开发人员会快速地开发一个原型系统。通过对原型系统进行模拟操作,开发人员可以更直观、更全面和更准确地了解用户对待开发系统的各项要求,同时还能挖掘到隐藏的需求。如果开发人员对将采用的开发技术把握不大,也可以采用原型模型进行技术上的尝试,以降低后续开发的风险。原型模型具有以下特点。

  1. 原型模型主要用于挖掘需求,或是进行某种技术或开发方法的可行性研究。
  2. 原型系统通常针对软件 开发系统的子功能模块,所以功能相对不完善。
  3. 由于原型系统功能的局部性以及存在阶段的局部性,在软件开发的实践中,原型模型通常结合其他的软件开发模型共同使用,发挥作用。 原型模型适用于具有以下特征的软件开发项目:
    1. 对现有的软件系统进行产品升级或功能完善。
    2. 开发人员与用户之间交流受限,需求获取困难。
    3. 开发人员对将要采用的技术手段不熟悉或把握性不大。
    4. 具备快速开发的工具。

原型模型的优点是简单和快速,缺点是需要花费一些额外的成本来构造原型,并且不利于创新。


增量模型 增量模型是把待开发的软件系统模块化,将每个模块作为一个增量组件,从而分批次地分析、设计、编码和测试这些增量组件。运用增量模型的软件开发过程是递增式的过程。相对于瀑布模型而言,采用增量模型进行开发,开发人员不需要一次性地把整个软件产品提交给用户,而是可以分批次进行提交。增量模型的最大特点就是将待开发的软件系统模块化和组件化。基于这个特点,增量模型具有以下优点。

  1. 将待开发的软件系统模块化,可以分批次地提交软件产品,使用户可以及时了解软件项目的进展。
  2. 以组件为单位进行开发降低了软件开发的风险。-一个开发周期内的错误不会影响到整个软件系统。
  3. 开发顺序灵活。 增量模型的缺点是要求待开发的软件系统可以被模块化。如果待开发的软件系统很难被模块化,那么将会给增量开发带来很多麻烦。 增量模型适用于具有以下特征的软件开发项目。
    1. 软件产品可以分批次地进行交付。
    2. 待开发的软件系统能够被模块化。
    3. 软件开发人员对应用领域不熟悉,难以一-次性地进行系统开发。
    4. 项目管理人员把握全局的水平较高。

螺旋模型 螺旋模型是一种用于风险较大的大型软件项目开发的过程模型。它把开发过程分为制定计划、风险分析、实施工程和客户评估4种活动。制定计划就是要确定软件系统的目标,了 解各种资源限制,并选定合适的开发方案。风险分析旨在对所选方案进行评价,识别潜在的风险,并制定消除风险的机制。实施工程的活动中渗透了瀑布模型的各个阶段,开发人员对下一版本的软件产品进行开发和验证。客户评估是获取客户意见的重要活动。 螺旋模型适应于风险较大的大型软件项目的开发。它的优点是将风险分析扩展到各个阶段中,大幅度降低了软件开发的风险。但是这种模型的控制和管理较为复杂,可操作性不强,对项目管理人员的要求较高。 基于组件的开发模型 优点:基于组件的开发模型充分的体现了软件复用的思想,降低了开发成本和风险,并加快了产品开发。 缺点:组件筛选完成之后,开发人员需要根据需求设计或使用现有的成熟开发框架复用这些组件,一些无法利用现有组件的地方,则需要进行单独的开发,新开发的组件在经历时间考验之后也会加入到组件库中。 统一软件开发过程模型 统一软件开发过程(Rational Unified Process,RUP)模型是基于UML(统一建模语言)的一种面向对象软件开发模型。它解决了螺旋模型的可操作性问题,采用迭代和增量递进的开发策略,并以用例驱动为特点,集中了多个软件开发模型的优点。 优点: 统一软件开发过程模型是基于迭代思想的软件开发模型。采用迭代的软件工程思想可以多次执行各个工作流程,有利于更好地理解需求、设计出合理的系统架构,并最终交付一系列渐趋完善的成果。可以说,迭代是一次完整地经过所有工作流程的过程 基于统一软件开发过程模型所构造的软件系统,是由软件构件建造而成的。这些软件构件定义了明确的接口,相互连接成整个系统。在构造软件系统时,RUP采用架构优先的策略。软件架构概念包含了系统中最重要的静态结构和动态特征,架构体现了系统的总体设计。架构优先开发的原则是RUP开发过程中至关重要的主题。 缺点:统一软件开发过程模型适用的范围极为广泛,但是对开发人员的素质要求较高。 敏捷过程与极限编程 敏捷方法是一种轻量级的软件工程方法,相对于传统的软件工程方法,它更强调软件开发过程中各种变化的必然性,通过团队成员之间充分的交流与沟通以及合理的机制来有效地响应变化。 极限编程是一种实践性较强的规范化的软件开发方法,它强调用户需求和团队工作。利用极限编程方法进行软件开发实践的工程师,即使在开发周期的末期,也可以很快地响应用户需求。在团队工作中,项目经理、用户以及开发人员都有责任为提高软件产品的质量而努力。XP特别适用于软件需求模糊且容易改变、开发团队人数少于10人、开发地点集中(比如一个办公室)的场合。 极限编程包含了一组相互作用和相互影响的规则和实践。在项目计划阶段,需要建立合理和简洁的用户故事。在设计系统的体系架构时,可以采用CRC(Class,Responsibility,Collaboration)卡促使团队成员共同努力。代码的质量在极限编程项目中非常重要。为了保证代码的质量,可以采用结对编程以及在编码之前构造测试用例等措施。在测试方面,开发人员有责任向用户证明代码的正确性,而不是由用户来查找代码的缺陷。合理的测试用例及较高的测试覆盖率是极限编程项目测试所追求的

3 在统一软件开发过程模型中,核心工作流程包括哪些?

核心工作流程有业务建模,需求分析,分析设计,实现,测试和部署

4 软件过程的定义和基本活动

软件的诞生和生命周期是一个过程,我们总体上称这个过程为软件过程。软件过程是为了开发出软件产品,或者是为了完成软件工程项目而需要完成的有关软件工程的活动,每一项活动又可以分为一系列的工程任务。任何一个软件开发组织,都可以规定自己的软件过程,所有这些过程共同构成了软件过程 过程定义了运用方法的顺序,应该交付的文档资料,为保证软件质量和协调变化所需要采取的管理措施,以及标志软件开发各个阶段任务完成的里程碑。通常,使用生命周期模型简洁地描述软件过程。生命周期模型规定了把生命周期划分为哪些阶段及各个阶段的执行顺序,因此也称为过程模型

第三章

1.可行性研究的内容

  1. 战略可行性
  2. 操作可行性
  3. 计划可行性
  4. 技术可行性
  5. 社会可行性
  6. 市场可行性
  7. 经济可行性
  8. 风险可行性

2. 需求分析的原则与常用方法

原则: 首先,需求分析是一个过程,它应该贯穿于系统的整个生命周期中,而不是仅仅属于软件生命周期早期的一项工作。 其次,需求分析应该是一个迭代的过程。由于市场环境的易变性以及用户本身对于新系统要求的模糊性,需求往往很难一步到位。通常情况下,需求是随着项目的深入而不断变化的。所以需求分析的过程还应该是一个迭代的过程。 此外,为了方便评审和后续的设计,需求的表述应该具体、清晰,并且是可测量的、可实现的。最好能够对需求进行适当的量化。比如:系统的响应时间应该低于0.5秒;系统在同一时刻最多能支持30000个用户。 方法:

  1. 功能分解方法
  2. 结构化分析方法
  3. 信息建模方法
  4. 面向对象的分析方法

3 可行性研究步骤

第十章 面向对象设计

1. 简述面向对象的设计原则

模块化 抽象化 信息隐藏 低耦合 高内聚 复用性

面向对象的名词解释

1.对象:

描述该对象属性的数据以及可以对这些数据施加的操作

2.类

对于具有相同属性和行为的一个多个对象的描述,通常这个描述也包括怎样创建新对象的说明

3.实例

0 人点赞