1、软件开发工具(背诵内容).txt12思念是一首诗,让你在普通的日子里读出韵律来;思念是一阵雨,让你在枯燥的日子里湿润起来;思念是一片阳光,让你的阴郁的日子里明朗起来。 本文由 mei165 贡献doc 文档可能在 WAP 端浏览体验不佳。建议您优先选择 TXT,或下载源文件到本机查看。名词解释1软件配置(集成 软件配置 集成 集成) 答:设立一个有效的总控部分,它能够在各个具体工具之上,实现信息的正确传递与转换,帮助人们完成上述协调与配合的工作,从而形成一个统一的、完整的支撑环境,并通过一个统一的、友好的人机界面与用户对话。 2项目管理 项目管理(Project Mangement) 答:项目
2、管理指与固定的生产线上的日常生产管理不同的,具有更大变动性、时间性的一类管理任 3数据字典 数据字典(DataDictionary) 答:数据字典是一种描述数据内容的概念模式。(1)它用表格形式列出数据的基本属性以及相互关系。(2)它的雏型是编写软件时的变量说明或标识符清单。(3)它也常常与其他描述工具互相补充、配合使用。 4实体关系图 答:实体关系图是一种用于描述静态数据的概念模式。它以实体、关系、属性三个基本概念概括数据的基本结构。它广泛应用于数据库的设计中,常常和数据流程图、结构图等互相配合使用。 5数据流程图 数据流程图(DataFlowDiagram) 答:数据流程图描述某一业务处理
3、系统的信息来源、存储、处理、去向的全面情况,简明扼要地勾画全局。或:数据流程图的基本元素是外部实体(系统外的信息来源或去向),数据处理与存储,用箭头表示信息在它们之间的 流动情况。 6项目管理 答:项目管理是与固定的生产线上的日常生产管理不同的,具有更大的变动性、时间性的一类管理任务。 7项目数据库 答:项目数据库实际上是信息库的一个组成部分。它记录的是项目本身进展的各种有关信息。项目负责人应当随时掌握这些情况,一方面把住验收质量关,使每一步都扎扎实实,同时掌握全局,及时发现瓶颈环节,从组织上 加以解决。 8信息库 答:信息库是一个包罗万象的,随着项目进度不断修改与补充的数据集合。它在规模上不
4、一定像数据仓库那么大,分析提炼的要求也与数据仓库不同。然而,作为软件开发全过程的信息管理总框纽,它的数据结构是相当复杂 的,而且会随时间不断变化,因此,保持一致性的任务变得十分复杂和艰巨。 9模块的藕合性 答:模块之间的联系及互相影响应尽可能地少,对于必需的联系都应当加以明确的说明。而且一般来说,尽量避免传递控制信号,而仅限于传递处理对象。这种联系及相互影响称为藕合性。 10面向对象的程序设计 面向对象的特别高设计是人们为模仿现实世界模型而建立的程序设计方法,这种思想源于对现实世界自然结构的认识。人们为了应付现实世界的复杂性,逐渐形成了很好的概括、分类和抽象的能力,并在此基础上应用于程序 设计
5、就形成了面向对象的概念。 11遗传性 答:抽象的、较大的对象所具有的性质,包括静态属性和动态操作,自然地成为它的子类的性质,不必加以说明或规定。这就是所谓的“遗传性” 。 12文档 答:功能说明书、总体设计、各模块的设计任务书、每个部分的研制报告、测试报告,直到最终的验收报告和给使用者的用户手册等通称为文档。 13黑箱检验 答:输入一些信息,通过观察是否能得出预期输出来判断软件是否正确的一种软件测试方法。 14封装性 答:客观世界的任何事物都是对象,它们都有一些静态属性,也都有一些有关的操作。作为一个整体,这些对象对外不必公开这些属性与操作。这就是所谓的“封装性”。 15模块的凝聚性 答:模块
6、的功能在逻辑上尽可能地单一化、明确化,最好做到一一对应。即每一个模块实现一项明确的任务,反之每一项任务仅由一个模块来完成。此即为模块的凝聚性。 17软件工程 答:为了从根本上提高软件开发的效率和质量,人们吸取在各种传统产业中的成功经验,从组织和管理的角度加强力量,使软件生产从程序员的个人劳动提高成为有组织的、可控制的工程,这种开发软件的方法就是软件工程 方法。简言之,软件工程方法就是以工程化的观点来指导软件开发的方法。 18软件开发工具 答:在高级程序设计语言(第三代语言)的基础上,为提高软件开发的质量和效率,从规划、分析、设计、测试、成文和管理各方面,对软件开发者提供各种不同程度的帮助的一类
7、新型的软件。其要点是:(1)它是在高级程序设 计语言(第三代语言)之后,软件技术进一步发展的产物;(2)它的目的是在人们开发软件中给予各种不同方面、不同程度的支持或帮助;(3)它支持软件开发的全过程,而不是仅限于编码或其他稳定的工作阶段。 19第四代语言(4GL) 第四代语言( ) 答:第四代语言的原意是非过程化的程序设计语言。针对以处理过程为中心的第三代语言,它希望通过某些标准处理过程的自动生成,使得用户可以只说明要求做什么,而把具体的执行步骤的安排交由软件自动处理。 20可视化编程 答:可视化编程:以“所见即所得”的编程思想为原则,力图实现编程工作的可视化,即随时可以看到结果,程序的调整与
8、后果的调整同步进行。 21总体测试 答:由于设计不可能是百分之百地完美的,即使每个模块都达到了设计任务书的要求,整个系统能否达到预期的目标还需要进行测试,另外,完成的软件与编写的文档是否一致也是必须认真检查的。这一测试称为总体测试。 22所见即所得 答:在程序设计时,对于界面上的设计只需要用键盘或鼠标在屏幕上直接设计,不用手写代码。设计人员在屏幕上看到的界面,就是所生成程序的运行界面。 23设计工具 答:设计工具是指在实现阶段对人们提供帮助的工具。例如各种代码生成器,一般所说的第四代语言,帮助人们进行测试的工具(包括提供测试环境或测试数据)等,都属于设计工具之列;它是最直接地帮助人们编写与调试
9、软 件的工具。 24分析工具 答:分析工具主要是指用于支持需求分析的工具。它们虽不是直接帮助人写程序,但是它们帮助人们认识与表述信息需求与信息流程,从逻辑上明确软件的功能与要求。 25计划工具 答:计划工具是从宏观角度去看待软件开发的软件开发工具。它不仅从项目管理的角度,帮助人们组织与实施项目,并且把有关进度、资源、质量、验收情况等信息有条不紊地管理起来,而且考虑到了项目的反复循环、版本 更新。实现了“跨生命周期”的信息管理与共享,为信息以至软件的重用创造了条件。 26模块测试 答:模块测试是根据总体设计时制定的各个模块的设计任务书,对于程序员完成模块进行验收,看它们是否实现了所要求的功能,是
10、否达到了所要求的性能指标。 27需求分析 需求分析 答:软件开发人员从用户的初始要求出发,经过大量的调查研究工作,抽象出应用领域中的实际的信息需求,设计出在计算机系统内外的、合理的信息流程,并规定出软件系统的功能与性能要求。这一过程称为需求分析。 28程序 程序? 答:程序是指一套事先编好并存人机器的指令。一台存人了某种程序的计算机与一台没有存入这种程序的计算机,在外表是看不出区别的。然而前者在接到一个启动命令之后,就可以自己执行某项任务,而后者却做不到这点。简答与论述1简述软件发展的几个阶段。 简述软件发展的几个阶段。 答:(1)机器语言阶段;使用 0、1 代码进行编程。(2)汇编语言阶段;
11、使用助记符来编写程序,由汇编程序汇编成机器码,编程工作量大大降低,但仍未摆脱对硬件的依赖。与此同时,操作系统的出现从另一方面改善了人们应 用计算机的条件。(3)高级语言阶段、高级语言突破了与机器指令一一对应的限制,从而大大提高了程序的可移植性。(4)第四代语言阶段,人们希望机器能够自动地完成更多的工作,包括自动安排某些工作的顺序,而做到只要 给机器下达做什么的命令,由机器自己去安排执行的顺序。(5)利用通用软件作为辅助工具的阶段利用文字处理软件来编写文档,利用绘图软件来绘制流程图等。(6)专用软件开发工具阶段支持软件开发的某一个阶段或某一个环 节。(7)集成的软件开发工具阶段零散的、分散地支持
12、各个工作阶段、各项具体工作的专用工具之间没有有机地联系起来,从而必然造成冲突与矛盾,以致抵消了使用工具带来的益处。这种情况导致了集成的软件开发工具的产 生。 2试论述软件开发方法发展的新阶段的特点。 试论述软件开发方法发展的新阶段的特点。 答:要点:(1)自动化程度的提高。(2)明确地把需求分析包括进了软件工作的范围之内。(3)把软件开发工作延伸到项目及版本管理,从而超出了一次编程的局限。(4)在这一阶段的研究中,吸收了许多管理科学的内容与方法, 如程序员的组织、质量的控制等。 3软件开发工具概念的要点是什么 软件开发工具概念的要点是什么? 答:(1)它是在高级程序设计语言(第三代语言)之后,
13、软件技术进一步发展的产物;(2)它的目的是在人们开发软件中给予各种不同方面、不同程度的支持或帮助;(3)它支持软件开发的全过程,而不是仅限于编码或其它稳定的工 作阶段。 4试述软件开发的过程。 试述软件开发的过程。 答:(1)需求分析阶段:根据初始要求形成严格的、明确的、可供实际开发使用的软件功能说明书。(2)总体设计阶段:根据软件功能说明书的要求,完成软件的总体设计,这包括整个软件的结构设计,公用的数据文件或数据库 的设计,各部分的连接方式及信息交换的标准等几个主要内容。(3)实现阶段:完成程序的编写与文档的编写。(4)调试阶段:进行模块的调试与整个软件的联调。5学习软件开发工具的目的是什么
14、 学习软件开发工具的目的是什么? 答:了解软件开发工具的概念、理论基础、基本功能、发展现状与前景,以便能够在实际工作中正确地选择与使用软件开发工具,在必要时能够参加或组织软件开发工具的自行研制,从而达到提高软件工作水平与效率之目标。 这就是学习软件开发工具的目的。 6试述软件开发工具的类别。 试述软件开发工具的类别。 答:(1)按支持的工作阶段划分:设计工具:是最具体的工具,在实现阶段对人们提供帮助。 分析工具:主要用于支持需求分析。计划工具:从更宏观的角度去看待软件开发。(2)按集成程度划分:单向工具:专用的、面对 某一工作阶段或某一工作任务的工具。集成工具:集成化的、面对软件开发的全过程的
15、工具。(3)按与硬件、软件的关系划分:依赖于特定机器或软件的工具。独立于机器与软件的工具。 7试述现阶段软件技术的特点 答:(1)自动化程度的提高。由于代码生成等技术的应用,在一些特定的条件下,可以较容易地自动生成第三代语言(或更低级的语言)的代码,从而大大节省人力和时间。(2)明确地把需求分析包括进了软件工作的范围之内,从 而使软件开发过程进一步向用户方面延伸,离用户更近了。这是软件技术向前迈进的重要一步。(3)把软件开发工作延伸到项目及版本管理,从而超出了一次编程的局限,而扩展到了作为一个不断发展的客体生长完善的全过程。 这也是软件研制从个体的、手工作坊的方式向科学的、有组织、有计划的方式
16、转变的一个重要表现。(4)在这一阶段的研究中,吸收了许多管理科学的内容与方法,如程序员的组织、质量的控制等。 8软件开发工具的范围是什么 软件开发工具的范围是什么? 答:软件开发工具的范围大致可以描述为:在高级程序设计语言(第三代语言)的基础上,为提高软件开发的质量和效率,从规划、分析、测试、成文和管理各方面,对软件开发者提供各种不同程度的帮助的一类新型的软件。 对于本概念可以从以下几个方面去理解。首先,它是一类软件,是开发软件用的软件。其次,它是在第三代语言的基础上发展起来的。第三,这里强调对软件开发全过程中各个阶段的支持。 9软件开发工作的发展过程是什么 软件开发工作的发展过程是什么? 答
17、:软件开发工作的发展过程可以归纳为四个不同的阶段。(1)用机器语言开发软件把用户已经明确表述出来的算法,用机器语言写成一系列机器指令,供硬件运行使用。这是人们对软件开发工作的最初的认识。(2)用汇编语言 开发软件,由汇编程序完成转换。汇编语言产生之后,编程工作改为用汇编语言进行,编好的汇编指令由汇编程序转化为机器指令,再交硬件执行。软件开发工作离硬件远了,离用户近了。(3)用高级语言开发软件,由编译程 序完成转换高级程序设计语言不再与机器指令一一对应,而且更加接近人类习惯的自然语言。软件开发离机器更远了,离用户更近了。(4)在各种软件开发工具的帮助下开发软件,由编译程序完成转换。这是软件开发工
18、作发展 的新阶段,也使软件开发工作的概念从一次性的、具体的编程,扩大到了长期的、不断更新的过程。 10试述用通用软件帮助软件开发的弱点 答:用通用软件来帮助软件开发人员编写文档或画图可以减少不少工作量,但是这种帮助实在是太表面、太初步了。用通用软件帮助软件开发有三个主要的弱点。第一,有许多工作是通用软件所无法完成的。第二,用通用软 件完成某些工作,只能表现出其表面的形式,而不能反映其逻辑内涵。第三,用通用软件来帮助人们完成软件开发工作时,常常遇到难于保持一致性的困难。 11软件开发分为那几个阶段,各阶段的文档是什么 软件开发分为那几个阶段,各阶段的文档是什么? 答:(1)需求分析。根据初始要求
19、形成严格的、明确的、可供实际开发使用的功能说明书。(2)总体设计。根据软件功能说明书的要求,完成软件的总体设计,这包括整个软件的结构设计用的数据文件或数据库的设计,各部分的 连接方式及信息交换的标准等几个主要内容。(3)实现阶段。完成程序的编写与文档的编写。(4)测试或调试阶段。包括模块的调试与整个软件的联调。 12简述软件开发工具的功能要求 答:(1)认识与描述客观系统。主要是用在软件开发工作的第一个阶段需求分析阶段。需求分析工作不确定程度高,更需要经验,更难形成规范化,因而人们希望软件开发工具能在这方面给予更多的帮助。(2)存储及管理开 发过程中的信息在软件开发的各阶段都要产生及使用许多信
20、息。有些信息到了其它阶段还要使用,故信息保存与管理问题显得非常突出。 (3)代码的编写或生成在整个软件开发工作过程,程序编写工作占了相当比例的人力物 力和时间,提高代码的编制速度与效率显然是改进软件工作的一个重要方面。(4)文档的编制或生成文档编写工作也是软件开发工作中十分繁重的一项工作,不但费时费力,而且很难保持一致。在这方面,计算机辅助的作用可 以得到充分的发挥。(5)软件项目的管理这方面的功能更明确地是为项目管理人员提供支持,而不是为程序员提供支持。软件开发工具-背诵内容113简述软件开发工具的项目管理功能。 软件开发工具的项目管理功能。 简述软件开发工具的项目管理功能 答:项目管理功能
21、明确地是为项目管理人员提供支持,而不是为程序员提供支持。一般来说,项目管理包括进度管理,资源与费用管理,质量管理三个基本内容,在这方面项目管理已有不少成功的经验、方法与软件工具。对 于软件项目来说,还有两个比较特殊的问题。首先是测试工作方面的支持,由于软件的质量比较难以测定,所以不仅需要根据设计任务书提出测试方案,而且还需要提供相应的测试环境与测试数据。人们很自然地希望软件开 发工具能够在这些方面提供帮助。另一个问题是版本管理问题。当软件规模比较大的时候,版本的更新,各模块之间以及模块与使用说明之间的一致性,向外提供的版本的控制等,都带来一系列十分复杂的版本管理问题。如 果软件开发工具能够在这
22、些方面给予支持或帮助,无疑将有利于软件开发工作的进步。 14为什么说高级语言出现后计算机才真正获得了应用 为什么说高级语言出现后计算机才真正获得了应用? 答:第三代语言突破了与机器指令一一对应的限制,用尽可能接近自然语言的表达方式描述人们设想的处理过程,而把这种表达方式向机器指令的转化工作,交给专门的“工具”编译系统去完成。另一个重要的变化是高 级设计语言实现了对机器的独立性,即它不依赖特定的硬件系统,抽象地逻辑地描述处理和算法,而把硬件系统之间的区别交给不同的编译系统去处理,从而大大提高了程序的可移植性。这一进步的影响非常巨大、非常深远。 从六十年代以来,面向各个领域的,面向各种应用的程序设
23、计语言如雨后春笋般涌现出来,至今势头不减。也正因为有了这些语言,在短短的二、三十年中,计算机技术才真正地获得了应用。 15何谓第四代语言的非过程化思想 何谓第四代语言的非过程化思想? 答:人们希望机器能够自动地完成某些工作,包括自动安排某些(不是全部)工作的顺序,而做到只要给机器下达做什么的命令,由机器自己去安排执行的顷序。这就是第四代语言非过程化语言的思想。 16软件工作的重要性何在? 软件工作的重要性何在 答:软件工作的重要性现在已经为越来越多人所认识。软件是计算机的灵魂。的确,如果没有相应的、适用的软件,计算机是不可能在各种应用领域中发挥作用的。我们可以进一步说,软件是广大使用者与计算机
24、之间的桥梁, 软件是人类在各个领域中积累的知识的结晶,软件是人类文明与知识得以延续的新的载体,软件是人类进一步成为一个整体,得以进一步相互联系的纽带。 17集成化的开发工具是在什么背景下产生的 集成化的开发工具是在什么背景下产生的? 答:由于大量的专用软件开发工具的出现,为软件开发的各个阶段提供了具体的支持,但它们是零散、分散地支持各个工作阶段,这些专用工具之间没有有机地联系起来,从而必然造成冲突与矛盾。这就给用户造成了沉重的、 不堪忍受的负担,使用工具越多这种负担越重,以致抵消了使用工具带来的益处。这种情况导致了集成的软件开发工具的产生。 18试述软件开发工具的性能指标。 试述软件开发工具的
25、性能指标。 答:(1)表达能力:因为软件项目的情况干变万化,软件开发工具要能够适用于某些软件项目,就要能适应软件项目的种种不同的情况,否则就不可能对软件开发提供有效的、实际的帮助。(2)逻辑能力(一致性的保证)软件开发 工作要求软件开发工具不但要为人们存储大量的有关信息,而且要有条不紊地管理这些信息,而管理的主要内容就是保持它的一致性,至少在出现不一致的情况时要能够给出警告与提示。(3)人机界面水平(易用程度)对于软件 开发工具来说,是否易用是一项重要的性能指标。(4)防错能力(可靠性)软件开发工具应当具有足够的可靠性,即在各种各样干扰下仍能保持正常工作,而不致丢失或弄错息。(5)对硬软环境的
26、要求软件开发工具对环境的要求不 应当超出它所支持的应用软件的环境要求,有时甚至还应当低于应用软件的环境要求。软件开发工具的环境要求应当尽量降低,以有利于广泛使用。 19试述软件开发工具的基本功能。 功能。 试述软件开发工具的基本功能 答:(1)描述系统主要是用在软件开发工作的第一个阶段需求分析阶段。需求分析工作不确定程度高,更需要经验,更难形成规范化,因而人们希望软件开发工具能在这方面给予更多的帮助。(2)管理信息:在软件开发的各 阶段都要产生及使用许多信息。有些信息到了其它阶段还要使用,故信息保存与管理问题显得非常突出。(3)生成代码:在整个软件开发工作过程中,程序编写工作占了相当比例的人力
27、物力和时间,提高代码的编制速度与效率 显然是改进软件工作的一个重要方面。(4)生成文档:文档编写工作也是软件开发工作中十分繁重的一项工作,不但费时费力,而且很难保持一方面,计算机辅助的作用可以得到充分的发挥。(5)项目管理:这一功能是为项目管 理人员提供支持,包括进度管理,资源与费用管理,质量管理。 20什么是对象 什么是对象? 答:面向对象的方法是人们试图解决软件危机的一种尝试。EYourdon 在回顾从事信息处理工作的实践经验中,谈到了多次出现的矛盾与冲突,认为其根源在于割裂了数据和功能这两个要素。如果从一开始,就把数据和功能 结合在一起,即把信息的静态属性数据结构,和的处理功能模块,从根
28、本上结合起来,那么这些矛盾和冲突也就迎刃而解了。这就是“对象这个概念的由来。 21什么是即插即用的软件设计方法? 什么是即插即用的软件设计方法? 答:一部分人专门生产软件组件,而另一部分人则构造整个软件的结构,并且把软件组件插入这个结构,以便迅速地完成大型软件的研制工作,这就是即插即用的软件设计方法。 22试述软件组件的概念 答:软件组件相当于硬件中的芯片,具有一定的标准,如输入输出的格式、参数的数量与类型类型等。从另一方面讲,软件组件 C 库中的函数是一回事。如果类库中有足够多的类及相应的函数的话,程序设计的工作量就会 减轻许多。 23什么是标准化的软件部件? 什么是标准化的软件部件? 答:
29、标准化软件部件指按一定的标准制作的软件组件,如同硬件芯片那样为大家共用,因而要对每一个输入与输出进行详细的规定。对一大批变量与结构进行说明和定义,而这些至今尚无统一的标准。特别是对于各种对象的 定义,很难写出标准。 24试述结构化程序设计的要点 答:1)限制甚至不用 GOTO 语句,绝对禁止超越模块边界的 GOTO 语句。2)子程序尽可能做到只有一个入口、一个出口。3)程序风格应尽量明确、清晰,包括适当增加注释,书写格式体现层次结构(如循环内的语句一致 地右移两格) ,变量名称的选用尽量具有逻辑意义等。4)在程序编写的同时完成有关的文档编撰,不要拖延时间。 25工程化思想的要点是什么? 工程化
30、思想的要点是什么? 答:对一项工作的步骤作出严格的规定,其顺序决不能颠倒,前一项任务没有完成或没有达到必要的标准时,后一项任务就不能开始,每一个阶段都有各自的明确的任务,明确的起点,明确的终点,特别是要有确切的、可以 检查的成果。 26、软件工程的基本方法是什么? 、软件工程的基本方法是什么? 1)对于软件开发的工作过程进行规范。将软件开发过程分为若干个阶段,如需求分析、总体设计、编码、测试、运行及维护等。2)加强标准化。一方面是表达方式的标准化,如统一规格的数据流程图、数据字典、模块结构 图等。另一方面是对工作的质量及检查制订标准,基于上述工作过程,设置一毓检查点,在一定时候,作一定的检查。
31、 27面向对象的程序设计方法的要点是什么? 面向对象的程序设计方法的要点是什么? 答:1)客观世界的任何事物都是对象,它们都有一些静态属性,也都有一些有关的操作。作为一个整体,这些对象对外不心公开这些属性与操作。2)对象之间有抽象与具体,群体与个体,整体与部分等几种关系。这些关系 则构成对象的网络结构。3)抽象的、较大的对象所具有的性质,包括静态属性和动态操作,自然地成为它的子类的性质,不必加以说明或规定。4)对象之间可以互送消息,这一消息可以是传送一个参数,也可以是使这个对 象开始某个操作。 28、大型软件开发中的困难有哪些? 、大型软件开发中的困难有哪些? 答:1)一致性的保持。在型软件各
32、部分之间有各种信息的交流与共享,它们直接影响到各部分之间的协调与配合,每个人对这些问题的理解可能有同,而程序的编写又是个人的、脑力的劳动,很难加以控制。2)测试的问题。 修改程序时,改动一处,影响到多处而检验只能证明程序有错,不能证明程序没错。因此,在型软件的测试比个人自己编写时要困难得多。3)工作进度的控制。在型软件测试时要联调。从联调中发现问题,要回到程序员手 中去修改,这样的反复是很难避免的,而且可能反复多次,因而工作进度很控制。4)文档与代码的协调。程序的调试是不断反复进行的,有时文档是编写程序的依据,有时需要根据编程情况撰写文档,显然,这两者心须一 致,否则文档不仅没有用处,反而会千
33、万混乱。系统越大,涉及的人员越多,这种一致性就越难保持。5)版本更新带来的问题。版本更新是大型软件开发工作的不可缺少的部分。这种工作十分繁琐,付出的劳动往往很多, 但成果任凭不明显。因此,很容易出现新版本中各部分代码不一致和代码与文档不一致的情况。 29组合文件的思想是什么? 组合文件的思想是什么? 答:组合文件的思想源于硬件制造。在计算机硬件制造中,芯片的制造与整机的制造是分开进行的。制造芯片的厂家只管制造芯片,而制造整机的厂家则利用这些芯片组成完整的计算机。于是,人们很自然地就想用同样的思 路来处理在型软件的开发工作。一部分人专门生产相当于芯片的软件组件,而另一部分人则构造相当于计算机结构
34、的整个软件的结构,并且把软件组件插入这个结构,迅速地完成大型软件的研制工作。 30试述 OOP 的基本特征。 的基本特征。 答:(1)封装性:把数据和对它的处理综合成一个整体。(2)遗传性:类与子类之间属性的传递。(3)多态性:同样的消息被不同的对象接受以后,会因不同对象中所含方法的不同,而导致不同的行动。 31软件评价的主要方面是什么 软件评价的主要方面是什么? 答:这些方面包括:正确性,易用性(或对用户友好),效率,可靠性,可维护性(与可重用性)。 32怎样建立一个好的项目组 怎样建立一个好的项目组? 答:(1)有严格的工作规范和文档标准必须要有严格的、成文的工作规范和文档标准,而且应当为
35、全体成员所熟知,并且切实得到遵守。(2)人员之间有严格的分工。除了程序员之外,必须有专门的秘书(负责文档的收集、审核 及保管),必须有专门的测试人员(负责测试和验收有关的部分),特别是要有专职的,不限于具体编程的项目负责人。(3)每个项目有详细的时间安排并严格执行每个项目都要事先制定详细的时间表,并且得到严格执行。每一项 目完成之后都有完整的资料,并得到妥善保存,一旦需要修改或更新版本时可以立即使用。 33项目组对程序员的约束有哪些 项目组对程序员的约束有哪些? 答:(1)保证严格地在本模块范围内操作,决不要使用可能干扰其它模块的命令或函数。(2)严格按总体设计的要求和理解去传递参数值,决不要
36、随意修改其内容或含义。(3)在对公用的文件或数据库进行存取时,必须完全地、 准确地按统一规定的格式去操作,决不能擅自改变。(4)在使用标识符时,应按照统一的原则,尽量使用易于看出逻辑含义的名称。特别是涉及公用数据及参数的时候。(5)严格按照统一的要求编写文档,在内容、格式、表达方 式、符号使用上遵循项目组的统一规定。(6)尽量保持程序风格的一致。如注释行的安排,行首空格的使用等。 34软件质量的评测有哪些 软件质量的评测有哪些? 答:(1)正确性:正确地实现所要求的功能,准确地给出预定的输出结果。(2)易用性:用户界面友好,符合实际用户的使用习惯与知识能力。(3)效率:具有足够的速度,能在符合
37、用户要求的时间限度内,给出所要求的处理结 果。(4)可靠性:具有足够的可靠性,能够在各种干扰下保持正常的工作。(5)可维护性:程序易读,结构良好,文档齐全,从而保证系统易于修改。 35项目组对单个程序员的要求是什么 项目组对单个程序员的要求是什么? 答:(1)具有程序设计所需要的基本知识与技能。(2)对本项目所在的领域有较深入的了解。 (3)对于软件开发的技术环境比较熟悉。 36IBM 的 ADCycle 把软件开发过程分为那几个阶段 各阶段的任务 把软件开发过程分为那几个阶段?各阶段的任务 各阶段的任务是什么? 答:划分为五个阶段:(1)第一阶段,需求分析,其任务是:了解企业的结构与功能,掌
38、握组织及管理者的信息需求,弄清信息流通的实际情况。(2)第二阶段,分析与设计阶段,其任务是:进行功能分解及数据分析,完成处理 过程及数据库的逻辑设计。(3)第三阶段,编程阶段,其任务是:完成具体的程序编写工作。(4)第四阶段,测试阶段,其任务是:对已有的代码进行认真的检测与试用。(5)第五阶段,使用及维护阶段,其任务是:组织使用者 有效地使用,并及时检查与修正发现的错误。 37简述面向对象方法出现的背景。 简述面向对象方法出现的背景。 答:面向对象的方法是人们试图解决软件危机的一种尝试,近年来,随着 C+,Smalltalk 等面向对象的语言的普及,这种方法得到了广泛的传播。EYourdon
39、在一本书中曾回顾了他自己从事信息处理工作多年的实践经验。 他谈到了多次出现的矛盾与冲突,认为其根源在于割裂了数据和功能这两个要素,因此两方面之间的认识和结论越差越远。如果从一开始,就把数据和功能不可分割地结合在一起,即把信息的静态属性数据结构,和对它的 处理功能模块,从根本上结合起来,那么这些矛盾和冲突也就迎刃而解了。这就是面向对象方法出现的背景。 38面向对象程序设计方法对软件开发工作有何影响 面向对象程序设计方法对软件开发工作有何影响? 答:面向对象的程序设计语言使程序设计的思想方法越来越接近人们思维的方式。它屏弃了持续好久的“自顶向下”和“自底向上”的争论,把对于复杂系统的认识归结为对一
40、批对象及其关系的认识。事实上,对象这个概念 是相对的,它的选择是和信息处理的目的的相连的。在认识的无穷的阶梯式的层次结构中,原则上每一层都可以作为观察的基点,认识的方法既不是笼统地自顶向下,也不是笼统地自底向上,而是在于合理地选择层次,使得 系统的复杂性保持在可控制的范围内,而不致由于细节过多而无所适从。因此,面向对象的程序设计语言使软件工作进一步向用户方面靠近,这对于计算机应用深入到各个应用领域是十分有利的。面向对象的程序设计语言的 出现,使软件开发工作更加方便。 39即插即用程序设计方法实现起来有何困难 即插即用程序设计方法实现起来有何困难? 答:有两个困难。1)标准化的问题。软件部件很复
41、杂,它涉及一大批变量与结构的说明与定义的标准。而这些至今没有统一。2)软件部件的提供方式问题。软件部件应当是封装起来的,以二进制的机器代码方式提供,看不到 源程序,一般来说不必了解也不能改动它的内部过程。但是,这就出现了与硬件、与操作系统的关系问题。目前仍存在着多种硬件,多种操作系统,即使 UNIX 也还有许多大同小异的版本。但按这样的思想设计的软件部件不 能容忍这种差异的,哪怕是“小异” ,它要求的是绝对相同。 40自顶向下的设计方法。 自顶向下的设计方法。 答:在实施模块划分时,不管软件多大,都采取自上而下、逐步分解的办法,分成若干部分,并把它们之间的关系明确地表达出来,直到最低层的模块达
42、到所要求的规模为止。 41简述应用领域之间的差别给软件开发带来的困难。 简述应用领域之间的差别给软件开发带来的困难。 答:软件作为应用领域与硬件之间的桥梁,一头是固定的,另一头却是变化无穷的。世间各行各业尽管都要用到信息,都力图与现代信息技术相结合,但是它们之间的差别却是如此之大,给软件开发工作者带来了许多困难。 42结构化程序设计方法中,如何实施模块的划分 结构化程序设计方法中,如何实施模块的划分? 答:实施模块划分的方法是:不管软件多大,都采取自上而下、逐步分解的方法,分成若干部分,并把它们之间的关系明确地表达出来,直到最低层的模块达到的所要求的规模为止。 43结构化程序设计的缺点是什么
43、如何看待这些缺点 如何看待这些缺点? 结构化程序设计的缺点是什么?如何看待这些缺点 答:其缺点是它增大了程序工作量,增加了编程中的麻烦与琐碎的工作,并且降低了程序的运行效率。但是,使用这种方法,可以保证软件的可靠、准确,而且使软件易于修改,故这种代价是值得的。 44简述软件工程方法的由来。 简述软件工程方法的由来。 答:工程常常是指复杂的、需要认真组织的、有许多人参加的事情。工程的观点是和近、现代的大生产联系在一起的,它是和依靠个人技艺的手工的生产方式相对立的。人类的生产从靠工匠手艺到靠工程化生产是一个重要的 进步。这个思想正是软件工程思想的由来。由于软件危机的发生,人们认识到,把软件的质量寄
44、托于各个程序员的技能与认真负责是不牢靠的、危险的,也是不现实的。要想大幅度地从根本上提高软件开发的效率和质量,就 应当吸取人们在各种传统产业中的成功经验,从组织和管理的角度加强力量,使软件生产从程序员的个人劳动提高成为有组织的、可控制的工程,这就产生了软件工程。 45结构化程序设计中,模块划分的基本要求是什么 结构化程序设计中,模块划分的基本要求是什么? 答:(1)模块的功能在逻辑上尽可能地单一化、明确化,最好做到一一对应。(2)模块之间的联系及互相影响尽可能地少,对于必需的联系都应当加以明确的说明。(3)模块的规模应当足够小,以便使它本身的调试易于进行。 46即插即用程序设计方法的要点是什么
45、? 即插即用程序设计方法的要点是什么 答:一部分人专门生产软件组件,而另一部分人则构造整个软件的结构,并且把软件组件插入这个结构,以便迅速地完成大型软件的研制工作。 软件开发工具-背诵内容247人们对即插即用程序设计方法的态度如何 人们对即插即用程序设计方法的态度如何? 答:在即插即用程序设计方法中,由于标准化问题和软件部件提供方式问题,对于这种思路的实现可能性仍是众说纷纭。赞成者认为这将彻底改变程序设计的概念,加上可视化等方法,总有一天会实现不用写程序的软件开发。 但是,持怀疑态度的人认为,由于应用系统的复杂多样,公共的部件库是不可能实现的,至少在某个特定的领域中可以有限制地实现。也有人认为
46、,如果真分解到能封装起来的程度,那也就和高级语言的语句差不多了,至多 不过是把编译功能加强一点罢了。无论如何,这是人们试图解决软件危机的一种尝试。其结果如何尚有待观察。 48软件开发的基本问题是什么 软件开发的基本问题是什么? 答:软件开发中的基本问题是两个转换,一是从用户的理解到程序员的理解的转换,另一是从程序员的理解到程序的实现的转换。 49保证从用户的理解到程序员的理解这一转换顺利完成的手段是什么 保证从用户的理解到程序员的理解这一转换顺利完成的手段是什么? 答:保证这一转换顺利完成的手段就是利用尽可能标准化的方法编写程序设计任务书,用明确的语言或图形、表格,把程序要处理的信息的内容、格
47、式、来源、去向、存储与处理清楚地表达出来,作为双方共同的理解。 50保证从程序员的理解到程序的实现这一转换顺利完成的关键是什么 保证从程序员的理解到程序的实现这一转换顺利完成的关键是什么? 答:保证这一转换顺利完成的关键在于程序员的知识水平与实践经验。 51大型软件开发中的困难何在 大型软件开发中的困难何在? 答:大型软件开发中的困难有五点:(1)一致性的保持。大型软件各部分之间不可避免地要有各种信息的交流与共享,它们直接影响到各部分之间的协调与配合,这决定了它们能否有机地组成一个完整的软件,而每个人对这些 问题的理解可能不同,原因首先在于每个程序员的工作习惯、经验、背景不同,而程序的编写又是
48、个人的、脑力的劳动,很难加以控制。(2)测试的问题。修改程序时;改动一处,影响到多处(水波效应);而检验只能证明程序 有错而不能证明程序没错。因此,大型软件的测试比个人自己编写时要困难得多。3)工作进度的控制。大型软件测试时要对系统进行联调。从联调中发现问题,要回到程序员手中去修改,这样的反复是很难避免的,而且事先 无法判断要反复多少次,因而大型软件开发中的进度控制是非常困难的。(4)文档与代码的协调。程序的调试是不断反复进行的,有时文档是编写程序的依据,有时又需要根据编程情况撰写文档。显然,这两者必须一致,否则 文档不仅没有用处,反而会造成混乱。系统越大,涉及的人员越多,这种一致性就越难保持
49、。(5)版本更新带来的问题。版本更新是大型软件开发工作的不可缺少的部分。这种工作十分繁琐,付出的劳动往往很多,但成果往往 不明显。因此,很容易出现新版本中各部分代码不一致和代码与文档不一致的情况。 52在开发大型软件时,版本更新会带来怎样的困难 在开发大型软件时,版本更新会带来怎样的困难? 答:版本更新是大型软件开发工作的不可缺少的部分。版本更新的大量工作往往在于审核与回顾,包括对代码和文档两方面的认真检查。这种工作是十分繁琐的,它需要人们付出艰苦的劳动,但成果往往不明显。因此,在这 种情况下,很容易出现新版本中各部分代码不一致和代码与文档不一致的情况。 53大型软件开发时产生困难的原因何在 大型软件开发时产生困难的原因何在? 答:困难产生的原因有四个:(1)大系统的复杂性。大系统之所以复杂,是由于量的变化引起了质的变化。同一个问题,在小程序中容易解决,而在大型软