《2022年软件工程基础习题集答案.docx》由会员分享,可在线阅读,更多相关《2022年软件工程基础习题集答案.docx(56页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选学习资料 - - - - - - - - - 软件工程基础习题集答案第一章 概 述1什么是软件危机,它有哪些典型表现?所谓“软件危机 ”就是,在运算机软件的开发和保护过程中所遇到的一系列严峻的问题,概括起来归纳为:如何开发软件,以满意日益增长、日趋复杂的需要;如何保护数量不断膨胀的已有软件;软件危机的典型表现主要有:a. 开发成本和进度不能精确估量b. 开发出来的软件不能满意用户的要求c. 软件的可保护性差 d. 软件质量不行靠e. 软件成本在系统中的比重逐年上升f. 软件开发生产率的提高速度不够2简述产生软件危机的缘由和解决的思路;软件危机产生的缘由一方面与软件本身的特点有关,另一方面,
2、是与已有软件开发、保护的方法不正确有亲密关系;解决软件危机,既要有技术措施方法和工具 ,又要有必要的组织治理措施;即采纳工程化的原就和方法组织软件开发是摆脱软件危机的一个主要出路;3什么是软件工程?它有哪些本质特性?软件工程是一门讨论如何用系统化、规范化、数量化等工程原就和方法进行软件开发和保护的学 科;其实质就是用工程的概念、原理、技术和方法,结合有效的治理方法和先进的开发技术,开发与 保护软件,以解决软件危机;4软件工程是如何用来排除软件危机的?软件工程是从技术和治理两个方面来讨论如何更好地开发和保护运算机软件,从源头上排除软件 危机;6简述软件的定义;软件 程序 + 数据 + 文档名师归
3、纳总结 - - - - - - -第 1 页,共 30 页精选学习资料 - - - - - - - - - 7软件工程的目的是什么?为高质量的软件开发供应一个科学的体系框架;8什么是软件工程方法学?软件工程是一种什么样的技术?包括哪三大要素?分为哪三个分支?软件工程方法学就是指在软件生命周期全过程中使用的一整套治理和开发技术方法的集合;目前,使用最广泛的软件工程方法学分别是传统方法学和面对对象方法学;软件工程作为一种层次化的技术,有方法、工具和过程三大要素,并由于其涉及学科内容的极为 广泛,而分为三个分支:软件开发技术、软件项目治理技术、软件质量治理技术;9简述软件工程的基本原理;软件工程有
4、7 条基本原理:1严格依据软件生命周期方案进行治理 2坚持进行阶段评审 3实行严格的产品掌握 4采纳先进的程序设计技术 5结果应能清晰的审查 6开发小组成员应少而精 7承认不断改进软件工程实践的必要性10软件工程的基本开发原就有哪些?软件工程的基本开发原就有:1模块化 2抽象和信息隐藏 3模块的高内聚和低耦合 4确定性 5一样性 6完备性11构成软件工程的基本元素有哪些?除了前面给出的软件工程三大要素,仍应当包括掌握和质量保证;这里的掌握,即规模掌握、成本掌握、复杂性掌握等;12什么是软件过程?它与软件工程方法学有何关系?名师归纳总结 - - - - - - -第 2 页,共 30 页精选学习
5、资料 - - - - - - - - - 软件过程是指为了获得高质量软件产品,在软件工具支持下,由软件人员完成的一系列软件工程活动;软件过程规定了开发软件所需完成的各项任务步骤;过程步骤的设定与软件生命周期、生命周期 模型、软件开发工具,以及参与开发的人员等诸方面因素有关;13什么是软件生命周期?什么是软件生命周期模型?软件犹如自然界任何事物一样,都有其孕育、产生、成长、成熟、衰亡的生存过程;软件的这一 过程,称为软件生命周期;软件生命周期模型也称软件开发过程模型,是为明白决产业环境中的实际问题,而提出的开发策略;是反映整个软件生命期中,系统开发、运行、保护等实施活动的一种结构框架;14简述软
6、件生命周期方法学的途径,以及划分阶段步骤的目的和实质;软件生命周期方法学是软件工程的传统途径,划分阶段步骤的目的和实质是:掌握开发工作的复 杂性,通过有限步骤,把抽象规律概念,转化为具体物力实现;15试比较瀑布模型、快速原型模型、增量模型和螺旋模型的优缺点,说明它们各自的适用范畴;1瀑布模型;瀑布模型广为人知和历史悠久,其优势是规范及文档驱动的方法;但问题是,往往不能够真正满足用户的需求;适用于传统软件工程领域的结构化开发;2原型模型;是为了克服瀑布模型的缺点而提出来的;通过快速构建一个在机器上可运行的原型系统,让用户 试用原型,并收集反馈看法的方法,来猎取用户真实的需求;3螺旋模型;螺旋模型
7、适用于大型软件项目,比起之前的其它模型而言,有其肯定的优越性,但这些优越性并 不是肯定的;主要表达在对开发人员的风险评估体会和特地学问的要求较高;假如项目风险较大, 而开发人员的水平较低,不能精确的识别和分析风险,就势必造成重大缺失;4增量模型;具有在软件开发早期阶段使投资获得明显回报和交易保护的优点,但是要求软件具有开放的结构;名师归纳总结 - - - - - - -第 3 页,共 30 页精选学习资料 - - - - - - - - - 其次章 可行性讨论1在软件开发的早期阶段,为什么要进行可行性讨论?其目的和任务各是什么?可行性讨论的目的是用最小的代价,在尽可能短的时间内确定问题是否可解
8、决,以及是否值得解决;可行性讨论的任务不是解决问题,而是确定是否可解/值得解;2应当从哪些方面讨论目标系统的可行性?主要从以下几个方面进行可行性讨论:1. 技术可行性;以现有技术,能否在预定时间内完成该系统开发;2. 经济可行性;通过成本 - 效益分析,估算系统的整体经济效益是否满意要求;3. 操作可行性;分析系统的运行方式、操作规程是否适应用户应用需要;4. 社会可行性;分析系统在法律、社会、市场等方面的认可度;3可行性讨论有哪些工作步骤?1 复查定义,确定系统规模和目标;2 讨论老系统 3 导出高层规律模型 conceptual design 4 重新定义 5 导出多种解法 6 举荐行动方
9、针 7 开发方案 粗略 8 审查、存档4简述系统流程图在可行性讨论中的作用;系统流程图是概括的描述物理系统的传统工具;系统流程图反映的是信息在系统各部分间流淌的情形;系统流程图可以帮忙明白和分析系统,以概括的方式表达对系统的熟识,并可以描述将来物理系统的概貌;5简述数据流图在可行性讨论中的作用和用途;数据流图在可行性分析中可以帮忙分析和描画数据在软件中流淌和被处理的规律过程,用图形的 方式描述系统的规律功能,是系统分析员和用户之间抱负的通信工具;名师归纳总结 - - - - - - -第 4 页,共 30 页精选学习资料 - - - - - - - - - 6简洁描述数据字典的内容和定义数据的
10、方法;数据字典主要由以下 4 种元素定义组成:1数据流 2数据流重量 3数据储备 4处理 除了数据定义外,数据字典仍应包含一些关于数据的其它信息;定义数据的方法通常采纳自顶向下分解的方式;并由次序、挑选、重复三种基本数据元素类型组 成数据;7说明软件方案的内容和目标;软件方案的内容 项目任务范畴 + 环境资源 + 工作量 + 进度 软件方案的目标是为了供应一个框架,以便于治理者对资源、成本和进度等进行合理的估算;8什么是软件范畴?定义软件范畴需要哪些信息?软件范畴就是在技术和治理层面上都是无二义性和可懂得的项目范畴,是软件开发各阶段的工作依据;定义软件范畴需要以下信息:a. 与用户、总体目标及
11、利益相关的问题;b. 有利于系统分析员懂得的问题;c. 集中于沟通成效的问题;9简述软件开发环境资源的三个层次;软件开发环境资源由三个层次构成:开发环境、软件构件以及最重要的资源人;10软件环境资源的特点有哪些?它们对制定软件方案都有哪些意义?每一类资源都有四个特点:资源描述、可用性说明和资源供应的时间、资源使用的连续时间;可以为制定软件方案估算软件开发所需的资源;11软件方案中,支配软件开发进度主要可以用哪些工具?都有哪些优缺点?编制进度方案的常用工具主要有甘特图和网络方案法;甘特图的优点是简洁,能动态地反映开发进展;缺点是难以反映多个任务间的规律关系;网络方案法就恰好补偿了甘特图的缺点,最
12、适合反映多个工作之间的规律关系;名师归纳总结 - - - - - - -第 5 页,共 30 页精选学习资料 - - - - - - - - - 12主要的成本估量技术有哪些?其依据的主要是什么?主要有,代码行技术;是一种基于规模的分解估算:D= fvi 以及基于问题的分解估算:EVSopt+4Sm+Spess/6 仍有功能点技术;这种技术以功能点FP为单位,度量软件的规模;由于项目本身的复杂性,因此,成本估量技术主要采纳“分而治之 ”的分解技术对软件项目进行估 算;13为什么说成本估量是不行能精准的?那是由于太多的变化因素人员、技术、环境、策略、复杂性等等,使得成本估算永久不行能 精确;14
13、进行成本 /效益分析的方法主要有哪些?常用成本 /效益分析的方法主要有:1 货币的时间价值 2 投资回收期 3 纯收入 4 投资回收率16如何对制定完成的软件方案进行复审?为什么要复审?软件方案的复审通常涉及有关软件工作范畴和软硬件资源问题等;复审应当邀请用户参与,用户 可提出建议,并与开发人员最终商定内容;复审内容分为技术和治理两个方面:技术方面需要考虑的问题有:系统的任务是否合理;系统的给你复杂性是否与开发成本、进度以及风险一样;系统规格说明书是否足够充分;系统性能要求是否恰当 治理方面需要考虑的问题有:方案中描述的工作范畴是否符合用户需求?方案中对资源的描述是否有效、合理?方案中系统的开
14、发成本与进度要求是否合理?方案中人员的支配是否合理?名师归纳总结 - - - - - - -第 6 页,共 30 页精选学习资料 - - - - - - - - - 系统开发存在哪些风险?复审可以尽早发觉错误,复审是软件质量保证的重要措施;名师归纳总结 - - - - - - -第 7 页,共 30 页精选学习资料 - - - - - - - - - 第三章 需求分析1为什么要进行需求分析?通常对软件系统有哪些需求?需求问题是软件工程项目失败的主要缘由;一个高质量的软件,很大程度上取决于对要解决的问题的熟识,以及如何精确的表达用户的需求;需求分析就是要解决这个问题;通常,对一个软件系统的需求可
15、以有功能需求、性能需求、牢靠性和可用性需求、出错处理需求、接口需求等多个方面;2怎样与用户有效地沟通,以获得用户的真实需求?访谈、情形分析,以及面对数据流的自顶向下求精等方法,编制简易的系统规格说明文档,创建原型等,是猎取真实需求的有效方法;3需求分析的任务是什么?确定对待开发系统的综合要求;4通常系统的需求可以分为哪几个层次?一般可以分成 5 个层次:1 功能需求:系统必需做什么?2 业务需求:反映客户组织机构对系统高层次的目标要求;3 运行需求:运行环境、软硬件配置等;4 属性需求:包括用户关怀的属性,如效率、敏捷性、完整性、牢靠性等;开发者关怀的属性,如可保护性、可复用性、可移植性等;5
16、 将来可能的扩充需求:如 HDIS各组的合并, 3 维虚拟现实的成效等等;5进行需求分析的步骤有哪些?1确定系统的综合要求 2分析系统的数据要求 3导出规律模型 4修正系统开发方案6简述建立原型模型对软件需求分析的作用;可以快速构建旨在演示目标系统主要功能的可运行程序,帮忙用户确定及供应更为精准的需求,以利用户和开发者能够在目标系统应当“ 做什么” 这一问题上尽快达成一样;名师归纳总结 - - - - - - -第 8 页,共 30 页精选学习资料 - - - - - - - - - 7说明实体 -联系图及其用途;实体-联系图是依据用户的观点对数据建立的模型;描述从用户角度看到的数据,反映用户
17、的现实 环境,并且与在软件系统中的实现方法无关;8说明为什么需要进行需求验证及验证的步骤有哪些?进行需求验证是为了确保软件开发的质量,降低开发成本;通常对需求进行验证的步骤有:验证需求的一样性、验证需求的现实性、验证需求的完整性和有效性;名师归纳总结 - - - - - - -第 9 页,共 30 页精选学习资料 - - - - - - - - - 第四章 总体设计3简洁说明系统总体设计的步骤;典型的总体设计包括以下 9 个步骤:1、确定正确方案 2、选取合理方案3、举荐正确方案4、功能分解 5、软件结构设计6、设计数据库7、制定测试方案8、书写文档 9、审查和复审5为什么要尽量使用数据耦合,
18、少用掌握耦合,限制公共耦合的范畴,完全不用内容耦合?削减模块之间的关联度,提高模块的独立性;由于内容耦合会导致一个模块修改另一个模块的内容,使得程序规律发生严峻问题;而公共耦合是如干模块通过一个公共数据环境相互作用,公共部分的改动将影响全部调用它的模块,公共部分的数据存取无法掌握,并且复杂程度也会随耦合模块的个数增加而增加;掌握耦合是一个模块通过传递开关、标志、名字等掌握信息,明显地掌握挑选另一个模块的功能;由于接口单一,因此仍旧会影响被控模块的内部规律;而数据耦合只是模块间通过数据参数来交换 6为什么模块的规模要适中?过大不易懂得;太小就接口开销过大;I/O 信息,因此不会对其它模块产生任何
19、等影响;7请说明为什么模块掌握的宽度和深度要适度;深度过大表示分工过细,而宽度过大就表示系统复杂度大,所以模块掌握的宽度和深度要适度;8简述面对数据流设计方法的基本思想;将由数据流图描画的信息在系统中加工和流淌的情形映射成软件结构;9常用数据流类型有哪些?变换流和事务流;名师归纳总结 - - - - - - -第 10 页,共 30 页精选学习资料 - - - - - - - - - 10面对数据流的设计方法主要有哪几个步骤?主要有下面 7 个步骤:1复查基本系统模型 2复查并精化数据流图 3确定数据流图具有变换特性仍是事务特性 4确定输入流和输出流淌边界,从而孤立出变换中心 5完成“ 第一级
20、分解”6完成“ 其次级分解”7使用设计度量和启示式规章对第一次分割得到的软件结构进一步精化名师归纳总结 - - - - - - -第 11 页,共 30 页精选学习资料 - - - - - - - - - 第五章 具体设计1具体设计的任务是什么?包括模块的算法设计、模块内的数据结构设计、模块接口设计、其它依据软件特点需要完成的设计、模块测试用例设计、设计文档编写、设计评审;2在对系统做具体设计时,应遵循哪些原就? 模块的规律描述应清晰易读、正确牢靠; 设计的处理过程应当简明易懂; 挑选恰当的描述工具来描述模块算法;3简述结构化设计的特点; 自顶向下、逐步求精; 具有单入、单出的掌握结构(取消
21、GOTO语句)4结构化程序设计中有哪几种基本掌握结构?分别描画在程序流程图、的图例;1 次序结构 2 挑选结构 3 先判定型循环结构 4 后判定型循环结构 5 多情形挑选盒图和 PDA 图中这些基本掌握7试说明 ISO 为什么要建议停止使用程序流程图,而举荐使用 PDA 图?由于程序流程图中的 GOTO 语句回严峻地损害程序结构,而无法实行结构化设计;PDA 图就既吸取了程序流程图好学、好用、好懂,便利、敏捷的优点,又保留了 N-S 图结构化设计的特点,很好地满足了软结构构设计图形工具的要求,以及 PDA 图所具有的 结构清晰,层次分明,易读; 支持逐步求精的设计思想; 简洁将 PAD自动转换
22、为高级语言源程序等特点,因此,ISO要举荐使用 PDA 图;9试说明 Jackson 方法是一种怎么样的程序设计方法;它有哪些工作步骤?Jackson 方法是以数据结构 data structure为基础设计每个模块的处理过程,将数据结构转化成程序结构;具体工作步骤有:第 1 步:用 Jackson 图描述 IO 的数据结构第 2 步:在两个图中指出有直接因果关系、可以同时处理的单元名师归纳总结 - - - - - - -第 12 页,共 30 页精选学习资料 - - - - - - - - - 第 3 步:将数据结构映射到程序结构第 4 步:列出全部操作条件,并安排到上幅程序结构图中 第 5
23、 步:用 Pseudocode 表示程序名师归纳总结 - - - - - - -第 13 页,共 30 页精选学习资料 - - - - - - - - - 第六章 实现1说明什么是程序编码?为什么程序设计语言的特点和编码风格会影响到程序的牢靠性、可读性、可 测试性和可保护性?所谓“ 编码” ,就是将在低级抽象层次得到的具体设计结果,翻译成用某种程序设计语言书写的 程序;是软件设计的自然结果;而程序设计语言是否有抱负的结构化、模块化机制,是否有可读性好的掌握结构和数据结构等特性,以及程序设计语言供应的编译、可保护性、可测试性、牢靠性等;软件工具等, 再加上程序的设计风格会很深刻的影响软件的质量和
24、2用户界面设计的最一般原就,即所谓“ 黄金规章” 是什么?1. 置用户于掌握之下; 2. 削减用户的记忆负担; 3. 保持界面一样;3软件界面设计包含了哪几个方面的基本内容?界面设计包括三个方面:1. 软件构件间接口; 2. 软件与其它系统的接口;3. 软件与操作者之间的接口,即用户界面;4用户界面供应系统服务的方式通常有哪两种?命令驱动和屏幕菜单驱动5WIMP界面是屏幕菜单驱动用户界面的一种形式,其设计准就有哪些?1 明确的动作:在屏幕上指点并操纵对象 2 即时反馈:操作结构即见 3 增量效应:图标应被拖曳连续移动,而非跳动 4 可视交互:交互操作与用户概念模型匹配 5 剥皮式学习:学习系统
25、功能复杂性逐层加深 6 可逆动作:也即应有退回操作 7 事先验证:只答应合法操作产生成效6为什么说软件界面设计的质量会直接影响到用户对软件产品的评判?用户界面 User-interface又称人机界面 man-computer interface,是用户和运算机联系的中间媒介,是系统中最重要、最关键的部分之一;用户界面设计的好坏,直接影响到系统设计的成败;这是由于,假如一个界面设计的不好,也即通常所说的用户界面不友好,可以使用户在使用时感到不便,甚至制造麻烦,系统就难以发挥应有的效益,甚至可能被用户弃用;名师归纳总结 - - - - - - -第 14 页,共 30 页精选学习资料 - - -
26、 - - - - - - 7什么是系统响应时间?系统响应时间有哪些重要属性?系统响应时间指从用户完成某个掌握动作,到系统给出预期响应的时间;系统响应时间有 2 个重要的属性:长度和易变性;8在设计软件系统的用户帮忙设施时,需要留意解决哪些问题?1在用户与系统交互期间,是否任何时候都能获得关于系统任何功能的帮忙信息?2用户怎样恳求帮忙?3怎样显示帮忙信息?4用户怎样返回到正常的交互方式中?5怎样组织帮忙信息?9软件出错处理设计,即软件安全性设计;一个交互式出错处理程序应当具备哪些功能和属性?1信息应当使用用户可以懂得的术语描述;2信息应当供应有助于从错误中复原的建设性看法;3信息应当指出错误可能
27、导致的后果;4信息应当相伴感官提示;5信息不能带有指责颜色;10测试的最基本目标是什么?以尽可能小的代价,发觉尽可能多的错误;11软件测试的原就有哪些? 应当把“ 尽早和不断的测试” 作为座右铭 测试应由独立的专业测试机构来完成 测试工作要全面,但不行能实现“ 穷举” 只能尽可能查错,不能证明程序中没有错 软件测试符合 2-8Pareto 原理 应妥当储存测试文档 制定严格、合理的测试方案 错误经过修改后,相关的测试必不行少12软件测试的方法有哪几种?黑盒测试和白盒测试;名师归纳总结 - - - - - - -第 15 页,共 30 页精选学习资料 - - - - - - - - - 13简洁
28、说明什么是白盒测试,什么是黑盒测试;黑盒测试是把程序看成一个黑盒子,完全不考虑程序的内部结构和处理过程的测试方法;黑盒测试又称功能测试;白盒测试是对程序的执行细节进行测试,通过设计测试数据,验证程序模块的每个路径的执行情 况;白盒测试又称结构测试;14简述软件测试的步骤;1 单元测试 程序设计 & 代码 bugs 2 子系统测试 模块连接 3 系统测试 需求确认 & 系统设计4 验收测试 用户加入 5 平行运行 新旧系统比较运行结果16为什么单元测试必需由编程者自己完成?单元测试是对程序规律结构的测试;而对程序结构最为熟识的,莫过于编程者;再者,高质量的程序模块是构造系统的基础,因此编程者必需
29、向下一道工序提交符合质量要求的产品;17单元测试的主要手段有哪些?代码审查、运算机测试等;18单元测试主要从哪 5 个方面进行?主要测试以下五个方面:1. 模块接口 2. 局部数据结构 3. 重要的执行通路4. 出错处理通路 5. 边界条件19为什么人工代码审查非常重要?一次审查可发觉多个错误,不必改一个测一个;20集成测试主要有渐增式测试、非渐增式测试两种,试述两种方式的异同点;渐增式测试:可以较早发觉模块间的接口错误、显现的错误往往跟最新加入的模块有关、在不断名师归纳总结 - - - - - - -第 16 页,共 30 页精选学习资料 - - - - - - - - - 集成的过程中使模
30、块不断在新的条件下受到新的检测,测试更完全,但较非渐增式测试费时;非渐增式测试由于最终才组装,因此错误发觉得晚、发觉错误后难以诊肯定位,但可以同时并行测试全部模块,能充分利用人力;21描述集成测试的两种策略,并比较它们的优缺点;自顶向下测试和自底向上测试两种;自顶向下测试的优点是不需要测试驱动程序,能够在测试阶段的早期实现并验证系统的主要功能,在早期发觉上层模块的接口错误;主要缺点是需要存根程序,可能遇到与此相联系的测试困难,底层模 块的错误发觉较晚,而且对人力的使用也不利;而自底向上测试的优缺点与自顶向下测试的优缺点正好相反;22什么是回来测试?回来测试的测试用例集如何确定?回来测试是指重新
31、执行已经做过的测试的某个子集,以保证系统在发生调试、功能变化等事项后,没有带来非预期的副作用;回来测试的测试用例集按以下方法确定:1检测软件全部功能的代表性测试用例;2特地针对可能受修改影响的软件功能的附加测试;3针对被修改过的软件成分的测试;23什么是确认测试?确认测试的任务是什么?如何确认其范畴?验收软件的有效性 功能和性能达标 ;确认测试的工作范畴主要有:1按合同规定审查软件配置;2设计测试方案,使通过测试保证软件能满意全部功能、性能要求;3文档与程序一样,具有保护阶段所必需的细节;4严格按用户手册操作,以检查手册的完整性和正确性;24设计测试方案的任务有哪些?预定要测试的功能 设计输入
32、的测试数据列出预期结果25什么是规律掩盖测试法?它主要用于什么测试?规律掩盖测试是一种对程序规律通路进行掩盖的测试,通常适用于白盒测试;名师归纳总结 - - - - - - -第 17 页,共 30 页精选学习资料 - - - - - - - - - 26什么是等价划分法?它主要用于什么测试?是一种很常用的测试方法;其对测试数据的挑选是基于对程序功能的分析,依据程序输入要求和 输出要求,挑选如干数据进行测试功能的过程;等价划分法主要用于黑盒测试;27什么是边值分析法?它主要用于什么测试?依据体会,在程序处理的边界最简洁发生错误的地方进行测试,主要用于黑盒测试;28什么是错误估量法?它主要用于什
33、么测试?利用有体会的测试者对程序可能发生错误的位置的估量进行测试的方法,主要用于黑盒测试;29一个软件的测试策略应当是怎样的?黑盒设计 白盒补充 在任何情形下都应第一使用边界值分析的方法; 必要时用等价划分法补充; 必要时再用错误估量法补充; 对比程序规律,检查测试方案;30什么是调试?调试和测试有什么不同?测试 发觉错误 调试 改正错误 调试与测试的区分在于,调试作为测试的后续工作,主要是解决和排除测试中显现的错误;31简洁说明调试的方法和策略;调试过程的关键不是调试技术,而是用来推断错误缘由的基本策略;主要有: 摸索法:凭体会推测; 回溯法:由症状 symptom最先显现的地方,沿cont
34、rol flow向回检查;适用于小型程序; 对分法:在关键点插入变量的正确值; 归纳法:从错误症状中找出规律,推断根源; 演绎法:一般 特殊32什么是软件的牢靠性、可用性和正确性?软件牢靠性是指程序在给定的时间间隔内,依据说明书的规定,胜利地运行的概率;名师归纳总结 - - - - - - -第 18 页,共 30 页精选学习资料 - - - - - - - - - 软件可用性是指程序在给定的时间点,依据说明书的规定,胜利地运行的概率;软件正确性是指程序的功能正确;名师归纳总结 - - - - - - -第 19 页,共 30 页精选学习资料 - - - - - - - - - 第七章 保护1
35、什么是软件保护?在软件已经交付使用之后,为了改正错误或满意新的需要而修改软件的过程;2软件保护有哪几种类型?改正性保护:诊断和改正错误;适应性保护:为了和变化了的环境 如软 硬件升级、新数据库等 适当地协作而修改软件;完善性保护:为了增加新功能,修改已有功能,改造界面,增加 HELP等,而修改软件;预防性保护:为了改进将来的可保护性或牢靠性,或为了给将来的改进奠定更好的基础而修改 软件;3为什么说软件文档保护和代码保护同样重要?这是由于,软件文档是影响软件可保护性的打算因素;4为什么说保护的代价很高?应当怎样做才能降低保护的代价?一般保护的工作量占生存周期70%以上,保护成本约为开发成本的4
36、倍 满意 8-2 规章 ;保护代价分为:1有形代价:费用已上升至总预算的 2无形代价:80%;占用资源以致延误开发;修改不准时引起用户不满;保护引入新错误,降低了软件质量;等等;c-d 3保护工作量的体会模型:M = P + K*e 降低保护代价的通常熟识是:提高程序的可保护性,这也是软件工程学的主要目的;5导致保护成本高企的缘由主要有哪些?软件开发途径不好,导致软件可保护性差,原先的开发人员没有参与保护,保护成本日益高涨等,从保护工作量的体会模型可以看到,保护工作量和成本将呈指数增加;6什么是软件的可保护性?软件可保护性可定性地定义为:保护人员懂得、改正、改动和改进这个软件的难易程度;7如何
37、提高软件的可保护性?名师归纳总结 - - - - - - -第 20 页,共 30 页精选学习资料 - - - - - - - - - 可以从提高打算软件可保护性的因素着手,这些因素是:可懂得性、可测试性、可修改性、可移植性、可重用性、牢靠性、可使用性、效率等;9为什么说文档是影响软件可保护性的打算因素?由于长期使用的软件系统在使用过程中会有多次修改的经受,所以文档比之代码更为重要;而文档应当记载了这些重要的修改,10什么是软件的系统文档?系统文档是指软件系统从问题定义、需求说明、设计、实现到验收测试方案等一系列和系统实现 亲密相关的技术文档;11什么是软件的用户文档?供应用户明白、使用、操作
38、和安装系统的文档资料;12什么是可重用性?如何通过提高软件的可重用性来提高软件的可保护性?可重用性是指同一事物不加修改或稍加修改,就可以在不同环境多次重复使用;大量使用可重用 软件构件,可大幅提高软件的可保护性;主要表达在两个方面:1可重用构件通常都是组装胜利的部件,加上每次重用又都会进一步完善部件,因此可以大幅提 高软件的牢靠性,而改正性保护要求会降低;2很简洁修改可重用的软件构件,使之适应新的应用环境,因此软件中使用可重用构件越多,软 件的适应性保护和完善性保护也越简洁;13为什么要进行软件可保护性复审?目的是提高软件的可保护性;可保护性复审在软件开放的不同阶段有不同的重点;例如,在分析阶
39、段的复审重点是:牢靠性、可移植性、可用性;而编码阶段就主要是:可懂得性、可修改性、可移植性和效率;14什么是软件的逆向工程和再工程?软件逆向工程是指当保护对象缺乏必要的文档资料时,分析已有程序,寻求比源代码更高级的抽 象表现形式,复原软件原有设计的过程;换言之,是一个复原设计的过程;软件再工程就是以软件工程学为指导,对目标软件进行重新设计、重新编码和测试的过程;15逆向工程与再工程与软件的预防性保护有什么样的关系?预防性保护是为了改进软件将来的可保护性或牢靠性,或为了给软件将来的改进奠定更好的基础名师归纳总结 - - - - - - -第 21 页,共 30 页精选学习资料 - - - - -
40、 - - - - 而修改软件的过程;预防性保护就是对软件将来可能需要的改动,使用逆向工程与再工程方法对软件进行保护;16假设你的任务是对一个已有软件进行重大修改,而且只答应你从以下文档中选取两份:a 程序的规格说明; b 程序的具体设计结果 自然语言描述加上某种设计工具表示 ;b 源程序清单 其中有适 当数量的注解 ;你将选取哪两份文档?为什么这样选取?你准备如何完成这个任务?应当挑选 a 程序的规格说明和 b 程序的具体设计结果;由于是重大修改,所以需要从修改程序规格说明和具体设计开头,对开发文档进行重大修改,而源码也会需要重新编制;名师归纳总结 - - - - - - -第 22 页,共
41、30 页精选学习资料 - - - - - - - - - 第八章 面对对象方法学引论1为什么要引入面对对象方法学?1、瀑布模型的缺点:僵化2、SA - SD - SP 技术的缺点:本质上是基于过程的设计不易被懂得;且功能变化往往引起结构变化较大,稳固性不好;系统有明确的边界定义,且系统结构依靠于系统边界的定义,这样的系统不易扩充和修改;数据与操作分开处理,可能造成软构件对具体应用环境的依靠,可重用性 reusability较差;2面对对象方法学有哪 4 个基本要素?对象、类、继承、消息3面对对象方法学的优点主要有哪些?1以 object为核心,强调对现实概念的模拟而不是算法;可2以 objec
42、t模拟实体,需求变化不会引起结构的整体变化,由于实体相对稳固,故系统也相应稳固;3一个 class全部的 instances 都可重用它的代码;由 inheritance 派生出的新的 class 重用其父类的代码,并且可以修改、扩充而不影响其父类的使用;4从稳固性、 Class 的独立性强、继承和多态性、简洁懂得、简洁测试、调试等几方面改善了可保护性;4什么是“ 对象” ?它与传统数据有何不同?对象是封装了数据结构及可以施加在这些数据结构上的操作的封装体,可以表示为: 对象 Object: = 身份 ID + 方法 Method + 属性 Attribute+ 消息 Message;与传统数据相比,对象有以下特点: 以数据为中心,不设与数据无关的操作; Object 主动处理而不 被动地等待被处理,外部只能通过 message恳求操作; 具有黑盒性:外部操作时,无须知道该 object 内部的数据结构及算法; 具有并行性:不同 object 各自独立地处理自身数据,彼此间仅通过传递 message完成通信; 模块独立性好:内聚强 、耦合松 5什么是“ 类” ?具有相同数据和相同操作的一组对象;名师归纳总结 - - - - - - -第