软件工程精选习题集(全答案)

目录

来源:大部分题目都来源于https://www.jianshu.com/p/6875e17271d0,少部分题目来源于我自己的整理。
写这篇文章的目的:主要是为了收集整理题目,好应对考研复试中的『c++笔试』和『面试时老师的提问』,不是用来应对找工作的
说明:楼主本专业是计科的,软件工程课双方都在水,所以很多软工的东西是第一次见

1.名词解释

极限编程 (Extreme programming)

答:是敏捷软件开发的其中一种方式。如同其他敏捷方法学,极限编程和传统方法学的本质不同在于它更强调适应变化而不是预测变化。极限编程的支持者认为软件需求的不断变化是很自然的现象,是软件项目开发中不可避免的、也是应该欣然接受的现象;他们相信,和传统的在项目起始阶段定义好所有需求再费尽心思的控制变化的方法相比,有能力在项目周期的任何阶段去适应变化,将是更加现实更加有效的方法。极限编程技术以沟通、简单、勇气、尊重和回馈为价值标准。

  • 沟通:极限编程鼓励经常性的口头交流与回馈。
  • 简单:极限编程鼓励从最简单的解决方式入手再通过不断重构达到更好的结果。这种方法与传统系统开发方式的不同之处在于,它只关注于对当前的需求来进行设计、编码,而不去理会明天、下周或者下个月会出现的需求。
  • 勇气:极限编程理论中的“系统开发中的勇气”最好用一组实践来诠释。其中之一就是“只为目前的需求设计以及编码,别为不可预期的未来做太多考虑”这条戒律。这是努力避免陷入设计的泥潭、而在其他问题上花费了太多不必要的精力
  • 尊重:团队成员间的互相尊重体现在每个人保证提交的任何改变不会导致编译无法通过、或者导致现有的测试案例失败、或者以其他方式导致工作延期
  • 回馈:与传统开发方法不同之处在于,极限编程中,开发人员与客户的接触是不断反复出现的。客户能够清楚地洞察开发中系统的状况。他/她能够在整个开发过程中及时给出回馈意见,并且在需要的时候能够掌控系统的开发方向。

状态转换图(State Transform Diagram)

答:状态转换图(简称为状态图)通过描绘系统的状态及引起系统状态转换的事件,来表示系统的行为。最经典的进程三态模型(就绪运行阻塞)就是状态转换图的其中一个应用

问题域(Problem Domain)

答:描述问题的问题空间。
举个例子,面向对象方法学 的出发点和基本原则,是尽可能模拟人类思维习惯,使开发方法尽可能接近 人类解决问题的方法,也即让描述问题的问题空间(也称为问题域)与实现解法的解空间(也称为求解域)在结构上尽可能一致。

功能点技术(Function Point)

答:依据对软件信息域特性和软件复杂性的评估结果,估算软件规模。这种方法用功能点(FP)为单位度量软件规模。

PAD问题分析图(Problem Analysis Diagram)

答:用二维树形结构的图 来表示程序的控制流。

实体-关联图(Entity Relationship Diagram)。

答:是一种提供了实体,属性和联系的方法,用来描述现实世界的概念模型

软件危机(Software Crisis)

答:软件危机是指在计算机软件开发、使用与维护过程中遇到的一系列严重问题和难题。它包括两方面:
如何满足对软件日益增长的需求;
如何维护数量不断增长的已有软件。

软件质量保证(Software Quality)的措施

答:基于非执行的测试(也称为复审或评审)、基于执行的测试、程序正确性证明(从数学逻辑角度验证)。

IPO图

答:IPO图是输入、处理、输出图的简称,它是由美国IBM公司发展完善起来的一种图形工具,能够方便地描绘输入数据、对数据的处理和输出数据之间的关系。

面向对象的高内聚低耦合

答:

  • 耦合:一个软件结构内不同模块之间互连的紧密程度
    • 低耦合:系统中某一部分的变化对其他部分的影响降到最低程度
    • 对象之间的耦合:交互耦合&继承耦合
  • 内聚:衡量一个模块内各个元素彼此结合的紧密程度
    • 面向对象设计的3种内聚:服务内聚、类内聚、一般\特殊内聚

DFD数据流图 (Data Flow Diagram)

答:用于描述数据在信息系统内部的流动和处理过程

工程网络图(Gantt图)

答:工程网络是制定进度计划时另一种常用的图形工具,它同样能描绘任务分解情况以及每项作业的开始时间和结束时间。此外,它还显式地描绘各个作业彼此间的依赖关系。因此,工程网络图是系统分析和系统设计的强有力的工具。

判定树(Decision Tree)

答: 也叫决策树,它也能清晰地表示复杂的条件组合与应做的动作之间的对应关系。它是一种评价项目风险,判断其可行性的决策分析方法

过程设计语言(PDL)

答:也称为伪代码。是用正文形式表示数据和处理过程的设计工具。

依赖倒置原则

答:高层模块不应依赖低层模块,低层模块也不应依赖高层模块,而应该都依赖 抽象层。

2.说明典型的可重用软件成分,主要有哪十种?

答:
项目计划
成本估计
体系结构
需求模型和规格说明
设计
源代码
用户文档和技术文档
用户界面
数据
测试用例

3.说明软件维护的定义?以及通过描述软件交付使用后可能进行的4项活动?

答:

(1)软件维护:在软件已经交付使用之后,为改正错误或满足新的需要而修改软件的过程。

(2)软件交付使用后可能进行的4项活动:

1.改正性维护

2.适应性维护

3.完善性维护

4.预防性维护

4.功能需求是对软件系统的一项基本需求,试问通常对软件系统有哪几方面的综合要求?

答:
 1. 功能需求
 2. 性能需求
 3. 可靠性和可用性需求
 4. 出错处理需求
 5. 接口需求
 6. 约束
 7. 逆向需求
 8. 将来可能提出的要求

5.试述面向对象的封装(encapsulation)、继承(inheritance)、多态性(polymorphism)和重载(overloading)?

答:
 1. 封装:把数据和实现操作的代码集中起来放在对象内部隐藏起来,只保留有限的接口与外界联系。
 2. 继承:子类自动地共享基类中定义的数据和方法的机制。
 3. 多态性:子类对象可以像父类对象那样使用,同样的消息既可以发送给父类对象也可以发送给子类对象。
 4. 重载,有两种:①函数重载,在同一作用域内

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值