软件工程问答填空简答
- 格式:doc
- 大小:43.00 KB
- 文档页数:6
2023软件工程导论期末考试题库及参考答案一、选择题(每题2分,共20分)1. 以下哪个不是软件工程的三个基本目标?A. 可维护性B. 可用性C. 可靠性D. 高效性参考答案:D2. 软件生命周期中,以下哪个阶段是软件开发过程的核心阶段?A. 需求分析B. 设计C. 编码D. 测试参考答案:C3. 以下哪种编程范式主要用于降低软件复杂性?A. 面向对象编程B. 过程式编程C. 函数式编程D. 逻辑编程参考答案:A4. 在软件工程中,以下哪个方法用于估算软件项目的成本和进度?A. COCOMOB. WBSC. SDLCD. CASE参考答案:A5. 以下哪个是软件工程中的一个重要原则?A. 分而治之B. 一次性编写C. 重用D. 模块化参考答案:D6. 以下哪个不是软件工程的基本活动?A. 软件规格B. 软件开发C. 软件验证D. 软件测试参考答案:C7. 以下哪个是软件工程中用于提高软件质量的技术?A. 设计模式B. 重构C. 代码审查D. 单元测试参考答案:C8. 以下哪个不是软件工程的五大基本过程?A. 软件规格B. 软件开发C. 软件维护D. 软件项目管理参考答案:D9. 以下哪个是软件工程中的一个重要概念,用于描述软件系统中的各个组件之间的关系?A. 耦合B. 内聚C. 模块化D. 重用参考答案:A10. 以下哪个是软件工程中的一个重要原则,用于指导软件开发过程?A. 迭代B. 增量C.螺旋D. 模型驱动参考答案:A二、填空题(每题2分,共20分)11. 软件工程的三要素是:方法、工具和______。
参考答案:过程12. 软件生命周期包括:需求分析、设计、编码、______和软件维护。
参考答案:测试13. 软件工程中的面向对象方法包括:封装、继承和______。
参考答案:多态14. 软件工程中的 CASE 工具主要用于支持______。
参考答案:软件设计和开发15. 软件工程中的敏捷开发方法强调______、可维护性和可扩展性。
一、填空题(每空1分, 共20分)1.软件生存周期一般可分为__问题定义__、可行性研究、_需求分析_____、设计编码、__测试________、运行与维护阶段。
2.按软件旳功能进行划分, 软件可以划分为系统软件、支撑软件和应用软件。
3.可行性研究重要集中在如下四个方面经济可行性、技术可行性、法律可行性和抉择。
4.顾客界面旳可使用性是顾客界面设计最重要旳也是最基本旳目旳。
5.常见旳软件概要设计措施有3大类: 以数据流图为基础构造模块构造旳___构造化设计措施_________, 以数据构造为基础构造模块旳__jackson措施__________, 以对象、类、继承和通信为基础旳__面向对象设计措施__________。
6.__数据流图________和__数据字典___共同构成系统旳逻辑模型。
7.软件测试旳措施有__分析措施________和___非分析措施_______(即黑盒法)。
8.单元测试一般以___白盒_____________测试为主, ___黑盒______测试为辅。
9.成本估计措施重要有__自底向上估计________、_自顶向下估计_________和算法模型估计三种类型。
二、单项选择题(每题2分, 共10分)1.下列哪个阶段不属于软件生存周期旳三大阶段( C )。
A.计划阶段B.开发阶段2. C.编码阶段 D.维护阶段3.需求分析是(A )。
A. 软件开发工作旳基础B. 软件生存周期旳开始C. 由系统分析员单独完毕旳D. 由顾客自己单独完毕旳原型化措施是软件开发中一类常用旳措施, 它与构造化措施相比较, 更需要( B )。
A. 明确旳需求定义B.完整旳生命周期C、较长旳开发时间D、纯熟旳开发人员软件维护时, 对测试阶段未发现旳错误进行测试、诊断、定位、纠错, 直至修改旳回归测试过程称为( A )。
A、改正性维护B、适应性维护C、完善性维护D、防止性维护一般说来, 投入运行旳软件系统中有错误(A )。
1、什么是软件工程?它目标和内容是什么?软件工程就是用科学的知识和技术原理来定义,开发,维护软件的一门学科。
软件工程目标:付出较低开发成本;达到要求的功能;取得较好的性能;开发的软件易于移植;只需较低的维护费用;能按时完成开发任务,及时交付使用;开发的软件可靠性高。
软件工程内容:包括开发技术和开发管理两个方面。
软件开发中常见的软件过程模型有瀑布模型、原型模型、螺旋模型、喷泉模型、统一软件过程等。
其中喷泉模型、统一软件过程适用于面向对象的软件开发。
结构化分析:简称SA,面向数据流进行数据分析的方法。
采用自顶向下逐层分解的分析策略。
顶层抽象地描述整个系统,底层具体地画出系统工程的每个细节。
中间层则是从抽象到具体的过渡。
使用数据流图,数据字典,作为描述工具,使用结构化语言,判定表,判定树描述加工逻辑。
4把一个软件需求转换为软件表示时,首先设计出软件总的体系结构。
称为概要设计或结构设计。
基本任务:⑴设计软件系统结构⑵进行数据结构及数据库的设计⑶编写概要设计的文档⑷评审5、软件维护有哪些内容?( 1 )校正性维护。
在软件交付使用后,一些隐含的错误在某些特定的使用环境下会暴露出来。
为了识别和纠正错误,修改软件性能上的缺陷,应进行确定和修改错误的过程,这个过程就称为校正性维护。
( 2 )适应性维护。
为了使应用软件适应计算机硬件、软件环境及数据环境的不断发生的变化而修改软件的过程称为适应性维护。
( 3 ) 完善性维护。
为增加软件功能、增强软件性能、提高软件运行效率而进行的维护活动称为完善性维护。
( 4 )预防性维护。
为了提高软件的可维护性和可靠性而对软件进行的修改称为预防性维护。
6、软件测试要经过哪些步骤 ?这些测试与软件开发各阶段之间有什么关系 ?软件测试要经过的步骤是:单元测试→集成测试→确认测试→系统测试。
单元测试对源程序中每一个程序单元进行测试,检查各个模块是否正确实现规定的功能,从而发现模块在编码中或算法中的错误。
绪论1、什么是软件工程?软件工程和计算机科学有何区别?答:软件工程是以计算机科学理论及其他有关学科旳理论为指导,采用工程化旳概念、原理、技术和措施进行软件旳开发和维护,把通过时间证明是对旳旳管理措施和目前可以得到旳最佳旳技术、措施相结合,以期用较少旳代价获取高质量旳软件。
计算机科学侧重于理论研究,其成果可应用于软件工程,而软件工程则强调怎样有效旳建造一种软件系统。
2、什么是软件?答:计算机软件是与计算机系统操作有关旳程序、规程、规则及任何与之有关旳文档及数据;3、什么是软件危机?分析其产生旳原因与挣脱危机旳措施,你认为目前已经挣脱软件危机了吗?请阐明理由。
软件危机是指在计算机软件旳开发和维护过程中所碰到旳一系列严重问题。
重要是两个问题:(1)怎样开发软件,怎样满足对软件旳日益增长旳需求;(2怎样维护数量不停膨胀旳已经有软件;软件危机旳出现,究其原因,首先是由软件自身旳特点引起旳,如软件越来越复杂,软件故障难于检测,工作量难以估计;另首先则是由于软件开发和维护措施不妥所导致旳,如软件旳个体化特性太强等。
为了挣脱软件危机所导致旳困境,提出软件工程旳概念,其重要思绪是:要把人类长期以来从事多种工程项目所积累起来旳行之有效旳原理,概念,技术和措施,尤其是人类从事计算机硬件研究和开发旳经验教训,应用到软件旳开发和维护中来。
我认为我国目前尚未完全挣脱软件危机,由于伴随经济发展,各行各业对软件人才旳需求不停扩大,由于我国旳软件人才缺口仍旧很大,导致了某些行业内软件开发进度难以预测,软件开发成本难以控制,顾客对产品功能难以满足,软件产品质量无法保证,软件产品难以维护,软件缺乏合适旳文档资料。
4、软件产品旳特性是什么?软件是一种逻辑产品,具有无形性;软件产品旳生产重要是研制;软件不存在磨损和老化问题,但存在退化问题;软件产品旳生产重要是脑力劳动;软件产品生产成本昂贵,目前生产方式尚未挣脱手工生产方式;软件具有“复杂性”,其开发和运行常受到计算机系统旳限制。
软件工程—简答题四、简答题1. 简述软件危机产生的缘故。
答案:软件危机产生的缘故有:(每点1分)(1)软件的规模越来越大,结构越来越复杂。
(2)软件开发的治理困难。
由于软件规模大,结构复杂,又具有无形性,导致治理困难,进度操纵困难,质量操纵困难,可靠性无法保证。
(3)软件开发费用不断增加。
软件生产是一种智力劳动,它是资金密集、人力密集的产业,大型软件投入人力多,周期长,费用上升专门快。
(4)软件开发技术、开发工具落后,生产率提高缓慢。
(5)生产方式落后。
软件仍旧采纳个体手工方式开发。
2. 简述需求分析的概念及需求分析的差不多任务。
答案:需求分析是指开发人员要准确明白得用户的要求,进行细致的调查分析,将用户非形式的需求陈述转化为完整的需求定义,再由需求定义转换到相应的形式功能规约(需求规格说明)的过程。
(3分)需求分析的差不多任务是要准确地定义新系统的目标,为了满足用户需要,回答系统必须〝做什么〞的问题。
(2分)3. 简述数据流图的分类及每一类的特点。
答案:数据流图有两类:变换型数据流图和事务型数据流图。
(1分)变换型数据流图是由输入、处理和输出三部分组成,(1分)因此变化型数据流图是一个顺序结构。
(1分)事务型数据流图特点:事务处理中心将它的输入流分离成许多发散的数据流,形成许多加工路径,(1分)并依照输入的值选择其中一个路径来执行。
(1分)4. 简述建立对象模型的过程。
答案:建立对象模型的步骤如下:(每点1分)(1)确定类:标出来自问题域的相关对象类。
(2)预备数据字典:为所有建模实体预备一个数据字典,准确描述各对象类的精确含义,描述当前问题中的类的范畴,包括对类的成员、用法方面的假设或限制;(3)确定关联:确定二个或多个类之间的相互依靠;(4)确定属性:只考虑与具体应用直截了当相关的属性(5)使用继承来细化类:使用继承来共享公共结构,以此来重新组织类__全国2020年1月1.简述软件工程面临的问题。
1、典型的详细设计工具有流程图、盒图、、类程序设计语言。
问题反馈【教师释疑】正确答案:【PAD图】2、UML是一种语言。
问题反馈【教师释疑】正确答案:【可视化】3、类是一组具有属性、操作、关系和语义的对象的描述。
问题反馈【教师释疑】正确答案:【相同】4、对象是类的一个。
问题反馈【教师释疑】正确答案:【实例】5、用况图是一种表达系统模型的图形化工具。
问题反馈【教师释疑】正确答案:【功能】6、UML中的顺序图是一种交互图,即由一组对象以及按组织的对象之间的关系组成。
问题反馈【教师释疑】正确答案:【时序】7、模块的作用域是指受该模块内一个所影响的所有模块的集合。
问题反馈【教师释疑】正确答案:【判定】8、模块的控制域是指这个模块本身以及所有直接或间接它的模块的集合。
问题反馈【教师释疑】正确答案:【从属于】9、在数据流图中引入数据源和数据潭这两个术语的目的是为了表示系统的,可以使用它们和相关数据流来定义系统的。
问题反馈【教师释疑】正确答案:【环境|边界】10、模块结构图是系统的一个高层蓝图,允许设计人员在较高的层次上进行抽象思维。
模块结构图可用和两种形式来表示。
问题反馈【教师释疑】正确答案:【层次图|HIPO图】11、在设计模块结构图时要基于原则来设计模块。
问题反馈【教师释疑】正确答案:【高内聚低耦合】12、在进行总体结构设计时,人们通过长期的软件开发实践,总结出一些实现模块“高内聚低耦合”的启发式规则,对初始的模块结构图进行精化,其中一条规则是“尽力使模块的在其控制域之内”。
问题反馈【教师释疑】正确答案:【作用域】13、在进行总体结构设计时,人们通过长期的软件开发实践,总结出一些实现模块“高内聚低耦合”的启发式规则,对初始的模块结构图进行精化,其中一条规则是“力求深度、宽度、扇出和扇入”。
问题反馈【教师释疑】正确答案:【适中】14、在进行总体结构设计时,人们通过长期的软件开发实践,总结出一些实现模块“高内聚低耦合”的启发式规则,对初始的模块结构图进行精化,其中一条规则是“改进软件结构,提高模块的”。
软件工程简答题:1什么是软件危机?它有哪些典型表现?为什么会出现软件危机?我的答案:软件危机是指落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。
它的典型表现有以下几点,1.对软件开发成本和进度的估计常常很不准确。
2.用户对“已完成”软件系统不满意的现象经常发生。
3.软件产品的质量往往靠不住。
4.软件常常是不可维护的。
5.软件通常没有适当的文档资料。
6.软件成本在计算机系统总成本中所占的比例逐年上升。
7.软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。
软件危机出现的原因有软件本身的特点也和软件开发与维护的方法不正确有关。
用户需求不明确,软件开发规模大、复杂度变高,不正确的理论指导是具体原因。
2什么是软件工程?它有哪些本质特性?怎样用软件工程消除软件危机?我的答案:软件工程是指导计算机软件开发和维护的一门工程学科。
采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。
本质特性:1.软件工程关注于大型程序的构造。
2.软件工程的中心课题是控制复杂性。
3.软件经常变化。
4.开发软件的效率非常重要。
5.和谐地合作是开发软件的关键。
6.软件必须有效地支持它的用户。
7.在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品。
消除软件危机的方法:(1) 对计算机软件有一个正确的认识(软件≠程序)(2) 必须充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目(3) 推广使用在实践中总结出来的开发软件的成功技术和方法(4) 开发和使用更好的软件工具3简述软件生命周期的3个时期和8个阶段。
我的答案:软件的生命周期:软件定义、软件开发和运行维护8個階段:問題定義、可行性研究、需求分析、總體設計、詳細設計、編碼和單元測試、綜合測試、軟件維護4什么是软件过程?它与软件工程方法学有何关系?我的答案:软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。
《软件工程作业》考试复习题库(含答案)一、选择题1. 软件工程的三要素不包括以下哪项?A. 软件开发B. 软件维护C. 软件管理D. 软件设计答案:B2. 下列哪种编程范式主要用于软件工程中的面向对象编程?A. 命令式编程B. 函数式编程C. 面向对象编程D. 逻辑编程答案:C3. 在软件开发过程中,以下哪个阶段产生的文档最多?A. 需求分析B. 设计C. 编码D. 测试答案:A4. 以下哪个软件工程方法学强调在软件开发过程中使用迭代和增量开发?A. 敏捷开发B. 水晶方法C. 瀑布模型D. 敏捷开发与水晶方法的结合答案:A5. 以下哪个工具常用于软件需求分析阶段的模型建立?A. UML图B. 数据流程图C. 状态转换图D. 时序图答案:B二、填空题1. 软件工程的目的是提高软件的______、______和______。
答案:可用性、可靠性、可维护性2. 软件开发生命周期包括______、______、______、______和______。
答案:需求分析、设计、编码、测试、维护3. 在软件需求分析阶段,常用的方法有______、______和______。
答案:数据流程图、实体关系图、状态转换图4. 软件设计分为______设计和______设计。
答案:架构设计、详细设计5. 软件测试的目的不包括以下哪项______。
答案:找出软件的错误三、判断题1. 软件工程是计算机科学的一个分支。
()答案:正确2. 软件工程适用于所有类型的软件开发项目。
()答案:错误3. 敏捷开发方法适用于所有类型的软件开发项目。
()答案:错误4. 软件测试是软件开发过程中的最后一个阶段。
()答案:错误5. 软件维护是软件开发过程中的重要环节。
()答案:正确四、简答题1. 简述软件工程的定义及目标。
答案:软件工程是应用计算机科学、数学原理和方法来设计、开发、测试和维护软件的一门学科。
其目标包括提高软件的可用性、可靠性和可维护性,降低软件开发成本,提高软件开发效率。
1、软件设计的基本原理包括哪些内容软件设计的基本原理:1模块化四个属性:接口、功能、逻辑、状态2抽象3信息隐蔽4模块独立性两个定性的度量标准:耦合性与内聚性2、需求分析应遵循的原则是什么所有这些分析方法都遵守下述准则:1 必须理解并描述问题的信息域,根据这条准则应该建立数据模型;2 必须定义软件应完成的功能,这条准则要求建立功能模型;3 必须描述作为外部事件结果的软件行为,这条准则要求建立行为模型;4 必须对描述信息、功能和行为的模型进行分解,用层次的方式展示细节;3、为什么说软件测试是软件开发中不可缺少的重要一环,但不是软件质量保证的安全网① 软件测试是软件开发中不可缺少的重要一环,原因是:A、测试的工作量约占整个项目开发工作量的40%左右,几乎一半;如果是关系到人的生命安全的软件,测试的工作量还要成倍增加;B、软件测试代表了需求分析、设计、编码的最终复审;② 软件测试不是软件质量保证的安全网,因为软件测试只能发现错误,不能保证没有错误;4、软件测试的目的是什么为什么把软件测试的目标定义为只是发现错误软件测试的目的有:① 软件测试是为了发现错误而执行程序的过程;② 一个好的测试用例能够发现至今尚未发现的错误;③ 一个成功的测试是发现了至今尚未发现的错误;软件测试的目标定义为只是发现错误,原因是软件测试可以有两个目标,一个是预防错误,另一个是发现错误;由于软件开发是人的创造性劳动,人的活动不可能完美无缺,错误可能发生在任何一个阶段,因此预防错误这一目标几乎是不可实现的,所以软件测试的目标定义为只是发现错误;5、增量开发和原型开发有什么相同和不同的地方增量模型和原型模型都是从概要的需求出发进行开发的,但两者有明显的不同;增量模型是从一些不完整的系统需求出发开始开发,在开发过程中逐渐发现新的需求规格说明,并进一步充实完善该系统,使之成为实际可用的系统;原型开发的目的是为了发现并建立一个完整的经过证实的需求规格说明,并以此作为正式系统的开发基础;因此,原型开发阶段的输出是需求的规格说明,是为了降低整个软件生成期的费用而拉大需求分析阶段的一种方法,大部分原型是“用完就扔”的类型;7、说明动态建模的过程;1编写典型交互的脚本;2找出对象之间的事件;3为每个脚本准备一个事件轨迹图跟踪图;4创建一个状态图;5为确保一致性,匹配对象之间的事件;10、简述结构化程序设计方法的基本要点;1采用自顶向下,逐步求精的程序设计方法;2使用三种基本控制结构构造程序,分别是顺序,选择和循环3采用主程序员组的组织形式;11、简述文档在软件工程中的作用;1提高软件开发过程的能见度2提高开发效率3作为开发人员阶段工作成果和结束标志4记录开发过程的有关信息便于使用与维护;5提供软件运行、维护和培训有关资料;6便于用户了解软件功能、性能;12、简述提高可维护性的方法;1建立明确的软件质量目标2利用先进的软件开发技术和工具3建立明确的质量保证工作4选择可维护的程序设计语言5改进程序文档13、什么是模块的影响范围什么是模块的控制范围他们之间应该建立什么关系模块的影响范围:受该模块内的一个判定影响的所有模块的集合;模块的控制范围:模块本身及其所有下属模块直接或间接从属于它的模块的集合;一个模块的影响范围应在其控制范围之内,且判定所在的模块应与受其影响的模块在层次上尽量靠近;1. 软件生命期各阶段的任务是什么答:软件生命期分为7个阶段:1、问题定义:要解决的问题是什么2、可行性研究:确定问题是否值得解,技术可行性、经济可行性、操作可行性3、需求分析:系统必须做什么4、总体设计:系统如何实现,包括系统设计和结构设计5、详细设计:具体实现设计的系统6、实现:编码和测试7、运行维护:保证软件正常运行;2、软件重用的效益是什么答:1、软件重用可以显着地改善软件的质量和可靠性;2、软件重用可以极大地提高软件开发的效率;3、节省软件开发的成本,避免不必要的重复劳动和人力、财力的浪费;3、自顶而下渐增测试与自底而上渐增测试各有何优、缺点答:①自顶而下渐增测试优点:不需要测试驱动程序,能够在测试阶段的早期实现并验证系统的主要功能,而且能够尽早发现上层模块的接口错误;缺点:需要存根程序,底层错误发现较晚;②自底而上渐增测试优点与缺点和自顶而下渐增测试相反;4 、提高可维护性的方法有哪些答:在软件工程的每一阶段都应该努力提高系统的可维护性,在每个阶段结束前的审查和复审中,应着重对可维护性进行复审;在需求分析阶段的复审中,应对将来要扩充和修改的部分加以注明;在讨论软件可移植性问题时,要考虑可能要影响软件维护的系统界面;在软件设计的复审中,因从便于修改、模块化和功能独立的目标出发,评价软件的结构和过程,还应对将来可能修改的部分预先做准备;在软件代码复审中,应强调编码风格和内部说明这两个影响可维护性的因素;在软件系统交付使用前的每一测试步骤中都应给出需要进行预防性维护部分的提示;在完成每项维护工作后,都应对软件维护本身进行仔细认真的复审;为了从根本上提高软件系统的可维护性,人们正试图通过直接维护软件规格说明来维护软件 ,同时也在大力发展软件重用技术;5、简述软件测试要经过哪几个步骤,每个步骤与什么文档有关;解答测试过程按 4 个步骤进行,即单元测试模块测试、集成测试子系统测试和系统测试、确认测试验收测试和平行运行;单元测试集中对用源代码实现的每一个程序单元进行测试,与其相关的文档是单元测试计划和详细设计说明书;集成测试把已测试过的模块组装起来,主要对与设计相关的软件体系结构的构造进行测试;与其相关的文档是集成测试计划和软件需求说明书;确认测试则是要检查已实现的软件是否满足了需求规格说明中确定了的各种需求,以及软件配置是否完全、正确;与其相关的文档是确认测试计划和软件需求说明书;平行运行把已经经过确认的软件纳入实际运行环境中,与其他系统成份组合在一起进行测试;与其相关的文档:用户指南、使用手册等;1、什么是软件工程它目标和内容是什么软件工程就是用科学的知识和技术原理来定义,开发,维护软件的一门学科;软件工程目标:付出较低开发成本;达到要求的功能;取得较好的性能;开发的软件易于移植;只需较低的维护费用;能按时完成开发任务,及时交付使用;开发的软件可靠性高;软件工程内容:包括开发技术和开发管理两个方面;2、软件开发中有哪几种过程模型哪些适用于面向对象的软件开发软件开发中常见的软件过程模型有瀑布模型、原型模型、螺旋模型、喷泉模型、统一软件过程等;其中喷泉模型、统一软件过程适用于面向对象的软件开发;4、什么是软件概要设计该阶段的基本任务是什么把一个软件需求转换为软件表示时,首先设计出软件总的体系结构;称为概要设计或结构设计;基本任务:1)设计软件系统结构2)进行数据结构及数据库的设计3)编写概要设计的文档4)评审7、什么是软件生存周期它有哪几个活动软件生存周期:一个软件从提出开发要求开始直到该软件报废为止的整个时期;包括:可行性分析和项目开发计划,需求分析,概要设计,详细设计,编码,测试,维护;8、衡量模块独立性的两个标准是什么各表示什么含义内聚和耦合;内聚:又称为块内联系,指模块内部各成分之间相互关联的程度,以高内聚为设计目标;耦合:也称块间联系,模块之间相互联系程度的度量,联系越紧密,耦合性越强,独立性越差,以低耦合为设计目标;10、什么是需求分析需求分析阶段的基本任务是什么需求分析:开发人员准确地理解用户的要求,进行细致的调查分析,将用户非形式的需求陈述转化为完整的需求定义,再由需求定义转换到相应的需求规格说明的过程;基本任务:⑴问题识别⑵分析与综合,导出软件的逻辑模型⑶编写文档12、单元测试有哪些内容单元测试主要针对模块的以下五个基本特征进行测试:1模块接口2局部数据结构3重要的执行路径4错误处理5边界条件14、软件设计的基本原理包括哪些内容⑴模块化:模块是软件的组成部分,是具有独立功能且可命名的一段程序,所有模块组成整体,可以满足问题的要求;⑵抽象:认识复杂现象过程所使用权的工具,只考虑事物本质的共同特性,忽略细节和其它因素;通过抽象确定组成软件的过程实体;⑶信息隐蔽:将模块实现自身功能的细节与数据"隐蔽"起来;模块间仅交换为完成系统功能所必须的信息;⑷模块独立性:每个模块只完成系统要求的独立的子功能;21、说明面向对象的特征面向对象的特征是:1抽象性;抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面;2封装性;封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面;3继承性;是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系;4多态性;是指相同的操作或函数过程可以作用于多种类型的对象上并获得不同的结果;24、请简述黑盒测试和白盒测试有何区别,黑盒测试有哪些常用方法黑盒测试和白盒测试的区别:前者基于功能,后者基于结构;黑盒测试常用方法有:边界值、等价类、因果图、错误推测法等;26、CMM全称是什么分为哪几个级别CMM全称是软件能力成熟度模型;从无序到有序的进化分成5个级别,分别为:1 初始级;2 可重复级;3 已定义级;4 已管理级;5 优化级;28、软件生命周期划分为哪几个阶段软件生命周期分为三个时期八个阶段:软件定义:问题定义、可行性研究;软件开发:需求分析、概要设计、详细设计、编码、测试;软件运行:软件维护1.软件产品的特性①软件是一种逻辑实体,而不是具体的物理实体,因而它具有抽象性;②软件是通过人们的智力活动,把知识与技术转化成信息的一种产品,是在研制、开发中被创造出来的;③在软件的运行和使用期间,没有硬件那样的机械磨损、老化问题;④软件的开发和运行经常受到计算机系统的限制,对计算机系统有着不同程度的依赖性;2.如何检查数据流图的正确性和提高它的易理解性可从以下几个角度来检查数据流图的正确性:数据守恒、文件的使用;父图和子图的平衡等;提高数据流图的易理解性可从以下几方面进行:简化加工间的联系、注意分解的均匀、适当地命名等;3.BROOKS定律定义:向一个已经延期的项目增加人力,只会使得它更加延期;原因:1当小组变得更大时,每个人需要用更多时间与组内其他成员讨论问题、协调工作,因此增加了通信开销;2如果在开发过程中增加小组人员,则最初一段时间内项目组总生产率不仅不会提高反而会下降;这是因为新成员在开始时不仅不是生产力,而且在他们学习期间还需要花费小组其他成员的时间;4.软件生命周期可分为哪三个时期GB 8567中规定可分为哪几个阶段定义时期:问题的定义客户需求、可行性研究为什么做;开发时期:需求分析做什么、总体设计怎么做—抽象、详细设计怎样实现—具体、编码程序设计语实现测试;运行时期:软件维护;5、衡量模块独立性的两个标准是什么它们各表示什么答案:模块独立程度可以由两个定性标准度量,这两个标准分别称为内聚和耦合;耦合衡量不同模块彼此间互相依赖连接的紧密程度;内聚衡量一个模块内部各个元素彼此间结合的紧密程度;在设计时应尽量做到高内聚低耦合,从而获得较高的模块独立性6.为什么软件测试不应该由程序的编写人员来做软件测试的目的是为了发现程序中的错误而执行程序的过程;正确认识测试的目标是十分重要的,测试目标决定了测试方案的设计;如果为了表明程序是正确的而进行测试,就会设计一些不易暴露错误的测试方案;相反,如果测试是为了发现程序中的错误,就会力求设计出最能暴露错误的测试方案;由于测试的目标是暴露程序中的错误,从心理学角度看,由程序的编写者自己进行测试是不恰当的;7.可行性分析的任务是什么可行性分析的任务至少应该从以下三方面的可行性进行研究;①技术上可行性:研究现有技术、资源及限制能否支持和实现系统的功能、性能,主要是技术风险问题;②经济上的可行性:进行成本估算及效益评估,确定项目是否值得开发;③操作可行性:系统的操作方式在这个用户组织内行得通么必要时还应该从法律、社会效益等更广泛的方面研究各种解法的可行性;8. 什么是软件工程概括的说,软件工程是指导计算机软件开发和维护的一门工程学科;采用工程的概念、原理、技术和方法来开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够做到的最好的技术方法结合起来;以经济地开发出高质量的软件并有效地维护它,这就是软件工程;9.什么是编码风格为什么要强调编码风格编码风格又称程序设计风格或编程风格;编码的目标从强调效率转变为强调清晰;良好的编码风格能在一定程度上弥补语言存在的缺陷,而如果不注意风格就很难写出高质量的程序;尤其当多个程序员合作编写一个很大的程序时,需要强凋良好而一致的编码风格,以便相互通讯,减少因不协调而引起的问题;总之,良好的编码风格有助于编写出可靠而又容易维护的程序,编码的风格在很大程度上决定着程序的质量;10、详细设计的基本任务有哪几种描述方法答:详细设计即过程设计,通过对结构表示进行细化,得到软件详细的数据结构和算法,其基本目就是回答“详尽、精确地描述系统个模块的具体实现方法”;描述方法有:程序流程图、盒图、PAD图、判定表、判定树、jackson图、warnier图;11、软件测试的两种基本测试方法答:基本测试方法有黑盒试和白盒测试;黑盒测试法把程序看作一个黑盒子,完全不考虑程序的内部结构和处理过程;也就是说,黑盒测试是在程序接口进行的测试,它只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当地接收输入数据并产生正确的输出信息,程序运行过程中能否保持外部信息的完整性;黑盒测试又称为功能测试;白盒测试法把程序看成装在一个透明的白盒子里,测试者完全知道程序的结构和处理算法;这种方法按照程序内部的逻辑测试程序,检测程序中的主要执行通路是否都能按预定要求正确工作;白盒测试又称为结构测试12、生命周期各阶段的基本任务是及描述方法1问题描述:问题定义阶段必须回答的关键问题是:“要解决的问题是什么”2可行性研究:这个阶段要回答的关键问题是:“对于上一个阶段所确定的问题有行得通的解决办法吗”3需求分析:准确确定“为了解决这个问题,目标系统必须做什么”,主要是确定目标系统必须具备哪些功能;描述方法:数据流图、数据字典4总体设计:这个阶段必须回答的关键问题是:“概括地说,应该怎样实现目标系统”描述方法:系统流程图、层次图5详细设计:也称为模块设计,在这个阶段将详细地设计每个模块,确定实现模块功能所需要的算法和数据结构;描述方法:程序流程图、盒图6编码和单元测试:这个阶段的关键任务是写出正确的容易理解、容易维护的程序模块;7综合测试:这个阶段的关键任务是通过各种类型的测试使软件达到预定的要求; 1.简述软件工程方法学所包含的内容;软件工程方法学包括三个要素, 这就是方法、工具和过程;其中,方法是完成软件开发的各项任务的技术方法,回答“如何做”的问题;工具是为方法的运用提供自动的或半自动的软件支撑,过程是为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤;2.什么是软件过程它与软件工程方法学有何关系1软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤;2 软件过程是软件工程方法学的3个重要组成部分之一;3 软件工程方法学包含三个要素:方法、工具和过程;3.分析软件危机产生的主要原因有哪些答:导致软件危机的主要原因有:1软件日益复杂和庞大2软件开发管理困难和复杂3软件开发技术落后4生产方式落后5开发工具落后6软件开发费用不断增加4、说明结构化程序设计的主要思想是什么答:1自顶向下、逐步求精的程序设计方法2使用3种基本控制结构、单入口、单出口来构造程序;5、软件测试包括哪些步骤说明这些步骤的测试对象是什么答:1单元测试:测试对象为单元模块2集成测试:测试对象为组装后的程序模块3确认测试:测试对象为可运行的目标软件系统4系统测试:测试对象为计算机系统的各组成部分6、需求分析与软件设计二个阶段任务的主要区别是什么答:需求分析定义软件的用户需求,即定义待开发软件能做什么软件设计定义软件的实现细节以满足用户需求,即研究如何实现软件;7、说明软件测试和调试的目的有何区别答:测试的目的是判断和发现软件是否有错误调试的目的是定位软件错误并纠正错误;4、好的编程风格应遵循哪四条规则1节简化 2模块化3简单化 4文档化2、需求分析的任务是什么需求分析的任务是确定待开发的软件系统“做什么”;具体任务包括确定软件系统的功能需求、性能需求和运行环境约束,编制软件需求规格说明书、软件系统的验收测试准则和初步的用户手册;4、快速原型技术的基本思想是什么在软件开发的早期,快速开发一个目标软件系统的原型,让用户对其进行评价并提出修改意见,然后开发人员根据用户的意见对原型进行改进;5、瀑布模型一般适应哪些场合瀑布模型一般适用于功能、性能明确、完整、无重大变化的软件系统的开发;例如操作系统、编译系统、数据库管理系统等系统软件的开发;应用有一定的局限性;1、螺旋模型的适应场合有哪些适应场合:支持需求不明确、特别是大型软件系统的开发,并支持面向规格说明、面向过程、面向对象等多种软件开发方法,是一种具有广阔前景的模型;。
软件特点:1.逻辑实体2.与硬件生产方式不同3.与硬件的维护不同4.复杂的5成本相当昂贵.软件危机的产生及表现软件系统的规模越来越大,复杂度越来越高软件可靠性问题也越来越突出,原来的个人设计个人使用方式不再能满足需求迫切需要改变软件生产方式提高生产率于是出现软件危机.表现1.开发进度难以预测2.成本难以控3.功能不能能满足用户的需求4.质量难以保证5.难以维护6.缺少适当的文本资料.原因用户需求不明确缺乏正确的理论指导软件开发规模越来越大复杂度越来越高比较结构化方法和面向对象方法:结构化方法:自顶向下,逐步分解模块易于控制和处理模块相对独立、接口简单、使用维护非常方便.面向对象方法:提高软件系统的稳定性可修改和可重用性产生的具有特点:客观世界任何事物对象都是对象每各类定义一种方法若干对象组成参次结构系统对象通过传递消息相互联系第二章什么是软件过程?软件生存周期过程或软件过程组,是指软件生存周期中的一系类相关过程。
比较瀑布模型、原型模型、增量模型和螺旋模型1.瀑布模型广为人知和历史悠久,其优势是规范及文档驱动的方法。
但问题是,往往不能够真正满足用户的需求。
适用于传统软件工程领域的结构化开发 2.原型模型是为了克服瀑布模型的缺点而提出来的。
通过快速构建一个在机器上可运行的原型系统,让用户试用原型,并收集反馈意见的办法,来获取用户真实的需求3.螺旋模型适用于大型软件项目,比起之前的其它模型而言,有其一定的优越性,但这些优越性并不是绝对的4.增量模型具有在软件开发早期阶段使投资获得明显回报和交易维护的优点,但是要求软件具有开放的结构第三章可行性研究的任务是什么?进行一次大大压缩简化的系统分析和设计的过程,在高参差上以抽象的方式进行系统分析和设计。
任务:以最小的代缴在最短的时间内确定问题能否解决,也就是判定原定的目标和规模能否实现什么是需求分析?该阶段的基本任务是什么?需求分析过程就是通过分析员与用户之间的广泛交流,最终形成一个完整清晰一致的软件需求规格说明书的过程。
任务:认清问题、分析资料、建立分析模型、编写软件需求规格说明书结构化分析方法的步骤:系统要解决的问题为解决该问题系统该做的事情系统该怎么去做数据流图与数据字典的作用?数据流图指明系统中数据是如何流动和变换的及描述数据流是如何进行变换。
数据字典是在软件分析和设计的过程中给人提供关于数据的描述信息画数据流图应注意什么?合理编号,注意子图与父图的平衡,局部文件,分解的程度第四章如何理解模块的独立性?用什么指标来衡量模块的独立性?每个模块只能完成系统要求的子功能,与其他模块的联系较少且接口简单,模块独立的概念是模块化、抽象、信息隐蔽概念的直接结果定性标准度量:内聚和耦合结构设计有哪些原则?1.提高模块的独立性2.选择合适的模块规模3.适当的选择模块的深度、宽度、扇入和扇出4.模块的作用范围应在控制范围之内5.降低模块接口的复杂程度6.设计单入口和单出口,且功能可预测的模块软件详细设计的主要任务是什么?1.为每个模块确定所采取的算法,选择某种适当的工具表达算法的过程,写出模块的详细过程性描述2.确定每一模块使用的数据结构 3.确定模块接口的细节4.详细设计结束时,应把结果写入详细设计说明书,并且通过复审形成正式文档软件详细设计模块原则1.模块的逻辑描述要清晰易读、准确可靠2.采用结构化设计方法,改善控制结构,降低程序的复杂程度,从而提高程序的可读性、可测试性、可维护性3.选择恰当的工具描述模块算法详细设计的工具有哪几类?优缺点?工具:程序流程图、NS、PAD、HIPO判定表、伪码、PDL。
程序流程图:独立于任何一种程序设计语言,比较直观清晰的描述过程的控制流程,易于学习掌握。
但不能引导人们用结构化方法进行详细设计,人么可以实现向任何位置的转移,箭头使用不当,框图难懂,无法维护。
第五章软件测试的目地:为了发现程序中的错误而执行程序的过程软件调试的目地:在测试发现错误之后诊断并排除错误的过程白盒法有哪些逻辑覆盖标准?语句覆盖判定覆盖条件覆盖判定/条件覆盖条件组合覆盖这些标准有什么关系?条件组合覆盖满足其他的覆盖,覆盖标准最强属于黑盒法的测试用例设计方法有哪几种?等价划分边界值分析错误推测因果图软件测试要经过几个阶段?单元测试集成测试确认测试系统测试验收测试渐增式测试与非渐增式测试有哪些区别?非渐增式人工更多,可以同时测试所有模块渐增式有利于排错、比较彻底用、需要更多的机器时间在开发项目时,选择程序设计语言通常考虑哪些因素?项目的应用范围算法和计算的复杂性软件执行的环境性能上的选择和实现的条件数据结构的复杂性软件开发人员的知识水平和心理因素什么是程序设计风格?包括:源程序文档化数据说明语句结构、输入输出方法六章什么是对象什么是类对象是系统中用来描述客观事物的一个实体,他是构成系统的一个基本单位,主要因素是属性和服务。
类是具有相同属性和服务的一组对象的集合,用类作为这些对象的抽象描述面向对象的开发过程面向对象分析面向对象设计面向对象编程面向对象测试面向对象维护UML建模机制有哪两种?静态建模机制和动态建模机制每种通过哪些图来表达?静态有:用例图、类图、对象图、构建图、配置图动态的有:状态图、活动图、顺序图、合作图UML中类的关系有哪些,举例?关联课程类与学生类的选修关系;聚合学生和班主任组成班级;泛化学生信息管理系统与学生老师的关系;依赖汽车和汽油公路的关系面向对象分析的步骤?1.分析问题域,建立用力模型2.发现和定义对象和类3.识别对象的内部特征4.识别对象的外部联系5.识别对象之间的交互需求获取的方法?访谈式诱导式确认式第八章面向对象设计阶段包括那几项任务?每个任务的主要内容?面向对象设计主要包括系统的体系结构设计、子系统划分、人机交互界面、数据库设计、类对象设计选择程序设计语言时应考虑哪些因素:语言,类库,开发环境,对用户学习面向对象分析设计和编码技术所能提供的培训服务,在试用期间能提供的技术支持,能提供开发工具开发平台和发行平台,对机器性能和内存的需求,集成已有软件的难易程度软件开发成本估算的方法:自顶向下,自底向上,差别估计法处理风险的策略:风险缓解,风险监控,风险管理和意外事件计划软件质量保证的措施:基于非执行的测试、基于执行的测试和程序正确性证明。
配置管理的内容的目标:版本控制,变更控制,过程支持目标:软件配置管理的各项工作是有计划进行的,被选择的项目产品得到识别控制并且可以被相关人员获取,已识别出的项目产品的更改得到控制,使相关组别和个人及时了解软件基准的状态和内容配置管理的过程:项目计划阶段,项目开发维护阶段,配置管理的关键活动:配置项识别工作空间管理版本控制变更控制,状态报告,配置审计项目组织原则:尽早落实责任,减少接口,责权均衡程序设计小组的组织形式:主成员制小组,民主制小组,层次式小组项目人员配备的原则:重质量,重培训,双阶梯提升软件文档的作用:提高软件开发过程的能见度,提高开发效率,作为开发人员在一定阶段的工作成果和结束标志,记录开发过程中的有关信息,便于协调以后的软件开发、使用和维护,提高对软件的运行维护和培训的有关信息,便于管理人员开发人员操作人员用户的协作交流和了解,便于潜在用户了解软件的功能性能等各项指标,为选购软件提供依据软件文档管理维护过程中注意的问题:开发小组应设一位文档保管员,负责保管本项目已有文档的两套主文本,开发小组成员可保存一些个人文档,开发人员个人只保存着主文本中与他工作相关的部分文档,在新文档取代了就问当时,应及时注销旧文档,项目开发结束时文档管理人员应收回开发人员的个人文档,在开发过程中主文本的修改必须特别谨慎说明主要过程支持过程组织过程的含义和关系:主要过程供当事方在软件生存周期使用,支持过程目的是支持其他过程,它为其组成部分时他们有助于软件项目的成功和质量提高,组织过程被一个软件组织用来建立和实现相关生存周期的基础结构和人事制度,并不断改进这种结构和过程试卷简述软件工程基本原理的内容和关系用分阶段的生命周期计划严格管理2.坚持进行阶段评审3.实行严格的产品控制4.采用现代程序设计技术5.结果应能清楚地审查6.开发小组的人员应该少而精7.承认不断改进软件工程实践的必要性。
这七条原理是确保软件产品质量和开发效率的原理的最小集合它们是相互独立的,是缺一不可的最小集合同时,它们又是相当完备的。
简述需求分析过程应该建立的3种模型及其常见的表达工具:需求分析过程应该建立的3种模型:数据模型、功能模型和行为模型。
数据模型:描绘数据对象及数据对象间的关系,常用实体-联系图建立数据模型的图形;功能模型:描绘当数据在软件系统中移动时被变换的逻辑过程,指明系统具有是变换数据的功能,数据流图是建立功能模型的基础;行为模型:指明作为外部事件结果的系统行为。
状态转换图描绘了系统的各种行为模式和在不同状态间转换的方法。
状态转换图是行为模型的基础。
项目开发时选择程序设计语言主要实用标准:1.系统用户的要求2.可以使用的编译程序3.可以得到的软件工具4.项目的规模5.程序员的知识6.软件可移植性要求7.软件的应用领域。
决定软件可维护性的因素通常影响软件可维护性的因素有可理解性、可测试性、可修改性、可移植性、可重用性1.可理解性:可理解性是指维护人员理解软件的结构,接口,功能和内部过程的难易程度。
采用良好的编程风格有助于提高软件的易理解性2.可测试性:可测试性是指测试和诊断软件错误的难易程度3.可修改性:可修改性是指修改软件的难易程度4.可移植性:把程序从一种硬件配置和(或)软件系统环境转移到另一配置和环境的难易程度5.可重用性:重用是指同一事物不作修改或稍加改动就多次重复使用。
软件重用分为知识重用、方法和标准的重用和软件成分的重用3个层次什么是软件生存周期模型?有哪些主要模型?软件生存周期模型是描述软件开发过程中各种活动如何执行的模型。
模型是为了理解事物而对事物做出一种抽象,它忽略不必要的细节,它也是事物的一种抽象形式、一个规划、一个程式。
瀑布模型、增量模型、螺旋模型、喷泉模型、快速原型模型等简述对软件系统的综合需求1.功能需求2.性能需求3.可靠性和可用性需求4.出错处理需求5.接口需求6.设计约束或实现约束7.逆向需求8.将来可能提出的需求简述如何提高软件的可维护性 1.在软件生命周期的各个阶段都必须充分考虑维护问题2.结构化设计的几条主要原则,如模块化,信息隐藏,高内聚,低耦合等,对于提高软件的可理解性,可测试性和可修改性也都有重要的作用3.书写详细正确的文档,书写源文件的内部注解,使用良好的编程语言,具有良好的程序设计风格,也有助于提高软件的可理解性4.使用先进的测试工具,保存以前的测试过程和测试用例,则有助于提高软件的可测试性简述影响程序效率的几种因素:效率主要指处理机时间和存储器容量两个方面1.算法对效率的影响:源程序的效率直接由详细设计阶段确定的算法的效率决定,但程序的风格也能对程序的执行速度和存储器要求产生影响2.存储器效率的影响3.输入输出效率的影响软件工程软件工程是指导计算机软件开发和维护的一门工程学科,采用工程的概念、原理、技术和方法来开发和维护软件,把经过时间考验而证明正确的管理技术和当前最好的技术方法结合,以经济地开发出高质量的软件并有效地维护它代数构造形式方法为目标软件系统的需求规格说明,提供以代数构造方式描述目标系统的结构、功能的特殊构造机制模块由边界元素限定的相邻程序元素(如数据说明、可执行的语句)的序列,而且有一个总体标识符代表它,它具有三个基本属性:功能,逻辑,状态.对象模型对象模型表示静态的、结构化的系统的“数据”性质,是对模拟客观世界实体的对象以及对象彼此间的关系的映射,描述了系统的静态结构软件质量保证是向用户及社会提供满意的高质量的产品,确保软件产品从诞生到消亡为止的所有阶段的质量活动,即确定、达到和维护需要的软件质量而进行的所有有计划、有系统的管理活动软件工程方法学把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称为范型;软件工程方法学包括三个要素:方法、工具和过程形式化方法是描述系统性质的基于数学的技术。