【答案】
软件危机的定义:软件危机是在计算机开发和维护过程中所遇到的一系列的严重问题,主要包含两个方面
软件危机的表现:
软件危机的原因
①:主观方面
②:客观方面
如何解决
2.
【答案】
软件工程定义:采用工程的概念、技术、原理和方法,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,经济的开发出高质量的软件并维护它
软件工程的原理
3.软件生命周期阶段如何划分?
【答案】
【答案】
软件过程的定义:是为了获得高质量软件所需要完成的一系列任务框架,它规定了完成任务的工作步骤,通常用软件生命周期模型来描述软件过程
软件工程方法学:把在软件生命周期全过程中所使用的一整套技术方法的集合称之为软件工程方法学。包含三个要素
因此软件过程是软件工程方法学的重要组成部分
【答案】
①瀑布模型
优点:
缺点
适用范围
②快速原型模型
优点:
缺点
适用范围
③:增量模型
优点
缺点
④:螺旋模型
优点
缺点
⑤:喷泉模型
喷泉模型是一种以用户需求为动力,以对象为驱动的模型,主要用于描述面向对象的软件开发过程。该模型认为软件开发过程自下而上周期的各阶段是相互迭代和无间隙的特性
【答案】
可行性研究的必要性:开发一个软件时,需要判断原定的系统模型和目标是否现实,系统完成后所能带来的效益是否大到值得投资开发这个系统的程度,如果做不到这些,那么花费在这些工程上的任何时间、人力、软硬件资源和经费,都是无谓的浪费。可行性研究的实质是要进行一次大大压缩简化了 的系统分析和设计过程,就是在较高层次上以较抽象的方式进行的系统分析和设计的过程。可行性研究的目的就是用最小的代价在尽可能短的时间内确定问题是否能够解决
涉及方面
7.可行性研究的目的、本质、任务、过程(步骤)
【答案】
可行性研究的目的:用最小的代价在最小的时间内确定问题是否可以被解决
可行性研究的本质:系统分析和设计过程的大大压缩和简化,在较高层次上以较为抽象的方式进行系统的分析和设计过程
可行性研究的任务:
可行性研究的过程(步骤):
8.数据流图的概念、特点、符号、用途(目的)
【答案】
DFD的概念:描述信息流和数据从输入到输出所经受的变换。没有任何具体物理部件,只是描绘数据在软件中流动和被处理的逻辑过程
DFD的特点:
DFD的用途(目的):
9.数据字典相关的概念、符号、用途
【答案】
数据字典的概念:
数据字典的符号:
数据字典的用途:
【答案】
需求分析的定义:需求分析是软件定义时期的最后一个阶段,它的基本任务是准确地回答“系统必须做什么”这个问题,目标系统提出完整、准确、清晰、具体的要求。在需求分析阶段结束之前,系统分析员应该写出软件需求规明书,以书面形式准确地描述软件需求
需求分析的必要性:为了开发出真正满足用户需求的软件产品,首先必须要知道用户的需求。对软件需求的深入理解是软件开发工作获得成功的必要前提,不论人们把设计和编码工作做得如何出色,不能满足用户需求的程序只会让用户失望
软件系统需求
11.需求分析的准则是什么
12.需求分析的任务
【答案】
14.实体联系图作用、优点
【答案】
15.验证需求的四个方面和方法
【答案】
四个方面
16.总体设计的相关概念
【答案】
总体设计的定义:总体设计的基本目的就是回答“系统应该如何实现”这个问题,又称为概要设计或初步设计
总体设计的任务:确定系统中每个程序是由哪些模块组成的,以及这些模块相互间的关系
总体设计的概括:
总体设计的必要性:可以站在全局高度上,花较少成本,从较抽象的层次上分析对比多种可能的系统实现方案和软件结构,从中选出最佳方案和最合理的软件结构,从而用较低成本开发出较高质量的软件系统
17.总体设计的步骤
【答案】
18.简述设计原理(这一部分中的内容基本会分散在名词解释和填空题中记忆)
询问点1:模块独立性重要性
询问点2:请简述耦合方式
询问点3:请简述内聚方式
【答案】
19.请简述启发式规则
【答案】
20.程序流图的符号
【答案】
21.程序流程图的优缺点
【答案】
22.盒图的符号
【答案】
23.盒图的优点
【答案】
24.问题分析图(PAD图)的符号
【答案】
25.问题分析图(PAD图)的优点
【答案】
26.判定表的组成
【答案】
27.判定表的优缺点
【答案】
28.程序复杂度的价值、作用
【答案】
29.环形复杂度计算方法
【答案】
30.程序设计语言如何选择
31.简述编码风格
【答案】
32.软件测试的目标
【答案】
33.软件测试的准则
【答案】
34.简述软件测试步骤
【答案】
35.简述单元测试的测试重点
【答案】
36.简述自顶向下集成
【答案】
37.简述自底向上集成
【答案】
38.简述白盒测试中的语句覆盖、判定覆盖等逻辑覆盖过程
【答案】
39.简述黑盒测试中测试用例的设计标准
【答案】
40.简述等价类划分法(了解,特别注意规则)
【答案】
41.请简述软件维护的分类
【答案】
42.请简述软件维护的特点
【答案】
【答案】
【答案】
45.简述代码行技术方法
【答案】
46.简述代码行技术的优缺点
【答案】
47.简述功能点技术信息域特性
【答案】
48.简述功能点FP的计算方法
【答案】
49.简述软件指令保证措施
【答案】
50.简述软件管理配置的目的
【答案】
51.简述CMM
【答案】
(以下部分为拓展)
1.什么 是软件生存期?有何重要性?国家标准计算机软件开发规范中,把软件生存周期划分为哪几个阶段
【答案】
软件生命周期是指一个软件从立项开始,经过开发、测试、使用和维护知道软件下线的整个时期
2.结构化设计与面向对象设计的区别
简述提高软件质量的主要措施
UML 里面有哪些图
常用的黑盒测试方法有哪些?
等价划分,边界值分析,错误推测
常用的白盒测试方法有哪些?
逻辑覆盖(语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖、点覆盖、边覆盖、路径覆盖),
控制结构测试(基本路径测试、条件测试、循环测试)
耦合强度的衡量因素有哪些
有哪些常用的设计模式
CMM共有多少个等级,每个等级分别代表什么
1.什么是软件?软件的特点是什么?
【答案】
【答案】
在软件开发的不同阶段进行修改所付出的代价是不相同的。在早期引入变动,由于设计的面较少,因而代价也比较低;在开发的中后期,软件配置相关工作已经完成,引入一个变动时常常会引起所有与之有关的成分发生变化,所以代价较高。一个人编码错误是不可避免的,但是修改的成本是很小的,因为这不是整体架构的错误,只要不断进行阶段评审,不要让错误留到后期,在早期就尽可能解决
【答案】
结构化范型
面向对象范型
4。
【答案】
因为使用面向对象方法学开发软件时,各个阶段都使用统一的概念和表示符号, 因此,整个开发过程都是吻合一致的,或者说是无缝连接的,这自然就很容易实现各个开发步骤的反复多次迭代,达到认识的逐步深化,而喷泉模型则很好的体现了面向对象软件开发过程迭代和无缝的特性
【答案】
优点:提高了团队生产力,在迭代的开发过程、需求管理、基于组建的体系结构、可视化软件建模、验证软件质量及控制软件变更等方面、针对所有关键的开发活动为每个开发成员提供了必要的准则、模版和工具指导,并确保全体成员共享相同的知识基础。它建立了简洁和清晰的过程结构,为开发过程提供较大的通用性
缺点:缺点: RUP只是一个开发过程,并没有涵盖软件过程的全部内容,例如它缺少关于软件运行和支持等方面的内容,此外,他没有支持多项目的开发结构,这在一定程度上降低了在开发组织内大范围实现重用的可能性
Raitional统一过程主要适用于何种项目?
说明敏捷过程适用范围
说明微软过程的适用范围
【答案】
大型的需求不断变化的复杂软件系统项目
适用于商业竞争环境下对小型项目提出的有限资源和有限开发时间的约束
适用于商业环境下具有有限资源和有限开发时间约束的项目的软件过程模式
7.数据模型定义、作用
为了把用户的数据要求清楚、准确地描述出来,通常建立一个概念性的数据模型(信息模型)。概念性数据模型是一种面向问题的数据模型,是按照用户的观点对数据建立的模型。它描述了从用户角度看到的数据,它反映了用户的现实环境,而且与在软件系统中的实现方法无关
8.简述层次图和HIPO图
【答案】
9.简述结构图
【答案】
10.简述一般的抽象过程和软件工程抽象工程
【答案】
11.什么是流图
【答案】
流图实质上是“退化了的”程序流程图,它仅仅描绘程序的控制流程,完全不表现对数据具体操作以及分支或循环的具体条件,流图通常被用来突出表示程序的控制流
12.流图的符号
【答案】
13.映射为流图的方法
【答案】
①:对于顺序结构,一个顺序处理和下一个选择可以映射为一个结点
②:对于选择语句,开始/结束语句映射为一个结点,两条分支至少各映射成一个结点
14.简述确认测试的范围
【答案】
(以下部分是拓展)
1.如何实现容错技术?通常采用哪些方法?
【答案】
实现容错技术主要手段是冗余,有以下四类
2.为什么要进行软件评审
【答案】
因为软件生存期每个阶段的工作都有可能引入人为错误,如果某一阶段的错误不及时纠正,就会传播到开发的后续阶段,引出更多错误,因此,进行软件评审是必要的,评审可以揭露软件中的缺陷然后加以改正
3.谈谈你对软件工程学科的认识和看法
所谓软件工程就是和建造房子一样的图纸,为开发软件提供一种策略,方法,可以设计出更加实用的软件,通过软件工程的学习,我们得到一种策略,来沟通软件过程、实践、模式等等。对一款软件从开始到结束的管理,从宏观到微观的把控,我们需要做好每个阶段,
软件工程,是应对软件危机提出的,为生产可复用,易读,易懂,好测试,好维护的软件而形成的编程规范。
是把系统的,有序的,可量化的方法应用到软件的开发,运营和维护上的过程。涉及邻域包括但不限于:软件需求分析,软件设计,软件构件 ,软件测试和维护等方面。而且涉及学科较多,计算机科学,计算机 工程,管理学,数学,项目管理学。质量管理,系统工程,用户体验设计等。
总之,学好软件工程这门理论课,还是首先要有大局意识和整体把握。因为整体的把握就是为进一步的开发提供了方向
4.你认为一名合格的软件工程师应具备哪些素质
【答案】
5.你认为软件开发和软件管理的关系是什么”
软件项目管理是软件工程的普适性活动,它先于任何技术活动之前开始,持续贯穿于整个软件开发的建模,构造和部署之中。优秀的软件项目管理是开发优秀软件的必要前提,也是软件开发必不可少的组成部分。它将人员,产品,过程和项目统筹规划,能够有效预防和解决软件开发中的协调与沟通问题。
1.什么是面向对象方法学?它有哪些优点?
【答案】
2.什么是“对象”?它与传统的数据有何异同?
【答案】
3.什么是类
【答案】
4.什么是“继承”?
5.什么是模型?开发软件为何要建模?
【答案】
6.什么是对象模型?建立对象模型时主要使用哪些图形符号?这些符号的含义是什么?
【答案】
7.什么是动态模型?建立动态模型时主要使用哪些图形符号?这些符号的含义是什么?
【答案】
8.什么是功能模型?建立功能模型时主要使用哪些图形符号?
【答案】
9.试对三种模型进行比较
10.简述面向对分析的3个模型和5个层次
11.简述建立对象模型、动态模型、功能模型的基本步骤(★★★★★)
建立对象模型
建立动态码模型
12.面向对象分析与面向对象设计有什么关系
13.面向对象设计基本准则
14.简述面向对象设计的启发规则
15.简述软件重用(★★★★★)
16.简述类构件
17.关于面向对象程序设计语言的特点(★★★★★)
18.简述面向对象测试
1.建立对象模型相关概念
2.建立对象模型如何确定类与对象
3.建立对象模型如何确定关联
4.建立对象模型如何划分主题
6.建立对象模型如何识别继承关系