软件工程简答题.docx
- 文档编号:4508030
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:17
- 大小:45.37KB
软件工程简答题.docx
《软件工程简答题.docx》由会员分享,可在线阅读,更多相关《软件工程简答题.docx(17页珍藏版)》请在冰豆网上搜索。
软件工程简答题
简答题:
软件工程的内容和方法
1.开发文档都有哪些?
用图来表示他们之间的关系。
开发文档包括目标程序、源程序、详细设计说明书、概要设计说明书、需求规格说明书、用户需求报告、软件合同,它们之间的关系如图所示。
2.说明软件工程研究的内容。
软件工程研究的内容包括软件开发方法、软件开发模型、软件支持过程和软件管理过程。
其中软件开发方法的内容又含盖市场调研、正式立项、需求分析、项目策划、概要设计、详细设计、编程、测试、试运行、产品发布、用户培训、产品复制、销售、实施、系统维护、版本升级。
常用的软件开发模型有瀑布模型、迭代模型、增量模型和原型模型。
软件支持过程由所支持的CASE工具组成,常用的CASE工具有PowerDesigner和RationalRose。
软件管理过程主要有CMMI、ISO9000、微软企业文化和敏捷文化现象。
3.请详细解释软件的定义和程序的定义。
软件的定义:
软件=程序+数据+文档。
这里的程序是指程序系统。
这里的数据不仅包括初始化数据、测试数据,而且包括研发数据、运行数据、维护数据,也包括软件企业积累的项目工程数据和项目管理数据中的大量决策原始记录数据。
这里的文档指的是软件开发过程中的分析、设计、实现、测试、维护文档、管理文档。
现在有一种新提法正在引起关注,这种提法是:
软件=知识+程序+数据+文档。
程序是计算机为完成特定任务而执行的指令的有序集合。
从应用的角度可理解为:
面向过程的程序=算法+数据结构
面向对象的程序=对象+信息
面向构件的程序=构件+构架
4.是否存在这样一种现象:
搞系统软件的公司不需要采用CMMI和ISO9000模式?
CMMI和ISO模式只适用于搞应用软件的企业?
如果是,为什么?
如果不是,又是为什么?
不是。
因为CMMI和ISO9000模式规定了严格的管理制度、文档和评估软件能力与成熟度等级的一套标准,它们几乎包括了所有的IT的企业,只是一些优秀的企业自己内部形成特有的企业管理文化,但是它们并不排斥CMMI和ISO9000模式,甚至还充分肯定CMMI和ISO9000体系。
5.根据学过的数据库编程经验,举出一个用创建视图的方法进行数据处理的例子。
createviewj1_spj
as
selectsno,sname,ssexfromstudent
wheresno=‘s1’(条件语句)
视图(j1_spj)的创建是依据基本表(student)进行查询。
当基本表的记录符合条件语句wheresno=‘s1’规定的条件时,就能查询出基本表中符合条件记录的学号、姓名、性别的值。
软件生存周期及开发模型
6.简述瀑布模型、增量模型、迭代模型、原型模型的优点和缺点。
答案如表:
序号
模型名称
优点
缺点
1
瀑布模型
简单好学
逆转性差
2
增量模型
可以分阶段提交
有时用户不同意
3
迭代模型
克服瀑布模型的缺点
对开发人员要求高
4
原型模型
开发速度快
不利于创新
7.软件公司的ISO9000或CMMI管理体系与软件开发模型有关吗?
为什么?
无关。
因为ISO9000或CMMI管理体系是一种过程与质量管理模型,它是适应于任何软件开发模型的,或者说它与任何开发模型无关。
开发模型本身只是规定了软件生存周期中的若干步骤或阶段,便于开发人员去开发与维护,它并没有规定管理人员的过程管理方法与任务。
为此,ISO9000或CMMI管理体系规定采取阶段评审和不符合项的动态跟踪制度,只有前一阶段的不符合项全部改正后,才允许开发人员进入后一阶段的工作。
所谓不符合项,就是在评审中发现的问题项,它与BUG既有联系,又有区别。
对于这些不符合项,软件管理部门要列出表格,记录在案,确定负责人,限定改正时间,动态跟踪到底。
8.对生存周期模型裁减指南有什么看法?
“生存周期模型裁减指南”是IT企业或软件组织内部根据软件开发模型的普遍原则,结合本单位的开发经验和行业特点的具体实际定制出来的。
它有针对性地对选定的软件开发模型中定义的生存周期,进行恰当地裁减。
所谓裁减,就是队员模型中定义的内容进行增、改、删,去掉对本单位或者本项目不适合的部分,增加对本单元或者本项目适用的内容,同时进一步细化。
这样可以缩短开发时间,减少开发成本,具有非常现实的意义。
软件立项与合同
9.什么叫风险分析?
技能风险和技术风险有何区别?
这里的风险分析是指软件立项过程中对产品开发、销售等可能出现的风险进行分析。
分析方法是将一个大风险化解为多个小风险,然后再一个个克服小风险。
技术风险是指采用新技术的风险程度。
技能风险是指项目组成员掌握新技术的风险程度。
两者的区别在于一个是说新技术(如新的开发工具,新的设计思想)本身的风险,一个是说人员要掌握这种新技术的风险。
10.行业领域业务专家与产品经理有何异同?
行业领域业务专家是精通某行业领域业务的人,在讲标时能把投标书的内容准确、生动地表述出来,使客户心服口服。
而产品经理是某产品需求分析和概要设计的经理或专家,主要负责产品的立项、需求、设计和销售等业务。
两者的相同点是:
必须精通该产品的功能、性能和接口。
不同点是:
前者突出熟悉产品的应用业务领域,后者突出熟悉产品的需求与设计。
软件需求
11.需求分析的目的是什么?
需求分析的难点在哪里?
软件需求分析,其目的是用于说明软件产品或软件项目需要满足的条件和限制。
在软件工程项目中首先要获取用户的需求,通过对软件需要的提取、分析、文档化及验证,为进一步的设计和实现提供依据。
需求分析的难点是:
在系统的功能、性能和接口方面,开发者与客户达成完全一致的需求,让客户最终签字确认,并保证在项目验收前,需求相对稳定不变。
万一需求有一点变化,双方必须履行“需求变更管理程序”,而变更管理程序在签订合同时已经做了规定。
要知道,合同是具有法律效力的。
12.为什么说需求分析是面向流程的?
系统的功能、性能、接口、界面都是在流程中动态实时的反映出来。
在所有的流程(物流、人流、资金流、信息流、单据流、报表流、数据流)中,数据流最重要,也最具有代表性。
因为在计算机网络系统内,一切流程都表现为数据流,或者说是数据流在不同方向的投影。
而流程是动态的、实时的。
所以说,需求分析是面向流程的。
13.需求分析的基本思路是什么?
需求分析的思路,是从客户的功能需求(系统需要做什么)出发,由系统的业务流程和数据流程导出系统的业务模型和功能模型,识别出系统的元数据和中间数据,为今后设计数据模型做好充分准备。
同时,对系统的软、硬件环境配置,开发工具,开发周期,费用,开发进度,培训,系统风险进行评估。
14.业界存在哪三种需求分析方法?
你认为哪一种更好?
业界存在三种需求分析方法:
面向功能分析、面向对象分析、面向数据分析。
以上这三种方法,各自适用于不同的目标系统。
目前时尚的方法是面向对象分析,包括面向主体和面向方法。
总的来说,对于系统软件和应用软件来说,面向功能需求分析的方法简单明了,而面向对象的需求分析方法则复杂抽象。
对于以关系数据库为平台的信息系统软件来说,面向数据需求分析方法的特点是抓住了本质。
但是,这三种分析方法都离不开面向流程分析这根总线:
功能、对象、数据都是在流程中产生的,又都是为流程服务的。
15.需求管理过程的目标和内容是什么?
需求管理的目标,是保证软件项目或产品满足客户在软件功能、性能、接口三个方面的需求。
需求管理过程的内容,主要包括需求确认、需求评审、需求追踪和需求变更活动管理。
16.为什么需求文档要进行同行评审?
同行评审,是软件工作产品验证的活动,其目的是为了及早和高效地从软件工作产品中识别并消除缺陷。
重点在于发现软件工作产品中的缺陷。
另外,由于进行同行评审,使大量人员对软件系统中原本不熟悉的部分更加了解,因此同行评审还提高了项目的连续性,培训了后备人员。
17.怎么理解不符合项?
为什么要对它进行跟踪管理?
不符合项是指没有满足要求的项,不一定是错误,跟bug是不同的。
跟踪的意思在于,获得需求目前的实现状态,确保用户所有的需求都得到满足。
可靠的跟踪信息可为需求变更、系统维护、关键成员离开、系统再设计和类似系统设计等很多方面,提供参考和指导,并可以减少风险和提高项目成功率。
18.需求描述有哪几种工具?
你喜欢哪一种?
为什么?
需求描述工具包括数据流图、业务流程图、用况图、时序图、用户交互图、数据模型图和功能需求列表、性能需求列表、接口需求列表、界面需求列表等。
选择哪一种描述工具,主要取决于问题域的本质特征。
不同的软件,对分析要求的严格程度不同。
我喜欢业务流程图,它包括了物流、资金流、信息流,即业务操作模型,重点是业务操作的流水步骤。
业务模型表示了与系统有关的人、设备、其他子系统之间的业务关系和费用关系,它是经过业务流程重组、再创和优化后,并且得到企业领导确认的业务流程图。
绘制这个图的工具可以是Office办公软件。
软件策划
19.简述软件策划的步骤。
软件策划共分4个步骤,如表:
步骤
步骤名称
步骤内容
1
评估软件工作产品的规模、工作量、费用及所需要的资源
软件工作产品,包括需求规格说明书、概要设计说明书、详细设计说明书、源代码、测试计划和测试报告、质量保证计划、软件配置管理计划、里程碑及评审计划。
每个工作产品所需的工作量(人年)、费用及其所需的其他资源,都要量化
2
制定时间表
包括开发进度时间表和日历进度时间表:
软件开发计划、质量保证计划、软件配置管理计划、测试计划、评审计划
3
鉴别和评估风险
政策风险、资源风险、市场突变风险、技术风险和技能风险
4
与相关的组或人协商策划中的有关约定
策划的结果要实事求是,要得到各有关方面的同意和认可
20.软件策划要实现的具体目标是什么?
软件策划是项目跟踪和监控的基础,是项目经理和高层经理管理项目的依据。
软件策划要实现的具体目标有三个。
1.对供项目测试和跟踪用的三个软件估计已建立文档。
这三个评估是:
Ø工作产品规模估计
Ø工作量及成本估计
Ø计算机资源估计
2.软件项目活动和约定是有计划的,并已建立文档。
这里的活动,包括开发活动和管理活动。
这里的约定,是指对项目的各种标准、规范、规程的约束。
3.受影响的组和个人,同意他们对软件项目的约定。
受影响的组和个人有:
Ø软件工程组(项目组)
Ø软件估计组
Ø系统测试组
Ø质量保证组
Ø配置管理组
Ø合同管理组
Ø文档支持组
其中有的组可能只有一个人
21.定义软件过程的含义是什么?
所谓定义软件过程,就是根据选定的生存周期模型,规定软件的开发阶段,及每一阶段的工作步骤和文档标准等内容。
22.项目跟踪与监督的基础是什么?
在项目策划阶段,要为开发计划制定严格的评审流程。
开发计划在经过组织批准生效后,将成为进行项目跟踪与监督的基础。
23.软件开发计划书应该包括哪些内容?
《软件开发计划书》是软件策划的输出文档,它包括如下10各方面的内容:
1.软件项目组的目的、范围、目标和对象。
2.软件生存周期的选择与裁减。
3.确定软件开发和维护的规范、方法和标准。
4.软件工作产品的确定。
5.对工作产品规模的估计。
6.对工作量和成本的估计。
7.关键计算机资源的估计和使用情况。
8.项目的进度、里程碑和评审计划。
9.风险的识别和评估。
10.项目工程设计和工具的计划。
24.怎样理解软件中的度量,它有何作用?
软件中的度量,是指对大量测量数据的统计分析。
度量是按规定在项目进行过程中,需要采集的度量数据,以便量化地反映项目的进展情况,为管理者提供对项目进展的适当的可视性,同时度量数据是项目过程改善的基础数据,它们存放在测量数据库中。
软件设计
25.软件设计的输入/输出是什么?
对于签订合同的项目,软件设计的输入是《用户需求报告》/《需求规格说明书》,输出是《概要设计说明书》和《详细设计说明书》。
对于立项的项目,软件设计的输入是《需求规格说明书》,输出是《概要设计说明书》和《详细设计说明书》。
26.概要设计说明书和详细设计说明书有和区别?
《概要设计说明书》,一是要覆盖《需求规格说明书》的全部内容,二是要作为指导详细设计的依据。
它注重框架上的设计,它是软件系统的总体结构设计、全局数据库(包括数据结构)设计、外部接口设计、功能部件分配设计、部件之间的内部接口设计,它要覆盖需求规格说明书中的功能点列表、性能点列表,接口列表。
《详细设计说明书》,一是要覆盖概要设计说明书的全部内容,二是要作为指导程序设计的依据,它注重微观上和框架内的设计,它是各子系统的公用部件实现设计、专用部件实现设计、存储过程实现设计、触发器实现设计、外部接口实现设计、部门角色授权设计和其他详细设计等。
两者的设计者不同,在一般情况下,《概要设计说明书》是由系统设计师负责,《详细设计说明书》则是由高级程序员负责。
软件建模
27.请简述UML的宏观建模思想和微观思想。
UML的宏观建模思想是:
以“9个模型”和“5张视图”为纲,以“9种图”为目,建立系统的UML模型。
“9个模型”包括:
业务模型、领域模型、用例模型、分析模型、设计模型、过程模型、部署模型、实现模型和测试模型。
“9种图”包括:
类图、对象图、用例图、顺序图、协作图、状态图、活动图、构件图、实施图。
“5张视图”包括:
用例视图、设计视图、进程视图、实现视图、实施视图。
UML的微观建模思想是:
基本结构模型、高级结构模型、基本行为模型、高级行为模型、体系结构模型(5各方面,66个微观建模)。
基本结构模型包括:
对类建模,对关系建模,对公共机制建模,对图建模,对类图建模。
高级结构模型包括:
对类的语义建模,对关系网络建模,对接口、类型和角色建模,成组的元素建模,对体系结构视图建模,对具体实例、原型实例建模,对对象结构建模。
基本行为建模包括:
对交互建模、对用例建模、对用例图建模、对交互图建模、对活动图建模。
高级行为模型包括:
对信号族建模、对异常情况建模、对状态建模、对进程和线程建模、对时间空间建模、对状态建模。
体系结构建模包括:
对构件建模、对实施建模、对协作建模、对模式和框架建模、对构件图建模、对实施图建模、对系统建模。
一般而言,人们最常用的是建立系统的用例图、类图和顺序图。
28.请简述UML的优点和缺点。
UML的优点:
1.UML语言使系统建模过程标准化、统一化、规范化。
2.UML在整个软件开发过程中采用相同的概念和表示方法。
3.UML采用图形化的表现形式,产生的模型易于理解,易于开发人员与用户之间的沟通,从而能够及时得到用户的反馈信息。
4.用UML进行系统建模,所得到的建模制品不仅包括各种模型框图,还有大量丰富的文档。
5.UML不是一门程序设计语言,但可以使用代码生成工具将UML模型转换成为多种程序设计语言代码,或使用反向生成工具将程序源代码转换为UML模型
但任何事物都有正反两个方面,UML这种新兴的建模工具也存在它本身的一些不足和缺点:
1.UML建模可视化图形的内容太多、太深、太宽,导致难学难教。
2.UML缺少核心和外围,有些语言定义不够精确且带有二义性。
3.UML过多考虑了各种分析、设计、实现的普遍性,过少考虑了它们的特殊性。
4.UML过于细致。
5.UML对开发者的素质要求过高。
29.读者怎样理解下面这段文字:
“UML只是一种图形化的建模语言,不是一种方法论,不规定开发者在什么时候、什么情况下、用什么方法去建立什么模型,也没有指定使用哪一种实现工具,Rose只是其中的一种实现工具而已。
”请读者再思考一个问题:
语言与方法论两者之间有什么联系?
又有什么区别?
因为UML认为开发者在什么时候、什么情况下、用什么方法去建立什么模型是软件开发过程中的工作,是方法论的范围,开发者自己应该会明白的。
而Rose是UML的一种支撑环境和实现工具。
语言只是方法论的一部分,而且只是实现方法论的一种工具,方法论包含语言。
方法论要告诉读者在建模过程中做什么、怎么做、什么时候做、为什么做、做的过程中要注意什么。
而UML建模语言只是提供了一大堆的可视化图形符号,并没有告诉读者,应该在什么时候,用什么方法、去建立什么模型。
软件实现
30.实现原则有哪几条?
软件实现原则包括以下5条:
1.尽可能地简单。
2.易于验证。
3.适应变化。
4.遵守某一编程规范。
5.选择项目组成员最熟悉的工具或语言。
31.面向对象程序设计的特点是什么?
它与面向过程程序设计有何差异?
面向对象程序设计有三个特点:
1.封装性。
把数据和代码结合在一起,对外隐藏了实现的细节。
它的好处是有利于程序的模块化。
2.继承性。
一个新的对象能继承父对象的属性和方法,这一点就像遗传。
继承性的好处是可以共享代码。
3.多态性。
就是一个对象类型可以产生多个对象实例,每个实例还可以有所不同。
面向对象程序设计与面向过程程序设计有如下差异:
1.面向过程程序设计方法采用函数(或过程)来描述对数据的操作,但又将函数与其操作的数据分离开来;面向对象程序设计方法将数据和对数据的操作封装在一起,作为一个整体来处理。
2.面向过程程序设计方法以功能为中心来设计功能模块,难于维护;而面向对象程序设计方法以数据为中心来描述系统,数据相对与功能而言具有较强的稳定性,因此更易于维护。
3.面向过程程序的控制流程由程序中预定顺序来决定;面向对象程序的控制流程由运行时各种事件的实际发生来触发,而不再由预定顺序来决定,更符合实际需要。
4.面向对象程序设计方法可以利用框架产品(如MFC,MicrosoftFoundationClasses)进行编程。
软件测试
32.软件测试的目的和目标是什么?
简单明了地说,软件测试的目的就是发现软件缺陷。
但同时还要时刻牢记在心的是:
软件测试的目标是尽可能早地发现软件缺陷,并确保其得以修复。
这里的缺陷,包括bug和不符和项。
33.什么是软件缺陷?
我们说,符合下列五个规则之一的就是软件缺陷:
1.软件未达到产品说明书(需求报告或需求说明书)标明的功能;
2.软件出现了产品说明书指明不会出现的错误;
3.软件未达到产品说明书未指明但应达到的目标;
4.软件功能超出产品说明书所指明的范围;
5.软件测试人员认为软件难以理解、不易使用、速度缓慢,或者最终客户认为不好。
34.试举例说明软件测试的原则有哪些?
1.尽早开展测试工作;
2.完全测试不可能,把握最优测试量;
3.严防寄生虫现象;
4.严防杀虫剂现象;
5.并非所有的软件缺陷都能修复;
6.难以说清楚的软件缺陷;
7.产品说明书不断变化
8.软件测试人员在产品小组中不受欢迎。
35.试阐述软件测试V模型的思想、不足之处和改进方法。
软件测试V模型的基本思想,如图所示。
我们可以初步了解,左侧是开发阶段,右侧是测试阶段。
开发阶段先从定义软件需求开始,然后要把这些需求不断地转换到概要设计和详细设计中去,最后形成程序代码。
测试阶段是在代码编写完成以后,先做单元测试开始,然后是集成测试、系统测试和验收测试。
对V模型的进一步阐述是:
当需求分析完成后,验收测试计划也应完成。
当概要设计完成后,系统测试计划也应完成。
当详细设计完成后,集成测试计划也应完成,当编码完成后,单元测试计划也应完成。
可见,V模型提高了测试的时间与地位。
以上的测试V模型,一般只适用于瀑布开发模型,若对迭代开发模型,就显得不足了。
实际工作中,V模型只是提高了测试工作的地位,具体测试方法,仍然是黑白盒子法。
36.试说出几种软件测试的分类方法。
软件测试分类的实质,是软件测试技术的分类。
测试工作中采用不同的测试技术,就产生了不同的测试类型,相继也产生了很多的测试类型术语,大概有以下几种。
1.动态测试:
通过运行程序开展测试工作,即软件测试人员通过使用软件来找出缺陷;
2.静态测试:
不通过运行程序来开展测试工作;
3.黑盒测试:
又叫功能测试;
4.白盒测试:
可以理解为对程序执行路径的测试;
5.通过测试:
简单的说,就是验证软件至少能做什么,而不会考察其能力有多强;
6.失败测试:
纯粹是为了验证软件在某一种条件下,是否会出现异常、停止工作等现象的测试;
7.负载/压力测试:
一方面,可以通过减少软件需要的资源,来测试软件运行的最低配置或者最低资源需求;另一方面,可以正常提供软件需要的资源,但是通过不断加重软件要处理的任务,来测试软件在正常配置下具有的能力指标;
8.易用性测试:
易用性测试的目的很明确,即简单易用,但是标准不容易确定;
9.其他测试:
如边界值测试、兼容性测试、回归测试、ALPHA测试和BETA测试等。
37.试说出黑盒测试和白盒测试的区别及联系。
黑盒测试又称功能测试。
在这里,盒子指的是被测试的软件,“黑盒”就是只知道被测试软件的外部情况,主要是界面和接口,被测试软件的内部逻辑结构和数据结构,对测试人员来说是不可见的,主要关注被测试软件的功能实现。
白盒测试就是对程序执行路径的测试,又叫做玻璃盒测试、透明盒测试、结构化测试、开放盒测试、基于代码的测试等。
黑盒测试和白盒测试的联系是:
一般宏观上用黑盒测试,微观上用白盒测试,系统集成人员用黑盒测试方法对系统进行测试,构件开发人员用白盒测试方法对构件进行测试,这是常用的测试方法。
38.软件测试工作中要验证哪些文档?
试举例。
软件测试工作中要验证的文档包括两个部分,即被测试文档和测试工作中要编写的文档。
现在按生命周期划分如下:
1.项目立项阶段的文档
《项目立项报告》、《标书》、《合同》。
2.需求分析阶段文档
《需求分析说明书/用户需求报告》、《验收测试设计说明书》、《测试计划》、《客户手册》、《操作手册》。
3.项目策划阶段的文档
《项目开发计划》、《配置管理计划》、《质量保证计划》。
4.设计阶段的文档
《概要设计说明书》、《数据库设计说明书》、《详细设计说明书》、《系统测试设计说明书》、《集成测试设计说明书》。
5.编码阶段的文档
《自测报告》、《单元测试说明书》。
6.测试阶段的文档
《单元测试报告》、《集成测试报告》、《系统测试报告/ALPHA测试》、《验收测试报告/BETA》。
7.维护阶段的文档
《缺陷及修改报告》。
还有一些管理文档,如《工作日报》、《会议记录》、《开发进度周报》、《开发进度月报》、《开发总结报告》等。
还有和客户签署的协议,如《委托开发协议书》、《验收手册》。
提供给客户的所有文档都要经过测试,从这个角度考虑,被测试的文档还可能包括联机帮助文档、样例、模板、常见问题解答、市场宣传材料、授权/注册登记表、客户许可协议,以及包装文字、图片、标签等。
39.用自己的话简述实用软件测试的流程,你认同吗?
有什么想法和建议?
软件测试的流程分五步展开:
1.理解、验证和分解需求;
2.编写测试计划(包括测试计划);
3.测试执行;
4.专项测试;
5.编写测试报告。
认同,没有什么想法和建议。
软件发布与实施
40.软件项目与软件产品有什么不同?
软件产品是指不局限于特定业务领域、能被广大用户直接使用的软件系统,如操作系统、编译系统、工具系统、通用财务系统等。
软件项目是指针对特定业务领域、徐提供业务流程充足与优化的软件系统,如MIS、ERP、电子商务、自动跟踪控制系统等,它们一般叫做软件项目。
软件维护
41.传统软件维护分哪几大类?
传
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 答题