云南大学软件工程考研复试试题(回忆版)

本站小编 免费考研网/2020-05-08

 一、谈谈你对软件工具的理解,你用过什么软件工具

软件工具是指为支持计算机软件的开发、维护、模拟、移植或管理而研制的程序系统它是为专门目的而开发的,在软件工程范围内也就是为实现软件生存期中的各种处理活动(包括管理、开发和维护)的自动化和半自动化面开发的程序系统

开发软件工具的最终目的是为了提高软件生产率和改善软件的质量

软件工具分为六类:模拟工具、开发工具、测试和评估工具、运行和维护工具、性能质量工具和程序设计支持工具

应该是看对象来选择测试工具!比如

功能测试工具WinRunner

性能测试工具LoadRunner

内存泄漏测试工具Purify

单元测试工具Junit

测试管理工具TestDirector 还有东软的bugbase IBM开发的rational

什么是软件的可维护性

软件可维护性即维护人员对该软件进行维护的难易程度具体包括理解、改正、改动和改进该软件的难易程度

决定可维护性的因素

1.系统的大小

2.系统的年龄

3.结构合理性

可维护性的度量

可理解性

可测试性

可修改性

可移植性

软件开发和写程序有什么不同?

软件开发的内容是:需求、设计、编程和测试维护

需求分析

软件需求分析就是回答做什么的问题。它是一个对用户的需求进行去粗取精、去伪存真、正确理解,然后把它用软件工程开发语言(形式功能规约,即需求规格说明书)表达出来的过程。本阶段的基本任务是和用户一起确定要解决的问题,建立软件的逻辑模型,编写需求规格说明书文档并最终得到用户的认可。需求分析的主要方法有结构化分析方法、数据流程图和数据字典等方法。本阶段的工作是根据需求说明书的要求,设计建立相应的软件系统的体系结构,并将整个系统分解成若干个子系统或模块,定义子系统或模块间的接口关系,对各子系统进行具体设计定义,编写软件概要设计和详细设计说明书,数据库或数据结构设计说明书,组装测试计划

设计

软件设计可以分为概要设计和详细设计两个阶段。实际上软件设计的主要任务就是将软件分解成模块是指能实现某个功能的数据和程序说明、可执行程序的程序单元。可以是一个函数、过程、子程序、一段带有程序说明的独立的程序和数据,也可以是可组合、可分解和可更换的功能单元。模块,然后进行模块设计。概要设计就是结构设计,其主要目标就是给出软件的模块结构,用软件结构图表示。详细设计的首要任务就是设计模块的程序流程、算法和数据结构,次要任务就是设计数据库,常用方法还是结构化程序设计方法

您所下载的资料来源于考研资料下载中心

获取更多考研资料,请访问

编码

软件编码是指把软件设计转换成计算机可以接受的程序,即写成以某一程序设计语言表示的"源程序清单"。充分了解软件开发语言、工具的特性和编程风格,有助于开发工具的选择以及保证软件产品的开发质量

测试

软件测试的目的是以较小的代价发现尽可能多的错误。不同的测试方法有不同的测试用例设计方法。两种常用的测试方法是白盒法测试对象是源程序,依据的是程序内部的的逻辑结构来发现软件的编程错误、结构错误和数据错误。结构错误包括逻辑、数据流、初始化等错误。用例设计的关键是以较少的用例覆盖尽可能多的内部程序逻辑结果。白盒法和黑盒法依据的是软件的功能或软件行为描述,发现软件的接口、功能和结构错误。其中接口错误包括内部/外部接口、资源管理、集成化以及系统错误。黑盒法用例设计的关键同样也是以较少的用例覆盖模块输出和输入接口。黑盒法

维护

维护是旨在已完成对软件的研制(分析、设计、编码和测试)工作并交付使用以后,对软件产品所进行的一些软件工程的活动。即根据软件运行的情况,对软件进行适当修改,以适应新的要求,以及纠正运行中发现的错误。编写软件问题报告、软件修改报告什么是软件设计的”高内聚低耦合”

内聚:一个模块内各个元素彼此结合的紧密程度

耦合:一个软件结构内不同模块之间互连程度的度量

对于低耦合,(模块的独立性)

一个完整的系统,模块与模块之间,尽可能的使其独立存在。也就是说,让每个模块尽可能的独立完成某个特定的子功能。模块与模块之间的接口,尽量的少而简单。如果某两个模块间的关系比较复杂的话,最好首先考虑进一步的模块划分。这样有利于修改和组合对于高内聚

在一个模块内,让每个元素之间都尽可能的紧密相连。也就是充分利用每一个元素的功能,各施所能,以最终实现某个功能

case在软件工程中的作用

CASE(Computer Aided(or Assisted)Software Engineering计算机辅助软件工程CASE 的一个基本思想就是提供一组能够自动覆盖软件开发生命周期各个阶段的集成的、减少劳动力的工具CASE已被证明可以加快开发速度提高应用软件生产率并保证应用软件的可靠品质

CASE工具由许多部分组成一般我们按软件开发的不同阶段分为上层CASE和下层CASE产品。上层或前端CASE工具自动进行应用的计划、设计和分析帮助用户定义需求产生需求说明并可完成与应用开发相关的所有计划工作。下层或后端CASE工具自动进行应用系统的编程、测试和维护工作

除非下层CASE和上层CASE工具的供应商提供统一界面否则用户必须编写或重新将所有信息从上层CASE工具转换到下层CASE工具。独立的CASE工具供应商愈来愈希望将它们的工具连接在一起建立统一的界面以减少用户不必要的开发工作

CASE工具带来的好处

计算机专业人员利用计算机使他们的企业提高了效率企业的各个部门通过使用计算机提高了生产率和效率增强了企业的竞争力并使之带来了更多的利润

为什么要进行软件测试?常用的软件测试的方法有哪些?

软件测试的目的:尽可能发现并改正被测试软件中的错误,提高软件的可靠性

软件测试方法主要包括单元测试,集成测试,系统测试,用户测试,回归测试

还有就是自定而下,和自下而上的方法

谈谈你对保证软件质量的技术和方法的认识?

1.作为一个软件质量保证人员需要良好的沟通能力,因为如果没有良好的沟通能力很多问题都没有办法解决,原因很简单,测试人员发现了bug,开发人员或项目经理在怎么不理,但是他们都会想到,万一测试人员发现了bug而自己忽视了,那么就有可能成为软件里的一颗不定时地炸弹,那么作为一个开发人员或项目经理对bug的重视程度肯定相对比较高,至少要看测试人员发现的bug ,但是QA就不一定了,因为QA保证的流程的正确的执行,相关人员就是认为流程不重要,只要我开发的产品没有问题那就没有问题,客户肯定不会关注我的流程,在加上古人的名言“结果说明了一切”,所以没有良好的沟通能力,一些问题将很难去解决,做起来就没有成就感

2.个人感觉比沟通能力更重要的是,坚持原则,在遇到困难的时候,是不是还能坚持原则,在遇到项目组的种种不理不睬的时候,是不是还能坚持原则,在项目组不按照计划走的时候,是不是还能坚持原则

3.个人心态,我工作三年的经历告诉我,如果开发和测试相比,开发是天堂,测试是地狱的话,但如果测试和QA相比的话,那测试就是天堂QA就是地狱,所以心态很重要在三年里我就锻炼成一个非常好的心态,随便怎么说CMMI没用,随便怎么说CMMI就是写文档,随便怎么说QA真烦人,我笑容依然灿烂,从容面对,而且一个QA要有坚定的信念,如果你都不相信过程能给项目开发带来好处,那你还指望谁能相信

提高软件生产率有哪些手段?

1.挑选精干人员(管理计划不好技术搭配不当)

2.提高阶段效率

3.消除人工阶段

4.减少重复劳动

5.建造简单产品

6.重用软部件库(已经存在的软件功能部件

9.什么是软件的可靠性和有用性

可靠性就是指软件运行的稳定性,可用性就是操作的便利性。比如一辆汽车,可靠性好应该归功于机械部分,可用性好则是内饰和中控系统的功劳

什么是软件规格说明?作用是什么?将其形式化的意义是什么?

11.什么是软件重用?实现软件重用的方法有哪些?

软件重用,是指在两次或多次不同的软件开发过程中重复使用相同或相似软件元素的过程。软件元素包括程序代码、测试用例、设计文档、设计过程、需要分析文档甚至领域知识通常,可重用的元素也称作软构件,可重用的软构件越大,重用的粒度越大根据软件开发的不同阶段实现软件重用主要有四个途径

抽象:对重用对象概括提炼从而得到能全面描述侧重算法和数据结构的软件构件的各部分的描述

选择:是对重用对象进行存放,匹配和检索的功能

实例化:对数据类型中对象进行参数的提供转换

集成

12.什么是软件移植?你认为构造一个工具实现windows到Unix的移植有意义吗?难大不?

软件可移植性是指代码可以在不同平台间移植,我们一般说的软件的可移植性指的是软件可移植性,简单的说就是指源代码移到不同的平台下(不同的操作系统,例如从Windows 下移到Linux下)时,需要修改的内容越少,移植性越好。要保证软件可移植性,就是少用

,比如你用C语言编程,你可以使用C语言本身的库,但不要用WindowsAPI函数,因为WindowsAPI函数在Linux下是没有的,如果想移植到Linux平台下,使用WindowsAPI函数的部分代码就要做出修改了
 


相关话题/云南大学