南京信息工程大学滨江学院李振宏《软件工程》期末复习32个考点完整版整理
南京信息工程大学滨江学院李振宏《软件工程》期末复习 个考点完整版

选择20题,每题1分;填空10题,每题1分;简答5题,每题8分;设计题3题,每题10分(流程图的设计、流图设计和环形复杂度的计算、语句覆盖和判定覆盖测试用例的设计)。
1.详细设计中,过程设计的工具,N-S图,PAD图及判定表和判定树各有何特点和适用情况?(第六章)(1)盒图(N-S图):一种不允许违背结构程序设计精神的图形工具,又称为N-S图。
它有下述特点:①功能域(作用域)明确,可以从盒图上一眼就看出来。
②盒图没有箭头,因此不允许随意转移控制。
③很容易确定局部和全程数据的作用域。
④很容易表现嵌套关系,也可以表示模块的层次结构。
适用:对大部分设计均有适用性,常用于软件工程详细设计中,提供一种结构化的方式,便于思考和解决问题。
(2)PAD图:PAD是问题分析图(problem analysis diagram) ,它用二维树形结构的图来表示程序的控制流。
PAD图的主要优点如下:①使用PAD符号设计的程序必然是结构化程序。
② PAD图所描绘的程序结构十分清晰。
最左面的竖线是程序的主线,即第一层结构。
随着程序层次的增加,PAD图逐渐向右延伸。
每增加一个层次,图形向右扩展一条竖线。
图中竖线的总条数就是程序的层次数。
③PAD图表现的程序逻辑,易读、易懂、易记。
程序从图中最左竖线上端的结点开始执行,自上而下,从左向右顺序执行,遍历所有结点。
④容易将PAD图转换成高级语言源程序,这种转换可用软件工具自动完成。
⑤既可表示程序逻辑,也可描绘数据结构。
⑥支持自顶向下、逐步求精方法的使用。
适用:为FORTTAN,COBOL,PASCAL等每种常用的高级程序设计语言提供了一套相应的图形符号。
开始时可以定义一个抽象的程序,随着设计的深入,使用def符号逐步增加细节,直至完成详细设计,如图6.6所示。
(3)判定表(P127有例子):适于表示复杂的条件组合与应做的动作之间的对应关系。
特点是:①能够间接而又无歧义的描述处理故意则。
(完整word版)软件工程复习重点

三大块内容:软件危机与软件工程传统软件开发方法面向对象方法一、软件危机与软件工程:软件、软件危机、软件生存期、软件开发模型、软件管理1、软件:软件是能够完成预定功能和性能的可执行的计算机程序+使程序正常运行所需要的数据+描述软件开发过程及其管理、程序的操作和使用的有关文档。
文档:分开发、管理、用户、维护文档,作用是记录及解决不可视性、通信与交流、管理与维护、用户服务2、软件危机a)表现:软件成本高、难于控制开发进度、软件工作量估计困难、软件质量低、软件修改维护困难b)原因:需求问题(描述不精确、理解不一致)、管理问题、方法和工具问题、软件本身的特点3、软件生存期:a)三个时期:定义时期(软件计划、需求分析)—>开发时期(软件设计、编码实现、测试)—>使用和维护时期(维护)b)六个阶段:软件计划需求分析设计编码测试使用与维护c)生命周期方法特点:顺序性、依赖性,推迟程序的物理实现、质量保证的观点(利于尽早发现错误,如阶段文档、评审)4、软件开发模型a)瀑布模型:文档驱动i.阶段划分、分而治之、控制开发过程的复杂性ii.自顶向下、由抽象到具体,顺序进行优点:规范管理开发过程、文档驱动缺点:初期系统的需求难以完全确定、文档驱动、周期长b)原型模型:i.针对:软件开发初期需求难以确定ii.基本思想:快速建立原型,完善用户需求iii.优点:用户参与、快速iv.缺点:快速弱功能、对开发环境要求高c)螺旋模型(风险驱动)d)增量模型(模块、功能驱动)e)迭代模型f)喷泉模型5、软件管理a)区别于其他工业产品生产管理的特点b)主要内容:开发计划与进度管理、文档管理、人员组织管理、成本管理、质量管理二、传统软件工程方法:a)软件计划i.问题定义ii.可行性研究1.经济可行性2.技术可行性3.法律可行性b)需求分析i.结构化分析SAii.面向数据流的分析方法1.DFD四个组成部分(表示方法、命名)2.DFD作图:需求描述DFD3.层次分解法(保持父图和其子图的平衡)4.数据字典(符号)c)软件设计i.总体设计1.模块独立性:高内聚2.作用域是控制域的子集3.单入单出4.规模、深度、宽度、扇入、扇出适当ii.传统设计方法1.面向数据流的设计方法(数据流图)a)结构化设计SD-对应有SD结构化需求分析、SP结构化实现b)DFD软件结构(层次图)i.变换设计ii.事务设计c)优缺点2.面向数据结构的设计方法a)Jackson方法b)Jackson图i.三种元素间的逻辑关系:顺序、选择、重复ii.可描述两种数据结构:数据结构、程序结构c)思想:数据结构与程序处理过程相互转换d)步骤:I/O DS对应关系Program Structure细化求精e)优缺点:i.数据入手ii.简化数据处理程序的设计iii.模块与独立性原则没有给予应有的重视iv.求提供对复杂系统设计过程的支持3.Parnas方法iii.详细设计1.结构化程序设计SPa)高效率---良结构b)三种基本控制结构、单入单出2.过程设计的工具d)实现/编码i.语言1.功能等价2.描述问题方便性有差异a)例如:OOPL---非OOPLii.程序设计风格e)软件测试i.目标ii.方法1.正确性证明2.静态测试3.动态测试a)黑盒(功能)测试i.等价类划分ii.边界值分析iii.错误推测b)白盒(结构)测试i.语句覆盖ii.判定覆盖iii.条件覆盖iv.判定—条件覆盖v.条件组合覆盖iii.步骤f)软件维护i.四种类型1.校正性2.适应性3.完善性4.预防性ii.提高可维护性的措施三、面向对象方法(Object-oriented Method)a)OOM与CM对比:区别—优点i.思维方式iv. 稳定性ii.可重用性v. 可维护性iii.大型软件b)OOSE方法i.三个阶段、五个模型、E CASE第二章.传统软件工程方法:软件计划具体任务:项目定义、可行性分析、软件计划其中:可行性分析:1、可行性研究实质:可行性研究试一次大大压缩和简化了的系统分析和设计过程,也就是在较高层次上以较抽象的方式进行的系统分析和设计过程。
南京信息工程大学滨江学院软件工程期末复习李振宏

软件工程复习知识点:1.选择题:25题,共25分;填空题15题,共15分;简答5题,共30分;设计3题,共30分。
第一章软件工程学概述1.软件危机是什么?软件工程的定义是什么?二者有何关系?(p1,p5)2.软件工程方法学的3要素是什么?(p9)3.软件生命周期的阶段如何划分,每个阶段的主要任务是什么?(p11)4.软件生命周期模型有哪些?各有何特点?(p15)第二章可行性研究1.可行性研究的实质是什么?(p36)2.可行性研究包含哪几方面的工作?(p36)3.数据流图有何用途、有哪几种图形元素?(p40)4.设计数据流图时,分层的原则是什么?(p41)5.数据字典主要用途是什么?(p48)6.投资回收期如何计算?(p52)第三章需求分析1.需求分析阶段应该得到什么文档?(p55)2.什么是ER图、有哪几种图形元素、有何用途?(p64)3.需求分析阶段要使用哪三种类型的模型?(p72)第五章总体设计1.模块的内聚是何含义?(p98)2.耦合有哪些类别,内聚有哪些类型,各是何含义?(p97,p98)3.内聚和耦合程度如何排序?(p97,p98)4.软件结构图中对深度、宽度、扇入及扇出有何要求?(p100)5.软件结构图如何理解?(p102)6.数据流图中,信息流可分为哪两种类型,如何区分?(p105)第六章详细设计1.结构化程序设计有哪几种基本结构,有何特点?有何要求?(p117)2.什么是结构化设计?有何用途?(p118)3.结构化程序设计对goto 语句有何要求?(p119)4.判定表和判定树有何特点?用于何种场合?如何使用?(p127)5.JACKSON方法有何特点?有何用途?(p132)第七章实现1.软件测试和软件调试的目的是什么?(p150,p176)2.软件测试有哪几个步骤?与软件各开发阶段有何关系?(p151)3.集成测试有哪几种策略?(p157)4.什么是驱动模块、什么是存根模块?有何用途?(p155)5.什么是白盒测试、什么是黑盒测试,白盒测试有哪些测试方法、黑盒测试有哪些测试方法?(p162,p171)6.什么是等价类划分方法,什么是边界值分析方法?(p173,p175)第八章维护1.软件维护的分类,及每种维护的含义?(p189)第十三章软件项目管理1.如何度量软件的规模?(p305)2.估算软件项目成本的模型有哪些?(p308)3. 什么是软件配置管理?(p328)4. 什么是软件配置项?(p329)5.CMM包含哪几个等级?(p331)1.什么是CAD,CAM,CAI,CASE?(略)设计三题(第六章详细设计和第七章实现)如何由程序流程图得到流图,如何计算环形复杂度?p(137)如何将程序转化为流程图及N-S图?(p125)如何由流程图设计测试用例?(包括语句覆盖与分支覆盖)。
软件工程期末考试重点

《软件工程》期末复习重点第一章软件工程1.什么是软件工程。
A.把系统化的、规范的、可度量的途径应用于软件开发、运行和维护的过程,也就是把工程化应用于软件中;b.研究a中提到的途径。
2. 软件工程的三要素:方法、工具和过程。
第二章软件过程1.软件生命周期分为哪几个阶段?每个阶段的基本任务是什么?a.软件定义:确定软件开发工程必须完成的总目标问题定义:要解决的问题是什么可行性研究:上阶段所确定的问题是否有可行的解决办法?需求分析:目标系统必须做什么b.软件开发:具体设计和实现在前一个时期定义的软件。
概要设计:怎样宏观地解决问题详细设计:应如何具体地实现这个系统编码和单元测试:写出正确的、易理解、易维护的程序综合测试:通过各类型测试使达到预定要求。
c.运行维护:修正错误,使软件持久地满足用户需要。
改正性维护:诊断和改正使用中的错误适应性维护:修改以适应环境变化完善性维护:根据用户的要求改进和扩充以完善预防性维护:修改以为将来的维护作准备2.常用的过程模型有哪些?各自的特点及不足。
如:瀑布模型的不足是不能适应需求的动态变更。
A.瀑布模型特点:可强迫开发人员采用规范化的方法。
严格地规定了每个阶段必须提交的文档。
要求每个阶段交出的所有产品都必须是经过验证(评审)的。
缺点:太理想化,由于瀑布模型几乎完全依赖于书面的规格说明,很可能导致最终开发出的软件产品不能真正满足用户的需要。
如果需求规格与用户需求之间有差异,就会发生这种情况。
只适用于项目开始时需求已确定的情况。
B.快速原型模型特点:快速软件产品开发基本上是线性顺序进行。
降低了规格说明文档变化的可能性。
减少了后续阶段错误的可能性。
c.增量模型优点:人员分配灵活,刚开始不用投入大量人力资源。
当配备的人员不能在设定的期限内完成产品时,它提供了一种先推出核心产品的途径。
增量能够有计划地管理技术风险。
缺点:要求构件具备开放式的体系结构。
易退化为边做边改模型,从而使软件过程的控制失去整体性。
软件工程期末复习要点归纳总结精编WORD版

软件工程期末复习要点归纳总结精编W O R D版IBM system office room 【A0816H-A0912AAAHH-GX8Q8-GNTHHJ8】第一章软件工程学概论1、软件危机产生的原因软件本身的特点:难于维护、逻辑复杂软件开发与维护的方法不正确:忽略需求分析重要性、轻视软件维护课本表述:1、软件不同于硬件,它是计算机中的逻辑部件而不是物理部件2、软件不同于一般程序,它的一个显着特点是规模庞大,而且程序的复杂性将规模的增加而呈现指数上升。
3、软件本身特有的特点确实给开发和维护带了一些客观困难4、软件开发与维护有关的许多错误认识与做法有关(忽略需求分析,轻视软件维护)5、对用户要求没有完整准确的认识就匆忙开始着手编写程序6、在软件不同阶段进行修改需要付出的代价是很不相同的2、软件危机的表现(什么是软件危机)(1)、成本高:(2)、软件质量得不到保证:软件质量问题导致失败的软件项目非常多(3)、进度难以控制:●项目延期比比皆是●由于进度问题而取消的软件项目较常见●只有一小部分的项目能够按期完成(4)、维护十分困难:▼软件维护的多样性▼软件维护的复杂性▼软件维护的副作用3、克服软件危机(1)、管理的角度:软件开发过程的研究、文档的标准化以及人员的交流方式等(2)、软件开发方法的研究结构化软件开发方法, 面向对象的开发4、软件工程的定义概括的说,软件工程师指导计算机软件开发和维护的一门工程学科。
采用工程的概念、原理、技术和方法来开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。
(1)、软件工程就是建立和使用一套合理的工程原理,从而经济地获得可靠的、可以在实际机器上高效运行的软件。
(2)、①把系统的、规范的、可度量的方法应用于软件开发、运行和维护的过程,也就是把工程应用于软件.②研究①中提到的途径总之:软件工程是应用计算机科学、数学及管理科学等原理开发软件的工程。
软件工程期末考试简答题汇总

1什么是软件工程?基本原理有哪些?软件工程是指导计算机软件开发和维护的工程学科。
用分阶段的生命周期计划管理、坚持阶段评审、实行严格产品控制、采用现代设计技术、结果审查、开发小组人员少而精、并不断改进方法。
2成本_效益分析可用哪些指标进行度量?(写出公式)可用投资回收期、纯收入、投资回收率指标,通过P=F/(1+i)n计算求得。
3什么是数据流图?其中的基本符号各表示什么含义?画出定货系统基本数据流图。
用符号描绘信息在系统中流动的情况,源点、终点、处理、数据存储、数据流。
4非渐增式测试与渐增式测试有什么区别?两种都用于集成测试。
渐增式是把下一个要测试的摸块同已经测试好的模块结合起来进行测试,每次增加一个模块。
非渐增式先分别测每个模块,再把所有模块按设计要求放在一起结合成所要的程序。
5试从基本符号和设计方法分析HC图与JACKSON图异同点答:HC图是面向DFD,而JACKSON图是面向数据结构的。
符号省略。
6软件测试的目的是什么?测试的目的是为了发现错误.7结构化程序设计的思想是什么?答:自上而下,逐步求精8请解释极限编程和自适应软件开发,并说明其异同?答:极限编程和自适应软件开发都属于敏捷过程模型。
极限编程是应用最广泛的敏捷过程(2分)。
按照计划、设计、编码和测试四个框架活动组织。
极限编程建议一系列新颖和有力的技术,保证敏捷团队创建能力体现客户指定优先级特征和功能的频繁软件开发(2分)。
自适应软件开发强调人的合作和团队的组织,按思考、协作和学习的三个框架活动组织,其使用迭代过程。
该过程由自适应循环计划、相对严格的需求收集方法和一个迭代开发循环构成(2分)。
9需求工程的起始阶段,需求工程师的主要工作是?答:需求工程的起始阶段,工程师的主要工作为:1)建立基本的问题需求(2分)2)定义最重要的项目约束以及陈述主要的特征和功能(2分)3)与共利益的各方建立基本的谅解(2分)10请画出“在餐厅使用信用卡付费”这一活动的完整用例图?11分析说明结构化分析和面向对象分析的区别?答:分析建模的目标是创建各种表现形式,以描述软件信息、功能和行为的需求(2分)。
软件工程 期末复习提纲完美版

《软件工程》复习提纲1 软件与软件工程1.1软件的基本概念(例如,软件的定义、文档、软件的特点等)简单地说,软件由程序和文档两部分组成,一是机器可以执行的程序及有关的数据,二是机器不能执行的文档,软件的两种普遍定义:①软件是与计算机系统操作有关的程序,规程、规则及任何与之相关的文档和数据。
②软件是程序以及开发,使用和维护程序所需要的文档,包括机器运行所需要的各种程序及有关资料。
程序:为了解决某一问题而按事先设计的功能和性能要求执行的指令系列,或者说,用程序设计语言描述的适合于计算机处理的语句序列。
数据:使程序能正常操纵信息的数据结构。
文档:描述程序、数据和系统开发以及使用的各种图文资料。
它具有永久性并能供人或机器阅读。
软件的基本特点:·①计算机软件产品是一种逻辑产品部件而不是物理产品部件。
·②软件产品的生产主要是研制,是通过人们的智力活动,把知识与技术转化成信息的一种产品。
·③软件具有“复杂性”,其开发和运行常受到计算机系统的限制。
而且,软件投入使用后,仍需要进行维护,这就带来软件维护复杂性的问题。
·④软件不存在磨损,物理上不会老化,但存在软件退化问题。
·⑤软件成本昂贵,其开发方式目前尚未完全摆脱手工生产方式。
1.2软件危机的概念软件危机是指在软件开发和维护过程中所遇到的一系列严重问题。
【由于软件的规模越来越大,复杂度不断增加,软件需求量增大。
而软件开发过程是一种高密集度的脑力劳动,软件开发的模式及技术不能适应软件发展的需要。
致使大量质量低劣的软件涌向市场,有的花费大量人力财力,而在开发过程中就夭折。
】“软件危机”主要表现在两个方面:(1)软件产品质量低劣,甚至开发过程就夭折;(2)软件生产率低,不能满足需要。
1.3软件工程学的概念(定义)、研究的内容(三要素)1993年IEEE定义:(1)把系统化的、规范化的、可度量的途径应用于软件开发、运行和维护的过程,也就是把工程化应用于软件中;(2)研究(1)中提到的途径。
南京信息工程大学滨江学院操作系统期末复习

Ch11.从用户、资源管理、资源抽象三个角度看,操作系统的作用分别是什么。
(p2-3,选择题、简答题)1)OS作为用户与计算机硬件系统之间的接口2)OS作为计算机系统资源的管理者3)OS实现了对计算机资源的抽象2.操作系统是什么软件?位于哪一层之上?(P1填空题,选择题)操作系统是配置在计算机硬件上的第一层软件,是对硬件系统的首次扩充3.从资源管理的角度看,操作系统的4大主要功能。
(P16-19填空题、简答题)(1)处理机管理功能(2)存储器管理功能(3)设备管理功能(4)文件管理功能4.理解操作系统的主要特性:并发性、共享性和异步性。
(P13-14选择题)5.理解操作系统的基本类型:批处理操作系统、分时操作系统和实时操作系统。
多道批处理系统的优缺点:(1)资源利用率高(2)系统吞吐量达(3)平均周转时间长(4)无交互能力分时系统的特征:(1)多路性(2)独立性(3)及时性(4)交互性6.分时系统实现中的关键问题1)及时接收2)及时处理3)实时系统硬4)实时任务和软实时任务6.多道程序设计是指什么?(P7-8选择题)多道程序设计,就是在内存中存放多个进程来执行人们赋予计算机的任务这些在内存中的多个进程共享计算机的硬件资源,如CPU,各种I/O 设备等等7.操作系统作为用户与计算机硬件系之间的接口,用户可通过三种方式使用计算机,这些方式是指什么。
(P2填空题)命令方式、调用方式、图标-窗口方式Ch21.理解进程的定义,进程的3个组成部分。
(P35-36选择题、填空题)进程是程序的一次执行、进程是一个程序及其数据在处理机上顺序执行是所发生的活动、进程是具有独立功能的程序在一个数据集合上运行的程序,他是系统进行资源分配和调度的一个独立单位。
3个组成部分:就绪状态、执行状态、阻塞状态2.理解进程的三种基本状态转换及用图表示。
(P37选择题,简答题)3.进程控制块Pcb中的信息(P40-41选择题、填空题)(1)进程标识符(2)处理机状态(3)进程调度信息(4)进程控制信息4.进程控制一般是由什么来实现的?(P42选择题)什么是原语?(P43选择题)进程控制一般是由OS的内核中的原语来实现的;原语是由若干条指令组成的,用于完成一定功能的一个过程。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
选择20题,每题1分;填空10题,每题1分;简答5题,每题8分;设计题3题,每题10分(流程图的设计、流图设计和环形复杂度的计算、语句覆盖和判定覆盖测试用例的设计)。
1.详细设计中,过程设计的工具,N-S图,PAD图及判定表和判定树各有何特点和适用情况?(第六章)(1)盒图(N-S图):一种不允许违背结构程序设计精神的图形工具,又称为N-S图。
它有下述特点:①功能域(作用域)明确,可以从盒图上一眼就看出来。
②盒图没有箭头,因此不允许随意转移控制。
③很容易确定局部和全程数据的作用域。
④很容易表现嵌套关系,也可以表示模块的层次结构。
适用:对大部分设计均有适用性,常用于软件工程详细设计中,提供一种结构化的方式,便于思考和解决问题。
(2)PAD图:PAD是问题分析图(problem analysis diagram) ,它用二维树形结构的图来表示程序的控制流。
PAD图的主要优点如下:①使用PAD符号设计的程序必然是结构化程序。
② PAD图所描绘的程序结构十分清晰。
最左面的竖线是程序的主线,即第一层结构。
随着程序层次的增加,PAD图逐渐向右延伸。
每增加一个层次,图形向右扩展一条竖线。
图中竖线的总条数就是程序的层次数。
③PAD图表现的程序逻辑,易读、易懂、易记。
程序从图中最左竖线上端的结点开始执行,自上而下,从左向右顺序执行,遍历所有结点。
④容易将PAD图转换成高级语言源程序,这种转换可用软件工具自动完成。
⑤既可表示程序逻辑,也可描绘数据结构。
⑥支持自顶向下、逐步求精方法的使用。
适用:为FORTTAN,COBOL,PASCAL等每种常用的高级程序设计语言提供了一套相应的图形符号。
开始时可以定义一个抽象的程序,随着设计的深入,使用def符号逐步增加细节,直至完成详细设计,如图6.6所示。
(3)判定表(P127有例子):适于表示复杂的条件组合与应做的动作之间的对应关系。
特点是:①能够间接而又无歧义的描述处理故意则。
②并不适用于作为一种通用的设计工具。
③一张判定表由以下四部分组成:左上部列出所有条件,左下部是所有可能的动作,右上部是表示各种条件组合的一个矩阵,右下部是和每种条件组合相对应的动作。
判定表右半部的每一列实际上就是一个规则,规定了与特定的条件组合相对应的动作。
适用:算法中包含多重嵌套的条件选择。
数据元素多于2个的时候,能够比判定表更简洁的表达,便于理解。
盒图的基本符号(1)盒图的基本符号(2)PAD图的基本符号图6.6 使用PAD图提供的定义功能来逐步求精的例子PAD描述的示例(4)判定树判定树是判定表的变种,也能清晰地表示复杂的条件组合与应做的动作之间的对应关系。
判定树的优点:形式简单到不需任何说明,一眼就可以看出其含义,易于掌握和使用。
适用:数据元素多的时候,初次接触的人很容易就看懂用判定树表示计算行李费的算法2.白盒测试和黑盒测试技术的区别。
(第七章)白盒测试技术:用白盒方法测试软件时设计测试数据的典型技术。
已知产品的内部工作过程,可以进行测试证明每种内部操作是否符合设计规格要求,所有内部成分是否经过检查。
黑盒测试技术:用黑盒方法测试软件时设计测试数据的典型技术。
已知产品的功能设计规格,可以进行测试证明每个实现了的功能是否符合要求。
黑盒测试着重测试软件功能。
黑盒测试并不能取代白盒测试,它是与白盒测试互补的测试方法,它很可能发现白盒测试不易发现的其他类型错误。
3.白盒测试中的逻辑覆盖测试包含哪几种类型。
(第七章)逻辑覆盖:是对一系列测试过程的总称。
这组测试过程逐渐进行越来越完整的通路测试。
覆盖:测试数据执行源程序的过程。
①语句覆盖的含义:选择足够多的测试数据,使被测程序中每个语句至少执行一次。
②判定覆盖又叫分支覆盖。
含义:不仅每个语句必须至少执行一次,而且每个判定的每个分支都至少执行一次。
③条件覆盖含义:不仅每个语句至少执行一次,而且使判定表达式中的每个条件都取到各种可能的结果。
④判定/条件覆盖含义:选取足够多的测试数据,使得判定表达式中的每个条件都取到各种可能的值,而且每个判定表达式也都取到各种可能的结果。
判定覆盖不一定包含条件覆盖,条件覆盖也不一定包含判定覆盖。
⑤条件组合覆盖含义:使得每个判定表达式中条件的各种可能组合都至少出现一次。
⑥点覆盖含义:选取足够多测试数据,使得程序执行路径至少经过流图的每个结点一次。
⑦边覆盖含义:选取足够多测试数据,使得程序执行路径至少经过流图中每条边一次。
⑧路径覆盖含义:选取足够多测试数据,使程序的每条可能路径都至少执行一次(如果程序图中有环,则要求每个环至少经过一次)。
4.软件维护的类型有哪些,及各自所占比重。
(第八章)①改正性维护,占17%~21%:在软件交付使用后,因开发时测试的不彻底、不完全,必然会有部分隐藏的错误遗留到运行阶段。
这些隐藏下来的错误在某些特定的使用环境下就会暴露出来。
改正性维护:为了识别和纠正软件错误、改正软件性能上的缺陷、排除实施中的误使用,应当进行的诊断和改正错误的过程。
②适应性维护,占18%~25%:在使用过程中,外部环境(如:新的硬、软件配置)、数据环境(如:数据库、数据格式、数据输入/输出方式、数据存储介质)可能发生变化。
适应性维护:为使软件适应这种变化,而去修改软件的过程。
③完善性维护,占全部维护活动的50%~66%:在软件的使用过程中,用户往往会对软件提出新的功能与性能要求。
为了满足上述要求,需要修改或再开发软件而进行的完善性的维护活动。
以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性。
完善性维护不一定是救火式的紧急维修,可以是有计划、有预谋的一种再开发活动。
④预防性维护:为了提高软件的可维护性、可靠性等,为以后进一步改进软件打下良好基础而修改软件的维护活动。
其他维护活动只占4%左右。
预防性维护的定义:采用先进的软件工程方法对需要维护的软件或软件中的某一部分(重新)进行设计、编制和测试的过程。
5.软件项目的可行性研究的实质是什么?(第二章)可行性研究最根本的任务是对以后的行动方针提出建议。
如果问题没有可行的解,分析员应该建议停止这项开发工程。
如果问题值得解,分析员应该推荐一个较好的解决方案,并且为工程制定一个初步的计划。
6.可行性研究包括哪些内容。
(第二章)技术可行性、经济可行性、操作可行性(至少以上三种)、运行可行性、法律可行性、开发方案可行性7.衡量模块独立性的标准有哪些?(第五章)模块独立:具有独立功能而且和其他模块之间没有过多的相互作用的模块。
模块独立的概念是模块化、抽象、信息隐藏和局部化概念的直接结果。
模块独立程度的度量标准:内聚和耦合。
耦合:模块间互相依赖(连接)的紧密程度;内聚:模块内部各个元素彼此结合的紧密程度。
8.模块间的耦合有哪些类型,如何区分?(第五章)数据耦合:模块彼此间通过参数交换信息,交换的信息仅仅是数据,数据耦合是低耦合。
标记耦合:若两个模块间传递的参数中至少有一个是数据结构,如字符串或记录,并且在模块中仅用到该数据结构中的部分元素,则称这两个模块之间存在标记耦合。
控制耦合:一个模块向另一个模块传递控制信息,接收信息的模块的动作根据信息值进行调整。
控制耦合是中等程度的耦合,它增加了系统的复杂程度。
在把模块适当分解之后通常可以用数据耦合代替它。
公共耦合:两个模块共享全局的数据区域,称他们为公共耦合,不要使用全局变量。
耦合的复杂程度随耦合模块的个数而变化,随个数的增加显著增加。
内容耦合:有三种情况,是最高程度的耦合性(坚决避免使用这种耦合)模块独立性与耦合的关系图总之,耦合是影响软件复杂程度的一个重要因素。
应该采取下述设计原则:尽量使用数据耦合,少用控制耦合和标记耦合,限制公共环境耦合的范围,完全不用内容耦合。
9.模块内的内聚有哪些类型,如何区分?(第五章)偶然内聚:如果一个模块的各成分之间毫无关系,则称为偶然内聚。
逻辑内聚:几个逻辑上相关的功能被放在同一模块中。
时间内聚:如果一个模块完成的功能只是因为时间因素关联在一起。
过程内聚:如果一个模块内部的各个处理成分必须以特定的次序执行,则称为过程内聚。
通信内聚:如果一个模块的所有成分都操作同一数据集或生成同一数据集,则称为通信内聚。
顺序内聚:如果一个模块的各个成分和同一个功能密切相关,而且一个成分的输出作为另一个成分的输入,则称为顺序内聚。
功能内聚:模块的所有成分对于完成单一的功能都是基本的。
设计时,尽量使用内聚度高的模块(顺序内聚,功能内聚);中内聚(过程内聚,通信内聚)也可;低内聚(偶然内聚,逻辑内聚,时间内聚)很坏,不要采用。
10. 结构化程序设计的定义及特点。
定义:是进行以模块功能和处理过程设计为主的详细设计的基本原则。
特点:结构化程序中的任意基本结构都具有唯一入口和唯一出口,并且程序不会出现死循环。
在程序的静态形式与动态执行流程之间具有良好的对应关系11.软件测试的定义及目的。
(第七章)软件测试的定义:是为了发现程序中的错误而执行程序的过程。
软件测试的目的:暴露程序中的错误。
测试目标决定了测试方案的设计,如果为了表明程序的正确,就会设计一些不易暴露错误的测试方案;如果是为了发现程序中的错误,就会设计出最能暴露错误的测试方案。
G.Myers给出了关于测试的一些规则,这些规则也可以看作是测试的目标或定义:(1) 测试是为了发现程序中的错误而执行程序的过程;(2) 好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案;(3) 成功的测试是发现了至今为止尚未发现的错误的测试。
测试是在精心控制的环境下执行程序,以发现程序中的错误,给出程序可靠性的鉴定。
12.软件生命周期的阶段划分及每个阶段的任务。
(第一章)软件生命周期:软件生命周期的阶段划分由软件定义、软件开发和运行维护(也称为软件维护),直到最终被废弃所经历的时期。
生命周期每个阶段的基本任务:软件定义阶段:确定软件开发工程必须完成的总目标;确定工程的可行性;导出实现工程总目标应该采用的策略及系统必须完成的功能;估计完成该项工程需要的资源和成本,制定工程进度表。
这个时期的工作又称为系统分析,由系统分析员负责完成。
这个时期进一步划分成3个阶段:问题定义、可行性研究和需求分析。
开发时期的任务是:设计和实现在前一个时期定义的软件,它通常由下述4个阶段组成:总体设计,详细设计,编码和单元测试,综合测试。
前两个阶段又称为系统设计,后两个阶段又称为系统实现。
维护时期的主要任务是:使软件持久地满足用户的需要。
具体地说:当软件在使用过程中发现错误时应该加以改正;当环境改变时应该修改软件以适应新的环境;当用户有新要求时应该及时改进软件以满足用户的新需要。
13.面向对象方法的特点、特征。
(第九章)特征:(1)认为客观世界是由各种对象组成的,任何事物都是对象,复杂的对象可以由比较简单的对象以某种方式组合而成。