目录
- 1.名词解释
-
-
- 极限编程 (Extreme programming)
- 状态转换图(State Transform Diagram)
- 问题域(Problem Domain)
- 功能点技术(Function Point)
- PAD问题分析图(Problem Analysis Diagram)
- 实体-关联图(Entity Relationship Diagram)。
- 软件危机(Software Crisis)
- 软件质量保证(Software Quality)的措施
- IPO图
- 面向对象的高内聚低耦合
- DFD数据流图 (Data Flow Diagram)
- 工程网络图(Gantt图)
- 判定树(Decision Tree)
- 过程设计语言(PDL)
- 依赖倒置原则
-
- 2.说明典型的可重用软件成分,主要有哪十种?
- 3.说明软件维护的定义?以及通过描述软件交付使用后可能进行的4项活动?
- 4.功能需求是对软件系统的一项基本需求,试问通常对软件系统有哪几方面的综合要求?
- 5.试述面向对象的封装(encapsulation)、继承(inheritance)、多态性(polymorphism)和重载(overloading)?
- 6.试绘出自动售货机系统的用例图并说明。
- 7.说明在面向对象分析中的3个模型与5个层次?
- 8.请说明模块独立性的重要性?
- 9.验证软件需求的方法,至少必须哪4个不同角度验证软件需求的正确性?
- 10.请试描绘一家计算机公司全部产品的数据结构,用层次方框图和Warnier图表示。
- 11.请说明设计人机界面设计必须重视哪些方面?
- 12.请说明面向对象语言的优点有哪些?
- 13.预防性维护实质上是 软件再工程。请简述典型的 软件再工程 过程模型定义了哪六类活动?
- 14.请简述面向对象方法具有哪4个要点? 面向对象的方法学 可以用什么方程来概括?
- 15.源程序代码的逻辑简明清晰、易读易懂是好程序的一个重要标准,为了做到这一点,请简述应该遵循哪些编码风格规则?
- 16.请简易说明何谓单元测试、集成测试、确认测试、白盒测试和黑盒测试?
- 17.请问类与类之间通常有哪四种关系?分别简述之。
- 18.请说明设计黑盒测试方案的技术主要有什么?
- 19.请简述怎样满足用户对老程序的维护要求?
- 20.说明可靠性、可用性、稳定性之间的主要区别?
- 21.说明什么是软件质量?试叙述它与软件可靠性的关系。
- 22.请简述 在面向对象分析的基本过程中,概念上 可以认为面向对象分析大体上按照什么顺序进行?
- 23.试比较瀑布模型、快速原型模型、增量模型和螺旋模型的优缺点,说明每种模型的使用范围。
- 24.请问何谓Petri网和有穷状态机?请举例并评价。
- 25.使用Z语言描述的、最简单的形式化规格说明含有哪4个部分?
- 26.请说明在什么情况下应该使用形式化说明技术? 使用形式化说明技术应遵守哪些规则?
- 27.请问典型的总体设计步骤有哪些?
- 28.用面向对象方法开发软件,通常需要建立3种形式的模型,分别是描述系统数据结构的对象模型,描述系统控制结构的动态模型和描述系统功能的功能模型。试问以上模型需要产生出哪些图?
- 29.请简述决定软件可维护性的因素主要有哪五个?
- 30.请简述说明面向对象设计(Object-Oriented Design)的启发原则有哪些?
- 31.请简述说明软件的可维护性与哪些因素有关?在软件开发过程中应该采取哪些措施来提高软件产品的可维护?
- 32.请说明在软件开发的早期阶段为什么要进行可行性研究?应该从哪些方面研究目标系统的可行性?
- 33.请简述说明模块耦合 和模块内聚的类型和关系。
- 34.请说明未来毕业设计论文的内容若依照『面向对象(Object-Oriented )范式开发』软件需要呈现哪些具体内容?使用的图有哪些种类?
- 35.请说明未来毕业设计论文的内容若依照『结构化范式开发』软件需要呈现哪些具体内容?使用的图有哪些种类?
来源:大部分题目都来源于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. 重载,有两种:①函数重载,在同一作用域内