软件工程复试面试问题总结(二)

可行性研究

为什么要进行可行性研究

用最小的代价、在尽可能短的时间内确定问题是否能被解决。(注意:不是去解决问题)

可行性研究工具有哪些?

  1. 系统流程图:系统流程图是概括的描绘物理系统的传统工具。
  2. 数据流图:描绘信息流和数据从输入移动到输出的过程中经受的变换。
  3. 数据字典:是关于数据的信息的集合,是对数据流图中包含的所有元素的定义的集合。

请介绍一下可行性研究的方法

首先分析问题,试探性的导出问题的各种解,然后进行各种分析和比较,选择和推荐可行的解决方案。采用系统流程图描述物理数据流;运用数据流图并结合数据字典构建系统的逻辑模型。可行性研究的结果产生可行性研究报告。

软件需求分析的任务是什么?有哪些主要步骤?

任务

一、确定对系统的综合要求

(1)功能需求:明确所开发的软件必须具备什么样的功能
(2)性能需求:明确待开发的软件的技术性能指标
(3)环境需求:明确软件运行时所需要的软、硬件的要求
(4)用户界面需求:明确人机交互方式、输入输出数据格式

二、分析系统的数据要求(任何一个软件系统本质上都是信息处理系统,系统必须处理的信息和系统应该产生的信息在很大程度上决定了系统的面貌,对软件设计有深远影响,因此,必须分析系统的数据要求,这是软件需求分析的一个重要任务。)

三、 导出系统的逻辑模型(综合上述两项分析的结果可以导出系统的详细的逻辑模型,通常用数据流图、实体-联系图、状态转换图、数据字典和主要的处理算法描述这个逻辑模型。)

四、 修正系统开发计划(根据在分析过程中获得的对系统的更深入更具体的了解,可以比较准确地估计系统的成本和进度,修正以前制定的开发计划。)

步骤

1.需求获取:从分析当前系统包含的数据开始,系统需求包括用户对软件功能的需求和界面的需求。

2.需求提炼:分析建模:图像化的分析模型包括数据流图,实体关系图,控制流图,状态转换图,用例图,类对象关系及其行为图等。除系统模型外,更有系统关联图,创建用户接口原型,确定需求优先级别等。

3.需求描述:编写统一格式的文档。

4.需求验证:改善需求中的二义性,不一致的问题。

总体设计

总体设计过程分:

系统设计过程确定系统的具体实现方案 

结构设计阶段确定软件结构

详细设计

详细设计的根本目标是确定应该怎样具体地实现所要求的系统,也就是说,经过这个阶段的设计工作,应该得出对目标系统的精确描述,从而在编码阶段可以把这个描述直接翻译成用某种程序设计语言书写的程序

主要任务是过程设计。需要注意,过程设计应该在数据设计、体系结构设计和接口设计之后进行,过程设计的主要内容是设计解题的详细步骤,即算法。

接口设计中,人机界面设计是一个重要组成部分,设计原理是一个迭代过程,反复琢磨逐步求精。

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

软件测试的目的:

(1)测试是为了发现程序中的错误而执行程序的过程;

(2)好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案;

(3)成功的测试是发现了至今为止尚未发现的错误的测试。

从是否关心内部结构来看分为

(1)白盒测试:又称为结构测试或逻辑驱动测试,是一种按照程序内部逻辑结构和编码结构,设计测试数据并完成测试的一种测试方法。

2)黑盒测试:又称为数据驱动测试,把测试对象当做看不见的黑盒,在完全不考虑程序内部结构和处理过程的情况下,测试者仅依据程序功能的需求规范考虑,确定测试用例和推断测试结果的正确性,它是站在使用软件或程序的角度,从输入数据与输出数据的对应关系出发进行的测试。

3)灰盒测试:是一种综合测试法,它将“黑盒”测试与“白盒”测试结合在一起,是基于程序运行时的外部表现又结合内部逻辑结构来设计用例,执行程序并采集路径执行信息和外部用户接口结果的测试技术

软件测试的过程有哪几个步骤?

单元测试:检查各个程序模块是否完成了功能
集成测试:把测试过的模块组装起来,测试软件体系结构
确认测试:检查已经实现的软件是否满足了需求规格说明书的需求
系统测试:把已经确认的软件纳入实际运行环境,与其他系统成分一起测试
验收测试:向用户表明系统已经符合了用户预期标准

什么是软件调试?有哪些调试方法?

软件调试,是在测试成功后进行的工作,用以进一步诊断和改正程序中的潜在错误。

调试由两部分组成:1.确定程序中可疑错误的确切性质和位置2.对程序修改,排除这个错误。

主要的调试方法有:1.强行排错2.回溯法调试3.对分查找法4.归纳法5.演绎法

软件维护的目标是什么,有哪几种维护类型?

目标:纠正在使用过程中暴露出来的错误而进行的改进型维护,适应外部环境的变化而进行的适应性维护,改进原有的软件而进行的完善性维护,以及改进将来的可维护性和可靠性而进行的预防性维护。
类型
(1)纠错性维护:由于前期的测试不可能揭露软件系统中所有潜在的错误,用户在使用软件时仍将会遇到错误,诊断和改正这些错误的过程称为纠错性维护。
(2)适应性维护:由于新的硬件设备不断推出,操作系统和编译系统也不断地升级,为了使软件能适应新的环境而引起的程序修改和扩充活动称为适应性维护。
(3)完善性维护:在软件的正常使用过程中,用户还会不断地提出新的需求。为了满足用户新的需求而增加软件功能的活动称为完善性维护。

简述提高软件质量的主要措施

复审:是在软件生命周期每个阶段结束之前,都采用一定的标准对该段产生的软件配置成分进行严格的正式或非正式的检测。

复查:是检查已有的材料,以断定在软件生命周期某个阶段的工作是否能开始或继续。

管理复审:是向开发组织或使用部门的管理人员提供有关项目的总体状况、成本和进度等方面的情况,以便他们从管理角度对开发工作进行审查。

测试:包括测试计划、测试过程和测试结果3个阶段。

选择一种程序设计语言的主要有哪些依据?

为了使程序容易测试和维护以减少生命周期的总成本,选用的高级语言应该有理想的模块化机制,以及可读性好的控制结构和数据结构

为了便于调试和提高软件可靠性,语言特点应该使编译程序能够尽可能多地发现程序中的错误

为了降低软件开发和维护的成本,选用的语言应该有良好的独立编译机制

上述这些要求是选择语言的理想标准,但是在实际选用语言时不能仅仅考虑理论上的标准,还必须同时考虑实用方面的各种限制。 (1)系统用户的要求 (2)可以使用的编译程序 (3)可以得到的软件工具 (4)系统规模 (5)程序员的知识 (6)软件可移植性要求 (7)软件的应用领域
 

基本的软件设计原理有哪些?

模块化(使复杂问题“分而治之”)
抽象(抓事务本质特征,先不考虑细节)
逐步求精(集中精力先解决主要问题,尽量推迟对细节的考虑)
信息隐藏和局部化(将某些模块的某些过程和数据隐藏起来,其他模块不能访问它)
模块独立性(模块独立性是模块化、抽象、信息隐藏的直接产物)
 

你可能感兴趣的:(复试,笔记,软件工程)