软件工程导论知识点总结.docx
- 文档编号:6137850
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:15
- 大小:27.29KB
软件工程导论知识点总结.docx
《软件工程导论知识点总结.docx》由会员分享,可在线阅读,更多相关《软件工程导论知识点总结.docx(15页珍藏版)》请在冰豆网上搜索。
软件工程导论知识点总结
《软件工程导论》课后习题答案
第一章软件工程概论
1.什么是软件危机?
软件危机是指在计算机软件开发和维护过程中所遇到一系列严重问题。
这
些问题体当前如下几种方面:
(1)顾客对开发出软件很难满意。
(2)软件产品质量往往靠不住。
(3)普通软件很难维护。
(4)软件生产效率很低。
(5)软件开发成本越来越大。
(6)软件成本与开发进度难以预计。
(7)软件技术发展远远满足不了计算机应用普及与进一步需要。
2.为什么会产生软件危机?
(1)开发人员方面,对软件产品缺少对的结识,没有真正理解软件产品是一种完整配备构成。
导致开发中制定筹划盲目、编程草率,不考虑维护工作必要性。
(2)软件自身方面,对于计算机系统来说,软件是逻辑部件,软件开发过程没有统一、公认办法论和规范指引,导致软件维护困难。
(3)特别是随着软件规模越来越大,复杂限度越来越高,原有软件开发方式效率不高、质量不能保证、成本过高、研制周期不易预计、维护困难等一系列问题更为突出,技术发展已经远远不能适应社会需求。
3.如何克服软件危机?
(1)充分吸取和借鉴人类长期以来从事各种工程项目中积累行之有效有效原理、概念、技术与办法,特别是吸取几十年来人类从事计算机硬件研究和开发经验教训。
在开发软件过程中努力作到良好组织,严格管理,互相和谐协作。
(2)推广在实践中总结出来开发软件成功技术和办法,并研究更好、更有效技术和办法,尽快克服在计算机系统初期发展阶段形成某些错误概念和作法。
(3)依照不同应用领域,开发更好软件工具并使用这些工具。
将软件开发各个阶段使用软件工具集合成一种整体,形成一种较好软件开发支环环境。
总之为理解决软件危机,既要有技术办法(办法和工具),又要有必要组织管理办法。
4.构成软件项目最后产品:
应用程序、系统程序、面向顾客文档资料和面向开发者文档资料。
5.什么是软件生存周期?
软件生存周期是指从软件定义、开发、使用、维护到裁减全过程。
6.软件生存周期为什么划提成阶段?
(1)任何一种阶段详细任务不但独立,并且简朴,便于不同人员分工协作,从而减少整个软件开发工作困难限度。
(2)可以减少每个阶段任务复杂限度,简化不同阶段联系,有助于工程组织管理,也便于采用良好技术办法。
(3)使软件开发全过程以一种有条不紊方式进行,保证软件质量,特别是提高了软件可维护性。
7.应当如何来划分阶段?
(1)每一种阶段任务尽量独立;
(2)同一阶段内任务性质尽量相似;
(3)每一种阶段任务开始和结束有严格原则。
8.软件开发模型有几种?
它们开发办法有可特点?
软件开发模型有瀑布型、渐增型和变换型。
瀑布型开发办法是按照软件生存周期划分依次实行,每一种阶段有明确规定任务。
它特点:
(1)各个阶段顺序性和依赖性;
(2)划分逻辑设计与物理设计,尽量推迟程序物理实现;
(3)每个阶段必要完毕规定文档,对其中问题通过复审及早发现,及早解决。
渐增型开发办法及特点:
(1)从某些需求出发,先建立一种不完全系统,通过测试运营该系统获得经验和信息反馈,加深对软件需求理解,进一步使系统扩充和完善。
如此重复,直至软件人员和顾客对所设计完毕软件系统满意为止。
(2)在渐增型开发下软件是随软件开发过程而逐渐形成。
(3)渐增型开发办法适合于知识型软件开发,设计系统时对顾客需求结识开始不是很清晰,需要在开发过程中不断结识、不断获得新知识去丰富和完善系统。
多数研究性质实验软件,普通采用此办法。
变换型开发办法及特点:
(1)从软件需求形式化阐明出发,通过一系列程序变换,得到最后程序系统。
(2)该办法必要有严格数学理论和形式化技术支持。
9.什么是软件工程?
软件工程是指引计算机软件开发和维护工程学科。
(1)它采用工程概念、原理、技术和办法来开发和维护软件;
(2)它将管理技术与当前通过时间考验而证明是对的技术办法结合起来;
(3)它强调使用生存周期办法学和构造分析和构造技术;
(4)通过人们长期努力和摸索,环绕着实现软件优质高产这个目的,从技术到管理两个方面做了大量努力,逐渐形成了"软件工程学"这一新学科。
10.什么是软件工程环境:
办法与工具结合,加上配套软、硬件支持称为软件工程环境。
它能支持开发者按照软件工程办法,全面完毕生存周期中各项任务。
第二章 可行性研究
1.问题定义任务和重要工作?
问题定义任务:
将顾客提出规定详细化、定量化;拟定研制系统范畴,明确研制边界。
问题定义阶段工作:
(1)通过调查研究,理解系统需求;
(2)拟定系统功能需求、性能需求、可靠性需求、安全及保密性、资源、开发费用及开发进度等需求;
(3)问题定义阶段产品--系统目的与范畴阐明书。
2.可行性研究目?
拟定在问题定义中所提出问题与否值得去解,在限制条件下,问题能否解决。
3.可行性研究任务?
(1)进一步分析和澄清问题定义,在澄清问题基本上,导出系统逻辑模型;
(2)从系统逻辑模型中,选取问题若干种重要解法,研究每一种解法可行性,为后来行动提出建议;
(3)如果问题没有可行解,建议停止系统开发;如果问题有可行解,应当推荐一种较好解决方案,并为工程制定一种初步筹划。
4.可行性研究涉及哪几方面内容?
(1)技术可行性:
既有技术能否实现本系统,既有技术人员能否胜任,开发系统资源能否满足;
(2)经济可行性:
经济效益与否超过开发成本;
(3)操作可行性:
系统操作在顾客内部行得通吗?
(4)法律可行性:
新系统开发与否会侵犯她人、集体或国家利益,与否违背国家法律。
5.可行性研究环节?
(1)复查系统规模和目的;
(2)研究当前正在使用系统,总结既有系统优劣,提出新系统雏形;
(3)导出新系统高层逻辑模型;
(4)推荐建议方案;
(5)推荐行动方针;
(6)书写筹划任务书(可行性报告);
(7)提交审查。
6.可行性研究报告重要内容?
可行性分析成果是可行性研究报告,内容涉及:
(1)系统概述:
阐明开发系统名称,提出单位和开发单位。
(2)可行性研究前提:
系统目的;规定;约束和限制;可行性研究基本准则等。
(3)对既有系统分析:
解决流程,图示阐明既有系统解决流程和数据流程;既有系统存在问题。
(4)系统需求:
重要功能;重要性能及其规定;操作规定;信息规定;限制性规定。
(5)建议系统:
系统目的;解决流程;系统构造,功能,性能;系统技术可行性;投资和效益分析;操作可行性;法律可行性。
(6)其他可选方案:
与国内外同类型方案比较;提出一两个可行性方案供论证和探讨。
(7)制定下一阶段预算。
(8)结论性意见:
由顾客方、设计方和投资方共同订立意见。
第三章 需求分析
1.需求分析描述工具备哪些?
有数据流图、数据字典、鉴定表、鉴定树、构造化自然语言、层次方框图、Warnier图、IPO图和需求描述语言等。
2.需求分析基本任务是什么?
准拟定义将来系统目的,拟定为了满足顾客需要系统必要做什么。
3.如何建立目的系统逻辑模型?
要通过哪些环节?
建立目的系统逻辑模型过程也就是数据流图分解过程。
4.什么是构造化分析?
它构造化体当前哪里?
构造化分析:
使用数据流程图、数据字典、构造化英语、鉴定表和鉴定树等工具,来建立一种新、称为构造化阐明书目的文档-需求规格阐明书。
构造化体当前将软件系统抽象为一系列逻辑加工单元,各单元之间以数据流发生关联。
5.软件需求规格阐明书由哪些某些构成?
构成涉及:
(1)引言:
编写目、背景阐明、术语定义及参照资料等。
(2)概述重要功能、约束条件或特殊需求。
(3)数据流图与数据字典。
(4)顾客接口、硬件接口及软件接口。
(5)性能需求、属性等。
(6)其他需求,如数据库、操作及故障解决等。
6.为什么数据流图要分层?
画分层DFD要遵循哪些原则?
分层目:
便于逐渐细化、构造清晰。
画分层DFD要遵循哪些原则:
(1)父图与子图之间数据要平衡。
(2)分解深度和层次达到使加工足够简朴、易于理解基本加工为止。
(3)区别局部文献和局部外部项(局限于数据流中某一层或某几层文献和外部项)。
(4)不要把控制流作为数据流。
(5)忽视琐碎枝节。
(6)每个数据流要有一种适当名字,尽量使用现实系统中有详细意义名字。
7.系统流程图与数据流程图有什么区别?
系统流程图描述系统物理模型工具,数据流程图描述系统逻辑模型工具。
系统流程图从系统功能角度抽象描述系统各个某些及其互相之间信息流动状况。
数据流程图从数据传送和加工角度抽象描述信息在系统中流动和数据解决工作状况。
8.数据字典涉及哪些内容?
它作用是什么?
数据字典是描述数据流图中数据信息集合。
它对数据流图上每一种成分:
数据项、文献(数据构造)、数据流、数据存储、加工和外部项等给以定义和阐明;它重要由数据流描述、加工描述和文献描述三某些构成。
对顾客来讲,数据字典为她们提供了数据明拟定义;对系统分析员来讲,数据字典协助她们比较容易修改已建立系统逻辑模型。
9.描述加工逻辑工具备哪些?
鉴定树、判断表和构造化语言等。
第四章总体设计
1.系统设计涉及哪两个阶段?
系统设计涉及总体设计与详细设计两个阶段。
2.总体设计重要任务是什么?
总体设计重要任务是完毕软件构造设计,拟定系统模块及其模块之间关系。
3.什么是模块?
模块具备哪几种特性?
总体设计重要考虑什么特性?
模块是数据阐明、可执行语句等程序对象集合,可以单独命名且可通过名字来访问。
模块具备输入和输出(参数传递)、功能、内部数据构造(局部变量)和程序代码四个特性。
概要设计重要考虑输入、输出(参数传递)和功能两个特性。
4.什么是模块化?
模块设计准则?
模块化是按规定原则将一种大型软件划分为一种个较小、相对独立但又有关模块。
模块设计准则:
(1)改进软件构造,提高模块独立性:
在对初步模块进行合并、分解和移动分析、精化过程中力求提高模块内聚,减少藕合。
(2)模块大小要适中:
大概50行语句代码,过大模块应分解以提高理解性和可维护性;过小模块,合并到上级模块中。
(3)软件构造图深度、宽度、扇入和扇出要恰当。
普通模块调用个数不要超过5个。
(4)尽量减少模块接口复杂限度;
(5)设计单入口、单出口模块。
(6)模块作用域应在控制域之内。
5.变换型数据流由哪几某些构成?
变换型构造由三某些构成:
传入途径、变换(加工)中心和传出途径。
6.变换分析设计环节?
(1)区别传入、传出和变换中心三某些,划分DFD图分界线;
(2)完毕第一级分解:
建立初始SC图框架;
(3)完毕第二级分解:
分解SC图各个分支;
(4)对初始构造图按照设计准则进行精化与改进。
7.事务型数据流由哪几某些构成?
事务型构造由至少一条接受途径、一种事务中心与若干条动作途径构成。
8.事务分析设计环节?
(1)在DFD图中拟定事务中心、接受某些(包括所有接受途径)和发送某些(包括所有动作途径);
(2)画出SC图框架,把DFD图三某些分?
quot;映射"为事务控制模块,接受模块和动作发送模块.普通得到SC图顶层和第一层(如果第一层简朴可以并入顶层);
(3)分解和细化接受分支和动作分支,完毕初始SC图;
(4)对初始构造图按照设计准则进行精化与改进。
9.比较层次方框图与构造图是异同?
(1)层次方框图描绘数据层次构造,构造图描绘是软件构造。
(2)两者都采用多层次矩形框树形构造。
层次方框图顶层矩形框代表完整数据构造,下面各层矩形框依次代表上个框数据子集;构造图 是在层次图每一种方框内注明模块名字或重要功能,方框之间直线表达模块调用关系,用带注解箭头表达模块调用过程中传递信息。
第五章详细设计
1.详细设计目?
为软件构造图(SC图或HC图)中每一种模块拟定采用算法和块内数据构造,用某种选定表达工具给出清晰描述.
2.详细设计重要任务?
编写软件“详细设计阐明书”.软件人员要完毕工作:
(1)为每一种模块拟定采用算法,选取某种恰当工具表达算法过程,写出模块详细过程描述.
(2)拟定每一模块使用数据构造.
(3)拟定模块构造细节,涉及对系统外部接口和顾客界面,对系统内部其他模块接口,以及关于模块输入数据、输出数据及局部数据所有细节.
(4)为每一种模块设计出一组测试用例,以便在编码阶段对模块代码(即程序)进行预定测试.
3.构造化程序设计基本原则?
在详细设计中所有模块都使用单入口、单出口顺序、选取、循环三种基本控制构造.
4.比较面向数据流和面向数据构造两类设计办法异同?
相似点:
(1)遵守构造程序设计“由顶向下”逐渐细化原则,并以其为共同基本;
(2)均服从“程序构造必要适应问题构造”基本原则,各自拥有从问题构造(涉及数据构造)导出程序构造一组映射规则。
不同点:
(1)面向数据流设计以数据流图为基本,在分析阶段用DFD表达软件逻辑模型,在设计阶段按数据流类型,将数据流图转换为软件构造。
面向数据构造设计以数据构造为基本,从问题数据构造出发导出它程序构造。
(2)面向数据流设计最后目的是软件最后SC图,面向数据构造设计最后目的是程序过程性描述。
5.比较Jackson办法和LCP办法异同?
Jackson与LCP设计办法都是以数据构造为出发点,以程序过程描述为最后目的,设计环节基本相似。
它们重要差别是:
(1)使用不同表达工具,其中LCP办法中表达工具Warnier图
比Jackson设计办法中表达工具Jackson图有更大通用性;
(2)Jackson办法环节和指引原则有一定灵活性,而LCP设计
办法则更加严密。
6.详细设计描述工具应具备什么功能?
无论哪类描述工具不但要具备描述设计过程,如控制流程、解决功能、数据组织及其他方面细节能力,并且在编码阶段可以直接将它翻译为用程序设计语言书写源程序。
第六章编码
1.编码任务?
使用选定程序设计语言,把模块过程性描述翻译为用语言书写源程序(源代码)。
2.对源程序基本规定?
源程序规定:
对的可靠、简要清晰、效率高。
(1)源程序对的性是对程序质量最基本规定;
(2)源程序简要清晰,便于验证源代码和模块规格阐明一致性,容易进行测试和维护;
(3)对于大多数模块,编码时应当把简要清晰放在第一位;
(4)除了编码阶段产生源代码外,在测试阶段也需要编写某些测试程序,用于对软件测试。
3.程序设计语言特点?
(1)名字阐明:
程序中使用对象名字,能为编译程序所检查和辨认;
(2)类型阐明:
定义对象类型,拟定该对象使用方式;
(3)初始化:
为变量提供恰当时始值或由系统给变量赋一特殊表白未初始化值;
(4)对象局部性:
程序中真正需要那某些才干访问对象;
(5)程序模块:
控制程序对象名字;
(6)循环控制构造:
如FOR语句、WHILE-DO语句、REPEAT-UNTIL语句等;
(7)分支控制构造:
如IF语句、CASE语句等;
(8)异常解决:
为程序运营过程中发生错误和意外事件提供检测和解决上协助;
(9)独立编译:
能分别编译各个程序单元。
4.选取程序设计语言需要考虑因素?
(1)选取顾客熟悉、便于顾客维护语言。
(2)选取目的系统环境中可以提供编译程序所能选用语言。
(3)选取可以得到软件工具,能支持程序开发中可以运用语言。
(4)依照工程规模大小、目的系统应用范畴,如实时应用选取Ada语言或汇编语言,系统软件开发选取C语言或汇编语言,软件开发中若具有大量数据操作则选取SQL、dBASE等数据库语言等。
(5)选取程序员熟悉语言。
(6)选取原则化限度高、程序可移植性好语言。
(7)依照算法与计算复杂性、数据构造复杂性选取。
如对于系统程序和构造复杂应用程序,选取支持数组、记录(或构造)与指针动态数据构造Pascal语言或C语言。
(8)依照实时规定系统需要响应速度和效率选取相应语言。
5.编码风格指引原则。
(1)源程序:
涉及恰当标记符、恰当注解、程序清单合理布局与清晰;
(2)数据阐明:
数据构造或数据类型阐明顺序原则化;变量名称尽量故意义;对复杂数据构造在注解中要阐明在程序设计中实现这个数据构造办法。
(3)语句构造简朴明了:
不要为节约空间将各种语句写在同一行;尽量避免复杂条件及“非”条件测试;避免大量使用循环嵌套和条件嵌套;括号使用是为了使逻辑表达式和算术表达式运算顺序清晰直观。
(4)效率:
考虑程序运营时间存储器效率、输入/输出效率;在解决程序对的性、清晰与效率之间关系时先求程序对的后求快;先求清晰后求快;保持程序简朴以求快;书写清晰,不为“效率”牺牲清晰。
6.第四代语言(4GL)应具备哪些特性?
(1)具备很强数据管理能力,能对数据库进行有效存取、查询和其他关于操作;
(2)能提供一组高效、非过程化命令,构成语言基本语句,编程时顾客只需用这些命令阐明“做什么”,不必描述实现细节;
(3)能满足多功能、一体化规定。
为此,语言中除必要具有控制程序逻辑与实现数据库操作语句外,还应涉及生成与解决报表、表格、图形,以及实现数据运算和分析记录功能各种语句,共同构成一种一体化语言,以适应各种应用开发需要。
第七章软件测试
1.软件测试基本任务?
软件测试是按照特定规则,发现软件错误过程;好测试方案是尽量发现迄今尚未发现错误测试;成功测试方案是发现迄今尚未发现错误测试;
2.测试与调试重要区别?
(1)测试从一种侧面证明程序员失败;调试证明程序员对的;
(2)测试从已知条件开始,使用预先定义程序,且有预知成果,不可预见仅是程序与否通过测试;调试从不可知内部条件开始,除记录性调试外,成果是不可预见;
(3)测试有筹划并且要进行测试设计;调试不受时间约束;
(4)测试是发现错误、改正错误、重新测试过程;调试是一种推理过程;
(5)测试执行是有规程;调试执行规定程序员进行必要推理;
(6)测试由独立测试组在不理解软件设计件下完毕;调试由理解详细设计程序员完毕;
(7)大多数测试执行和设计可由工具支持;调试用工具重要是调试器。
3.人工复审方式和作用?
人工复审方式:
代码会审、走查和排练和办公桌检查;
人工复审作用:
检查程序静态错误。
4.什么是黑盒测试?
黑盒测试重要采用技术有哪些?
黑盒测试:
也称为功能测试,它着眼于程序外部特性,而不考虑程序内部逻辑构造。
测试者把被测程序当作一种黑盒,不用关怀程序内部构造。
黑盒测试是在程序接口处进行测试,它只检查程序功能与否能按照规格阐明书规定正常使用,程序与否能恰本地接受输入数据产生对的输出信息,并且保持外部信息(如数据库或文献)完整性。
黑盒测试重要采用技术有:
等价分类法、边沿值分析法、错误推测法和因果图等技术。
5.什么是白盒测试?
白盒测试重要采用技术有哪些?
测试者理解被测程序内部构造和解决过程,对程序所有逻辑途径进行测试,在不同点检查程序状态,拟定实际状态与预期状态与否一致。
白盒测试重要采用技术有:
途径测试技术和事务解决流程技术,对包具有大量逻辑判断或条件组合程序采用基于逻辑测试技术。
6.途径测试技术中几种重要覆盖含义?
举例阐明?
语句覆盖:
至少执行程序中所有语句一次。
鉴定覆盖:
使被测程序中每一种分支至少执行一次。
故也称为分支覆盖。
条件覆盖:
执行所有也许穿过程序控制路流程。
条件组合测试:
设计足够测试用例,使每个鉴定中所有也许条件取值组合至少执行一次。
7.等价分类法测试技术采用普通办法?
举例阐明?
(1)为每个等价类编号;
(2)设计一种新测试方案,以尽量多覆盖尚未被覆盖有效等价类,重复这一环节,直到所有有效等价类被覆盖为止。
(3)设计一种新测试方案,使它覆盖一种尚未被覆盖无效等价类,重复这一环节,直到所有无效等价类被覆盖为止。
8.软件测试普通环节?
单元测试、子系统测试、系统测试、验收测试、平行测试。
9.比较集成试两种方式优劣?
非渐增式测试方式:
分别测试模块,再把所有模块按设计规定放在一起构成所要程序。
该办法编写测试软件工作量大,模块间接口错误发现得晚,错误定位较难诊断,总体测试有错误容易漏掉,测试时间相对较少,可以并行测试所有模块,能充分运用人力,加快工程进度。
。
渐增式测试方式:
把下一种要测试模块,同已经测试好那些模块结合起来进行测试。
该办法运用已测试过模块作测试软件,开销小,较早发现模块间接口错误,错误定位往往和近来入模块有关,对已测试好模块可在新加入模块条件下受到新检查,测试更彻底,需要较多测试时间,不能并行测试。
总来说,渐增式测试办法比较好。
10.软件测试方略?
(1)在任何状况下都应使用边界值分析办法。
(2)必要时用等价类划分法补充测试方案。
(3)必要时再用错误推测法补充测试方案。
(4)对照程序逻辑,检查已设计出测试方案。
(5)依照对程序可靠性规定采用不同逻辑覆盖原则,再补充某些测试方案。
第八章软件维护
1.为什么说软件维护是不可避免?
由于软件开发过程中,普通很难检测到所有错误,另一方面软件在应用过程中需要随顾客新规定或运营环境变化而进行软件修改或完毕功能增删等,为了提高软件应用水平和使用寿命,软件维护是不可避免。
2.软件维护普通分为哪几类?
改正性维护:
满足顾客对已开发产品性能与运营环境不断提高规定,进而达到延长软件寿命目。
适应性维护:
对程序有效期间发现程序错误进行诊断和改正过程,配合变化了环境进行修改软件活动;
完善性维护:
满足顾客在使用过程中提出增长新功能或修改已有功能建议而进行工作;
防止性维护:
为了改进将来可维护性或可靠性而修改软件工作。
3.影响软件维护因素有哪些?
开发办法:
采用模块化详细设计文档有助于理解软件构造、界面功能和内部流程;开发过程中严格而科学管理规划及清晰可靠文档资料对发生错误后理解与纠错是至关重要;开发过程中模块独立限度越高,对软件修改越容易,对软件改进和移植越以便。
开发条件:
软件开发及维护人员水平决定了软件开发质量和维护效率;开发过程中使用原则程序设计语言和原则操作系统接口,可以大大提高软件可维护性;在测试过程中用例有效性,可极大地减少软件存在错误;另一方面使用规范化文档资料可为维护提供更好根据。
4.软件维护困难重要体当前什么方面?
(1)普通来讲,维护人员对开发人员写程序及文档,理解都比较困难,对维护工作不会喜欢;
(2)维护持续时间都很长,在开发人员不在现场轻快下,维护软件普通是很困难;
(3)绝大多数软件在设计时对将来软件修改都没有考虑或考虑不多,特别未能在设计中强调并认真解决好模块独立性,使软件修改既困难又易发生差错。
5.决定软件可维护性因素?
(1)软件可理解性、可测试性、可修
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 导论 知识点 总结
![提示](https://static.bdocx.com/images/bang_tan.gif)