软件开发概念解释开云 开云体育
开云 开云体育官网开云 开云体育官网正是软件工程思想的由来。由于软件危机的发生,人们认识到,把软件的质量寄 托于各个程序员的技能与认真负责是不牢靠的、危险的,也是不现实的。要想大 幅度地从根本上提高软件开发的效率和质量, 就应当吸取人们在各种传统产业中 的成功经验, 从组织和管理的角度加强力量,使软件生产从程序员的个人劳动提 高成为有组织的、可控制的工程,这就产生了软件工程。 即插即用程序设计方法的要点是什么? 答:一部分人专门生产软件组件,而另一部分人则构造整个软件的结构,并且把 软件组件插入这个结构,以便迅速地完成大型软件的研制工作。 人们对即插即用程序设计方法的态度如何? 答:在即插即用程序设计方法中,由于标准化问题和软件部件提供方式问题,对 于这种思路的实现可能性仍是众说纷纭。 赞成者认为这将彻底改变程序设计的概 念,加上可视化等方法,总有一天会实现不用写程序的软件开发。但是,持怀疑 态度的人认为,由于应用系统的复杂多样,公共的部件库是不可能实现的,至少 在某个特定的领域中可以有限制地实现。也有人认为,如果真分解到能封装起来 的程度, 那也就和高级语言的语句差不多了,至多不过是把编译功能加强一点罢 了。 无论如何, 这是人们试图解决软件危机的一种尝试。 其结果如何尚有待观察。 软件开发的基本问题是什么? 答: 软件开发中的基本问题是两个转换,一是从用户的理解到程序员的理解的转 换,另一是从程序员的理解到程序的实现的转换。 保证从用户的理解到程序员的理解这一转换顺利完成的手段是什么? 答: 保证这一转换顺利完成的手段就是利用尽可能标准化的方法编写程序设计任 务书,用明确的语言或图形、表格,把程序要处理的信息的内容、格式、来源、 去向、存储与处理清楚地表达出来,作为双方共同的理解。 保证从程序员的理解到程序的实现这一转换顺利完成的关键是什么? 答:保证这一转换顺利完成的关键在于程序员的知识水平与实践经验。 在开发大型软件时,版本更新会带来怎样的困难? 答: 版本更新是大型软件开发工作的不可缺少的部分。版本更新的大量工作往往 在于审核与回顾, 包括对代码和文档两方面的认真检查。 这种工作是十分繁琐的, 它需要人们付出艰苦的劳动,但成果往往不明显。因此,在这种情况下,很容易 出现新版本中各部分代码不一致和代码与文档不一致的情况。 举例说明为什么大系统比小系统复杂得多。 答:例如,一个程序如果只有五十行,那么,不管出现什么问题,都是好解决的。 但是,如果一个软件有五十万行,那么即使是最简单的问题,如搜索、标识符选 用等都会成为相当困难的问题。这是由于量的变化造成了质的差别。正因如此, 大系统比小系统复杂得多。 在开发大型软件的过程中,为什么软件开发人员的组织与协调会带来困难? 答:从管理学的观点来看,当组织许多人共同完成一项大的软件开发任务时,分 工和协调就成为关键因素。分工是否合理,信息是否能及时沟通,步调是否能一
围之内。(3)把软件开发工作延伸到项目及版本管理,从而超出了一次编程的局 限。(4)在这一阶段的研究中,吸收了许多管理科学的内容与方法,如程序员的 组织、质量的控制等。 软件开发工具的性能指标: 表达能力或描述能力 保持信息一致的能力 使用的方 便程度 工具的可靠程度 对硬件软件的环境的要求
软件开发工具概念的要点是什么? 答: (1)它是在高级程序设计语言(第三代语言)之后, 软件技术进一步发展的产物; (2)它的目的是在人们开发软件中给予各种不同方面、 不同程度的支持或帮助; (3) 它支持软件开发的全过程,而不是仅限于编码或其它稳定的工作阶段。 试述软件开发的过程。 答:(1)需求分析阶段:根据初始要求形成严格的、明确的、可供实际开发使用 的软件功能说明书。(2)总体设计阶段:根据软件功能说明书的要求,完成软件 的总体设计,这包括整个软件的结构设计,公用的数据文件或数据库的设计,各 部分的连接方式及信息交换的标准等几个主要内容。 (3)实现阶段:完成程序的 编写与文档的编写。(4)调试阶段:进行模块的调试与整个软件的联调。 学习软件开发工具的目的是什么? 答:了解软件开发工具的概念、理论基础、基本功能、发展现状与前景,以便能 够在实际工作中正确地选择与使用软件开发工具, 在必要时能够参加或组织软件 开发工具的自行研制, 从而达到提高软件工作水平与效率之目标。这就是学习软 件开发工具的目的。 试述软件开发工具的类别。 答:(1)按支持的工作阶段划分:设计工具:是最具体的工具,在实现阶段对人 们提供帮助。 分析工具:主要用于支持需求分析。计划工具:从更宏观的角 度去看待软件开发。(2)按集成程度划分:单向工具:专用的、面对某一工作阶 段或某一工作任务的工具。 集成工具: 集成化的、 面对软件开发的全过程的工具。 (3)按与硬件、软件的关系划分:依赖于特定机器或软件的工具。独立于机器与 软件的工具。 试述现阶段软件技术的特点 答:(1)自动化程度的提高。由于代码生成等技术的应用,在一些特定的条件下, 可以较容易地自动生成第三代语言(或更低级的语言)的代码,从而大大节省人力 和时间。(2)明确地把需求分析包括进了软件工作的范围之内,从而使软件开发 过程进一步向用户方面延伸, 离用户更近了。 这是软件技术向前迈进的重要一步。 (3)把软件开发工作延伸到项目及版本管理,从而超出了一次编程的局限,而扩 展到了作为一个不断发展的客体生长完善的全过程。这也是软件研制从个体的、 手工作坊的方式向科学的、有组织、有计划的方式转变的一个重要表现。 (4)在 这一阶段的研究中,吸收了许多管理科学的内容与方法,如程序员的组织、质量 的控制等。
项目组对程序员的约束有哪些?答:(1)保证严格地在本模块范围内操作,决不要 使用可能干扰其它模块的命令或函数。 (2)严格按总体设计的要求和理解去传递 参数值,决不要随意修改其内容或含义。(3)在对公用的文件或数据库进行存取 时,必须完全地、准确地按统一规定的格式去操作,决不能擅自改变。 (4)在使 用标识符时,应按照统一的原则,尽量使用易于看出逻辑含义的名称。特别是涉 及公用数据及参数的时候。(5)严格按照统一的要求编写文档,在内容、格式、 表达方式、符号使用上遵循项目组的统一规定。 (6)尽量保持程序风格的一致。 如注释行的安排,行首空格的使用等。 软件质量的评测有哪些? 答:(1)正确性:正确地实现所要求的功能,准确地给出预定的输出结果。 (2)易 用性:用户界面友好,符合实际用户的使用习惯与知识能力。 (3)效率:具有足 够的速度,能在符合用户要求的时间限度内,给出所要求的处理结果。 (4)可靠 性:具有足够的可靠性,能够在各种干扰下保持正常的工作。 (5)可维护性:程 序易读,结构良好,文档齐全,从而保证系统易于修改。 IBM 的 AD/Cycle 把软件开发过程分为那几个阶段?各阶段的任务是什么? 答:五个阶 1)第一阶段,需求分析,其任务是:了解企业的结构与功能,掌握 组织及管理者的信息需求,弄清信息流通的实际情况。(2)第二阶段,分析与设 计阶段,其任务是:进行功能分解及数据分析,完成处理过程及数据库的逻辑设 计。(3)第三阶段,编程阶段,其任务是:完成具体的程序编写工作。(4)第四阶 段,测试阶段,其任务是:对已有的代码进行认线)第五阶段, 使用及维护阶段,其任务是:组织使用者有效地使用,并及时检查与修正发现的 错误。 简述面向对象方法出现的背景。 答:面向对象的方法是人们试图解决软件危机的一种尝试,近年来,随着 C, Smalltalk 等面向对象的语言的普及,这种方法得到了广泛的传播。E.Yourdon 在一本书中曾回顾了他自己从事信息处理工作多年的实践经验。 他谈到了多次出 现的矛盾与冲突, 认为其根源在于割裂了数据和功能这两个要素,因此两方面之 间的认识和结论越差越远。 如果从一开始,就把数据和功能不可分割地结合在一 起,即把信息的静态属性—数据结构,和对它的处理——功能模块,从根本上结 合起来, 那么这些矛盾和冲突也就迎刃而解了。 这就是面向对象方法出现的背景。 面向对象程序设计方法对软件开发工作有何影响? 答:面向对象的程序设计语言使程序设计的思想方法越来越接近人们思维的方 式。它屏弃了持续好久的“自顶向下”和“自底向上”的争论,把对于复杂系统 的认识归结为对一批对象及其关系的认识。事实上,对象这个概念是相对的,它 的选择是和信息处理的目的的相连的。在认识的无穷的阶梯式的层次结构中,原 则上每一层都可以作为观察的基点,认识的方法既不是笼统地自顶向下,也不是 笼统地自底向上, 而是在于合理地选择层次,使得系统的复杂性保持在可控制的 范围内,而不致由于细节过多而无所适从。因此,面向对象的程序设计语言使软 件工作进一步向用户方面靠近, 这对于计算机应用深入到各个应用领域是十分有 利的。面向对象的程序设计语言的出现,使软件开发工作更加方便。
惰性导入机制:在 Eclipse 启动时,仅加载必要的核心,其它的功能插件使用 时才加载进来,这样节省了大量的导入和初始化插件的时间,提高了 Eclipse 平台的运行效率,这一机制称为惰性机制。 PDE:插件开发环境,帮助开发者创 建、开发、测试、调试和部署插件,同时提供开发片段、功能部件和更新站点的 工具,协助开发者完成插件开发的全过程。 UML:统一建模语言,是一种面向对象的建模语言,它提供了描述软件系统模型 的概念和图形表示法, 采用了面向对象的技术和方法,体现面向对象的分析与设 计风格。 它可以实现大型复杂系统各种成分描述的可视化、 说明并构造系统模型, 以及建立各种所需的文档, 是一种定义良好易于表达功能强大且普遍适用的建模 语言。 抽象: 抽象是人们认识客观世界复杂性的一种基本方法。抽象是事物或现象的简 括描述,突出事物或现象之间的共性,而暂不考虑它们之间的差异。 方法:方法是驻留在对象中的过程。方法是当对象接受消息时执行的操作,方法 还能发送消息至其他请求动作或信 息的对象。 类:类是对一组几乎相同的对象的描述。 属性:属性由静态的数据组成,用以描述类和对象所固有的特征,是类和对象的 性质。 封装:封装即信息隐藏。封装使一个对象形成两个部分:接口部分和实现部分。 对用户来说,接口部分是可见的, 而具体实现部分则不可见。 继承:继承指对象继承它所在类的结构。体现了父类和子类之间的共享机制。子 类可以继承其父类的特性,同时可以有自己的新特性和新方法。 多态: 多态指不同事物具有不同表现形式的能力,多态机制使具有不同内部结构 的对象可以共享相同的外部接口, 不同对象接到同一个消息可以产生完全不同的 结果。 组件:组件是一个可重用的软件构件,一个预先构建的封装的代码模块,它能够 与其他组件或硬编码一起很快地生成定制的应用程序。 视图:视图是从不同角度来观察待建模的系统。它是由多个图表组成的抽象体。 使用事件视图(用例视图):从系统外部使用者对系统的需求来描述该系统工程 所应具备和完成的功能,是 UML的核心视图。 逻辑视图: 用于描述系统内实现的逻辑功能。它描述了系统的静态结构关系和系
第四代语言(4GL)答:第四代语言的原意是非过程化的程序设计语言。针对以 处理过程为中心的第三代语言, 它希望通过某些标准处理过程的自动生成,使得 用户可以只说明要求做什么,而把具体的执行步骤的安排交由软件自动处理。
可视化编程答:可视化编程:以“所见即所得”的编程思想为原则,力图实现编 程工作的可视化,即随时可以看到结果,程序的调整与后果的调整同步进行。 总体测试答: 由于设计不可能是百分之百地完美的,即使每个模块都达到了设计 任务书的要求,整个系统能否达到预期的目标还需要进行测试,另外,完成的软 件与编写的文档是否一致也是必须认真检查的。这一测试称为总体测试。 所见即所得答: 在程序设计时, 对于界面上的设计只需要用键盘或鼠标在屏幕上 直接设计,不用手写代码。设计人员在屏幕上看到的界面,就是所生成程序的运 行界面。 设计工具答: 设计工具是指在实现阶段对人们提供帮助的工具。例如各种代码生 成器,一般所说的第四代语言,帮助人们进行测试的工具(包括提供测试环境或 测试数据)等,都属于设计工具之列;它是最直接地帮助人们编写与调试软件的 工具。 分析工具答: 分析工具主要是指用于支持需求分析的工具。它们虽不是直接帮助 人写程序, 但是它们帮助人们认识与表述信息需求与信息流程,从逻辑上明确软 件的功能与要求。 计划工具答: 计划工具是从宏观角度去看待软件开发的软件开发工具。它不仅从 项目管理的角度,帮助人们组织与实施项目,并且把有关进度、资源、质量、验 收情况等信息有条不紊地管理起来,而且考虑到了项目的反复循环、版本更新实 现了“跨生命周期”的信息管理与共享,为信息以至软件的重用创造了条件。 模块测试答: 模块测试是根据总体设计时制定的各个模块的设计任务书,对于程 序员完成模块进行验收看它们是否实现了所要求的功能是否达到了所要求的性 能指标。 需求分析答:软件开发人员从用户的初始要求出发,经过大量的调查研究工作, 抽象出应用领域中的实际的信息需求,设计出在计算机系统内外的、合理的信息 流程,并规定出软件系统的功能与性能要求。 程序答:程序是指一套事先编好并存人机器的指令。 所见即所得: “所见即所得”原则力图实现编程工作的可视化即随时可以看到结 果,程序的调整与后果的调整同步进行。
答:(1)表达能力:因为软件项目的情况干变万化,软件开发工具要能够适用于 某些软件项目, 就要能适应软件项目的种种不同的情况,否则就不可能对软件开 发提供有效的、实际的帮助。(2)逻辑能力(一致性的保证)软件开发工作要求软件 开发工具不但要为人们存储大量的有关信息,而且要有条不紊地管理这些信息, 而管理的主要内容就是保持它的一致性, 至少在出现不一致的情况时要能够给出 警告与提示。(3)人机界面水平(易用程度)对于软件开发工具来说,是否易用是一 项重要的性能指标。(4)防错能力(可靠性)软件开发工具应当具有足够的可靠性, 即在各种各样干扰下仍能保持正常工作,而不致丢失或弄错息。 (5)对硬软环境 的要求软件开发工具对环境的要求不应当超出它所支持的应用软件的环境要求, 有时甚至还应当低于应用软件的环境要求。 软件开发工具的环境要求应当尽量降 低,以有利于广泛使用。 什 么是对 象 ? 答:面向对象的方法是人们试图解决软件危机的一种尝试。 E.Yourdon 在回顾从事信息处理工作的实践经验中,谈到了多次出现的矛盾与 冲突,认为其根源在于割裂了数据和功能这两个要素。如果从一开始,就把数据 和功能结合在一起,即把信息的静态属性-数据结构,和的处理-功能模块,从 根本上结合起来,那么这些矛盾和冲突也就迎刃而解了。这就是“对象这个概念 的由来。 什么是即插即用的软件设计方法答: 一部分人专门生产软件组件, 而另一部分人 则构造整个软件的结构, 并且把软件组件插入这个结构,以便迅速地完成大型软 件的研制工作,这就是即插即用的软件设计方法。 试述软件组件的概念答:软件组件相当于硬件中的芯片,具有一定的标准,如输 入输出的格式、参数的数量与类型类型等。从另一方面讲,软件组件 C++库中的 函数是一回事。 如果类库中有足够多的类及相应的函数的话,程序设计的工作量 就会减轻许多。 什么是标准化的软件部件? 答: 标准化软件部件指按一定的标准制作的软件组件,如同硬件芯片那样为大家 共用, 因而要对每一个输入与输出进行详细的规定。对一大批变量与结构进行说 明和定义,而这些至今尚无统一的标准。特别是对于各种对象的定义,很难写出 标准。 试述结构化程序设计的要点 1) 限制甚至不用 GOTO 语句, 绝对禁止超越模块边 界的 GOTO 语句。2)子程序尽可能做到只有一个入口、一个出口。3)程序风 格应尽量明确、清晰,包括适当增加注释,书写格式体现层次结构(如循环内的 语句一致地右移两格) ,变量名称的选用尽量具有逻辑意义等。4)在程序编写的 同时完成有关的文档编撰,不要拖延时间。 工程化思想的要点是什么?答: 对一项工作的步骤作出严格的规定, 其顺序决不 能颠倒, 前一项任务没有完成或没有达到必要的标准时, 后一项任务就不能开始, 每一个阶段都有各自的明确的任务,明确的起点,明确的终点,特别是要有确切 的、可以检查的成果。
答: 软件开发工具的开发是十分复杂和困难的,尤其是一体化的或集成的软件开 发工具的开发。从本质上讲,软件开发工具是帮助人们开发软件的工具,只能支 持人们工作, 而不能取代程序员的工作,更不能取代项目负责人的组织与管理作 用。因此,必须实事求是地根据项目组的实际情况,抓住真正需要加强,真正需 要帮助的环节,开发出短小实用的工具,用以支持项目组的工作。也就是说,一 定要在确实需要的地方开发与使用工具,而不要盲目追求使用工具,或为使用工 具而开发与使用工具。要使工具的开发与使用成为雪中送炭,而不是画蛇添足。 因此,在为自己用而开发工具时,需要从实际出发,设定现实的、有限的目标。 就开发软件而言,为己所用的软件开发工具与商品化的软件开发工具有何区别? 答:在这里,为自己使用而开发的工具,指的是当市场上没有适合自己需要的软 件开发工具时, 针对自己的需要开发某种特定的工具。至于以销售为目的生产出 来的软件开发工具, 则与为自己用而开发的工具有很大差别。当然有一些软件最 初是一些公司为了自己用而开发的,经过相当长时间的发展变化,形成了商品化 的软件开发工具, 但这中间已经有了质的变化。 因此, 在讨论工具的开发的时候, 首先要区分是为自己用还是作为商品开发,至少在一个时期内二者必居其一。 什么是审计?目的是什么?答:指对一个系统的运行状况及效率进行检测与评价, 以便进一步用好或改进这个系统。审计的目的就是为了做到心中有数,保证取得 实际的应用效果。 审计可以由本项目组的人员自行进行,也可以请外面的专家来 进行。审计的基础就是日常记录的信息,没有’日常信息的积累,审计工作就无 法进行。 在实际工作中,应当根据哪些因素来进行购置与自行开发之间的权衡? 答:首先,它取决于准备从事的软件开发工作的性质与要求。这是决定购置还是 自行开发的最基本的因素。 其次,取决于开发工作人员对支持工作与支持程度的 实际需要。另外,工作环境也是决定购置工具还是自制工具的一个重要因素。工 作环境包括硬件配置、 系统软件、 数据库管理系统、 网络通信等各种条件。 最后, 人员的因素也是必须考虑的。 这些因素不仅影响软件开发工具能否真正使用,而 且也影响到是购买工具还是自己开发工具。总之,在软件开发工作中引进软件开 发工具是一种必然的趋势。 对市场上的软件开发工具如何调查? 答:(1)开发工具的功能。(2)这些工具的性能 (3)这些工具所使用或依据的开发方 法或开发理论是什么?与自己的方法理论是否一致 (4)这些工具的运行环境是什 么? (5)这些工具的文档资料是否齐全? (6)这些工具的服务、培训条件如何? (7)价 格 试述软件开发工具的购置方法与步骤。 答:1 明确购买软件开发工具的目的与要求。这是正确使用软件开发工具的基础 工作 2 明确购买软件工具的环境条件与制约条件 3 市场调查 4 对于可选择的各种 工具进行综合比较 5 进行测试和检验 6 正式签约购置 7 安装与试用。 引入软件开发工具之后的组织管理工作包括哪四个方面? 答:第一,制定严格的使用制度。第二,记录使用的详细过程。第三,培训使用 人员。第四,经常进行审计与评价工作。
差错和纠错的主要手段。 单步遍历程序:单步遍历程序可以让用户逐行地运行整个程序。 单步跳入:线程将运行所在行的程序,并在下一个可暂停位置后暂停执行。 单步跳过: 线程将跳过该行, 并运行至下一个可暂停位置后暂停执行。 单步返回: 单步返回仅对函数调用时有效, 如当 main 函数调用其他函数时,执行单步返回 操作即可跳出该函数返回 main 函数继续执行调试。 格式化代码: 格式化代码功能可以帮助用户将凌乱的程序代码格式化为自己习惯 的排列方式。 版本控制软件: 版本控制软件能够完整的保存软件开发中对应用程序每一个源文 件所有的修改记录。 并发版本控制系统 CVS:使用 CVS 可以对代码进行集中管理,记录代码所有的 更改历史,提供协作开发的功能并支持多人同时修改代码文件。 互斥性修改:某一程序在同一时间只能由一个开发人员修改。 资源库:资源文件的集合。即软件资源的存放地,是放置开发的代码并对其进行 控制管理的一个文件夹。 工作备份:用户对资源的修改不是直接在 Server 端进行的, 而是根据资源库的内容创建一个本地的工作备份,用户在工作备份中工作,工作 完成后再将修改的内容提交到资源库。 提出(签出)Check Out:获得工作备份的操作。从 CVS 资源库中复制一个软件 镜像到本机的工作空间中,此时代码和 CVS 中的代码是一致的。这项技术称为 “提出”。 提交:将对工作备份的修改反映到资源库中的操作。 代码同步:程序开发过程中,本地代码和 CVS 资源库代码可能会产生差别,这 可能是代码之间存在增减或冲突等关系造成的, 代码同步操作可以使代码保持一 致。 CVS中的冲突:在资源库与工作备份之间状态不一致的状态下进行签入或更新操 作时, 版本管理系统可能会尽量进行合并,如果版本管理系统不能完全处理上述 不一致,就称之产生了冲突。 插件: 插件是一种遵循其所依附的软件的接口规范所编写出来的程序,是对原有 软件的扩展。
所需要的全部信息, 还有相当一部分要求或参数是在编码时才确定的,因此代码 生成决不会是完全隐藏在机器内部的。 试述软件开发工具的基本功能 答:(1)系统描述提供描述软件状况及其开发过程的概念模式,以协助软件开发 人员认识软件工作的环境与要求、合理地组织与管理软件开发的工作过程。 (2) 信息管理。提供存储和管理有关信息的机制与手段。 (3)文档生成。帮助使用者 编制、生成及修改各种文档。(4)代码生成。帮助使用者编写程序代码。(5)项目 管理。 对于历史信息进行跨生命周期的管理,把项目运行与版本更新的有关信息 科学地管理起来。 软件开发工具的一般结构有哪些? 答:(1)总控部分与人机界面。这部分是使用者和软件开发工具之间交流信息, 实现所有的支持功能的桥梁。 这现对于软件开发工具来说,是它的实用性和灵活 性的主要保证。(2)信息库及其管理模块。软件开发工具对软件开发支持的范围 及深度取决于信息库的功能和内容。(3)文档生成模块。用于输出文档(软件开发 工具最重要的输出之一)。(4)代码生成模块。 用于生成代码(亦为软件开发工具 最重要的输出之一)。(5)项目管理模块。用于实现跨越开发周期的信息共享、知 识重用以至软件重用。 就准备从事的软件开发工作的性质与要求而言,什么条件下应该购买工具?什么 条件下应该自行开发工具?答:为了开发一些一般性的、日常事务处理用的专用 系统,它们的功能比较简单,重复量大对程序运行效率要求也不那么高,这时可 以购置一些比较成熟的、能减轻重复劳动的现成工具。但是,如果是开发软件产 品的公司, 要求开发工具有很高的效率与灵活性,而且针对某一类的特定的应用 问题,那么就很难找到现成的软件开发工具,这时为了提高工作效率,加强本公 司内部工作的协调一致(如代码格式、文档格式方面的要求),往往是自行开发更 为有利。 对软件开发工具的选择应明确什么目的与要求? 答:在选择之前,自己首先要搞清楚此次引入软件开发工具要达到怎样的目标。 具体地说,下面几点是必须明确的。(1)为哪个软件开发项目而使用工具,为了 一个项目还是为了一批项目而购置软件开发工具, 为哪一种类型的项目而购置这 些工具?(2)在哪个工作阶段使用工具,是单在代码生成或文档生成中使用工具, 还是在其他阶段也要使用工具, 是在一个生命周期内使用工具,还是准备长期开 发、不断更新版本?(3)工具将供哪些人使用,这些人以前用过工具没有,他们熟 悉的语言、开发环境、表达方示、交流方式是什么?这些人对于使用工具的态度、 期望、可塑性如何?(4)工具将在怎样的软件、硬件环境下运行,机器的速度、内 存、外围设备、通信条件如何?显然,这些问题如果不事先了解清楚,选择工具 就会陷入盲目性。 自行开发工具为什么也要注意文档的齐全与资料的积累? 答: 因为应用软件开发工具是软件技术发展的方向,自行开发的短小实用的工具 是从根本上提高软件生产效率和质量的实际步骤。 这里的每一步都应当向这个方 向迈进,而保证这些成果能够积累起来的关键就是文档与资料的积累。所以,决
版本管理的内容是什么? 答:版本管理主要内容是:各个版本的编号、功能改变、模块组成、文档状况、 推出时间、用户数量(或用户名单)、用户反映、封存情况等。 为什么说总控部分和人机界面处于中心的位置? 答:(1)从一体化的软件开发工具来看为了有效地支持软件开发人员的工作,软 件开发工具必须提供各工作环节之间的协调与配合。早期的、单项功能的工具, 之所以不能真正发挥作用, 就在于它们只是帮助人们完成某一项具体工作,而把 各环节之间的协调与配合这一最麻烦的事情留给了使用者自己。 随着项目规模的 扩大,这方面的矛盾更为突出。其结果往往是,单项工具使用所带来的帮助,很 快就被这种协调与融合中的麻烦抵销了。而且,由于一些工具的封闭性,它们的 输出格式之间的差别使协调与配合更加困难。所以,随着软件开发项目规模的扩 大,各项具体功能的实现已经不重要了,而整个工具的总结构、各部门之间的联 系方式及在用户面前的统一形象就逐步成为中心议题。 (2)从单项功能的工具集 成的角度来看 在实际工作中,常常采用来自不同厂家的单项工具,而由使用 者自己来承担集成的任务。显然,在这种情况下,最关键的也是最麻烦的就是把 前半段工作的输出, 准确无误地转化为后半段工作所要求的输入。这就是设立一 个有效的总控部分,它能够在各个具体工具之上,实现信息的正确传递与转换, 帮助人们完成上述协调与配合的工作,从而形成一个统一的、完整的支撑环境, 并通过一个统一的、友好的人机界面与用户对话。因此,不论是从一体化的软件 开发工具来说, 还是从单项功能的工具集成的角度来说,总控和人机界面都处于 中心的位置。 简述总控部分和人机界面的地位和作用。 答:在整个软件开发工具中,总控部分和人机界面处于中心的位置,人机界面面 对着不同的用户类型, 它既要保持统一和一致,又要能够在正确区分和识别用户 的基础上,针对不同用户的要求与习惯,提供有效的帮助另外,总控部分面对着 系统内部的各种功能与各种信息,它要保证各部分之间相互之间的协调一致,保 证各部分之间信息有效地、 准确地流通。由于各部分功能的不同它们在实际工作 中常常根本就是来自不同制造者的软件工作环境, 关键就在于总控部分把它们有 机地联系在一起并且给予统一的人机界面 面向用户的原则体现在几个方面? 答: 面向用户的原则具体体现在两方面,一方面是总控部分对各部分的调度与安 排应当体现符合软件开发人员思路的概念模式,另一方面,向用户提供的统一界 面应当体现这个模式。 不论是设计一体化的软件开发工具,还是把分散的单项工 具集成起来,都应当遵循这个基本原则。 为什么要保证软件开发工具各部分之间信息的准确传递? 答: 各个分散的软件工具在集成为一个一体化的工具时,它们的内部并不发生改 变,而是通过相互之间的信息交流联系起来。即使是有计划地、有组织地统一开 发的一体化的软件开发工具, 它的各部分之间也是这样的情况,否则就会难以研 制。在这种情况下,信息能够准确地从一个部分传送到另一个部分,就成为一体 化是否成功的关键。 某一部分的输出总带有这一部分的特殊性,当它需要成为另 一个部分的输入的时候, 这些因素就必须得到充分的考虑,并进行必要的交换或
代码生成器依据哪些资料工作? 答:代码生成器生成代码依据三个方面的资料: (1)信息库里已有的有关资料。 在一个一体化的环境中, 代码生成必须充分利用信息库中的各种资料,这不只是 为了节省重复收集信息的劳动,更重要的是为了保证系统的统一。 (2)各种标准 模块的框架和构件。 事实上, 代码生成的技术无非是根据人们对某一类模块的编 程经验,归纳出一些一般框架或一般构件,事先存放在机器中,在实际使用时根 据当时输入的参数,填入框架或重新组合构件,从而形成一个新的程序段落。(3) 使用者当时通过屏幕前的操作送人的信息。 信息库中不可能已经存人了代码设计
不能因为是自行开发的工具,主要是供自己用,而忽略文档和资料的积累工作。 否则, 就真成了零敲碎打的小技巧,而谈不上从根本上提高软件工作的水平和效 率了。 自行开发工具时,为什么一定要坚持短小实用、逐步积累,避免期望过高、贪 大求全?答:这是立足于对软件开发工具开发难度的认识。实践表明,功能齐全 的、一体化的软件开发工具,即使对于有雄厚实力的大软件公司来说,也往往难 以在短期内完成。因此,对于多数实际的使用者来说,更应当以十分谨慎的态度 对待这个问题,坚持短小实用、积累,避免期望过高、贪大求全。但这并不是说 不要考虑功能齐全的、较大规模的,以至一体化的软件开发工具,而是强调从实 用出发、逐步积累、逐步发展。 引入软件开发工具之后,组织管理工作为何非常必要?答:一旦引入了软件开发 工具, 使用者必须从一开始就对它的使用过程进行认真的组织与管理。这种组织 管理工作的成功与失败, 直接影响着软件开发工具的作用的发挥程度。从不规范 的、立足于程序员的编程技术上的软件开发方式,转变到严格的、按科学的方法 组织管理的软件开发方式, 这本身就是一个极其深刻的变革,它必然要经历许多 磨擦与碰撞。人们总是有意无意地试图回到原先“省事”的工作方式或工作习惯 去,从而违反严格的要求,造成种种信息不通、信息不一致的现象。因此,软件 开发工具的使用过程, 就是一个逐步改变旧的工作习惯,建立科学的软件开发方 法的过程。这是一个必须深入到每一个工作人员的工作中的根本性的变革。 .因 此,如果没有认真的组织管理,它是不可能轻易地、顺利地实现的,因而引入软 件开发工具之后,组织管理工作是非常必要的。 决定购置软件一切工具还是自行研制软件开发工具的基本原则是什么? 答:(1)从实际需求出发。购买市场上已有的软件开发工具,一般来说能够帮助 人们减轻一定的工作负担,在某些环节上代替一些简单的、重复性的工具;当项 目比较大, 时间持续比较长的情况下,使用工具还可以使工作的组织管理比较规 范,信息的管理与检索比较方便,部分地做到信息与知识的重用和共享。然而, 软件开发工具的引进常常是比较昂贵的, 特别是面对项目管理或系统分析工作的 工具。(2)客观认识软件开发工具的实际发展水平。目前真正经过考验的、一体 化的软件开发工具还不多, 产品的作用与可靠程度还不尽如人意。这就常常使人 们在购置软件开发工具时犹豫再三,特别是有一定软件开发力量的单位,就会考 虑自己开发。 自己用得很顺手的软件开发工具能直接商品化吗?为什么? 答:自己用得很顺手的软件开发工具绝对不能直接商品化,这是因为,各种应用 项目的千差万别, 再加上运行环境复杂多变,使得商品化软件的开发任务要繁重 得多。人们常常忘记了这一点,混淆了这两种不同类型的任务,简单地把自己用 得很顺手的软件开发工具直接当做可以用于其他环境的商品化的软件开发工具, 这是一个严重的误解。 与其他软件相比,软件开发工具更多地依赖于应用领域的 特点、硬件与系统软件的支持、开发人员的工作习惯与组织方式,所以,不能把 自己用得很顺手的软件开发工具直接商品化。 在为自己用而开发工具时,为什么需要从实际出发,设定现实的、有限的目标?
出日期,与以前版本相比的变更说明等。 什么是信息库?它与数据和数据仓库有什么区别?其特点是什么? 答:信息库是一个包罗万象的,随着项目进度不断修改与补充的数据集合。它在 规模上不一定象数据仓库那么大,分析提炼的要求也与数据仓库不同,然而,作 为软件开发全过程的信息管理总枢纽,它的数据结构是相当复杂的,而且会随时 间不断变化, 因此保持一致性的任务变得十分复杂和艰巨。这些就是信息库的特 点。 简述信息库这一概念提出的背景。 答: 信息库是针对软件开发或信息系统开发中的大量信息管理工作提出来的。早 在手工进行系统分析的阶段人们已经发现, 许多问题出在信息交流中的误解与损 失。按照传统的生命周期法,每一阶段都是用相应的文档实现过渡的,在信息传 递中,误解与丢失十分严重。另外,软件的修改与版本更新也引起一些问题,有 时不得不从头收集基础信息。不但浪费很大,而且引起用户的厌烦。随着数据库 技术的发展, 人们很自然地想到用计算机来办这件事。这就是信息库这个概念提 出的背景。 什么叫数据库?其本质是什么?什么叫数据仓库?其本质是什么? 答: 数据库是指在文件系统基础上发展起来的一种数据管理技术,它的重点在于 合理地组织数据,体现出数据之间的逻辑关系,并尽可能地帮助用户检索,减少 冗余。 数据库的本质是以时间来换取空间。数据仓库是近年来针对大批数据的分 析利用提出来的概念。它的基本思想是:对原始数据进行多次的加工或提炼,计 算出许多派生的或综合的数据, 存放在大容量硬盘里, 从而使检索速度大大加快。 数据仓库的本质是用容量来换速度。
描述。 版本管理的方法是什么? 答: 版本管理的具体方法包括规定长远的版本更新计划,制订与版本有关的信息 范围及收集、管理方法,在项目组内明确分工,在程序编写、测试、文档缩写等 工作中贯穿项目管理的思想及要求。无论对于软件产品来说,还是对应用系统来 说,用户的反馈信息是版本管理的重要资源。 版本管理的核心是什么? 答:版本管理的核心是保持两个一致性。从时间上来说,它的主要关心点是系统 的逐步完善,以前已经达到的成果不要丢失掉,而且在需要时可以回溯,并且在 必要时可以重用; 而每一步新的进步都要切实与以前的工作一致,是改进而不是 破坏或降低系统的已有功能。 从系统各部分之间的关系来说,它要求每一局部与 整体保持一致, 合理地判断每一次修改的必要性及影响范围从而合理地组成每一 个新的版本, 并通过命名、 编号等方法使新的版本成为系统进步的漫长过程中的 一个台阶一个有目的有方向的稳定的进步。 什么叫项目管理?其特点是什么? 答: 项目管理是指与固定的生产线上的日常生产管理不同的, 具有更大的变动性、 时间性的另一类管理任务。 它的典型代表是建筑工程的管理,特别是大型建设工 程,如水电站的建造、高炉的大修或改造、铁路或公路的修建等等。项目管理具 有以下四个突出的特点。第一,子任务多,关系复杂。第二,任务不可重复,形 势不断变更。第三,协调组织的任务十分突出,资源浪费闲置的风险与合理地优 化组合、提高效益的机会并存第四,信息处理工作的作用与意义更为突出。 如何理解“用户界面的主要功能是通信”? 答: 人机交互时, 最关键的是要使人与计算机之间能够准确地交流信息。 一方面, 由人向机器输入时应当尽量采取自然的方式, 另一方面由机器向人传递的信息必 须准确、不致引起误解或混乱。另外,不要把内部的处理与加工与人机界面混在 一起,人机界面的程序只是用于通讯,以免互相干扰及影响速度。 信息库的内容包括那几个方面? 答(1)所述软件的工作环境、功能需求、性能要求、有关的各种信息来源的状况、 用户状况、硬件环境以及在该专业领域中的作用等外部信息。 (2)需求分析阶段 中收集的有关用户的各种信息, 包括用户本身提供的,也包括在调查研究中得到 的。(3)逻辑设计阶段的各种调查材料和由此生成的各种文档,这包括调查记录、 原始数据、报表及单证的样本、绘制的各种图以及最后生成的系统说明书。 (4) 设计阶段的各种资料,包括所有的数据库与数据文件格式、数据字典、程序模块 的要求、总体结构、各种接口及参数的传递方式以及最后形成的设计方案。 (5) 编程阶段的所有成果,包括程序代码、框图、变量说明、测试情况(输人数据及 输出结果),验收报告、使用说明等。(6)运行及使用情况的详细记录,包括每次 使用的时间、状态、问题,特别是有关错误及故障的记录情况。 (7)维护及修改 的情况,包括修改的目标、责任人、过程、时间、修改前后的代码与文档以及修 改后的结果,原系统的备份。(8)项目管理的有关信息、人员变更、资金投入、 进度计划及实施情况。这项还包括版本信息,即各次版本的备份,每个版本的推
软件开发工具的范围是什么? 答:软件开发工具的范围大致可以描述为:在高级程序设计语言(第三代语言)的 基础上,为提高软件开发的质量和效率,从规划、分析、测试、成文和管理各方 面, 对软件开发者提供各种不同程度的帮助的一类新型的软件。对于本概念可以 从以下几个方面去理解。首先,它是一类软件,是开发软件用的软件。其次,它 是在第三代语言的基础上发展起来的。第三,这里强调对软件开发全过程中各个 阶段的支持。 软件开发工作的发展过程是什么? 答:四个不同的阶段(1)用机器语言开发软件把用户已经明确表述出来的算法, 用机器语言写成一系列机器指令,供硬件运行使用。这是人们对软件开发工作的 最初的认识。(2)用汇编语言开发软件,由汇编程序完成转换。汇编语言产生之 后, 编程工作改为用汇编语言进行, 编好的汇编指令由汇编程序转化为机器指令, 再交硬件执行。软件开发工作离硬件远了,离用户近了(3)用高级语言开发软件, 由编译程序完成转换高级程序设计语言不再与机器指令一一对应, 而且更加接近 人类习惯的自然语言。软件开发离机器更远了,离用户更近了 (4)在各种软件开 发工具的帮助下开发软件, 由编译程序完成转换。这是软件开发工作发展的新阶 段,也使软件开发工作的概念从一次性的、具体的编程,扩大到了长期的、不断 更新的过程。 试述用通用软件帮助软件开发的弱点 答: 用通用软件来帮助软件开发人员编写文档或画图可以减少不少工作量,但是 这种帮助实在是太表面、 太初步了。 用通用软件帮助软件开发有三个主要的弱点。 第一,有许多工作是通用软件所无法完成的。第二,用通用软件完成某些工作, 只能表现出其表面的 形式,而不能反映其逻辑内涵。第三,用通用软件来 帮助人们完成软件开发工作时,常常遇到难于保持一致性的困难。 软件开发分为那几个阶段,各阶段的文档是什么? 答:(1)需求分析。根据初始要求形成严格的、明确的、可供实际开发使用的功 能说明书。(2)总体设计。根据软件功能说明书的要求,完成软件的总体设计, 这包括整个软件的结构设计用的数据文件或数据库的设计, 各部分的连接方式及 信息交换的标准等几个主要内容。(3)实现阶段。完成程序的编写与文档的编写。 (4)测试或调试阶段。包括模块的调试与整个软件的联调。
审计(Audit)是对一个系统的运行状况及效率进行检测与评价, 以便进一步用好这 个系统。审计的目的就是为了做到心中有数,保证取得实际的应用效果。审计可 以由本项目组织人员自行进行, 也可以请外面的专家来进行。审计的基础是日常 记录的信息,没有日常信息的积累,审计工作就无法进行。 计算机网络的普及使用对软件开发工具有何影响? 答: 网络的应用是计算机应用领域中的一个重要方向。如果说单个工作站或微机 的延伸还只是个人头脑的扩展的话, 那么计算机网络的普遍使用则是全人类的头 脑得到了极大的扩充, 人类收集与积累知识的能力大大地加强了。软件开发工具 这个领域当然也不例外。通过网络,人们可以更方便地互通信息,共享知识,这 就给人们所梦想的软件重用、知识重用提供了新的机会。又如在项目管理方面, 网络的应用使人们更便于掌握项目的进展状况、质量状况等。正因为这样,目前 利用网络提供条件提高工作效率的软件开发工具, 以及在网络上开发应用软件的 工具,正在成为当前发展的一个热点。 软件构件标准化的思想对软件开发工具有何影响?答:标准化的问题是由软件部 件、组合软件的想法引起的。按这种想法,为了解决大型软件开发的困难,需要 把软件开发工作分成两个部分:软件构件(就像硬件的芯片)的开发,用这些构件 组成大型软件(就象用芯片组成主机)。显然,要做到这一点,软件构件必须实现 标准化, 用构件组成大型软件的结构也必须符合一定的标准,否则就不可能提高 生产效率。 列举两种真正一体化能应用于各种平台上的软件开发工具。 答: 一种是用于特定 平台上的、主要用于设计阶段的工具。这种软件多数依附于软件平台(如某种数 据库管理系统), 如 OR—ACLE 的 CASE, INFOMAX 的 New Era, IBM 的 Visual Age,以及 Power Builder,Power House 等。另一种是侧重于分析方法的、独立 于平台的工具。从方法论的角度来说,这种工具更值得注意。如 Rose。 简述软件开发工具在国内的发展状况。 答:早在八十年代初期,软件工作环境的概念被介绍到国内。随着改革开放的深 入, 国外在这方面的研究动向迅速地传人,许多大学及研究单位也进行了相应的 研究开发工作。当时,国内的注意力集中于代码生成以及汉字处理方面。随着研 究的深入,人们开始注意到分析工具、计划工具以至一体化的集成环境,并作了 许多开发与尝试,市场上出现了 QuickMIS 等产品。从研究的水平来看,国内这 方面的水平并不比国外低多少。 国外同行考虑的各种问题,国内也都进行了相应 的工作。主要的差距在于没有广泛地使用这些工具。总的来说,我国的软件产业 还没有形成一批稳定的、 高度有组织的软件开发群体,因而真正能够发展软件开 发工具的环境与社会需求还不具备。 什么是软件开发工具的智能化?其目的是什么? 答:所谓智能化,具体地说就是在软件开发工具的研究与使用中引人人工智能、 神经网络等技术, 使得软件开发工具对于不确定型的信息、模糊信息具有更强的 处理能力。由于在软件开发工作中,存在着大量不确定的因素,人们常常需要用 知识与经验来加以补充或加工。 在这方面人工智能方面的技术可以提高信息处理 的功能及效率。
调整,否则,就会产生误解以致干扰和破坏了整个软件系统的正常运转。因此, 必须保证软件开发工具各部分之间信息的准确传递。
软件开发工具理想的系统结构应该是什么样的? 答:理想的系统结构应当是模块式的,易于裁剪的。在这种结构中,每一个模块 完成某一项相对独立的任务,它的内部处理(包括处理过程与数据结构)对于外部 来说是一个黑箱, 而模块之间的信息传递则尽可能地简单明了,而且明确地表述 出来,对使用者公开。这并不意味着系统结构松散或互不相干,这里的分工与联 系都是在统一规划之下,明确地、有计划地安排与组织的。 处理历史信息时遇到哪两个问题?以何种方法解决? 答:处理历史信息时遇到两个问题,一个是历史信息的数量太大,占用存储设备 过多。另一个是历史信息格式不一致,难以有效地利用。对于前一个问题,一般 采用脱机备份的方法解决。后一个问题是十分困难的。加强标准化,稳定数据结 构会使这个问题得到一定程度的解决。 代码生成器的基本任务是什么? 答: 代码生成器的基本任务是根据设计要求,自动地或者半自动地产生相应的某 种语言的程序。 代码生成器的代码输出方式有哪几种?优、缺点是什么? 答: 代码生成器输出的代码有两种情况:某种高级程序设计语言的代码或某种机 器环境下可运行的机器指令。 前者的优点是使用者可以在这基础上进一步修改加 工, 即利用自动生成的模块作为一个原型,然后在此基础上形成自己所要求的系 统(或系统的某一部分)。缺点是功能较死,效率不高。后者的优点是可以直接运 行, 从而立即检查是否符合要求,如果不合要求就可以立即调整命令或参数重新 生成一遍。缺点是所生成的机器代码,一般是无法直接修改的,励 D 上这种产 物对机器的硬软件环境的依赖很大。 哪类程序易于生成?哪类程序难于生成?为什么? 答:一般来说,对话屏幕、输入屏幕、输出报表、菜单控制结构等类型的模块比 较容易生成, 因为它们的处理过程比较规范,比较容易通过一些参数来加以描述 和规定。而对于统计分析、数据加工、决策判断等类型的模块则比较难以生成, 因为它们的灵活程度较大。
致,这都不是自然形成的,都需要精心地安排与考虑,因而许多具有主动性的个 人之间的组织与协调本身也带来大量的困难。
为什么时间因素、变更因素也会给软件开发工作带来困难? 答现实的社会经济生活每日每时都在变化, 作为与社会生活紧密联系的应用软件 当然也处在不断的变化之中。用户需求的变化,社会环境的变化,硬件及相关技 术的变化,无处不给软件工作提出新的要求。这种易变的性质,自然给软件开发 工作带来了不少困难。 什么是数据仓库? 答: 数据仓库是近年来针对大批数据的分析利用而提出来的概念, 其基本思想是: 现实中的大量原始数据与实际的应用是具有相当距离的, 为了能够切实为企业管 理者提出对管理真正有用的信息,就要对信息或数据进行多次的加工或提炼,从 而得出许多派生的或综合的数据。 什么是数据库? 答: 数据库是指在文件系统基础上发展起来的一种数据管理技术,其重点在于合 理地组织数据,体现出数据之间的逻辑关系,并尽可能地帮助用户检索,减少冗 余。 试述版本管理的意义与方法。 答:版本管理的重要意义在于保持一致性。从时间上来说,后续的工作与以前的 工作一致;从系统各部分之间的关系来说,它要求每一局部与整体保持一致。版 本管理的具体方法包括规定长远的版本更新计划, 制订与版本有关的信息范围及 收集、管理方法,在项目组内明确分工,在程序编写、测试、文档缩写等工作中 贯穿项目管理的思想及要求。 软件开发过程中设计的信息类型有哪些? 答:(1)需求信息:用户提出,分析人员采集,系需求分析及设计的依据。2)设计 信息:分析人员(或设计人员)根据需求分析形成,体现为设计方案。3)软件成果: 程序员根据设计方案,依据某种计算机语言编制出来的代码(程序)。4)变更信息: 用户在使用过程中逐步形成,由维护人员收集、整理,并实施必要的修改。 软件开发过程中常用的概念模式有哪些? 答:(1)框图:用于描述程序执行的逻辑过程。(2)结构图:用来表示大型软件的 层次结构, 即模块结构。 3)数据流程图: 用于描述某一业务处理系统的信息来源、 存储、处理、去向的全面情况。4)实体关系图:用于描述静态数据结构。5)数据 字典:用于描述数据内容。6)时序网络:用于描述系统状态及其转换方式。7)数 学与逻辑模型:用于描述客观系统的状态或运动规律。8)计算机模拟模型:用于 以程序的形式来实现客观系统中的某些规律或规则, 以便人们观察与预测客观系 统的状况。 项目管理的含义与内容是什么? 答: 项目管理是指与固定的生产线上的日常生产管理不同的, 具有更大的变动性、
任务的一一对应,即每个模块完成 一个任务,反之每一项任务仅由一个模块来完成。这也称为模块的凝聚性。
信息库答: 信息库是一个包罗万象的, 随着项目进度不断修改与补充的数据集合。 它在规模上不一定像数据仓库那么大, 分析提炼的要求也与数据仓库不同。 然而, 作为软件开发全过程的信息管理总框纽,它的数据结构是相当复杂的,而且会随 时间不断变化,因此,保持一致性的任务变得十分复杂和艰巨。 模块的藕合性答: 模块之间的联系及互相影响应尽可能地少, 对于必需的联系都 应当加以明确的说明。而且一般来说,尽量避免传递控制信号,而仅限于传递处 理对象。这种联系及相互影响称为藕合性。 面向对象的程序设计面向对象的特别高设计是人们为模仿现实世界模型而建立 的程序设计方法, 这种思想源于对现实世界自然结构的认识。人们为了应付现实 世界的复杂性,逐渐形成了很好的概括、分类和抽象的能力,并在此基础上应用 于程序设计就形成了面向对象的概念。 遗传性答:抽象的、较大的对象所具有的性质,包括静态属性和动态操作,自然 地成为它的子类的性质,不必加以说明或规定。这就是所谓的“遗传性” 。 文档答:功能说明书、总体设计、各模块的设计任务书、每个部分的研制报告、 测试报告,直到最终的验收报告和给使用者的用户手册等通称为文档。 黑箱检验答: 输入一些信息, 通过观察是否能得出预期输出来判断软件是否正确 的一种软件测试方法。 封装性 答:客观世界的任何事物都是对象,它们都有一些静态属性,也都有一些有关的 操作。作为一个整体,这些对象对外不必公开这些属性与操作。 模块的凝聚性答:模块的功能在逻辑上尽可能地单一化、明确化,最好做到一一 对应。 即每一个模块实现一项明确的任务, 反之每一项任务仅由一个模块来完成。 此即为模块的凝聚性。 软件工程答: 为了从根本上提高软件开发的效率和质量,人们吸取在各种传统产 业中的成功经验, 从组织和管理的角度加强力量,使软件生产从程序员的个人劳 动提高成为有组织的、可控制的工程,这种开发软件的方法就是软件工程方法。 简言之,软件工程方法就是以工程化的观点来指导软件开发的方法。 软件开发工具答:在高级程序设计语言(第三代语言)的基础上,为提高软件开发 的质量和效率,从规划、分析、设计、测试、成文和管理各方面,对软件开发者 提供各种不同程度的帮助的一类新型的软件。其要点是: (1)它是在高级程序设 计语言(第三代语言)之后,软件技术进一步发展的产物;(2)它的目的是在人们开 发软件中给予各种不同方面、不同程度的支持或帮助; (3)它支持软件开发的全 过程,而不是仅限于编码或其他稳定的工作阶段。
关理论与方法。 试论信息库的管理功能。 答:信息库的管理功能有三项,录入更新、使用查询、一致性维护。其中许多功 能是一般数据库管理系统所已经具备的, 与一般数据库管理系统不同的主要有下 面两点。首先,信息之间逻辑联系的识别与记录。如,简单地说,信息库管理模 块必须“记住”信息之间的逻辑联系。另一个特殊的问题是如何实现定量信息与 文字信息的协调一致这些不同形式的信息相互之间又有许多密切的关系。 上述两 个困难的根源都在于数据之间的逻辑关系的认识与表达。 只能用重新生成一次文 档的办法来解决。 项目数据库的内容应当支持项目负责人做哪工作? 答:(1)研究与确定开发工作的方针与方法。如采用什么样的阶段划分方法,采 用什么样的系统描述方法等。(2)开发任务的划分与分工。即整个开发任务如何 逐层分解为具体的任务, 这些任务委托给什么人来做, 这些任务之间的相互关系。 (3)资源状况。即有多少人力、物力、设备、软件、资金;它们现在都在做什么, 是否得到充分利用,是否需要增加投入。(4)人员情况。每个人(或每个组)的进度 如何,技术水平如何,是否需要重新培训,是否需要调动工作。 (5)变更情况。 需求有什么变更,环境有什么变更,人员有什么变更,在开发期间设备(包括硬 软件)与技术有什么变更。(6)质量情况。检验的标准是什么,如何检验,由谁来 检验,用什么数据检验。 信息库管理的主要任务是什么? 答:(1)逻辑联系的识别与记录(2)定量信息与文字信息的协调 信息库的内容是什么? 答:(1)系统状况:包括应用领域中的有关实体及它们之间的相互关系的描述, 软件要处理的信息的种类、格式、数量、流向,应用领域对软件的要求,使用者 的情况、背景、工作目标、工作习惯等等。 (2)设计成果:包括逻辑设计与物理 设计的成果。(3)运行状况记录:包括它的运行效率、作用、用户反映、故障情 况、故障的原因及处理情况。(4)项目及版本管理信息:包括项目的进度、过程、 人员分工、资源投入、版本组织等等。 信息库的组织方式有哪些? 答:(1)集中方式:建立一个庞大的数据库,把各种信息都存放在这个数据库中, 而各种工具, 或实现各项单项功能的模块则围绕在这个信息库的周围,对这个信 息库进行录入、修改、查询、删除。(2)分散方式:把信息分别存人不同的数据 库,由不同的功能模块来处理。 (3)逻辑上集中,物理上分散:通过信息库管理 模块来对分散的各个数据库进行存取,并进行一致性的检查与维护。 实现项目管理的方法是什么? 答: 人们依据项目管理的经验, 提出了以项目数据库为中心进行项目管理的方法。 项目数据库实际上是信息库的一个组成部分, 它记录的是项目本身进展的各种有 关信息。
即插即用程序设计方法实现起来有何困难? 答:有两个困难。1)标准化的问题。软件部件很复杂,它涉及一大批变量与结构 的说明与定义的标准。而这些至今没有统一。2)软件部件的提供方式问题。软件 部件应当是封装起来的,以二进制的机器代码方式提供,看不到源程序,一般来 说不必了解也不能改动它的内部过程。但是,这就出现了与硬件、与操作系统的 关系问题。目前仍存在着多种硬件,多种操作系统,即使 UNIX 也还有许多大同 小异的版本。但按这样的思想设计的软件部件不能容忍这种差异的,哪怕是“小 异” ,它要求的是绝对相同。 自顶向下的设计方法。 答:在实施模块划分时,不管软件多大,都采取自上而下、逐步分解的办法,分 成若干部分, 并把它们之间的关系明确地表达出来,直到最低层的模块达到所要 求的规模为止。 简述应用领域之间的差别给软件开发带来的困难。 答:软件作为应用领域与硬件之间的桥梁,一头是固定的,另一头却是变化无穷 的。世间各行各业尽管都要用到信息,都力图与现代信息技术相结合,但是它们 之间的差别却是如此之大,给软件开发工作者带来了许多困难、 几十年来,为了提高软件开发的水平和效率人们提出了哪些软件开发方法?结 构化程序设计方法, 软件工程方法面向对象的程序设计方法,即插即用的程序设 计方法,面向开源软件的程序设计方法 大型软件开发过程中涉及几种角色,他们承担的工作有:(1)用户:提出需求、 验收软件、使用软件、提出修改要求 2)程序员:编程、写文档、调试自己的程序、向项目负责人提交工作成果3)项 目负责人:分析用户需求形成设计方案、向程序员分配任务、验收程序员的工作 成果、对整个软件联调、向用户交付使用、接收与分析用户的修改要求、向程序 员分配修改任务、验收修改成果、向用户提交新的版本或修改的结果(4)计算 机硬件:运行、试运行 结构化程序设计方法中,如何实施模块的划分? 答:方法是:不管软件多大,都采取自上而下、逐步分解的方法,分成若干部分, 并把它们之间的关系明确地表达出来, 直到最低层的模块达到的所要求的规模为 止。基本要求:1 模块的基本功能在逻辑上尽可能单一化明确化最好做到一一对 应 2 模块的间的联系和互相影响尽可能的少对于必须的联系加以明确说明 3 模块 的规模应当足够小以便易于调试 结构化程序设计的缺点是什么?如何看待这些缺点? 答:其缺点是它增大了程序工作量,增加了编程中的麻烦与琐碎的工作,并且降 低了程序的运行效率。但是,使用这种方法,可以保证软件的可靠、准确,而且 使软件易于修改,故这种代价是值得的。 简述软件工程方法的由来。 答:工程常常是指复杂的、需要认真组织的、有许多人参加的事情。工程的观点 是和近、 现代的大生产联系在一起的,它是和依靠个人技艺的手工的生产方式相 对立的。 人类的生产从靠工匠手艺到靠工程化生产是一个重要的进步。这个思想
时间性的另一类管理任务。 项目管理的内容包括: 进度、 质量、 费用和资源利用。 软件开发过程中的信息管理有哪些? 答: (1)合理存储, 包括一致性检查与维护和方便迅速地查询与调用。 2)正确转化, 即在许多环节上正确地进行数据的转换或加工。3)顺畅流通,使信息交流渠道通 畅无阻。 信息库的研究方向是什么? 1)信息库的内容: 有关软件开发全过程的所有有用的信息(2)信息库的功能:除增 删改等数据库的基本操作外, 还需要把计算机内外的信息存储统一起来管理,还 需要认真设计有关界面以便使用。(3)信息库的一致性:信息库中的信息需要不 断更新。但原有内容一般不删除,新信息存入时,老信息只是加上时间标志移入 历史信息中去,并且它还与新的信息保持着历史的、逻辑的联系,在需要时可以 随时再调出来。 项目管理的目标是什么? 答:(1)质量控制。 (2)进度控制。 (3)资源质量控制。4)费用控制。控制与降低 成本。成本的降低是项目管理状况的综合 的最终体现。 AD/Cycle 包括哪三个方向的接口? 答:对程序员的接口 CPI,对其它计算机系统的接口 CCS,对用户的接口 CUA。 CUA 这一部分包括八种人机交互手段:键盘操作、屏幕滚动、菜单选择、帮助 系统、鼠标操作、色彩运用、数据录入、信息显示。 简述数学与逻辑模型的作用、基本思想及优、缺点。 答: 数学与逻辑模型用于描述客观世界状态与规律。数学与逻辑模型的基本思想 是用一些数学公式或逻辑表达或来描述客观系统的状态或运动规律。 数学与逻辑 模型的最大优点是严格、准确、可计算,也正因为如此,所以限制颇多,一般只 能描述比较单纯、比较基础的功能。 简述数据流程图(DFD)的作用、基本思想。使用范围。 答:数据流程图用于描述某一业务处理系统的信息来源、存储、处理、去向的全 面情况。 数据流程图的基本思想是把信息流看作—个组织或系统运作的线索,力 图简明扼要地勾画出全局。 简述 DD 的作用、基本思想、使用范围。 答:DD 用于描述数据内容。DD 的基本思想在于以表格的形式列出数据的基本 属性以及相互关系, 作为人们对于数据的认识和了解。 DD 更适于记录各种细节, 所以常常与其他描述工具互相补充、配合使用。 简述时序网络的作用、基本思想、使用范围、图例及优点。 答:时序网络的作用、基本思想、使用范围、基本图例及优点:时序网络用于描 述系统状态及其转换方式。时序网络的基本思想是,当满足某个条件时,系统从 一个状态向另一个状态转换。 时序网络常常用于一些实时控制方面的软件的功能
MinGW 编译器:MinGW 是指用来生成纯粹的 Win32 可执行文件的编译环境,它 是以 GNU 为基础的开发 C/C 项目的工具集,能够提供 C/C所需要的头文件和库文件。 浏览功能: 浏览功能可以从多个角度快速查看并定位到程序中的各个元素包括代 码的层次结构、调用关系、继承关系等。 打开变量声明: Eclipse 提供的浏览功能, 可以从变量的任意引用位置直接定位 到变量的定义行。 打开类型层次结构: Eclipse 提供的浏览功能, 可以快速打开程序中已经在使用 的特定数据类型及其相关继承结构。 打开调用层次结Eclipse 提供的浏览功能可以浏览函数的定义与调用层次关系 并快速定位到需要的函数。 文件包含浏览器:用于浏览程序中包含的头文件。 打开元素:Eclipse 将命名空间、类、结构、类型定义符、函数、变量等定义为 元素,通过浏览功能,可以迅速打开需要的元素。 重构功能:使用 Eclipse 重构功能,可以在不影响程序行为的情况下进行系统 范围内的代码更改。 抽取方法: 将程序中多次出现的代码段抽取出来形成方法,可以减少代码的长度 并增加程序的可读性和易维护性,同时使方法的调用清晰简单。 抽取常量:抽取常量是将程序中的数字、字符等定义为常量,使得对常量的调用 和修改变得简单。 GDB:GDB 是 GNU 开源组织发布的一个强大的 UNIX (不仅限于 UNIX )工具, 搭配 MinGW 使用,可以使用户完成整个 C/C 程序的编译和运行工作。 断点: 断点是程序调试中的重要概念,它可以使程序在运行到断点位置时自动暂 停并且显示程序的当前状态。 方法断点: 对某个方法或函数设置断点,在程序运行到该方法的第一行时自动暂 停。 事件断点:在程序运行过程中发生特定事件时(如异常触发、线程启动、线程退 出等)将程序暂停。 调试视图:显示当前调试的程序的线程和所处的状态。 变量视图: 显示整个调试过程中程序变量值的变化情况,变量视图是帮助程序员
统内的动态协作关系。 组件视图:从系统实现的角度描述模型对象间的关系。 配置视图: 用于说明系统的物理配置,如所用的计算机和设备以及相互间的连接 关系。 用例图:用于描述外部项与系统提供的使用事件之间的联系。 类图:用于描述系统的静态结构。 对象图:用于表述系统的静态结构。它使用与类图一样的符号表示, 但不是同 一种图,对象图表示的是类中的许多对象实例,而不是类本身。 状态图用于说明类中的对象可能具有的状态以及由事件引起状态改变。 顺序图:用于描述对象间的动态协作关系。由一条纵线上的一些对象组成,以时 间流动为方向,表达对象间消息 的交换。 协作图用于描述对象动态协作关系。 活动图:用于描述系统活动的流程。 组件图:用于描述组件代码的物理结构。可以是代码组件、二进制文件或任意可 执行的组件。 配置图:用于描述系统中软件和硬件的物理结构。 模型元素:各种图表中所用的概念符号称为模型元素。 UML 的基本机制:UML 的基本机制表现为各种图表上的附加信息,用于描述那些 模型无法表达的内容。包括修 饰、注释、说明三种方式。 简述软件开发工具的演变过程和原因 软件开发工具的演变是从无到有, 从分散到集中的过程, 是软件发展的必然趋势。 主要分为四个阶段: 第一阶段:利用通用软件作为辅助工具的阶段——没有专用软件开发工具的阶 段。 第二阶段:专用的软件开发工具阶段。如: 第三阶段:集成的软件开发工具阶段。如: 第四阶段:面向网络和开源软件的软件开发工具阶段。 试论述软件开发方法发展的新阶段的特点。 答:要点:(1)自动化程度的提高。(2)明确地把需求分析包括进了软件工作的范
软件工程的基本方法是什么?1)对于软件开发的工作过程进行规范。将软件开 发过程分为若干个阶段,如需求分析、总体设计、编码、测试、运行及维护等。 2)加强标准化。一方面是表达方式的标准化,另一方面是对工作的质量及检查 制订标准 设置检查点, 面向对象的程序设计方法的要点?答 1)客观世界的任何事物都是对象,它们都 有一些静态属性,也都有一些有关的操作。作为一个整体,这些对象对外不心公 开这些属性与操作。2)对象之间有抽象与具体,群体与个体,整体与部分等几 种关系。这些关系则构成对象的网络结构。3)抽象的、较大的对象所具有的性 质,包括静态属性和动态操作,自然地成为它的子类的性质,不必加以说明或规 定。4)对象之间可以互送消息,这一消息可以是传送一个参数,也可以是使这 个对象开始某个操作。 大型软件开发中的困难有哪些?答:1)一致性的保持。每个人对这些问题的理 解可能有同,而程序的编写又是个人的、脑力的劳动,很难加以控制。2)测试 的问题。修改程序时,改动一处,影响到多处而检验只能证明程序有错,不能证 明程序没错 3) 工作进度的控制。 4) 文档与代码的协调 5) 版本更新带来的问题。 很容易出现新版本中各部分代码不一致和代码与文档不一致的情况。 大型软件开发时产生困难的原因何在 ?答 (1)大系统的复杂性。大系统之所以复 杂,是由于量的变化引起了质的变化。同一个问题,在小程序中容易解决,而在 大型软件很难处理。(2)多人协同工作的组织管理。当组织许多人共同完成一项 大的软件开发任务时,分工和协调颇为关键。分工是否合理,信息是否能及时地 沟通,步调是否能一致,都需要精心地安排与考虑。(3)领域知识与软件技术 (4) 时间因素及变更因素。用户需求的变化,社会环境的变化,硬件及相关技术的变 化,处处给软件工作提出新要求 组合文件的思想是什么?答组合文件的思想源于硬件制造。 一部分人专门生产相 当于芯片的软件组件,而另一部分人则构造相当于计算机结构的整个软件的结 构,并且把软件组件插入这个结构,迅速地完成大型软件的研制工作。 试述面向对象的的基本特征和优点。 答:(1)封装性:把数据和对它的处理综合成一个整体。 (2)遗传性:类与子类之 间属性的传递。(3)多态性:同样的消息被不同的对象接受以后,会因不同对象 中所含方法的不同,而导致不同的行动。 (4)持久性为对象分配空间确实驻留内 存时间长短保证内存的有效使用 怎样建立一个好的项目组 ?答:(1)有严格的工作规范和文档标准必须要有严格 的、成文的工作规范和文档标准,而且应当为全体成员所熟知,并且切实得到遵 守。(2)人员之间有严格的分工。除了程序员之外,必须有专门的秘书(负责文档 的收集、审核及保管),必须有专门的测试人员(负责测试和验收有关的部分),特 别是要有专职的,不限于具体编程的项目负责人。 (3)每个项目有详细的时间安 排并严格执行每个项目都要事先制定详细的时间表,并且得到严格执行。每一项 目完成之后都有完整的资料, 并得到妥善保存,一旦需要修改或更新版本时可以 立即使用。
到充分的发挥。(5)软件项目的管理 这方面的功能更明确地是为项目管理人员 提供支持,而不是为程序员提供支持。 简述软件开发工具的项目管理功能。 答: 项目管理功能明确地是为项目管理人员提供支持, 而不是为程序员提供支持。 一般来说,项目管理包括进度管理,资源与费用管理,质量管理三个基本内容, 在这方面项目管理已有不少成功的经验、方法与软件工具。对于软件项目来说, 还有两个比较特殊的问题。 首先是测试工作方面的支持,由于软件的质量比较难 以测定, 所以不仅需要根据设计任务书提出测试方案,而且还需要提供相应的测 试环境与测试数据。人们很自然地希望软件开发工具能够在这些方面提供帮助。 另一个问题是版本管理问题。当软件规模比较大的时候,版本的更新,各模块之 间以及模块与使用说明之间的一致性,向外提供的版本的控制等,都带来一系列 十分复杂的版本管理问题。如果软件开发工具能够在这些方面给予支持或帮助, 无疑将有利于软件开发工作的进步。 为什么说高级语言出现后计算机真正获得了应用? 答: 第三代语言突破了与机器指令一一对应的限制,用尽可能接近自然语言的表 达方式描述人们设想的处理过程,而把这种表达方式向机器指令的转化工作,交 给专门的“工具”——编译系统去完成。另一个重要的变化是高级设计语言实现 了对机器的独立性, 即它不依赖特定的硬件系统, 抽象地逻辑地描述处理和算法, 而把硬件系统之间的区别交给不同的编译系统去处理, 从而大大提高了程序的可 移植性。这一进步的影响非常巨大、非常深远。从六十年代以来,面向各个领域 的,面向各种应用的程序设计语言如雨后春笋般涌现出来,至今势头不减。也正 因为有了这些语言,在短短的二、三十年中,计算机技术才真正地获得了应用。 何谓第四代语言的非过程化思想? 答:人们希望机器能够自动地完成某些工作,包括自动安排某些(不是全部)工作 的顺序, 而做到只要给机器下达做什么的命令, 由机器自己去安排执行的/顷序。 这就是第四代语言——非过程化语言的思想。 软件工作的重要性何在? 答:软件工作的重要性现在已经为越来越多人所认识。软件是计算机的灵魂。的 确,如果没有相应的、适用的软件,计算机是不可能在各种应用领域中发挥作用 的。我们可以进一步说,软件是广大使用者与计算机之间的桥梁,软件是人类在 各个领域中积累的知识的结晶, 软件是人类文明与知识得以延续的新的载体,软 件是人类进一步成为一个整体,得以进一步相互联系的纽带。 集成化的开发工具是在什么背景下产生的? 答: 由于大量的专用软件开发工具的出现,为软件开发的各个阶段提供了具体的 支持,但它们是零散、分散地支持各个工作阶段,这些专用工具之间没有有机地 联系起来,从而必然造成冲突与矛盾。这就给用户造成了沉重的、不堪忍受的负 担,使用工具越多这种负担越重,以致抵消了使用工具带来的益处。这种情况导 致了集成的软件开发工具的产生。 试述软件开发工具的性能指标。
软件开发概念解释 软件配置(集成) 答:设立一个有效的总控部分,它能够在各个具体工具之上,实现信息的正确传 递与转换,帮助人们完成上述协调与配合的工作,从而形成一个统一的、完整的 支撑环境,并通过一个统一的、友好的人机界面与用户对话。 CASE 工具指“计算机辅助软件工程”或“计算机辅助系统工程”,它的基本思 想与软件开发工具完全一致, 即应用计算机自身处理信息的巨大能力,帮助人们 开发复杂的软件或应用系统。 水波效应:因修改程序带来的连带影响。当人们修改程序的某一处时,由于没有 充分考虑到这一修改对相关部分带 来的影响,结果出现了新的错误。 项目管理(Project Mangement) 答:项目管理指与固定的生产线上的日常生产管理不同的,具有更大变动性、时 间性的一类管理任 数据字典(DataDictionary) 答: 数据字典是一种描述数据内容的概念模式。它用表格形式列出数据的基本属 性以及相互关系。 它的雏型是编写软件时的变量说明或标识符清单。它也常常与 其他描述工具互相补充、配合使用。 实体关系图 答:实体关系图是一种用于描述静态数据的概念模式。它以实体、关系、属性三 个基本概念概括数据的基本结构。 数据流程图(DataFlowDiagram) 答:数据流程图描述某一业务处理系统的信息来源、存储、处理、去向的全面情 况,简明扼要地勾画全局。 项目管理 答:项目管理是与固定的生产线上的日常生产管理不同的,具有更大的变动性、 时间性的一类管理任务。 项目数据库 答: 项目数据库实际上是信息库的一个组成部分。它记录的是项目本身进展的各 种有关信息。项目负责人应当随时掌握这些情况,一方面把住验收质量关,使每 一步都扎扎实实,同时掌握全局,及时发现瓶颈环节,从组织上加以解决。 黑箱检验:输入一些信息, 通过观察是否能得出预期输出来判断软件是否正确的 一种软件测试方法。黑箱检验只能 证明程序有错,而不能证明程序没错。 模块的凝聚性:模块的功能在逻辑上尽可能的单一化、明确化,最好做到模块与
简述计算机模拟模型的作用。 答:计算机模拟模型的作用:计算机模拟是一种强有力的概念模式。它利用计算 机大量、高速处理信息的能力,在计算机内设置一定的环境(如资源条件等),又 以程序来实现客观系统中的某些规律或规则,在以上二者的基础上,计算机就可 以高速运行,以便人们观察与预测客观系统的状况。 简述 ER 图的作用、基本思想、使用范围。 答:ER 图的作用、基本思想、使用范围:ER 图用于描述静态数据结构。其基本 思想在于以实体、关系、属性三个基本概念概括数据的基本结构。它广泛应用于 数据库的设计中,常常和数据流程图、结构图等互相配合使用。因为前二者重点 描述信息的处理与流通,而缺乏对静态数据结构的描述方法。 简述结构图的作用、基本思想、优点。 答:在结构化程序设计方法中,结构图用来表示大型软件的层次结构,即模块结 构。 结构图以模块的调用关系为线索, 从宏观上使人一目了然地掌握软件的全貌。 其中,模块调用方式有三种:顺序调用、选择调用、循环调用。结构图的基本图 例为模块,用自上而下的连线表示调用关系,并注明参数传递的方向与内容。它 用箭头上的附加记号来表明这一点。结构图的优点是能够体现层次观点,由粗到
细、自顶向下地描述程序。特别是它可以迫使人们逐个地详细划分与描述模块, 体现结构化程序设计的思想。 人机界面设计应遵循的原则是什么? 答:(1)用户界面的主要功能是通信。 (2)界面必须始终一致。让用户始终用同一 种方式思考与操作。(3)界面必须使用户随时掌握任务的进展状况。人机界面应 当随时告诉用户当前工作的进展情况。4)界面必须能提供帮助。5)宁可让程序多 干,不可让用户多干。能够由程序完成的工作,尽量由程序完成。 试述概念模式的意义及其在认识中的作用。 答: 概念模式是人们在认识事物过程中,对于某一事物或某一系统形成的抽象的 它具有客观性、片面性,同时又具有主观性。概念模式是人们认识客观世界的一 种方法、一种工具,也是人们在长期的实践活动中逐渐形成的。它是在一定的理 论、思想指导之下形成的,同时又不断地根据实际情况加以修正。在这个不断循 环的过程。开云体育 开云平台开云体育 开云平台
扫一扫关注微信公众帐号