南京信息工程大学滨江学院李振宏《软件工程》期末复习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(掌握软件生命周期的几个活动a) 目标 b) 任务 c) 输出例子:解释软件生命周期中的“设计”活动) 软件开发活动:(1) 需求分析(需求工程)目的:根据描述明确问题域特性E ,构建定义良好的系统行为S ,使得E 通过S ,达到预期的需求R需求工程的主要工作:(a) 研究问题背景,描述问题域特性E (b) 需求开发,确定 R(c) 构建解系统,描述解系统行为S ,使得 理解现实为第一目的,保证S 的质量为第二目的结果: SRS (Software Requirements Specification) 用户需求规格说明(2) 设计:目的:以软件实体为基础建立软件结构即整个将要开发的系统的模型或设计表示任务:(a)体系结构设计 (b)细节设计(c)用户界面设计=(HCI)? 结果:模型:体系结构模型,系统模型规格说明书:体系结构说明,系统构件说明,界面设计文档设计决策会极大的影响系统质量,所以要有多种选择和折中(3) 实现目的:用编程语言实现系统中单独的组件 任务: 程序设计、编程、调试 结果 :可执行的程序 (4) 测试目的:验证和确认软件质量任务:测试设计、单元测试、集成测试、系统测试|、确认测试、回归测试 结果:发现的缺陷和错误测试不一定要在实现结束后进行,可能并行进行,如果测试用例从需求确认中直接得出,可能影响需求分析 (5) 安装与维护目的:在系统向用户发布后保持系统的运行,包括完善型(Perfective)、调整型(Adaptive)、修正型(Corrective)、防止型维护(Preventive) 任务:安装,培训,维护 输出:正常运转的系统软件过程模型:2(要求 特征描述 优点 缺点 例子:解释软件开发的瀑布模型,并说明其优缺点 比较瀑布模型和螺旋模型)RS E ,(1) Build-fix(2) 瀑布模型又被称为“经典生命周期”,它提出了一个系统的、顺序的软件 开发方法,从用户需求规格说明开始,通过策划、建模、构建 和部署的过程,最终提供一个完整的软件并提供持续的技术支 持。
软件工程导论期末复习重点
软件工程导论期末复习重点软件工程期末复习一、软件工程学概述1.软件危机:计算机开发和维护的过程中所遇到的一系列问题名词解释(需要加上软件危机产生的原因)对用户的要求没有完整准确的认识就匆忙着手编写程序论述题(需要加上软件危机的典型表现)01.对软件开发成本和嫉妒的估计常常不准确02.用户对已完成软件系统的不满意情况经常发生03.软件的质量靠不住2.软件工程:指导计算机开发和维护的一门工程学科?名词解释3.软件工程方法学的三要素:方法、工具、过程4.软件生命周期的三个时期:软件定义、软件开发、运行维护01.软件定义时期的三个阶段:问题定义、可行性研究、需求分析02.软件开发时期的四个阶段:总体设计、详细设计、编码、单元测试,综合测试,前两个称系统设计,后两个称系统实现03.软件维护时期:只要任务是使软件持久的满足用户的需要,具体的说,当软件在使用过程中发现错误时应该加以纠正,当环境改变时应修改软件以适应新的环境,当用户有新的需要时,应该及时改进软件以满足用户新的需求,本时期不在划分阶段,但是每一次维护活动本质上都是一次压缩和简化了的定义和开发过程5.可行性研究的结果是客户做出是否继续这项工程的决定的重要依据,只有投资取得较大收益的的那些工程项目才是值得继续进行下去的6.需求分析的目标是:确定出系统必须具备哪些功能,和用户密切配合,充分交流信息,以得出经过系统确认的系统逻辑模型7.软件维护的四类维护活动:01.改正性维护:改正和诊断在使用过程中发生的软件错误02.适应性维护:修改软件以适应新的环境变化03.完善性维护:根据用户的需求改善和扩充软件使它更完善04.预防性维护:为将来的维护活动事先做准备8.瀑布模型: ?论述题01.传统的瀑布模型开发软件的特点A.阶段间具有顺序性和依赖性B.推迟实现的观点C.质量保证的观点02.软件配置:程序、文档、数据03.注释有什么用:提高代码的可读性(有待补充)二、可行性研究1.可行性研究的目的:就是用最小的代价在尽可能短的时间内确定问题是否能够解决2.从三个方面研究每种解法的可读性;01.技术可行性:使用现在的技术能实现这个系统吗?02.经济可行性:这个系统的经济效益能超过它的开发成本吗?03.操作可行性:系统的操作方式在这个用户组织内能行得通吗?3.系统流程图:是概括的描绘物理系统的传统工具。
软件工程期末复习(超详细!!!)
软件工程期末复习(超详细!!!)一:软件工程概述软件工程学的存在价值:促进软件项目成功。
软件的概念:软件(software):软件是计算机系统中与硬件相互依存的另一部分。
它包括程序、数据及其相关文档的完整集合。
(1)能够完成预定功能和性能的可执行指令(program)(2)使得程序能够适当地操作信息的数据结构(data)(3)描述程序的操作和使用的文档(document)软件危机:软件危机定义:软件在开发和维护过程中遇到的一系列严重问题。
软件危机包含两层含义:如何开发软件。
如何维护数量不断膨胀的已有软件。
软件工程(Software Engineering):是研究和应用功能如何以系统化的、规范的、可度量的方法去开发、运行和维护软件,即把工程化应用到软件上。
软件生存周期:是指软件产品从考虑其概念开始到该软件产品交付使用,直至最终退役为止的整个过程。
一般包括计划、分析、设计、实现、测试、集成、交付、维护等阶段。
计划阶段确定待开发系统的总体目标和范围。
研究系统的可行性和可能的解决方案,对资源、成本及进度进行合理的估算。
分析阶段分析、整理和提炼所收集到的用户需求,建立完整的分析模型,将其编写成软件需求规格说明和初步的用户手册。
设计阶段(总体设计和详细设计)设计阶段的目标是决定软件怎么做。
软件设计主要集中于软件体系结构、数据结构、用户界面和算法等方面。
实现阶段(编码)实现阶段是将所设计的各个模块编写成计算机可接受的程序代码。
测试阶段设计测试用例,对软件进行测试,发现错误,进行改正。
运行和维护阶段应当在软件的设计和实现阶段充分考虑软件的可维护性。
维护阶段需要测试是否正确实现了所要求的修改,并保证在产品的修改过程中,没有做其他无关的改动。
维护常常是软件生命周期中最具挑战性的一个阶段,其费用是相当昂贵的。
软件工程三要素:工具、方法、开发过程瀑布模型:问题定义、可行性研究、需求分析、概要设计、详细设计、编码、测试、运行与维护。
南信大-软件工程期末试卷
南信大-软件工程期末试卷本页仅作为文档页封面,使用时可以删除This document is for reference only-rar21year.March软件工程复习资料一、填空题(每空格1分,共30分)1、软件生存周期模型主要有、、、、、和变换模型等。
2、快速原型的使用策略有和。
3、可行性研究主要从、、,管理可行性等四个方面考虑。
4、成本--效益分析可用、、等指标进行度量。
5、抽象化包括、。
6、黑盒技术测试用例的方法有7、软件维护包含、、和等内容。
8、模块的内聚包含功能内聚、巧合内聚、、、、。
9、软件集成测试的方法主要有两种,它们是、。
二、名词解释(每小题4分,共24分)1、数据流图2、IPO图4、公共耦合5、时间内聚6、黑盒测试法三、简答题(每小题7分,共21分)1、软件工程的目标和内容是什么2、总体设计过程包括几个步骤?3、试述"变换分析"设计步骤。
四、问答题(共11分)试述软件测试的目的是什么软件测试中,应注意哪些原则五、应用题(共15分)1、请用判定表画出以下问题的行为逻辑。
(4分)人们往往根据天气情况决定出门时的行装;天气可能下雨,也可能不下雨;天气可能变冷,也可能不变冷。
如果天气要下雨,出门时带上雨伞;如果天气变冷,出门时要穿上大衣。
2、某“调整工资”处理模块接受一个“职称”的变量,根据职称的不同(助教,讲师,副教授,教授)作不同的处理,其中若是助教还必须输入工龄,只有工龄超过两年才能调整工资。
请用等价类划分法设计测试用例。
(7分)3、在数据A(1)~A(10)中求最大数和次大数,已知PDL语言描述,使用PAD图描述算法。
PDL语言描述:(4分)GET(a[1],a[2],...a[10]) max=a[1];max2=a[2];FOR i=2 TO 10IF a[i]>maxmax2=max;max=a[i];ELSE IF a[i]>max2 max2=a[i]; ENDIFENDIFEND FORPUT(max,max2) END答案一、填空题(每空格1分,共30分)1、瀑布模型,增量模型,喷泉模型,螺旋模型,基于知识的模型。
南京信息工程大学滨江学院计算机基础期末复习知识点
南京信息工程大学滨江学院计算机基础期末复习知识点《计算机基础》期末考试复习知识点第一章计算机基础知识1.第一台电子计算机的名称、诞生时间及运算性能;名称:电子数字积分计算机ENIAC(埃尼阿克)。
诞生时间:1946年2月14日。
运算性能:运算速度为每秒5000次加法。
2.计算机发展四个阶段的名称、特点,划分的主要依据;第1代:电子管数字机依据:逻辑元件采用真空电子管。
特点:体积大,功耗大,速度慢第2代:晶体管数字机依据:采用晶体管作为逻辑开关元件。
特点:第二代计算机和第一代相比体积减小、重量减轻、速度加快、可靠性增强第3代:集成电路数字机依据:逻辑元件采用中、小规模集成电路。
特点:体积功能进一步减少,可靠性及速度进一步提高。
第4代:大规模集成电路机依据:逻辑元件采用大规模和超大规模集成电路。
特点:性能到规模提高,价格大幅度降低,广泛应用于社会生活的各个领域,走进办公室和家庭。
3.计算机的特点及分类;特点:1.运算速度快2.计算精度高3.逻辑运算能力强4.存储容量大5.自动化程度高分类:根据计算机综合性能指标划分为如下五大类:1.高性能计算机2.微型计算机3.工作站4.服务器5.嵌入式计算机4.计算机的主要应用领域;1.科学计算2.信息管理3.过程控制4.辅助技术5.人工智能6.电子商务7.数字娱乐5.计算机的发展趋势;计算机运算能力将大幅度提升,应用领域扩展变得更加人性化,未来的计算机将向着巨型化,微型化,网络化,智能化和多媒体化等多方向发展。
6.数据与信息的概念,信息的主要特征;数据概念:记录信息的可识别符号,是信息的具体表现形式。
信息概念:一种被加工为特定形式的数据。
信息的主要特征:1.信息源于物质和能量,它是客观存在的。
2.信息是可以感知的3.信息是可存储加工传递和可再生的7.不同进制数之间的转换(十进制与二进制之间,二进制与八进制、十六进制之间);8.计算机中整数的表示:无符号数与有符号数的表示方法,有符号数的原、反、补码计算;9.计算机中浮点数的表示形式:尾数+阶码;10.常用英文字符的ASCII码的值(十进制值):数字,大小写字母,空格,回车,换行;11.G B2312汉字编码中的区位码,国标码和机内码之间的换算;12.媒体,多媒体,多媒体技术的概念,多媒体技术的特点,六种主要的感觉媒体;媒体:信息的载体,也称媒介。
软件工程导论期末复习重点
软件工程导论期末复习重点选择、判断略一、名词解释1、软件危机2、软件工程3、数据字典4、模块化5、黑盒测试6、软件维护7、软件过程8、快速原型9、白盒测试二、简答题1、可行性研究目的和任务?2、可行性研究包括哪几方面的内容?3、简述需求分析的描述工具和基本任务?4、什么是模块化?模块设计的准则?5、详细设计阶段的根本目标和任务?6、比较面向数据流和面向数据结构两类设计方法的异同?7、测试与调试的主要区别?8、什么是软件生命周期模型?试比较瀑布模型、快速原型模型、增量模型和螺旋模型的优缺点,说明每种模型的适用X围.9、比较层次方框图与结构图的异同?10、结构化程序设计的基本原则?11、提高软件编码效率的3条原则?一、名词解释1、软件危机答:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题.概括地说,包含两方面的问题:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件.2、软件工程答:①把系统的、规X的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;②研究①中提到的途径.3、数据字典答:数据字典是描述数据流图中数据的信息的集合.它对数据流图上每一个成分:数据项、文件<数据结构>、数据流、数据存储、加工和外部项等给以定义和说明;它主要由数据流描述、加工描述和文件描述三部分组成.4、模块化答:模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求.5、黑盒测试答:黑盒测试也称为功能测试,它着眼于程序的外部特征,而不考虑程序的内部逻辑结构.测试者把被测程序看成一个黑盒,不用关心程序的内部结构.黑盒测试是在程序接口处进行测试,它只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当地接收输入数据产生正确的输出信息,并且保持外部信息<如数据库或文件>的完整性.6、软件维护软件维护就是在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程.7、软件过程答:软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤.8、快速原型答:快速原型是快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集.9、白盒测试答:白盒测试是指测试者了解被测程序的内部结构和处理过程,对程序的所有逻辑路径进行测试,在不同点检查程序状态,确定实际状态与预期状态是否一致.二、简答题1、可行性研究目的和任务?目的:确定在问题定义中所提出的问题是否值得去解,在限制条件下问题能否解决.可行性研究的任务:<1> 进一步分析和澄清问题的定义,在澄清问题的基础上,导出系统的逻辑模型;<2> 从系统逻辑模型中,选择问题的若干种主要解法,研究每一种解法的可行性,为以后的行动提出建议;<3> 如果问题没有可行的解,建议停止系统开发;如果问题有可行的解,应该推荐一个较好的解决方案,并为工程制定一个初步的计划.2、可行性研究包括哪几方面的内容?答:<1>技术可行性:现有技术能否实现本系统,现有技术人员能否胜任,开发系统的资源能否满足;<2>经济可行性:经济效益是否超出开发成本;<3>操作可行性:系统操作在用户内部行得通吗?<4>法律可行性:新系统开发是否会侵犯他人、集体或国家利益,是否违反国家法律. 3、简述需求分析的描述工具和基本任务?答:需求分析的描述工具有数据流图、数据字典、判定表、判定树、结构化自然语言、层次方框图、Warnier图、IPO图和需求描述语言等.需求分析的基本任务是:准确定义未来系统的目标,确定为满足用户的需要系统必须做什么.4、什么是模块化?模块设计的准则?答:模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求.模块设计的准则:<1> 改进软件结构, 提高模块独立性:在对初步模块进行合并、分解和移动的分析、精化过程中力求提高模块的内聚,降低藕合.<2> 模块大小要适中:大约50行语句的代码,过大的模块应分解以提高理解性和可维护性;过小的模块,合并到上级模块中.<3> 软件结构图的深度、宽度、扇入和扇出要适当.一般模块的调用个数不要超过5个.<4> 尽量降低模块接口的复杂程度;<5> 设计单入口、单出口的模块.<6> 模块的作用域应在控制域之内.5、详细设计阶段的根本目标和任务?答:详细设计阶段的根本目标是确定应该怎样具体地实现所要求的系统;详细设计阶段的任务还不是具体地编写程序,而是要设计出程序的"蓝图〞.6、比较面向数据流和面向数据结构两类设计方法的异同?答:相同点:<1> 遵守结构程序设计"由顶向下〞逐步细化的原则,并以其为共同的基础;<2> 均服从"程序结构必须适应问题结构〞的基本原则,各自拥有从问题结构<包括数据结构>导出程序结构的一组映射规则.不同点:<1> 面向数据流的设计以数据流图为基础,在分析阶段用DFD表示软件的逻辑模型,在设计阶段按数据流类型,将数据流图转换为软件结构.面向数据结构的设计以数据结构为基础,从问题的数据结构出发导出它的程序结构.<2> 面向数据流的设计的最终目标是软件的最终结构图,面向数据结构的设计的最终目标是程序的过程性描述.7、测试与调试的主要区别?答: <1> 测试从一个侧面证明程序员的失败;调试证明程序员的正确;<2> 测试从已知条件开始,使用预先定义的程序,且有预知的结果,不可预见的仅是程序是否通过测试;调试从不可知内部条件开始,除统计性调试外,结果是不可预见的;<3> 测试有计划并且要进行测试设计;调试不受时间约束;<4> 测试是发现错误、改正错误、重新测试的过程;调试是一个推理的过程;<5> 测试执行是有规程的;调试执行要求程序员进行必要的推理;<6> 测试由独立的测试组在不了解软件设计的件下完成;调试由了解详细设计的程序员完成;<7> 大多数测试的执行和设计可由工具支持;调试用的工具主要是调试器.8、什么是软件生命周期模型?试比较瀑布模型、快速原型模型、增量模型和螺旋模型的优缺点,说明每种模型的适用X围.答:软件生命周期模型可以简洁地描述软件过程,它规定了把生命周期划分成哪些阶段与各个阶段的执行顺序.包括瀑布模型、快速原型模型、增量模型和螺旋模型等.瀑布模型优点:可强迫开发人员采用规X的方法〔例如,结构化技术〕;严格地规定了每个阶段必须提交的文档;要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证.缺点:模型过于理想化,是由文档驱动的.快速原型模型优点:通过快速构建起一个可在计算机上运行的原型系统,让用户试用原型并收集用户反馈意见的方法,获取用户真正的需要.增量模型优点:能在较短时间内向用户提交可完成部分工作的产品;逐步增加产品功能可以使用户有较充实的时间学习和适应新产品,从而减少一个全新的软件可能给客户组织带来的冲击.螺旋模型优点:对可选方案和约束条件的强调有利于已有软件的重用;减少过多测试.瀑布模型适用于文档驱动的产品研发;快速原型模型适用于软件交付时间紧急,且需获知用户真实需求的情况;增量模型适用于能在较短时间内向用户提交可完成部分工作的产品;螺旋模型适用于内部开发的大规模软件项目.9、比较层次方框图与结构图的异同?答: <1> 层次方框图描绘数据的层次结构, 结构图描绘的是软件结构.<2> 二者都采用多层次矩形框树形结构.层次方框图的顶层矩形框代表完整的数据结构, 下面各层矩形框依次代表上个框数据的子集;结构图是在层次图的每一个方框内注明模块的名字或主要功能,方框之间的直线表示模块的调用关系,用带注解的箭头表示模块调用过程中传递的信息.10、结构化程序设计的基本原则?答:结构化程序设计的基本原则是:在详细设计中所有模块都使用单入口、单出口的顺序、选择、循环三种基本控制结构.11、提高软件编码效率的3条原则?答:3条原则为:1〕效率是性能要求,因此应该在需求分析阶段确定效率方面的要求.2〕效率是靠好设计来提高的.3〕程序的效率和程序的简单程度是一致的,不要牺牲程序的清晰性和可读性来不必要地提高效率.。
软件工程期末考试重点整理
软件工程的基本概念:研究软件生产和软件管理的工程学科。
主要内容:软件工程的基本概念。
软件开发模型。
软件开发各阶段的任务、技术、方法。
传统方法、面向对象方法。
软件工程管理。
软件质量保证。
软件工程环境。
软件工程三要素:方法、工具和过程什么是软件生命周期?定义一个软件从开始计划起,到废弃不用为止,称为软件的生存周期。
软件生存周期包括:计划(主要任务:调查和分析,调查用户需求,分析新系统的主要目标,分析开发该系统的可行性)、开发(主要任务:系统分析、设计和实现)与运行(主要任务:做好软件维护,使软件在整个生存周期内保证满足用户的需求和延长使用寿命)3个时期,每一时期又可细分为若干更小的阶段。
将软件开发过程划分生存周期的目的:把整个生存周期划分为较小的阶段,给每个阶段赋予确定而有限的任务,就能够简化每一步的工作内容,使因为软件规模增长而大大增加了的软件复杂性变得较易控制和管理需求分析的主要任务是1通过对问题及其环境的理解、分析和综合,建立分析模型;2在完全弄清用户对软件系统的确切要求的基础上,用“软件需求规格说明书”把用户的需求不大出来。
需求分析的步骤通过对现实环境的调查研究,获得当前系统的具体模型;去掉具体模型中的非本质因素,抽象出当前系统的逻辑模型;分析当前系统与目标系统的差别,建立目标系统的逻辑模型;对目标系统进行完善和补充,并写出完整的需求说明;对需求说明进行复审简述衡量模块独立性的两个准则。
选择程序设计语言的原则有哪些?简述你对程序设计风格的理解。
程序设计阶段的特点:生产方式:个体手工劳动。
生产工具:机器语言、汇编语言。
开发方法:追求编程技巧,追求程序运行效率。
程序难读、难懂、难修改。
硬件特征:价格贵、存储容量小、运行可靠性差。
软件特征:只有程序、程序设计概念,不重视程序设计方法。
“软件测试不能证明程序的正确性”,谈谈你对这句话的理解。
“软件维护是软件运行时期的工作,与软件开发各阶段联系较少,该阶段工作是简单的,难度也要小得多。
- 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)认为客观世界是由各种对象组成的,任何事物都是对象,复杂的对象可以由比较简单的对象以某种方式组合而成。