一、简答题(6*5分,原题13选6)
什么是软件工程,其目标是什么?
答:软件工程是指导软件开发和维护的工程性学科,他以计算机科学理论和其他相关学科的理论为指导,采用工程化的概念、原理、技术、和方法进行软件的开发和维护,把经过时间考验且证明正确的管理技术和当前得到的最好的技术方法结合起来,以较少的代价获得高质量的软件并维护它。
目标:运用先进的软件开发技术和管理方法来提高软件的质量和生产率。
什么是软件生存期,主要有那些阶段组成,每一个阶段的主要工作是什么?
答:软件生存期:软件孕育、诞生、成长、成熟、衰亡的生存过程;主要由
软件定义、软件开发、运行维护三个时期完成;又可分为五个阶段:
问题的定义与可行性的研究:确定工程的总目标和可行性导出实现工程目标应使用的策略及系统必须完成的功能。
需求分析:对要解决的问题进行详细的分析,制定设计软件需求规格说明书;
软件设计:从软件需求规格说明书出发,根据需求分析阶段确定的功能设计软件系统的整体结构、划分功能模块、确定每个模块的实现算法以及编写具体的代码,形成软件的具体设计方案;
程序编码和单元测试:根据所做的设计,运用编程语言实现功能,并对软件中的最小可测试单元进行检查和验证;
集成测试和系统测试:将已测试过的模块按照设计规格说明的顺序组装过程中检查模块连接中的问题;根据规格说明要求,对必须实现的各项需求进行逐项确认;
软件运行和维护:软件再运行中可能由于多方面的原因需要对他进行修改。
什么是软件工程方法学,软件工程方法学三要素各代表什么?
答:软件开发生命周期全过程中使用的一整套技术的集合称为软件工程方法学:三要素:
方法:为建造软件提供技术上的方法;
工具:为方法的运行提供自动或半自动的软件支撑环境;
过程:规定了完成各项任务的工作步骤。
在软件生存期模型中,瀑布模型的优缺点,快速原型模型的优点,增量模型的优点?
答:瀑布模型优点:(一步步执行,较为规范的文档)
可强迫开发人员采用规范化的方法;
严格的规定了每个阶段必须提交的文档;
要求每个阶段交出的所有产品都必须经过验证的。
瀑布模型的缺点:(过度依赖文档)
由于完全依赖书面的规格说明,一旦规格说明与用户之间需求有差异,就会导致最终开发出与用户需求不一致的软件产品;
瀑布模型只适用于项目开始时项目已经确定的情况下。
快速原型模型优点:(快速出原型—增加UI界面—不易出错)
有助于满足用户真实需求;
开发过程基本按线性顺序进行;
因规格说明文档已正确描述用户需求,后续开发阶段不会因发现规格说明文档有错而进行较大的返工;
“快速”,尽快建造出原型系统,加快软件开发过程,节约软件开发成本
所选用的开发技术和工具不一定符合主流的发展;快速建立起来的系统结构加上连续的修改可能会导致产品质量低下;
使用这个模型的前提是要有一个展示性的产品原型,因此在一定程度上可能会限制开发人员的创新。
螺旋模型优点:
利于软件的重用;
减少或多测试或测试不足带来的风险;
在螺旋模型中维护的只是模型的另一个周期,因而在维护和开发之间并没有本质区别。
螺旋模型缺点:风险不易发现,必须要求开发人员具有丰富的风险评估经验和专业知识。
什么是结构化分析模型?各部分的含义?
答:结构化建模方法是一种建模技术,主要包括:
数据字典:包括在目标系统中使用和生成的所有数据对象;
数据流图(DFD):描述数据在系统中如何被传送或变换,以及描述如何对数据流进行变换的功能(子功能),用于功能建模;
实体-关系图(ER图):描述数据以及数据对象之间的关系;
状态-迁移图(STD):描述系统对外部事件如何响应、如何动作,用于行为建模。
结构化设计和结构化分析两者之间的关系?
答:简单来说,结构化分析是结构化设计的基础。
结构化设计分为哪两个阶段,每个阶段的主要工作是什么?
答:分4个阶段:
体系结构设计:定义软件模块及其之间的关系;
2)接口设计:包括外部接口(系同内部与外部之间)和内部接口(系统内部各元素之间)。
数据接口:根据ER图来确定软件涉及的文件系统及数据库的表结构。
过程设计:确定软件各个组成部分内的算法及内部数据结构,并选定某种表达形式来描述各种算法。
软件设计原则都有哪些?
答:有五个原则:
1)分而治之:将大型复杂问题分解成许多容易解决的小问题,使之易于解决;
2)模块独立性:指软件中每个模块只涉及软件要求的具体的子功能,而与软件系统中其他模块的接口是简单的;
3)提高抽象层次:忽视一个主题中与当前目标无关的方面,以便更充分地注意与当前目标有关的方面;
4)复用性设计:同一事件不做修改或稍加修改就可以多次重复使用;
5)灵活性设计:使功能信息隐藏起来,利于更加灵活的使用。
什么是内聚,什么是耦合?为了保证模块独立性,在划分模块时应该遵循什么原则?
答:内聚:模块功能强度(一个模块内部各个元素彼此结合的紧密程度)的度量
耦合:模块之间的相互独立性(相互连接的紧密程度)的度量。
面向对象分析的三个模型各是什么?
答:三个模型分别是:
用例模型:由用例和场景表示的功能模型;
对象模型:由类和对象表示的静态模型;
交互模型:由状态图、顺序图等表示的动态模型。
请对下面代码的布局进行改进,使其符合规范其更容易理解。
修改后代码如下:
int i, j, t, n = 0, temp;
int[] a = null;
for (i=1; i<=n-1; i++){ for (i = 1; i <= n - 1; i++) {
t=i; t = i;
for (j=i+1; j<=n; j++) for (j = i + 1; j <= n; j++){
if (a[j]