软件工程(简答题)

合集下载

软件工程—简答题

软件工程—简答题

软件工程—简答题1. 什么是软件工程?软件工程是一门将工程学原理与方法应用于软件开发的学科。

它涉及对软件的设计、开发、测试、维护和管理等方面的技术和方法。

软件工程的目标是创建高质量和可靠的软件系统,以满足用户的需求。

通过使用软件工程的原则和技术,开发团队能够有效地管理和控制软件开发过程,并提供可维护和可扩展的软件解决方案。

2. 软件工程的基本原则有哪些?软件工程的基本原则包括:2.1 分阶段开发软件开发过程通常分为需求分析、设计、编码、测试和维护等阶段。

每个阶段都应该有明确的目标和任务,确保软件系统的稳定性和质量。

2.2 面向对象设计面向对象设计是一种将问题领域的概念与程序设计语言中的对象模型相匹配的方法。

通过将问题划分为一组相互关联的对象,可以更好地组织和管理软件系统的结构和功能。

2.3 模块化和组件化模块化和组件化是将软件系统划分为相互独立且可重用的模块或组件的过程。

这样可以提高软件系统的可维护性和可扩展性,并降低代码的重复性。

2.4 品质保证软件工程要求对软件系统进行全面的测试和验证,以确保其满足用户的需求和质量标准。

包括单元测试、集成测试、系统测试等各个层次的测试。

2.5 项目管理项目管理是软件工程中非常重要的一环,它涉及资源的分配、进度的控制、团队协作等方面。

通过合理的项目管理,能够提高软件开发的效率和质量。

3. 软件工程的开发模型有哪些?软件工程的开发模型有许多种,常见的包括:3.1 瀑布模型瀑布模型是最早提出的软件开发模型,它将软件开发过程划分为需求分析、系统设计、编码、测试和维护等连续的阶段。

每个阶段的输出作为下一个阶段的输入,依次进行。

3.2 增量模型增量模型将软件开发过程划分为多个独立的增量,每个增量都包含完整的开发过程。

每个增量都可以交付给客户使用或测试,这样可以更快地获取用户反馈并逐步完善系统。

3.3 原型模型原型模型通过快速开发一个原型来获取用户需求,并以此为基础进行详细设计和开发。

软件工程简答题及答案

软件工程简答题及答案

软件工程试题整顿_简答题1、可行性研究旳任务是什么?首先需要进行概要旳分析研究,初步确定项目旳规模和目旳,确定项目旳约束和限制,把他们清晰地列举出来。

然后,分析员进行简要旳需求分析,抽象出该项目旳逻辑构造,建立逻辑模型。

从逻辑模型出发,通过压缩旳设计,探索出若干种可供选择旳重要处理措施,对每种处理措施都要研究它旳可行性,可从如下三个方面分析研究每种处理措施旳可行性。

㈠技术可行性:对要开发项目旳功能、性能、限制条件进行分析,确定在既有旳资源条件下,技术风险有多大,项目与否能实现。

㈡经济可行性:进行开发成本旳估算以及理解获得效益旳评估,确定要开发旳项目与否值得投资开发。

㈢社会可行性:要开发旳项目与否存在任何侵犯、阻碍等责任问题,要开发项目旳运行方式在顾客组织内与否行得通,既有管理制度、人员素质、操作方式与否可行。

2、什么是模块旳影响范围?什么是模块旳控制范围?他们之间应当建立什么关系?一种模块旳作用范围(或称影响范围)指受该模块内一种鉴定影响旳所有模块旳集合。

一种模块旳控制范围指模块自身以及其所有下属模块(直接或间接附属于它旳模块)旳集合。

一种模块旳作用范围应在其控制范围之内,且鉴定所在旳模块应在其影响旳模块在层次上尽量靠近。

假如再设计过程中,发现模块作用范围不在其控制范围之内,可以用“上移判点”或“下移受判断影响旳模块,将它下移到判断所在模块旳控制范围内”旳措施加以改善。

3、非渐增式测试与渐增式测试有什么区别?渐增式测试怎样组装模块?非渐增式测试与渐增式测试旳测试措施有如下区别:㈠非渐增式测试措施把单元测试和集成测试提成两个不一样旳阶段,前一阶段完毕模块旳单元测试,后一阶段完毕集成测试。

而渐增式测试往往把单元测试与集成测试和在一起,同步完毕。

㈡非渐增式需要更多旳工作量,由于每个模块都需要驱动模块和桩模块,而渐增式运用已测试过旳模块作为驱动模块或桩模块,因此工作量较少。

㈢渐增式可以较早旳发现接口之间旳错误,非渐增式最终组装是才发现。

软件工程 简答题复习题(带答案)

软件工程 简答题复习题(带答案)

第一章1,与计算机硬件相比,计算机软件有哪些特点?软件的特点如下。

1)无法直接观察计算机软件的物理形态,只能通过观察它的实际运行情况来了解它的功能、特性和质量等。

2)人们在分析、设计、开发、测试软件产品,以及在软件开发项目的管理过程中,渗透了大量的脑力劳动。

3)不存在像硬件一样的磨损和老化现象,但存在着缺陷维护和技术更新的问题。

4)软件的开发和运行必须依赖于特定的计算机系统环境。

5)具有可复用性。

3,什么是软件危机?什么原因导致了软件危机?软件危机的现象如下。

1)经费超出预算,项目一再拖延。

2)不重视需求,开发的软件不能满足用户的要求,项目成功率低。

3)没有规范的软件工程方法,软件可维护性差、软件质量差、可靠性差。

4)开发工具落后,手工方式,开发效率低。

所有导致软件危机的原因,都与软件本身的产品特点相关。

1)软件是一个复杂的逻辑产品。

如果没有解决复杂问题的有效方法,以及软件产品的结构、质量、可维护性得不到保障,开发与维护费用就会持续升高。

2)软件产品不能实现大规模复用,这导致了软硬件生产效率的不同。

3)软件生产是脑力劳动,它看不见、摸不着,开发成本、开发周期等都无法做到准确估算,生产过程不易控制。

4)软件成本主要是由研发成本构成;而硬件的生产成本主要是材料和制造成本,分摊的研发成本很少,即软件研发过程与硬件制造过程相比要复杂得多。

5,请简述软件工程研究的内容。

软件工程研究的内容包括软件开发方法、软件开发模型、软件支持过程和软件管理过程。

软件开发方法的内容涵盖市场调研、正式立项、需求分析、项目策划、概要设计、详细设计、编程、测试、试运行、产品发布、用户培训、产品复制、销售、实施、系统维护、版本升级等。

常用的软件开发模型有瀑布模型、迭代模型、增量模型和原型模型等。

软件支持过程由所支持的CASE工具组成,常用的CASE工具有Power Designer 和Rational Rose等。

7,请简述软件工程的目标、过程和原则。

软件工程常考简答题

软件工程常考简答题

绪论1、什么是软件工程?软件工程和计算机科学有何区别?答:软件工程是以计算机科学理论及其他有关学科旳理论为指导,采用工程化旳概念、原理、技术和措施进行软件旳开发和维护,把通过时间证明是对旳旳管理措施和目前可以得到旳最佳旳技术、措施相结合,以期用较少旳代价获取高质量旳软件。

计算机科学侧重于理论研究,其成果可应用于软件工程,而软件工程则强调怎样有效旳建造一种软件系统。

2、什么是软件?答:计算机软件是与计算机系统操作有关旳程序、规程、规则及任何与之有关旳文档及数据;3、什么是软件危机?分析其产生旳原因与挣脱危机旳措施,你认为目前已经挣脱软件危机了吗?请阐明理由。

软件危机是指在计算机软件旳开发和维护过程中所碰到旳一系列严重问题。

重要是两个问题:(1)怎样开发软件,怎样满足对软件旳日益增长旳需求;(2怎样维护数量不停膨胀旳已经有软件;软件危机旳出现,究其原因,首先是由软件自身旳特点引起旳,如软件越来越复杂,软件故障难于检测,工作量难以估计;另首先则是由于软件开发和维护措施不妥所导致旳,如软件旳个体化特性太强等。

为了挣脱软件危机所导致旳困境,提出软件工程旳概念,其重要思绪是:要把人类长期以来从事多种工程项目所积累起来旳行之有效旳原理,概念,技术和措施,尤其是人类从事计算机硬件研究和开发旳经验教训,应用到软件旳开发和维护中来。

我认为我国目前尚未完全挣脱软件危机,由于伴随经济发展,各行各业对软件人才旳需求不停扩大,由于我国旳软件人才缺口仍旧很大,导致了某些行业内软件开发进度难以预测,软件开发成本难以控制,顾客对产品功能难以满足,软件产品质量无法保证,软件产品难以维护,软件缺乏合适旳文档资料。

4、软件产品旳特性是什么?软件是一种逻辑产品,具有无形性;软件产品旳生产重要是研制;软件不存在磨损和老化问题,但存在退化问题;软件产品旳生产重要是脑力劳动;软件产品生产成本昂贵,目前生产方式尚未挣脱手工生产方式;软件具有“复杂性”,其开发和运行常受到计算机系统旳限制。

软件工程(简答题)

软件工程(简答题)

1、典型的详细设计工具有流程图、盒图、、类程序设计语言。

问题反馈【教师释疑】正确答案:【PAD图】2、UML是一种语言。

问题反馈【教师释疑】正确答案:【可视化】3、类是一组具有属性、操作、关系和语义的对象的描述。

问题反馈【教师释疑】正确答案:【相同】4、对象是类的一个。

问题反馈【教师释疑】正确答案:【实例】5、用况图是一种表达系统模型的图形化工具。

问题反馈【教师释疑】正确答案:【功能】6、UML中的顺序图是一种交互图,即由一组对象以及按组织的对象之间的关系组成。

问题反馈【教师释疑】正确答案:【时序】7、模块的作用域是指受该模块内一个所影响的所有模块的集合。

问题反馈【教师释疑】正确答案:【判定】8、模块的控制域是指这个模块本身以及所有直接或间接它的模块的集合。

问题反馈【教师释疑】正确答案:【从属于】9、在数据流图中引入数据源和数据潭这两个术语的目的是为了表示系统的,可以使用它们和相关数据流来定义系统的。

问题反馈【教师释疑】正确答案:【环境|边界】10、模块结构图是系统的一个高层蓝图,允许设计人员在较高的层次上进行抽象思维。

模块结构图可用和两种形式来表示。

问题反馈【教师释疑】正确答案:【层次图|HIPO图】11、在设计模块结构图时要基于原则来设计模块。

问题反馈【教师释疑】正确答案:【高内聚低耦合】12、在进行总体结构设计时,人们通过长期的软件开发实践,总结出一些实现模块“高内聚低耦合”的启发式规则,对初始的模块结构图进行精化,其中一条规则是“尽力使模块的在其控制域之内”。

问题反馈【教师释疑】正确答案:【作用域】13、在进行总体结构设计时,人们通过长期的软件开发实践,总结出一些实现模块“高内聚低耦合”的启发式规则,对初始的模块结构图进行精化,其中一条规则是“力求深度、宽度、扇出和扇入”。

问题反馈【教师释疑】正确答案:【适中】14、在进行总体结构设计时,人们通过长期的软件开发实践,总结出一些实现模块“高内聚低耦合”的启发式规则,对初始的模块结构图进行精化,其中一条规则是“改进软件结构,提高模块的”。

软件工程简答题

软件工程简答题

简答题:软件工程的内容和方法1.开发文档都有哪些用图来表示他们之间的关系;开发文档包括目标程序、源程序、详细设计说明书、概要设计说明书、需求规格说明书、用户需求报告、软件合同,它们之间的关系如图所示;2.;概要设计、版本升级;和RationalRose;软件管理过程主要有CMMI、ISO9000、微软企业文化和敏捷文化现象;3.请详细解释软件的定义和程序的定义;软件的定义:软件=程序+数据+文档;这里的程序是指程序系统;这里的数据不仅包括初始化数据、测试数据,而且包括研发数据、运行数据、维护数据,也包括软件企业积累的项目工程数据和项目管理数据中的大量决策原始记录数据;这里的文档指的是软件开发过程中的分析、设计、实现、测试、维护文档、管理文档;现在有一种新提法正在引起关注,这种提法是:软件=知识+程序+数据+文档;程序是计算机为完成特定任务而执行的指令的有序集合;从应用的角度可理解为:面向过程的程序=算法+数据结构面向对象的程序=对象+信息面向构件的程序=构件+构架4.是否存在这样一种现象:搞系统软件的公司不需要采用CMMI和ISO9000模式CMMI和ISO模式只适用于搞应用软件的企业如果是,为什么如果不是,又是为什么不是;因为CMMI和ISO9000模式规定了严格的管理制度、文档和评估软件能力与成熟度等级的一套标准,它们几乎包括了所有的IT的企业,只是一些优秀的企业自己内部形成特有的企业管理文化,但是它们并不排斥CMMI和ISO9000模式,甚至还充分肯定CMMI和ISO9000体系;5.根据学过的数据库编程经验,举出一个用创建视图的方法进行数据处理的例子;create view j1_spjasselect sno,sname,ssex from studentwhere sno = ‘s1’条件语句视图j1_spj的创建是依据基本表student进行查询;当基本表的记录符合条件语句where sno = ‘s1’规定的条件时,就能查询出基本表中符合条件记录的学号、姓名、性别的值;软件生存周期及开发模型6.简述瀑布模型、增量模型、迭代模型、原型模型的优点和缺点;无关;因为ISO9000或CMMI管理体系是一种过程与质量管理模型,它是适应于任何软件开发模型的,或者说它与任何开发模型无关;开发模型本身只是规定了软件生存周期中的若干步骤或阶段,便于开发人员去开发与维护,它并没有规定管理人员的过程管理方法与任务;为此,ISO9000或CMMI管理体系规定采取阶段评审和不符合项的动态跟踪制度,只有前一阶段的不符合项全部改正后,才允许开发人员进入后一阶段的工作;所谓不符合项,就是在评审中发现的问题项,它与BUG既有联系,又有区别;对于这些不符合项,软件管理部门要列出表格,记录在案,确定负责人,限定改正时间,动态跟踪到底;8.对生存周期模型裁减指南有什么看法“生存周期模型裁减指南”是IT企业或软件组织内部根据软件开发模型的普遍原则,结合本单位的开发经验和行业特点的具体实际定制出来的;它有针对性地对选定的软件开发模型中定义的生存周期,进行恰当地裁减;所谓裁减,就是队员模型中定义的内容进行增、改、删,去掉对本单位或者本项目不适合的部分,增加对本单元或者本项目适用的内容,同时进一步细化;这样可以缩短开发时间,减少开发成本,具有非常现实的意义;软件立项与合同9.什么叫风险分析技能风险和技术风险有何区别这里的风险分析是指软件立项过程中对产品开发、销售等可能出现的风险进行分析;分析方法是将一个大风险化解为多个小风险,然后再一个个克服小风险;技术风险是指采用新技术的风险程度;技能风险是指项目组成员掌握新技术的风险程度;两者的区别在于一个是说新技术如新的开发工具,新的设计思想本身的风险,一个是说人员要掌握这种新技术的风险;10.行业领域业务专家与产品经理有何异同行业领域业务专家是精通某行业领域业务的人,在讲标时能把投标书的内容准确、生动地表述出来,使客户心服口服;而产品经理是某产品需求分析和概要设计的经理或专家,主要负责产品的立项、需求、设计和销售等业务;两者的相同点是:必须精通该产品的功能、性能和接口;不同点是:前者突出熟悉产品的应用业务领域,后者突出熟悉产品的需求与设计; 软件需求11.需求分析的目的是什么需求分析的难点在哪里软件需求分析,其目的是用于说明软件产品或软件项目需要满足的条件和限制;在软件工程项目中首先要获取用户的需求,通过对软件需要的提取、分析、文档化及验证,为进一步的设计和实现提供依据;需求分析的难点是:在系统的功能、性能和接口方面,开发者与客户达成完全一致的需求,让客户最终签字确认,并保证在项目验收前,需求相对稳定不变;万一需求有一点变化,双方必须履行“需求变更管理程序”,而变更管理程序在签订合同时已经做了规定;要知道,合同是具有法律效力的;12.为什么说需求分析是面向流程的系统的功能、性能、接口、界面都是在流程中动态实时的反映出来;在所有的流程物流、人流、资金流、信息流、单据流、报表流、数据流中,数据流最重要,也最具有代表性;因为在计算机网络系统内,一切流程都表现为数据流,或者说是数据流在不同方向的投影;而流程是动态的、实时的;所以说,需求分析是面向流程的;13.需求分析的基本思路是什么需求分析的思路,是从客户的功能需求系统需要做什么出发,由系统的业务流程和数据流程导出系统的业务模型和功能模型,识别出系统的元数据和中间数据,为今后设计数据模型做好充分准备;同时,对系统的软、硬件环境配置,开发工具,开发周期,费用,开发进度,培训,系统风险进行评估;14.业界存在哪三种需求分析方法你认为哪一种更好业界存在三种需求分析方法:面向功能分析、面向对象分析、面向数据分析;以上这三种方法,各自适用于不同的目标系统;目前时尚的方法是面向对象分析,包括面向主体和面向方法;总的来说,对于系统软件和应用软件来说,面向功能需求分析的方法简单明了,而面向对象的需求分析方法则复杂抽象;对于以关系数据库为平台的信息系统软件来说,面向数据需求分析方法的特点是抓住了本质;但是,这三种分析方法都离不开面向流程分析这根总线:功能、对象、数据都是在流程中产生的,又都是为流程服务的;15.需求管理过程的目标和内容是什么需求管理的目标,是保证软件项目或产品满足客户在软件功能、性能、接口三个方面的需求;需求管理过程的内容,主要包括需求确认、需求评审、需求追踪和需求变更活动管理; 16.为什么需求文档要进行同行评审同行评审,是软件工作产品验证的活动,其目的是为了及早和高效地从软件工作产品中识别并消除缺陷;重点在于发现软件工作产品中的缺陷;另外,由于进行同行评审,使大量人员对软件系统中原本不熟悉的部分更加了解,因此同行评审还提高了项目的连续性,培训了后备人员;17.怎么理解不符合项为什么要对它进行跟踪管理不符合项是指没有满足要求的项,不一定是错误,跟bug是不同的;跟踪的意思在于,获得需求目前的实现状态,确保用户所有的需求都得到满足;可靠的跟踪信息可为需求变更、系统维护、关键成员离开、系统再设计和类似系统设计等很多方面,提供参考和指导,并可以减少风险和提高项目成功率;18.需求描述有哪几种工具你喜欢哪一种为什么需求描述工具包括数据流图、业务流程图、用况图、时序图、用户交互图、数据模型图和功能需求列表、性能需求列表、接口需求列表、界面需求列表等;选择哪一种描述工具,主要取决于问题域的本质特征;不同的软件,对分析要求的严格程度不同;我喜欢业务流程图,它包括了物流、资金流、信息流,即业务操作模型,重点是业务操作的流水步骤;业务模型表示了与系统有关的人、设备、其他子系统之间的业务关系和费用关系,它是经过业务流程重组、再创和优化后,并且得到企业领导确认的业务流程图;绘制这个图的工具可以是Office办公软件;软件策划19.简述软件策划的步骤;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,Microsoft Foundation Classes进行编程;软件测试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.传统软件维护分哪几大类传统软件维护分四大类,分别是:纠错性维护;适应性维护;完善性维护;预防性维护;42.简述软件维护的工作程序;软件维护的工作程序与软件开发的工作程序相仿;其工作程序是:维护的需求分析、维护的设计、修改程序代码、维护后的测试、维护后的试运行、维护后的正式运行、维护过程的评审和审计;43.可维护性的软件应具备什么性质所谓软件的可维护性,就是维护人员理解、掌握和修改被维护软件的难易程度;可维护性的软件,必须具备下列4条性质:可理解性、可测试性、可修改性和可移植性;44.面向缺陷维护的内容是什么面向缺陷维护的内容是:该软件产品能够正常运行,可以满足用户的功能、性能、接口需求,只是维护前在个别地方存在缺陷,用户不是非常满意;克服缺陷的方法是修改程序,也就是通常说的只修改程序,不修改数据结构;45.面向功能维护的内容是什么面向功能维护的内容是:该软件产品在功能、性能、接口上存在某些不足,不能满足用户的某些需求,因此需要增加某些功能、性能、接口;解决这些不足的方法是,不但要修改设计,而且也要修改程序,也就是通常说的既修改数据结构,又修改编码;46.怎么理解UML对软件维护的重大影响UML的功能覆盖整个软件的开发周期,从需求分析开始,直到软件的发布、实施和维护为止,因而它对传统意义下的维护工作产生重大影响;UML把软件生存周期定义为4个主要阶段:初始、细化、构造、移交;经过这4个阶段的历程被称为一个开发周期,自动产生一个周期内的所有文档,从而生成一个软件产品;首次经历着4个阶段称为该产品的初开发周期,除非该产品的生命终止,否则它将重复初始、细化、构造和移交这4个阶段,从而演化为下一代产品,这就是对旧有产品的维护,也是新产品的升级换代,也就是开发周期的演化,也就是UML对软件维护工作的影响;软件过程管理47.怎样理解“软件组织、工作产品、软件过程、软件过程资源、软件过程财富”的概念软件组织:CMM/CMMI中的“组织”或“软件组织”,是指软件企业或软件公司自己;。

软件工程 简答题复习题(带答案)

软件工程 简答题复习题(带答案)

软件工程简答题复习题(带答案)软件工程简答题复习题(带答案)1. 什么是软件工程?软件工程是一种系统化、规范化、可量化的方法,用于开发、维护和测试软件系统的过程。

它涵盖了软件开发的各个方面,包括需求分析、设计、编码、测试和维护等。

2. 软件开发生命周期有哪些阶段?常见的软件开发生命周期包括需求分析、系统设计、详细设计、编码、测试、部署和维护等阶段。

3. 什么是需求分析?需求分析是软件开发过程中的第一步,它涉及与客户进行沟通和理解客户需求的过程。

通过需求分析,开发团队可以明确软件系统的功能和性能要求,并将这些要求转化为详细的规格说明。

4. 需求分析的主要目标是什么?需求分析的主要目标是确保开发团队和客户对软件系统的需求达成共识。

它需要明确软件系统的功能需求、性能需求和约束条件,以便后续的设计和开发工作能够按照这些需求进行。

5. 什么是软件设计?软件设计是在需求分析的基础上,根据系统需求和约束条件,将系统划分为模块,确定模块之间的接口和关系,设计出满足系统需求的软件结构和算法的过程。

6. 软件设计的原则有哪些?常见的软件设计原则包括单一职责原则(SRP)、开闭原则(OCP)、里氏替换原则(LSP)、依赖倒置原则(DIP)、接口隔离原则(ISP)和迪米特法则(LoD)等。

7. 什么是软件测试?软件测试是为了评估系统的质量和功能是否满足需求的过程。

它通过设计和执行测试用例,检查系统的输出是否符合预期,并发现潜在的错误和缺陷。

8. 软件测试的分类有哪些?软件测试可以分为单元测试、集成测试、系统测试和验收测试等不同的层次。

单元测试用于测试软件的最小功能单元,集成测试用于测试不同模块之间的交互,系统测试则测试整个系统的功能和性能,验收测试是由客户进行的测试,以确认系统是否达到了合同中规定的要求。

9. 什么是软件维护?软件维护是在软件交付给客户后,为了保证其正常运行和适应环境变化而进行的一系列活动。

维护包括错误修复、性能优化、功能扩展等。

软件工程简答题

软件工程简答题

软件⼯程简答题三.名词解释1.软件⼯程是将系统的、规范的、可度量的⽅法(1分)应⽤于软件的开发、运⾏和维护的全过程及上述⽅法的研究。

(3分)4.软件维护是软件⽣存周期的最后⼀个阶段,所有活动都发⽣在软件交付并投⼊运⾏之后。

分)1计算机软件是与计算机系统操作有关的程序(1分)、规程、规则(1分)及任何与之有关的⽂档(1分)和数据(1分)。

2数据流图是以图形的⽅式描述数据在系统中流动和处理的过程。

只反映系统必须完成的逻辑功能,是⼀种功能模型。

3软件可维护性是指软件被理解、改正、调整和改进的难易程度(3分),是指导软件⼯程各个阶段⼯作的⼀条基本原则,也是软件⼯程追求的⽬标之⼀。

(1分)4软件测试:是对软件规格说明、软件设计和编码的最后复审(1分),⽬的是在软件产品交付之前尽可能发现软件中潜伏的错误。

(3分)1软件⽣命周期:软件产品从形成概念开始,经过开发(1分)、运⾏(使⽤)(1分)和维护(1分)直到退役(1分)的全过程称为软件⽣存周期,包括软件定义、开发、使⽤和维护三部分。

3. 协作图⽤于描述相互合作的对象间的交互关系(2分)和链接关系(2分)。

4. 软件重⽤是指在两次或多次不同的软件开发过程中(2分)重复使⽤相同或相似软件元素的过程。

(2分)2. 变换流:由输⼊﹑输出﹑变换(或称处理)三部分组成,是⼀顺序结构。

3.模块的耦合和内聚内聚:⼜称为块内联系,指模块内部各成分之间相互关联的程度,以⾼内聚为设计⽬标。

耦合:也称块间联系,模块之间相互联系程度的度量,联系越紧密,耦合性越强,独⽴性越差,以低耦合为设计⽬标。

4.等价类划分:等价类的划分,是将输⼊数据按有效的或⽆效的划分成若⼲个等价类,测试每个等价类的代表值。

⽤少量有代表性的例⼦代替⼤量测试⽬的相同的例⼦,能有效地提⾼测试效率。

5. 预防性维护:为了提⾼软件的可维护性和可靠性⽽对软件进⾏的修改称为预防性维护。

2.事务流:它的某个加⼯,分离成许多发散的数据流,形成许多加⼯路径,并且根据输⼊值选择其中⼀个路径来执⾏。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1、简述结构化范型和面向对象范型的要点,并分析它们的优缺点。

答:结构化范型要点:结构化范型也称生命周期方法学,属于传统方法学。

传统的软件开发方法大部分采用瀑布模型。

这种模型要求每一阶段都以前一阶段形成的文档为基础完成工作。

每一阶段将要完成时,都要求开发人员进行验证或确认。

瀑布模型要求在软件产品生成之前对用户需求进行尽可能精确的、完全的刻画。

但要完成这种任务相当困难。

优点:把软件生命周期划分成基干个阶段,每个阶段的任务相对独立,而且比较简单,便于不同人员分工协作,从而降低了整个软件开发过程的困难程度.
缺点:当软件规模庞大时,或者对软件的需求是模糊的或会承受时间而变化时,开发出的软件往往不成功;而且维护起来仍然很困难。

面向对象范型四个要点:(1)面向对象的软件系统是由对象组成的,软件中的任何元素都是对象,复杂的软件对象由简单的软件对象组合而成。

(2)所有对象划分成各种对象类,每个对象都定义了一组数据和一组方法。

(3)按照子类(派生类)和父类(基类)的关系,把若干个对象类组成一个层次结构的系统(类等级)。

在派生类中对某些特性又做了重新描述,则在派生类中的这些特性将以新描述为准,也就是说,低层的特性将屏蔽高层的同名特性。

(4)对象彼此之间仅能通过传递消息互相联系。

面向对象范型主要优点(1)按照人类习惯的思维方法,对软件开发过程所有阶段进行综合考虑;(2)软件生存期各阶段所使用的方法、技术具有高度的连续性;(3)软件开发各个阶段有机集成,有利于系统的稳定性】
6、非渐增式测试与渐增式测试有什么区别?
答:【区别:1、非渐增式测试方法把单元测试和集成测试分成两个不同的阶段,前一阶段完成模块的单元测试,后一阶段完成集成测试。

而渐增式测试往往把单元测试与集成测试和在一起,同时完成。

2、非渐增式需要更多的工作量,因为每个模块都需要驱动模块和桩模块,而渐增式利用已测试过的模块作为驱动模块或桩模块,因此工作量较少。

渐增式可以较早的发现接口之间的错误,非渐增式最后组装是才发现。

渐增式有利于排错,发生错误往往和最近加进来的模块有关,而非渐增式发现接口错误推迟到最后,很难判断是哪一部分接口出错。

渐增式比较彻底,已测试的模块和新的模块再测试。

渐增式占用的时间较多,但非渐增式须更多的驱动模块、桩模块也占用一些时间。

非渐增式开始可并行测试所有模块,能充分利用人力,对测试大型软件很有意义。


7、为什么软件测试不应该由程序的编写人员来做?
【答:软件测试的目的是为了发现程序中的错误而执行程序的过程。

正确认识测试的目标是十分重要的,测试目标决定了测试力案的设计。

如果为了表明程序是正确的而进行测试,就会设计一些不易暴露错误的测试方案;相反,如果测试是为了发现程序中的错误,就会力求设计出最能暴露错误的测试方案。

由于测试的目标是暴露程序中的错误,从心理学角度看,由程序的编写者自己进行测试是不恰当的。


10.什么是软件危机?
答:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。

这些问题不仅仅是不能正常运行的软件才具有的,实际上,几乎所有软件都不同程度的存在这些问题。

软件危机包含下属两方面的问题:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。

具体地说,软件危机主要有以下一些典型表现:1.对软件开发成本和进度的估计常常很不准确。

2.用户对“已完成的”软件系统不满意的现象经常发生。

3.软件产品的质量往往靠不住。

4.软件常常是不可维护的。

5.软件通常没有适当的文档资料。

6.软件成本在计算机系统总成本中所占的比例逐年上升。

7.软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。

23、面向对象设计应遵循那些准则?
【答:1)模块化;2)抽象;3)信息隐藏;4)弱耦合;5)强内聚;6)可重用。


11. 分别解释对象模型、动态模型及功能模型的概念.
【(1)对象模型:它表示了静态的、结构化的系统数据性质,描述了系统的静态结构它是从客观世界实体的对象关系角度来描述,表现了对象的相互关系。

该模型主要关系的是系统中对象的结构、属性和操作,使用了对象图的工具来刻画,它是分析阶段三个模型的核心,也是其他两个模型的框架。

涉及及的概念有,对象和类、关联和链。

(2)动态模型:是与时间和变化有关的系统性质。

该模型描述了系统的控制结构,它表示了瞬时的、行为化的系统控制性质,它关系的是系统的控制,操作的执行顺序,它从对象的事件和状态的角度出发,表现了对象的相互行为。

该模型描述的系统属性是触发事件,事件序列、状态、事件与状态的组织。

使用状态图作为描述工具。

涉及的重要概念是事件、状态、操作等。

(3)功能模型:描述了系统的所有计算。

功能模型指出发生了什么,动态模型确定什么时候发生,而对象模型确定发生的客体。

功能模型表明一个计算如何从输入值得到输出值,它不考虑所计算的次序。

功能模型由多张数据流图组成。

数据流图说明数据流是如何从外部输入、经过操作和内部存储输出到外部的。

功能模型也包括对象模型中值的约束条件。

功能模型说明对象模型中操作的含义、动态模型中动作的意义以及对象模型中约束的意义。

相关的概念有:数据流图中的处理、数据流、动作对象、数据存储对象等。


12、非渐增式测试和渐增式测试有什么区别?
【区别:1、非渐增式测试方法把单元测试和集成测试分成两个不同的阶段,前一阶段完成模块的单元测试,后一阶段完成集成测试。

而渐增式测试往往把单元测试与集成测试和在一起,同时完成。

2、非渐增式需要更多的工作量,因为每个模块都需要驱动模块和桩模块,而渐增式利用已测试过的模块作为驱动模块或桩模块,因此工作量较少。

渐增式可以较早的发现接口之间的错误,非渐增式最后组装是才发现。

渐增式有利于排错,发生错误往往和最近加进来的模块有关,而非渐增式发现接口错误推迟到最后,很难判断是哪一部分接口出错。

渐增式比较彻底,已测试的模块和新的模块再测试。

渐增式占用的时间较多,但非渐增式须更多的驱动模块、桩模块也占用一些时间。

非渐增式开始可并行测试所有模块,能充分利用人力,对测试大型软件很有意义。


15、模块独立性与信息隐蔽有何关系?
答:【答“模块独立性”是指软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中其它的模块的接口是简单的。

所谓的“信息隐蔽”是指每个模块的实现细节对于其它模块来说是隐蔽的。

也就是说,模块中所包含的信息(包括数据和过程)不允许其它不需要这些信息的模块使用
衡量模块独立性的一个准则就是模块内聚,达到信息隐蔽的模块是信息内聚模块,它是高内聚的情形,因此模块独立性当然就很强了】
16面向对象的集成测试主要有哪几种不同的测试策略?
【答:传统的集成测试策略没有意义。

面向对象软件的集成测试主要有下述两种
不同的测试策略:基于线程的测试基于的测试使用】
18、在面向对象的系统开发过程中,每个阶段需要建造的模型各有什么作用?
19、答:(1)在面向对象的系统开发过程中,每个阶段要建造不同的模型。

(2)需求分析阶段建造的模型用来捕获系统需求分析
(3)设计阶段的模型是分析模型的扩充,为实现阶段作指导性和技术性的解决方案
(4)实现阶段的模型是真正的源代码及编译后的组件。

(5)发布阶段是描述系统物理上的架构
22、什么是模型?为什么要建模?
答:它是以立体的形态表达特定的创意,以实体的形体线条、体量关系等元素不同程度地表现设计思想。

建模是为了能够更好地理解正在开发的系统。

通过建模,要达到4个目的:
(1)模型有助于按照实际情况或按照所需要的样式对系统进行可视化。

(2)模型能够规约系统的结构或行为。

(3)模型给出了指导构造系统的模板。

(4)模型对做出的决策进行文档化。

24、简述可行性研究的必要性,并回答应该从哪些方面研究目标系统的可行性?
25.瀑布模型的缺点?
【1)在项目各个阶段之间极少有反馈。

2)只有在项目生命周期的后期才能看到结果。

3)通过过多的强制完成日期和里程碑来跟踪各个项目阶段。


26 模块的独立性?
【模块独立性指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单. 模块独立性是指模块内部各部分及模块间的关系的一种衡量标准,由内聚和耦合来度量。

】。

相关文档
最新文档