软件工程复试面试问题总结(一)_东华大学软件工程复试问题重要程度汇总-程序员宅基地

技术标签: 复试  笔记  软件工程  

软件=程序+数据+系列文档

软件危机是什么?

软件危机是指软件在开发维护的过程中出现的一系列严重的问题。
两个问题:

一是如何开发软件,如何满足对软件日益增长的需求。

二是如何维护数量不限已经膨胀的已有软件

软件危机的表现


软件的开发成本和进度估计不准确。
用户对已经开发出来的软件不满意。
软件没有合适的文档资料。
软件的成本在公司的总成本中逐年上升。
软件产品的质量常常不可靠。
软件常常是不可维护的。

软件危机出现的原因


一是指软件生产自身存在的复杂性。
二是指与软件开发过程中使用的方法和技术有关

软件工程?

采用工程概念原理技术方法开发维护软件,把经过时间考验而验证正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济的开发处高质量的软件并有效地维护它

软工方法学三要素是什么?

软工方法学三要素:

1方法(指的是开发方法)

2、工具(支持方法的工具)

3过程(管理过程)

软件的生命周期?

软件生命周期又称为软件生存周期或系统开发生命周期,是软件的产生直到报废的生命周期。软件生存周期包括:

(1)问题定义:弄清"用户需要计算机解决什么样的问题”,提出"系统目标和范围的说明“,提交用户审查和确认。

(2)可行性分析:把待开发系统的目标以明确的语言描述出来,并从经济、技术、法律等多个方面进行可行性分析。

(3)需求分析:弄清用户对软件系统的全部需求,编写需求规格说明书和初步的用户手册,提交评审。

(4)开发阶段设计、实现(完成源程序的编码)、测试

(5)维护:改正性维护(由于开发测试的不彻底、不完全),适应性维护(适应环境变化),完善性维护(使用过程中提出的一些建设性意见),预防性维护(改善软件系统的可维护性和可靠性)。

软件开发模型有哪些?

<**瀑布模型**>

思想:软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落

优点:1.奠定了软件工程方法的基础;

      2.流水依赖,便于分工协作;

      3.推迟物理实现,易于修改文档,有复审质量保证;

不足:与用户见面晚,成功率低,一般为25%

适用范围:适用与系统要求明确的系统,各种应用软件的开发均可适用

<**快速原型模型**>

思想:软件开发人员以用户需求出发快速开发一个原型,以便向用户展示软件系统应有的部分或全部的功能和性能,在征求用户对原型的评价意见后,进一步使需求精确化、完全化,并据此改进、完善原型,如此迭代,直到软件开发人员和用户都确认软件系统的需求并达到一致的理解位置

优点:比瀑布模型更符合人们认识事物的过程和规律,使一种较适用的开发框架

适用:适用于那些不能预先确切定义需求的软件系统的开发

<**渐增模型**>

次开发一个模块,当这个模块客户满意了之后,才进行下一个模块的开发。所以产品是以一次一个构建的方式开发的

<**螺旋模型**>

瀑布模型原型模型结合

四部分组成:制定计划、风险分析、实施开发、客户评估

适用:需要具有相当丰富的风险评估经验和专门知识,价格昂贵,适用大型软件的开发

<**喷泉模型**>

面向对象的软件开发方法为基础,以用户需求为动力,以对象来驱动的模型

<**V模型**>

通过开发测试同时进行的方式来缩短开发周期

极限编程是什么?

极限编程(简称XP)是由KentBeck在1996年提出的,是一软件工程方法学,是敏捷软件开发中可能是最富有成效的几种方法学之一。

“Extreme”(极限)是指,对比传统的项目开发方式,XP强调把它列出的每个方法和思想做到极限、做到最好

极限编程以五种基本方式改进软件项目; 沟通,简单,反馈,尊重和勇气。极端程序员经常与他们的客户和程序员沟通。他们保持设计简洁。他们通过从第一天开始测试他们的软件获得反馈。他们尽早将系统交付给客户,并按照建议实施变更。每一个小小的成功都会加深对每个团队成员独特贡献的尊重。有了这个基础,Extreme程序员就能够勇敢地响应不断变化的需求和技术。

敏捷开发是什么?

敏捷开发(scrum)是一种软件开发的流程,强调快速反应快速迭代价值驱动

敏捷开发用户的需求进化为核心采用迭代、循序渐进的方法进行软件开发。

优点:

  1. 敏捷开发的高适应性,以人为本的特性。
  2. 更加的灵活并且更加充分的利用了每个开发者的优势,调动了每个人的工作热情。

缺点:

  1. 由于其项目周期很长,所以很难保证开发的人员不更换,而没有文档就会造成在交接的过程中出现很大的困难。

内聚和耦合的含义

(1)内聚指块内联系,即模块的功能强度的度量;

    在模块划分时,要遵循“一个模块,一个功能”的原则,尽可能模块达到功能内聚。

(2)耦合:指块间联系,即软件系统结构中各模块间相互联系的紧密程度的度量。

若模块间存在耦合,应尽量使用数据耦合,少用控制耦合,慎用或者有控制地使用公共耦合,并限制公共耦合的范围,尽量避免内容耦合。

高内聚低耦合的系统具有更好的重用性、维护性、扩展性,可以更高效地完成系统的维护开发。

黑盒测试和白盒测试

1、黑盒测试把程序看作一个黑盒子,完全不考虑程序的内部逻辑结构和内部特性。它只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当地接收输入数据并产生正确的输出信息,程序运行过程中能否保持外部信息的完整性。黑盒测试又称为功能测试基于规格说明书的测试

  黑盒测试方法:等价类划分法、边界值分析法、错误推测法、因果图法、功能图法和接口测试法

2、白盒测试检查软件内部的逻辑结构,对软件中的逻辑路径进行覆盖测试

是把测试对象看成一个玻璃盒子,允许测试人员利用程序内部的逻辑结构及有关信息,设计测试用例对程序所有的逻辑路径进行测试,通过在不同点检查程序的状态,确定实际状态是否与预期一致。白盒测试又称为结构测试基于程序的测试

白盒测试主要包含六种测试方法:语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖。

软件维护的困难?

软件维护工作的困难性表现在一下几个方面:

    1、理解别人写的程序困难,困难程度随软件配置成分减少而迅速增加;

    2、要维护的软件往往没有合适的文档或资料不全;

    3、绝大多数软件设计时没有考虑将来的修改;

    4、软件维护不是一项吸引人的工作;

    5、软件人员经常流动,维护不能依靠原开发人员;

    6、追踪软件的建立过程非常困难,或根本做不到。

软件工程方法学一般有哪两种?

结构化方法学(又称为生命周期方法学):强调自顶向下顺序完成软件开发的任务。

结构化方法学中有三种基本控制结构:1.顺序2.选择3.循环

面向对象方法学:量模拟人类习惯的思维方式去开发。

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

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

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

  (1)模块化

  (2)自顶向下

  (3)上层模块分解为下层模块,有三种不同的结构形式:即顺序结构、选择结构、循环结构。

面向对象的基本概念

(1)对象:对象是人们要进行研究的任何事物。从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。

(2)类:类是具有相同或相似性质的对象的抽象。类的具体化就是对象,也可以说类的实例是对象。

(3)消息对象之间进行通信的结构叫做消息。消息包含接收对象去执行某种操作的信息。

(4)方法:类中操作的实现过程叫做方法。一个方法有方法名、参数、方法体。

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

(1)面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现。

        面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描述某个事物在整个解决问题的步骤中的行为。

(2)面向过程是把一件事一项工程分解成为一个个小的功能,用一个个函数来实现。

        面向对象是把事情看成是一个个小的对象组成的,这些对象之间相互关系,构成了整个项目。在面向对象的思想中,万物皆对象。而“类”,就是对象的抽象或者说是概括。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_45452617/article/details/123480098

智能推荐

艾美捷Epigentek DNA样品的超声能量处理方案-程序员宅基地

文章浏览阅读15次。空化气泡的大小和相应的空化能量可以通过调整完全标度的振幅水平来操纵和数字控制。通过强调超声技术中的更高通量处理和防止样品污染,Epigentek EpiSonic超声仪可以轻松集成到现有的实验室工作流程中,并且特别适合与表观遗传学和下一代应用的兼容性。Epigentek的EpiSonic已成为一种有效的剪切设备,用于在染色质免疫沉淀技术中制备染色质样品,以及用于下一代测序平台的DNA文库制备。该装置的经济性及其多重样品的能力使其成为每个实验室拥有的经济高效的工具,而不仅仅是核心设施。

11、合宙Air模块Luat开发:通过http协议获取天气信息_合宙获取天气-程序员宅基地

文章浏览阅读4.2k次,点赞3次,收藏14次。目录点击这里查看所有博文  本系列博客,理论上适用于合宙的Air202、Air268、Air720x、Air720S以及最近发布的Air720U(我还没拿到样机,应该也能支持)。  先不管支不支持,如果你用的是合宙的模块,那都不妨一试,也许会有意外收获。  我使用的是Air720SL模块,如果在其他模块上不能用,那就是底层core固件暂时还没有支持,这里的代码是没有问题的。例程仅供参考!..._合宙获取天气

EasyMesh和802.11s对比-程序员宅基地

文章浏览阅读7.7k次,点赞2次,收藏41次。1 关于meshMesh的意思是网状物,以前读书的时候,在自动化领域有传感器自组网,zigbee、蓝牙等无线方式实现各个网络节点消息通信,通过各种算法,保证整个网络中所有节点信息能经过多跳最终传递到目的地,用于数据采集。十多年过去了,在无线路由器领域又把这个mesh概念翻炒了一下,各大品牌都推出了mesh路由器,大多数是3个为一组,实现在面积较大的住宅里,增强wifi覆盖范围,智能在多热点之间切换,提升上网体验。因为节点基本上在3个以内,所以mesh的算法不必太复杂,组网形式比较简单。各厂家都自定义了组_802.11s

线程的几种状态_线程状态-程序员宅基地

文章浏览阅读5.2k次,点赞8次,收藏21次。线程的几种状态_线程状态

stack的常见用法详解_stack函数用法-程序员宅基地

文章浏览阅读4.2w次,点赞124次,收藏688次。stack翻译为栈,是STL中实现的一个后进先出的容器。要使用 stack,应先添加头文件include<stack>,并在头文件下面加上“ using namespacestd;"1. stack的定义其定义的写法和其他STL容器相同, typename可以任意基本数据类型或容器:stack<typename> name;2. stack容器内元素的访问..._stack函数用法

2018.11.16javascript课上随笔(DOM)-程序员宅基地

文章浏览阅读71次。<li> <a href = "“#”>-</a></li><li>子节点:文本节点(回车),元素节点,文本节点。不同节点树:  节点(各种类型节点)childNodes:返回子节点的所有子节点的集合,包含任何类型、元素节点(元素类型节点):child。node.getAttribute(at...

随便推点

layui.extend的一点知识 第三方模块base 路径_layui extend-程序员宅基地

文章浏览阅读3.4k次。//config的设置是全局的layui.config({ base: '/res/js/' //假设这是你存放拓展模块的根目录}).extend({ //设定模块别名 mymod: 'mymod' //如果 mymod.js 是在根目录,也可以不用设定别名 ,mod1: 'admin/mod1' //相对于上述 base 目录的子目录}); //你也可以忽略 base 设定的根目录,直接在 extend 指定路径(主要:该功能为 layui 2.2.0 新增)layui.exten_layui extend

5G云计算:5G网络的分层思想_5g分层结构-程序员宅基地

文章浏览阅读3.2k次,点赞6次,收藏13次。分层思想分层思想分层思想-1分层思想-2分层思想-2OSI七层参考模型物理层和数据链路层物理层数据链路层网络层传输层会话层表示层应用层OSI七层模型的分层结构TCP/IP协议族的组成数据封装过程数据解封装过程PDU设备与层的对应关系各层通信分层思想分层思想-1在现实生活种,我们在喝牛奶时,未必了解他的生产过程,我们所接触的或许只是从超时购买牛奶。分层思想-2平时我们在网络时也未必知道数据的传输过程我们的所考虑的就是可以传就可以,不用管他时怎么传输的分层思想-2将复杂的流程分解为几个功能_5g分层结构

基于二值化图像转GCode的单向扫描实现-程序员宅基地

文章浏览阅读191次。在激光雕刻中,单向扫描(Unidirectional Scanning)是一种雕刻技术,其中激光头只在一个方向上移动,而不是来回移动。这种移动方式主要应用于通过激光逐行扫描图像表面的过程。具体而言,单向扫描的过程通常包括以下步骤:横向移动(X轴): 激光头沿X轴方向移动到图像的一侧。纵向移动(Y轴): 激光头沿Y轴方向开始逐行移动,刻蚀图像表面。这一过程是单向的,即在每一行上激光头只在一个方向上移动。返回横向移动: 一旦一行完成,激光头返回到图像的一侧,准备进行下一行的刻蚀。

算法随笔:强连通分量-程序员宅基地

文章浏览阅读577次。强连通:在有向图G中,如果两个点u和v是互相可达的,即从u出发可以到达v,从v出发也可以到达u,则成u和v是强连通的。强连通分量:如果一个有向图G不是强连通图,那么可以把它分成躲个子图,其中每个子图的内部是强连通的,而且这些子图已经扩展到最大,不能与子图外的任一点强连通,成这样的一个“极大连通”子图是G的一个强连通分量(SCC)。强连通分量的一些性质:(1)一个点必须有出度和入度,才会与其他点强连通。(2)把一个SCC从图中挖掉,不影响其他点的强连通性。_强连通分量

Django(2)|templates模板+静态资源目录static_django templates-程序员宅基地

文章浏览阅读3.9k次,点赞5次,收藏18次。在做web开发,要给用户提供一个页面,页面包括静态页面+数据,两者结合起来就是完整的可视化的页面,django的模板系统支持这种功能,首先需要写一个静态页面,然后通过python的模板语法将数据渲染上去。1.创建一个templates目录2.配置。_django templates

linux下的GPU测试软件,Ubuntu等Linux系统显卡性能测试软件 Unigine 3D-程序员宅基地

文章浏览阅读1.7k次。Ubuntu等Linux系统显卡性能测试软件 Unigine 3DUbuntu Intel显卡驱动安装,请参考:ATI和NVIDIA显卡请在软件和更新中的附加驱动中安装。 这里推荐: 运行后,F9就可评分,已测试显卡有K2000 2GB 900+分,GT330m 1GB 340+ 分,GT620 1GB 340+ 分,四代i5核显340+ 分,还有写博客的小盒子100+ 分。relaybot@re...

推荐文章

热门文章

相关标签