【820复试】综合面试之软件工程篇

本文详细阐述了软件工程的核心概念,包括软件工程方法(如经典、生命周期、结构化、面向对象)、软件生命周期各阶段、需求分析、测试策略(如黑盒白盒测试和覆盖)、维护类型以及面向对象编程的特点。还介绍了UML中的图形工具和软件测试的三个阶段。最后,讨论了软件危机的问题和原因。
摘要由CSDN通过智能技术生成

1.什么是软件工程?目前有哪几种主要的软件工程方法?

软件工程是指导计算机软件开发为的学科,采用工程的概念、原理、技术和方法来开发和维护软件,把经过时间考研而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它。

主要有经典软件工程方法/生命周期方法/结构化泛型/面向对象方法。

2.软件的生命周期

①问题定义:弄清要解决什么样地问题,提出系统目标和范围地说明,提交用户审查和确认;
②可行性分析:将开发目标以明确语言描述出来,并以经济、技术、法律等方面进行可行性分析;
③需求分析:弄清用户的全部需求,编写需求规格说明书和初步的用户手册,提交评审;
④开发阶段:设计、实现(完成源程序的编码)、测试;
⑤维护:改正性维护,适应性维护,完善性维护,预防性维护。

3.软件需求分析的任务是什么?

基本任务是深入描述软件的功能和性能、确定软件设计的约束和软件同其他系统元素的接口细节、定义软件的其他有效性需求。解决目标系统的“做什么”的问题。

4.软件工程模型

瀑布模型:将软件生存周期的各项活动规定为固定顺序而连接的若干阶段工作,形如瀑布流水,最终得到软件产品。适用于需求全面稳定的项目。

快速原型模型:快速原型模型开发是顺序进行的,本质是快速的。适用于领域熟悉的项目。

增量模型:增量模型的开发过程是递增式的过程。适用于产品升级或新版本的开发。

螺旋式过程模型:使用原型及其他方法降低风险,可以把它看做是每个阶段前都增加了风险分析过程的快速原型模型。适用于内部开发的大型软件项目。

喷泉模型:是面向对象的软件开发过程,特性是迭代,平滑过渡。

敏捷过程:适用于商业竞争环境下对小型项目提出的有限资源有限开发时间的约束。极限编程是最著名的敏捷过程。

5.简述结构化分析、设计的要点

结构化分析方法适用于数据处理类型软件的需求分析。

要点:自顶向下地开发系统,由整体到各组成部分,由表及里,由抽象到具体,逐步求精。

(1)模块化;(2)自顶向下,逐步求精;(3)上层模块分解为下层模块,有三种不同地结构形式,即顺序结构、选择结构、循环结构。

6.软件测试的目标是什么,有哪几种主要的测试方法?

为了发现程序中的错误而执行程序的过程;好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案;成果的测试是发现了至今为止尚未发现的错误的测试。

有动态测试、静态测试和正确性证明的测试方法。

黑盒测试:只考虑输入和输出,完全不考虑程序内部的逻辑结构和处理过程。依据是开发各阶段的需求规格说明。

白盒测试:将黑盒子打开,研究源代码和程序内部的逻辑结构。

7.白盒测试主要有哪些覆盖

语句覆盖、判定覆盖、条件覆盖、条件组合覆盖、点覆盖、边覆盖、路径覆盖。

8.软件的维护的目标是哪些,有哪几种维护类型

维护的目标是:纠正在使用过程中暴露出来的错误而进行的改进性维护。

分为:纠错性维护、适应性维护、完整性维护。

9.面向对象如何实现模块独立性,其耦合和内聚的含义是什么?

因为对象是由数据及可以对这些数据施加的操作所组成的统一体,而且对象是以数据为中心的,操作围绕对其数据所需做的处理来设置,没有无关的操作。

因此,对象内部各种元素彼此结合得很紧密。
内聚性相当强,由于完成对象所需要的元素(数据和方法)基本上都封装在对象内部,它与外界的联系自然就比较少。

因此,对象之间的耦合通常比较松。总之,面向对象使用对象、类、继承和消息的方法,既使用类和继承等机制,而且对象之间仅能通过传递消息实现彼此通信来实现模块的独立性。

10.面向过程和面向对象软件工程有哪些区别

面向过程软件工程:分析出解决问题所需要的步骤,然后用函数将这些步骤一步一步实现,使用的适合一个一个调用就可以了。
面向过程即把一件时一件工程分解称为一个个小的功能,用一个个函数来实现。

面向对象软件工程:把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描述某个事物在整个解决问题的步骤中的行为。
面向对象是把事情堪称一个个小的对象组成的,或者说一个个小部分组成的,这些对象之间的相互关系,构成了整个项目。 “类”就是对象的抽象/概括。

11.对象、类、消息、方法的基本概念

对象:要进行研究的任何事物,可以代表具体的事物,还可以表示抽象的规则、计划或事件;

类:具有相同或相似性质的对象的抽象。对象的抽象是类,类的具体化就是对象,也可以说类的实例就是对象。
类具有属性,一般用数据结构来描述类的属性。
类具有操作,用操作名和实现该操作的方法来描述。

消息:对象之间进行通信的结构。消息包含接收对象取执行某种操作的信息。
发送一条消息至少要包括说明接收消息的对象名、发送给该对象的消息名。 还有要对参数加以说明,参数可以是认识消息的对象所指导的变量名,或者是所有对象都知道的全局对象名。

方法:类中操作的实现过程,一个方法有方法名、参数、方法体。

12.面向对象分析设计的三个模型

对象模型:描述系统的静态结构,包括类和对象,它们的属性和操作,以及它们之间的关系。构造对象模型的目的在于找出与应用程序密切相关的概念。

动态模型:着重于系统的控制逻辑,考察在任何适合对象及其关系的改变,描述这些设计时序和改变的状态。
包括状态图和事件跟踪图。
状态图是一个状态和事件的网络,描述每一类对象的动态行为。
事件跟踪图是说明系统执行过程中的一个特定场景,也叫做脚本,是完成系统某个功能的一个事件序列。
脚本通常起始于一个系统外部的输入事件,结束于一个系统外部的输出事件。

功能模型:着重于系统内部数据的传送和处理。
功能模型由多个数据流图组成,指明从外部输出,通过操作和内部存储,直到外部输出的整个数据流的情况。

13.UML里面有哪些图

九种:案例图类图、对象图、构件图、部署图、活动图、协作图、状态图、序列图

14.软件系统的三个测试阶段

开发测试:在开发过程中对系统进行测试以发现bug和缺陷;

发布测试:在系统发布给用户之前,单独的测试团队测试系统的完整版本;

用户测试:其中系统的用户或前在用户在自己的环境中测试系统。

15.数据流图是什么

数据流图是描述系统中数据流程的一种图形工作,标志了一个系统的逻辑输入和逻辑输出,以及把逻辑输入转换成逻辑输出所需的加工处理。

16.软件危机是什么

是指软件在开发和维护的过程中出现的一系列严重问题。
一是如何开发软件,如何满足对软件日益增长的需求;二是如何维护数量不限已经膨胀的已有软件。

其表现:
开放成本和进度估计不准确;
用户对已开发出来的软件不满意;
软件没有合适的文档自立;
软件的成本在总成本中逐年上升;
软件产品的质量不可靠;
软件不可维护。

出现的原因:
软件生产自身存在的复杂虚;与软件开发过程中使用的方法和技术有关。

  • 20
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值