软件开发专业技术名词的解释共15页文档
(完整版)名词解释(软件工程)
三、名词解释1、软件:在计算机系统中,与硬件相互依存的逻辑部件,它由程序、数据及相关文档组成。
2、软件工程:是指导计算机软件开发和维护的工程学科。
采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。
3、数据字典:是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。
4、模块化:是把程序划分成若干个模块,每个模块完成一个子功能,把这些模块集总起来组成一个整体,可能完成指定的功能满足问题的需求。
5、类:对具有相同数据和相同操作的一组相似对象的定义。
6、软件危机: 是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
7、软件维护:在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程.8、继承:子类自动地共享基类中定义的数据和方法的机制.9、投资回收期: 就是使累计的经济效果等于最初投资的需要的时间。
10、结构化分析方法:就是面向数据流自顶向下逐步求精进行需求分析的方法。
11、软件的生命周期:一个软件从定义、开发、使用和维护,直到最终被废弃所经历的一系列时期。
12、投资回收期:就是使累计的经济效果等于最初投资的需要的时间。
13、结构化分析方法:就是面向数据流自顶向下逐步求精进行需求分析的方法。
14、模块:数据说明、可执行语句等程序对象的集合,它是单独命名的而且可通过名字来访问。
15、宽度:是软件结构内同一个层次上的模块总数的最大值。
16、事务流:数据沿输入通路到达一个处理,这个处理根据输入数据的类型在若干个动作序列中选出一个来执行。
这类数据流应该划分为一类特殊的数据流,称为事务流。
17、耦合:衡量不同模块彼此间互相依赖的紧密程度。
18、事件:是某个特定时刻所发生的事情,它是对引起对象从一种状态转换到另一种状态的现实世界中的事件的抽象。
19、函数重载:指在同一作用域内的若干个参数特征不同的函数可以使用相同的函数名字。
名词解释题
第1章名词解释1、软件开发工具:在高级程序设计语言(第三代语言)的基础上,为提高软件开发的质量和效率,从规划、分析、设计、测试、成文和管理各阶段,对软件开发者提供各种不同程度帮助(支持)的一类广泛的软件。
2、第一代语言:即机器语言,是用0、1组成的二进制字符串书写的程序,用纸带等光电设备或通过控制台上的扳键送入机器,得以存储和执行。
3、第四代语言(4GL):第四代语言的原意是非过程化的程序设计语言。
针对以处理过程为中心的第三代语言,它希望通过某些标准处理过程的自动生成,使用户可以只要求做什么,而把具体的执行步骤的安排交给软件自动处理。
4、CASE工具:CASE工具指“计算机辅助软件工程”或“计算机辅助系统工程”,它的基本思想与软件开发工具完全一致,即应用计算机自身处理信息的巨大能力,帮助人们开发复杂的软件或应用系统。
5、所见即所得:“所见即所得”原则力图实现编程工作的可视化,即随时可以看到结果,程序的调整与后果的调整同步进行。
6、需求分析:从用户提出的初始要求出发,经过大量的调查研究,抽象出应用领域中实际的信息需求,设计出在计算机系统内外的、合理的信息流程,并规定软件的功能与性能要求,最后形成严格的、明确的、可供实际开发使用的“软件功能说明书”,这个阶段称为需求分析。
7、总体设计:根据软件功能说明书的要求,完成软件的总体设计,包括整个软件的结构设计、公用数据库文件或数据库的设计、各部分的连接方式及信息交换的标准等。
8、结构设计:所谓结构设计是把软件划分成若干个模块,指定每个模块的功能要求以及它们之间的相互关系。
9、模块测试:根据整体设计时制定的各个模块的设计任务书,对程序员完成的模块进行验收,看它们是否实现了所要求的功能和性能指标。
10、总体测试:每个模块都达到了设计任务书的要求后,还要测试整个系统是否达到了预期的目标,另外还要检查完成的软件与编写的文档是否一致,这个工作成为总体测试。
11、设计工具:设计工具是最具体的,它是指在实现阶段对人们提供帮助的工具,是最直接帮助人们编写与调试软件的工具。
软件工程名词解释汇总
软件工程名词解释汇总软件工程名词解释汇总摘要本文档旨在对软件工程领域常用的名词进行解释和概述,以帮助读者更好地理解软件工程学科的相关概念和术语。
1. 软件工程(Software Engineering)软件工程是一门研究如何以系统化、规范化和可靠化的方法来开发和维护软件系统的学科。
它涉及软件开发的各个阶段,包括需求分析、设计、编码、和维护。
2. 需求工程(Requirements Engineering)需求工程是软件工程的一个重要领域,它研究如何获取、分析、规范和验证用户对软件系统的需求。
需求工程的目标是确保软件开发团队能够开发出用户所期望的软件系统。
3. 软件设计(Software Design)软件设计是指根据软件系统的需求规格说明书,通过抽象和建模的方法来定义软件系统的结构和组织的过程。
软件设计的目标是满足软件系统的功能需求、性能需求和可靠性需求。
4. 软件开发方法论(Software Development Methodologies)软件开发方法论是软件工程中用来指导软件开发过程的一种方法或框架。
常见的软件开发方法论包括瀑布模型、敏捷开发、迭代开发等。
4.1 瀑布模型(Waterfall Model)瀑布模型是一种线性顺序的软件开发方法,它将软件开发过程划分为需求分析、设计、编码、和运维等阶段,每个阶段都是按顺序依次进行的。
4.2 敏捷开发(Agile Development)敏捷开发是一种迭代、增量开发的方法论,它强调团队合作、快速响应变化和持续交付。
敏捷开发的核心原则是通过频繁地交付可用的软件来满足用户需求。
4.3 迭代开发(Iterative Development)迭代开发是一种循序渐进的软件开发方法,它将软件开发过程划分为多个迭代周期,每个迭代周期都包含需求分析、设计、编码、和反馈等阶段。
5. 软件(Software Testing)软件是一种评估软件质量和发现软件缺陷的过程。
软件开发术语
软件开发术语⼀、结构化程序设计 结构化程序设计是以模块功能和详细处理过程设计为主的⼀种传统的程序设计思想,通常采⽤⾃顶向下、逐步求精的⽅式进⾏。
在结构化程序设计中,任何程序都可以由顺序、选择、循环三种基本结构构成。
结构化程序采⽤模块化设计思想来实现,基本思路是把程序要解决的总⽬标分解为若⼲个简单的⼩⽬标来处理,再进⼀步分解为具体的任务项来实现,在模块化的程序设计中,应尽量做到模块之间的⾼内聚、低耦合。
⼆、⾯向对象的基本概念 (1)对象:是要研究的任何事务,可以是⾃然界的任何事物。
对像由数据和作⽤于数据的操作构成⼀个独⽴整体,从程序设计者来看,对象是⼀个程序模块,从⽤户来看,对象可以提供⽤户所希望的⾏为。
(2)类:类是⼀组有相同数据和相同操作对象的定义,⼀个类包含的⽅法和数据描述⼀组对象的共同属性和⾏为。
类是在对象之上的抽象,对象则是类的具体化,是类的实例。
⾯向对象的程序设计语⾔通过类库来代替传统的函数库。
(3)消息和⽅法:对象之间进⾏通信的机制叫作消息。
(4)软件复⽤ 软件复⽤是指在两次或多次不同的软件开发过程中重复使⽤相同或相拟软件元素的过程,软件元素包括程序代码、测试⽤例、设计⽂档、设计过程、需求分析⽂档甚⾄领域知识。
根据复⽤跨越的问题领域,软件复⽤可分为垂直式复⽤和⽔平式复⽤。
垂直式复⽤:指在⼀类具有较多公共性的应⽤领域之间进⾏软件重⽤,⼤多数软件组织采⽤这种重⽤形式。
⽔平式复⽤:重⽤不同应⽤领域中的软件元素,例如数据结构、分类算法、⼈机界⾯构件等,标准函数库属于⽔平式重⽤。
三、⾯向对象的主要特征 (1)继承性 继承性是⼦类⾃动共享⽗类的数据结构和⽅法的⼀种机制。
在类层次中,若⼦类只继承⼀个⽗类的数据结构和⽅法,则称为单重继承,若⼦类继承多个⽗类的结构和⽅法,则称为多重继承。
(2)多态性 多态性是指相同的操作、函数或过程可作⽤于多种不同类型的对象上,对象收到同⼀个消息可以产⽣不同的结果,这种现象称为多态性。
软件开发名词解释
软件开发名词解释软件配置(集成)答:设立一个有效的总控部分,它能够在各个具体工具之上,实现信息的正确传递与转换,帮助人们完成上述协调与配合的工作,从而形成一个统一的、完整的支撑环境,并通过一个统一的、友好的人机界面与用户对话。
CASE工具指“计算机辅助软件工程”或“计算机辅助系统工程”,它的基本思想与软件开发工具完全一致,即应用计算机自身处理信息的巨大能力,帮助人们开发复杂的软件或应用系统。
水波效应:因修改程序带来的连带影响。
当人们修改程序的某一处时,由于没有充分考虑到这一修改对相关部分带来的影响,结果出现了新的错误。
项目管理(Project Mangement)答:项目管理指与固定的生产线上的日常生产管理不同的,具有更大变动性、时间性的一类管理任数据字典(DataDictionary)答:数据字典是一种描述数据内容的概念模式。
它用表格形式列出数据的基本属性以及相互关系。
它的雏型是编写软件时的变量说明或标识符清单。
它也常常与其他描述工具互相补充、配合使用。
实体关系图答:实体关系图是一种用于描述静态数据的概念模式。
它以实体、关系、属性三个基本概念概括数据的基本结构。
数据流程图(DataFlowDiagram)答:数据流程图描述某一业务处理系统的信息来源、存储、处理、去向的全面情况,简明扼要地勾画全局。
项目管理答:项目管理是与固定的生产线上的日常生产管理不同的,具有更大的变动性、时间性的一类管理任务。
项目数据库答:项目数据库实际上是信息库的一个组成部分。
它记录的是项目本身进展的各种有关信息。
项目负责人应当随时掌握这些情况,一方面把住验收质量关,使每一步都扎扎实实,同时掌握全局,及时发现瓶颈环节,从组织上加以解决。
黑箱检验:输入一些信息,通过观察是否能得出预期输出来判断软件是否正确的一种软件测试方法。
黑箱检验只能证明程序有错,而不能证明程序没错。
模块的凝聚性:模块的功能在逻辑上尽可能的单一化、明确化,最好做到模块与任务的一一对应,即每个模块完成一个任务,反之每一项任务仅由一个模块来完成。
软件工程专业术语
软件工程专业术语软件工程专业术语第一章概述软件工程专业术语是指在软件工程领域中使用的一系列特定术语和定义。
这些术语涵盖了软件开发、测试、部署和维护过程中的各个方面,为工程师和相关人员提供了交流和理解的基础。
本文档将详细介绍软件工程中常用的术语和其相应的定义。
第二章软件开发流程2.1 需求分析需求分析是指对用户需求进行详细调研和理解,从而确定软件系统的功能和性能要求。
2.2 设计设计阶段包括系统设计和详细设计两个层次。
系统设计是基于需求分析的基础上,确定整个软件系统的体系结构、模块划分和接口定义。
详细设计则是在系统设计的基础上,对具体模块进行功能描述和算法设计。
2.3 编码编码是将设计的算法和功能转化为计算机可执行的代码的过程。
在编码阶段,软件工程师使用编程语言来实现设计阶段确定的功能和算法。
2.4 测试测试是验证软件系统是否符合需求规格的过程。
测试阶段包括单元测试、集成测试和系统测试,以确保软件系统的质量和功能完整性。
2.5 部署和维护部署是将已经测试通过的软件系统安装到目标机器上的过程。
维护是指对软件系统进行修复漏洞、优化性能和添加新功能等后续工作。
第三章软件质量保证3.1 验证和验证验证是指确认软件系统是否满足规定的需求和规格,通过测试和审查等手段来验证软件系统的正确性。
验证是指确认软件系统是否满足特定标准和质量要求,例如ISO 9001等。
3.2 声明和规格声明是指系统的功能、性能和界面等要求的正式定义。
规范是对系统进行详细描述的文档,包括输入、输出、算法和接口等方面。
3.3 缺陷和补丁缺陷是指软件系统中存在的错误或问题。
补丁是对软件系统进行修复缺陷和改进功能的代码修改。
第四章软件工程管理4.1 需求管理需求管理是对软件系统的需求进行识别、记录、分析和跟踪的过程。
包括需求获取、需求分析、需求动态管理等。
4.2 项目管理项目管理是指对软件项目的规划、组织、协调和控制等活动。
包括项目计划、人员管理、任务分配和进度控制等。
软件中的专业名词解释
软件中的专业名词解释随着科技的发展,软件已经成为人们日常生活和工作中不可或缺的一部分。
然而,对于很多非专业人士来说,软件中常见的专业名词可能会令人困惑。
本文将解释一些常见的软件专业名词,帮助读者更好地了解软件技术。
1. 用户界面(User Interface,UI)用户界面是软件与用户之间的桥梁,通过它用户可以与软件进行交互。
UI设计旨在提供直观、易于理解和操作的界面,使用户能够快速、高效地完成任务。
主要包括图形界面、菜单、工具栏、按钮等元素。
2. 操作系统(Operating System,OS)操作系统是计算机中的重要软件组件,负责管理和控制计算机硬件资源,为应用程序提供必要的服务和接口。
常见的操作系统有Windows、macOS、Linux等。
操作系统的主要功能包括进程管理、内存管理、文件系统管理等。
3. 数据库(Database)数据库是一个用来存储和管理数据的系统。
它采用结构化的数据模型,以表格的形式组织数据,并提供灵活的查询和操作功能。
数据库在许多应用领域广泛使用,如企业管理系统、电子商务网站等。
4. 网络协议(Network Protocol)网络协议是计算机网络中用于控制和管理数据传输的规则和约定。
常见的网络协议有TCP/IP、HTTP、FTP等。
网络协议确保数据能够在不同的计算机和网络设备之间传输,实现信息的交换和共享。
5. 编程语言(Programming Language)编程语言是一种用于编写和组织计算机程序的形式化语言。
常见的编程语言有C、C++、Java、Python等。
每种编程语言都有其独特的语法和特性,用于实现不同类型的软件应用。
6. 编译器(Compiler)编译器是将高级编程语言转换为机器语言的软件工具。
它将程序源代码逐行翻译成计算机可以理解的指令,然后生成可执行文件。
编译器起到了连接开发人员和计算机硬件的关键作用。
7. 进程和线程(Process and Thread)进程是在计算机中运行的程序的实例。
软件开发技术名词
一、什么是Scrum?Scrum(英式橄榄球争球队),软件开发模型是敏捷开发的一种,在最近的一两年内逐渐流行起来。
Scrum的基本假设是:开发软件就像开发新产品,无法一开始就能定义软件产品最终的规程,过程中需要研发、创意、尝试错误,所以没有一种固定的流程可以保证专案成功。
Scrum将软件开发团队比拟成橄榄球队,有明确的最高目标,熟悉开发流程中所需具备的最佳典范与技术,具有高度自主权,紧密地沟通合作,以高度弹性解决各种挑战,确保每天、每个阶段都朝向目标有明确的推进。
Scrum开发流程通常以30天(或者更短的一段时间)为一个阶段,由客户提供新产品的需求规格开始,开发团队与客户于每一个阶段开始时挑选该完成的规格部分,开发团队必须尽力于30天后交付成果,团队每天用15分钟开会检查每个成员的进度与计划,了解所遭遇的困难并设法排除。
二、Scrum较传统开发模型的优点Scrum模型的一个显著特点就是响应变化,它能够尽快地响应变化。
下面的图片使用传统的软件开发模型(瀑布模型、螺旋模型或迭代模型)。
随着系统因素(内部和外部因素)的复杂度增加,项目成功的可能性就迅速降低。
下图是Scrum模型和传统模型的对比:三、Scrum模型1、有关Scrum的几个名词◆backlog:可以预知的所有任务,包括功能性的和非功能性的所有任务。
◆sprint:一次跌代开发的时间周期,一般最多以30天为一个周期。
在这段时间内,开发团队需要完成一个制定的backlog,并且最终成果是一个增量的,可以交付的产品。
◆sprint backlog:一个sprint周期内所需要完成的任务。
◆scrumMaster:负责监督整个Scrum进程,修订计划的一个团队成员。
◆time-box:一个用于开会时间段。
比如每个daily scrum meeting的time-box为15分钟。
◆sprint planning meeting:在启动每个sprint前召开。
软件工程各章名词解释
名词解释一个三分 五个十五分第一章 绪论1. 软件2. 文档3. 软件工程4. 软件工程过程5. 软件生存周期6. 软件生存周期模型第二章 软件可行性研究与项目开发计划1. 投资回收2. 纯收人第三章 软件需求分析1. 需求分析2. 数据流3. 数据字典4. 加工5. 数据流图第四章 软件概要设计1. 模块2. 模块化3. 抽象4. 信息隐蔽5. 模块独立性6. 耦合性7. 无直接耦合8. 数据耦合9. 标记耦合10. 控制耦合11. 公共耦合12. 内容耦合13. 内聚性14. 偶然内聚15. 逻辑内聚16. 时间内聚17. 通信内聚18. 顺序内聚19. 功能内聚第五章 软件详细设计1. PAD2. 过程设计语言(PDL)第六章 软件编码1. 程序设计风格2. 程序可移植性第七章 软件测试1. 语句覆盖2. 判定覆盖3. 条件覆盖4. 判定/条件覆盖5. 条件组合覆盖6. 路径覆盖7. 环路复杂性8. 黑盒测试9. 白盒测试10. 驱动模块11. 桩模块12. 单元测试13. 集成测试14. 确认测试15. 调试第八章 软件维护1. 维护2. 校正性维护3. 适应性维护4. 完善性维护5. 预防性维护6. 软件可维护性第九章 软件开发的增量模型1. 原型第十章 面向对象的方法1. 对象2. 类3. 消息4. 方法5. 继承性6. 单重继承7. 多重继承8. 多态性9. 抽象10. 信息隐藏11. 链12. 关联第十一章 软件质量与质量保证1. 软件可靠性2. 效率3. 可维护性4. 可移植性5. 可互操作性6. 适应性7. 可重用性8. 软件设计质量9. 软件程序质量10. 冗余第十二章 软件工程管理1. 软件配置管理2. 软件配置项3. 基线4. 文档第十三章 软件开发环境1. 软件开发环境2. 软件工具3. CASE4. CASE生存期5. CASE工作台软件工程自考名词解释答案第一章 绪论1. 计算机程序及其说明程序的各种文档.2. 文档是有关计算机程序功能,设计,编制,使用的方案或图形资料.3. 用科学知识和技术原理来定义,开发,维护软件的一门学科.4. 软件工程过程规定了获取,供应,开发,操作和维护软件时,要实施的过程,活动和任务.5. 软件生存周期是指一个软件从得出开发要求开始直到该软件报废为止的整个时期.6. 软件生存周期模型是描述软件开发过程中各种活动如何执行的模型.第二章 软件可行性研究与项目开发计划1. 投资回收期就是使累计的经济效益等于最初的投资费用所需的时间.2. 在整个生存周期之内的累计经济效益(折合成现在值)与投资之差.第三章 软件需求分析1. 需求分析是指开发人员要准确理解用户的要求,进行细致的调查分析,将用户非不甘落后将用户非不甘落后 需求陈述转化为完整的需求定义,再由需求定义转换到相应的形式功能规约(需求规格说明)的过程.2. 数据流是数据在系统内传播的路径,因此由一组成分固定的数据项组成.3. 数据字典(Data Dic onary, 简称DD)就是用来定义数据流图中的各个成分的具体含义的,它以一种准确的,无二义性的说明方式为系统的分析,设计及维护提供了有关元素的一致的定义和详细的描述.4. 加工又称为数据处理,是对数据流进行某些操作或变换.5. 数据流图,简称DFD,是SA方法中用于表示系统逻辑模型的一种工具,它以图形的方式描绘数据在系统中流动和处理的过程.第四章 软件概要设计1. 模块在程序中是数据说明,可执行语句等程序对象的集合,或者是单独命名和编址的元素,在软件的体系结构中,模块是可组合,分解和更换的单元.2. 模块化是指解决一个复杂问题自顶向下逐层把软件系统划分成若干模块的过程.每个模块完成一个特定的子功能,所有的模块按某种方法组装起来,成为一个整体,完成整个要求的功能.3. 抽象是认识复杂现象过程中使用的思维工具,即抽出事物本质的共同的特性而暂不考虑它的细节,不考虑其他因素.4. 信息隐蔽指在设计和确定模块时,使得一个模块内包含信息(过程或数据),对于不需要这些信息的其他模块来说,是不能访问的.5. 模块独立性指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单.6. 耦合性也称块间联系.指软件系统结构中各模块间相互联系紧密程序的一种度量.7. 无直接耦合指两个模块之间没有直接的关系,它们分别从属于不同模块的控制与调用,它们之间不传递任何信息.8. 数据耦合指两个模块之间有调用关系,传递的是简单的数据值,相当于高级语言的值传递.9. 标记耦合指两个模块之间传递的是数据结构,如高级语言的数组名,记录名,文件名等这些名字即为标记,其实传递的是这个数据结构的地址.10. 控制耦合指一个模块调用另一个模块时,传递的是控制变量(如开关,标志等),被调模块通过该控制变量的值有选择地执行块内某一功能.11. 公共耦合指通过一个公共数据环境相互作用的那些模块间的耦合.公共数据环境可是是全程变量或数据结构,共享的通信,内存的公共覆盖区及任何存储介质上的文件,物理设备等(也有将共享外部设备分类为外部耦合).12. 当一个模块直接使用另一个模块的内部数据,或通过非正常口转入另一个模块内部,这种模块之间的耦合为内容耦合.13. 内聚块又称块内联系指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量.14. 偶然内聚指一个模块内的各处理元素之间没有任何联系.15. 逻辑内聚指模块内执行个逻辑上相似的功能,通过参数确定该模块完成哪一个功能.16. 把需要同时执行的动作组合在一起形成的模块为时间内聚模块.17. 通信内聚指模块内所有处理元素都在同一个数据结构上操作(有时称之为信息内聚),或者指各处理使用相同的输入数据或者产生相同的输出数据.18. 顺序内聚指一个模块中各个处理元素都密切相关于同一功能且必须顺序执行,前一功能元素的输出就是下一功能元素的输入.19. 功能内聚指模块内所有元素共同完成一个功能,缺一不可.因此模块不能再分割.第五章 软件详细设计1. PAD图指问题分析图(Problem Analysis Diagram),是一咱算法描述工具,它是一种由左往右展开的二维树型结构.PAD图的控制流程为自上而下,从左到右地执行.2. 过程设计语言(Process Design Language,简称PDL),也称程序描述语言(Program Descrip on Language),又称为伪码.它是一种用于描述模块自法设计和处理细节的语言.第六章 软件编码1. 程序设计风格指一个人编制程序时所表现出来的特点,习惯逻辑思路等.2. 指程序从一个计算机环境移值到另一个计算机环境的容易程序.第七章 软件测试1. 语句覆盖是指设计足够的测试用例,使被测程序中每个语句至少执行一次.2. 判定覆盖指设计足够的测试用例,使得被测程序中每个判定表达式至少获得一次”真”和”假”值,从而使程序的每一个分支至少都通过一次.3. 条件覆盖指设计足够的测试用例,使得判定表达工中每个条件的各种可能的值出现一次.4. 判定/条件覆盖标准指设计足够的测试用例,使得判定表达式中的每个条件的所有可能取值至少出现一次,并使每个判定表达式所有可能的结果也至少出现一次.5. 条件组合覆盖是比较强的覆盖标准,它是指设计足够的测试用例,使得每个判定表达式中条件的各种可能的值的组合都至少出现一次.6. 路径覆盖是指设计足够的测试用例,覆盖被测程序中所有可能的路径.7. McCabe定义程序图的环路为程序图中区域的个数.区域个数为边和结点圈定的封闭区域数加上图形外的区域数1.8. 黑盒测试是功能测试又称为功能测试或数据驱动测试.9. 白盒测试是对程序中尽可能多和逻辑路径进行测试,检验内部控制结构和数据结构是否有错,实际的运行状态与预期的状态是否一致.10. 驱动模块是用来模拟被测模块的上级调用模块的模块,功能要比真正的上级模块简单得多,它只完成接受测试数据,以上级模块调用被测模块的格式驱动被模块,接收被测模块的测试结果并输出.11. 桩模块用来代替被测试模块所调用的模块它的作用是返回被测模块所需的信息.12. 单元测试指对源程序中每一个程序单元进行测试,检查各个模块是否正确实现规定的功能,从而发现模块在编码中或算法中的错误.13. 集成测试是指在单元测试的基础上,将所有模块按照设计要求组装成一个完整的系统进行测试,故也称组装测试或联合测试.14. 确认测试又称有效性测试.是为了检查软件的功能与性能是否与需求规格说明书中确定的指标相符合所进行的测试.15. 调试是为了确定错误的原因和位置,并改正错误所进行的工作,因此调试也称为纠错.第八章 软件维护1. 在软件运行/维护阶段对软件产品所进行的修改就是维护.2. 为了识别和纠正错误,修改软件性能上的缺陷,应进行确定和修改错误的过程,这个过程就称为校正性维护.3. 随着计算机的飞速发展,计算机硬件,软件及数据环境在不断发生变化,为了使应用软件适应这种变化而修改软件的过程称为适应性维护.4. 在犯罪分子件运行时期中,用户往往会对软件提出新的功能要求与性能要求.这种增加软件功能,增强软件性能,提高软件运行效率而进行的维护活动称为完善性维护.5. 为了提高软件的可维护性和可靠性而对软件进行的修改称为预防性维护.6. 软件可维护性是指软件能够被理解,校正,适应及增强功能的容易程度.第九章 软件开发的增量模型1. 软件开发中的原型是软件的一个早期可运行的版本,它反映了最终系统的重要特性.第十章 面向对象的方法1. 对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则,计划或事件.2. 具有相同或相似性质的对象的抽象就是类具有相同或相似性质的对象的抽象就是类3. 对象之间进行通信的构造叫做消息.4. 类中操作的实现过程叫做方法,一个方法有方法名,参数,方法体.5. 继承性是子类自动共享父类数据结构和方法的机制这是类之间的一种关系.6. 在类层次中,子类只继承一个父类的数据结构和方法,称为单重继承.7. 在类层次中,子类继承了多个父亲的数据结构和方法,称为多重继承.8. 多态性是指相同的操作或函数,过程可作用于多用户种类型的对象上并获得不同结果.不同的对象收到同一消息可以产生不同的结果,这种现象称为多态性.9. 抽象是指强调实体的本质,内在的属性,忽略一些无关紧要的属性.10. 信息隐蔽是指所有软件部件内部都有明确的范围以及清楚的外部边界每个软件部件都有友好的界面接口,软件部件的内部实现与外部可访问性分离.11. 链表示对象间的物理与概念联结.12. 关联表示类之间的一种关系,就是一些可能的链的集合.第十一章 软件质量与质量保证1. 软件按照设计要求,在规定时间和条件下不出故障,持续运行的程度.2. 为了完成预定功能,软件系统所需的计算机资源和程序代码数量的程度.3. 找到并改正程序中的一个错误所需代价的程度.4. 将一个软件系统从一个计算机系统或环境移植到另一个计算机系统或环境中运行时所需的工作量.5. 将一个系统耦合到另一个系统所需的工作量.6. 修改或改进一个已投入运行的软件所需工作量的程度.7. 一个软件能再次用于其他相关应用的程度.8. 设计的规格说明书要符合用户的要求.9. 程序要按照设计规格说明所规定的情况正确执行.10. 冗余是指实现系统规定功能是多余的那部分资源,包括硬件,软件,信息和时间.第十二章 软件工程管理1. 软件配置管理,简称SCM,是一组管理整个软件生存期各阶段中变更的活动是一组管理整个软件生存期各阶段中变更的活动2. 软件配置项是软件工程中产生的信息项,它是配置管理的基本单位.3. 基线是软件生存期中各开发阶段的一个特定点,它的作用是把开发各阶段工作的划分更加明确化,使本来连续的工作在这些点上断开,以便于检查与肯定阶段成果.4. 文档是指某种数据媒体和其中所记录的数据.在软件工程中,文档用来表示对需求,工程或结果进行描述,定义,规定,报告或认证的任何书面或图示的信息.它们描述和规定了软件设计和实现的细节,说明使用软件的操作命令.第十三章 软件开发环境1. 软件开发环境是相关的一组软件工具集合,它支持一定的软件开发方法或按照一定的软件开发模型组织而成.2. 软件工具是指为支持计算机软件的开发,维护,模拟,移植或管理而研制的程序系统.3. CASE是一组工具和方法的集合,可以辅助软件开发生命周期各阶段进行软件开发.4. 一个组织中的CASE系统从被始需求到完全废弃这一生存期.5. 一个CASE工作台是一组工具集,支持像设计,实现或测试等特定的软件开发阶段.。
软件工程名词解释和简答题总结
软件工程名词解释和简答题总结软件工程是现代技术领域中的一个重要分支,它涉及软件开发的各个方面。
在软件工程的学习和实践过程中,我们会遇到大量的专业名词和简答题。
本文将对一些常见的软件工程名词进行解释,并对一些常见的简答题进行总结。
一、软件工程名词解释1. 软件开发生命周期(Software Development Life Cycle,SDLC):指软件产品从定义需求到交付使用的全过程,包括需求分析、软件设计、编码测试、部署和维护等阶段。
2. 需求工程(Requirement Engineering):指在软件开发的早期阶段通过系统分析和用户需求收集,明确用户需求、软件功能和性能等要求的过程。
3. 原型化开发(Prototyping):指在软件开发的早期阶段建立可操作的原型,以便用户和开发者共同验证需求、功能和界面设计。
4. 面向对象(Object-Oriented):是一种软件开发方法,将程序设计看作是对象之间的消息传递,以对象为中心进行分析和设计。
5. UML(Unified Modeling Language):是一种用于软件工程的标准建模语言,用于描述软件系统的结构和行为,包括类图、时序图、活动图等。
二、简答题总结1. 简述软件工程的目标和原则。
软件工程的目标是通过科学化、系统化和规范化的方法,提高软件开发过程的质量和效率,满足用户需求。
其原则包括可行性、适应性、可理解性、可移植性、可维护性等。
2. 解释并比较瀑布模型和敏捷开发模型。
瀑布模型是软件开发中的经典模型,将软件开发过程划分为需求分析、设计、编码、测试和维护等阶段,各阶段按顺序进行,流程线性。
而敏捷开发模型强调快速迭代和用户反馈,将开发过程划分为多个迭代周期,每个周期完整包含需求分析、设计、编码、测试和交付等阶段。
3. 什么是软件需求规格说明书?软件需求规格说明书是在需求工程阶段编写的文档,用于明确软件系统的需求、功能和性能等要求。
解读计算机软件的技术术语与专业名词
解读计算机软件的技术术语与专业名词计算机软件是现代社会中不可或缺的一部分,它带来了许多技术术语和专业名词。
这些术语和名词通常用于描述软件开发、编程和计算机系统的各个方面。
本文将解读计算机软件的技术术语与专业名词,以帮助读者更好地理解和应用这些概念。
一、程序(Program)程序是计算机上可以执行的指令集合。
它指定了计算机要完成的任务,并告诉计算机如何按照特定的顺序执行这些任务。
程序可以采用不同的编程语言编写,例如C++、Java和Python等。
程序是软件的基本组成部分,它通过执行指令来实现特定的功能。
二、算法(Algorithm)算法是解决特定问题的步骤或方法。
它描述了一系列操作,以帮助解决问题并达到期望的结果。
算法可以用伪代码或特定的编程语言表示,它是程序设计的基础。
好的算法可以提高程序的效率和性能。
三、编程语言(Program Language)编程语言是一种用于编写程序的形式化语言。
它定义了一组规则,用于在计算机上表达和实现算法和计算过程。
常见的编程语言包括C、C++、Java、Python和Ruby等。
不同的编程语言具有不同的语法和特性,开发者可以根据需求选择合适的编程语言。
四、软件工程(Software Engineering)软件工程是一门研究和应用工程原则和方法的学科,用于开发和维护高质量的软件系统。
它涵盖了软件项目的生命周期,包括需求分析、设计、编码、测试和维护等阶段。
软件工程的目标是提高软件的可靠性、可维护性和可重复性。
五、编译器(Compiler)编译器是一种将高级程序代码翻译为机器语言或字节码的程序。
它将程序代码作为输入,经过词法分析、语法分析、语义分析和代码生成等过程,生成可执行的目标代码。
编译器可以将整个程序一次性翻译为目标代码,也可以采用解释执行的方式逐行翻译和执行程序。
六、操作系统(Operating System)操作系统是计算机系统的核心组件,它管理计算机硬件和软件资源,为用户和应用程序提供接口和服务。
软件工程专业术语
软件工程专业术语1. 软件工程 (Software Engineering)软件工程是一门关于设计、开发、测试和维护软件的学科。
它涵盖了一系列的方法、工具和技术,旨在提高软件开发的效率和质量。
2. 需求工程 (Requirement Engineering)需求工程是软件工程的一个重要环节,它负责收集、分析和规范软件系统的需求。
通过需求工程,可以确保软件开发符合用户的期望和预期。
3. 软件开发生命周期 (Software Development Life Cycle, SDLC)软件开发生命周期是指软件从概念到退役的整个过程。
它包含需求分析、设计、编码、测试和部署等阶段,每个阶段都有相应的工作任务和产物。
4. 原型设计 (Prototype Design)原型设计是软件开发过程中的一种设计技术,目的是通过建立一个简化的模型来验证系统的功能和用户界面。
原型设计可以帮助开发团队和客户更好地理解系统的要求。
5. 软件测试 (Software Testing)软件测试是用来检验系统是否满足规定要求的过程。
它包括单元测试、集成测试、系统测试和验收测试等不同层次和阶段的测试。
6. 配置管理 (Configuration Management)配置管理是为了管理和跟踪软件系统的版本和变更。
它包括对代码、文档和配置文件等进行版本控制,并确保系统有追溯和可重现性。
7. 敏捷开发 (Agile Development)敏捷开发是一种迭代和增量的软件开发方法,强调与客户的紧密合作、快速反馈和灵活应变。
敏捷开发通常采用短周期的迭代,每个迭代都会交付一部分可用的软件产品。
8. 面向对象 (Object-Oriented)面向对象是一种常用的软件设计方法,它以对象为中心,将数据和对该数据的操作封装到对象中。
面向对象的设计具有高度的可重用性和可维护性。
9. 设计模式 (Design Pattern)设计模式是一套被广泛应用于软件设计的解决方案。
软件工程名词解释汇总
软件工程名词解释汇总软件工程名词解释汇总软件工程是一门研究使用系统性和科学性的方法开发、维护和管理软件的学科。
在软件工程领域,有许多重要的名词需要我们了解和掌握。
本文档将详细解释这些名词的含义和作用。
1.软件需求软件需求是指在软件开发过程中对系统的功能、性能、接口等方面的描述和规定。
它是软件工程的基础,包括用户需求、系统需求和软件需求规格。
2.软件设计软件设计是指根据软件需求,将系统分解为更小的模块,并确定模块之间的关系和功能。
它包括结构设计、数据设计和接口设计等方面。
3.软件开发软件开发是指根据软件设计,使用编程语言和开发工具进行编码和测试,以实现软件系统的功能。
它包括需求分析、设计、编码、集成和测试等阶段。
4.软件测试软件测试是指通过一系列测试方法和技术,验证软件系统的正确性、完整性和稳定性。
它包括单元测试、集成测试、系统测试和验收测试等阶段。
5.软件维护软件维护是指对已经交付使用的软件进行修改、优化和修复缺陷,以满足用户的需求和改进软件的质量。
它包括纠错性维护、适应性维护和完善性维护等方面。
6.软件过程模型软件过程模型是指将软件开发过程划分为不同的阶段,并确定每个阶段的任务和产出物。
常见的软件过程模型有瀑布模型、迭代模型和敏捷开发模型等。
7.软件配置管理软件配置管理是指对软件和其相关文档进行版本控制、变更管理和发布管理的过程。
它包括配置项识别、变更控制和配置审计等方面。
8.软件工程质量软件工程质量是指软件系统满足用户需求、具备良好性能和稳定性的程度。
它包括功能性质量、性能质量和可维护性质量等方面。
9.Lean软件开发Lean软件开发是一种以减少浪费和提高价值创造为核心的敏捷软件开发方法。
它强调团队协作、持续改进和快速交付。
10.DevOpsDevOps是一种将软件开发和运维进行整合的方法。
它通过自动化工具和流程,实现软件系统的快速交付和稳定运行。
11.持续集成持续集成是一种通过频繁地将开发人员的代码合并到主干分支,并经过自动化测试和构建,保证软件系统的稳定性和可靠性。
(整理)软件工程名词解释
(整理)软件工程名词解释软件工程名词解释软件工程是一门科学与技术,旨在设计、构建、管理和维护复杂软件系统的原则和方法。
在软件开发过程中,会涉及到许多专业术语和概念。
本文将对一些常见的软件工程名词进行解释和说明。
需求分析(Requirements Analysis)需求分析是软件开发过程中的第一步,旨在详细了解和定义用户对软件系统的需求。
通过与与用户和其他相关利益相关方的沟通和交流,需求分析师能够收集和理解用户需求,从而为软件设计和开发提供基础。
面向对象(Object Oriented)面向对象是一种软件设计和开发的范式,强调将软件系统分解为一个个独立的对象,并定义了这些对象之间的关系和交互方式。
面向对象的设计理念更加灵活和可拓展,能够提高软件的复用性和维护性。
原型(Prototype)原型是在软件开发过程中用于验证和改进设计的预备模型。
通过创建原型,开发人员能够更好地与用户交流,了解和确认软件系统的功能和界面等设计要素。
原型有助于减少需求变更和开发错误的风险。
迭代(Iteration)迭代是软件开发过程中的一个重要概念,指的是将软件开发划分为多个可重复的步骤。
在每一次迭代中,开发团队会对软件进行设计、编码、测试和评估等环节,从而逐步改进软件系统。
测试驱动开发(Test-Driven Development)测试驱动开发是一种软件开发方法,将测试作为开发的驱动力。
在这种方法中,开发人员首先编写测试用例,然后根据测试用例进行代码编写,最后再进行代码的重构和改进。
测试驱动开发有助于确保软件系统的质量和可靠性。
编码规范(Coding Standards)编码规范是一套开发人员在编写程序代码时应遵循的规则和标准。
编码规范的制定可以提高代码的可读性和可维护性,降低软件系统出错的风险。
常见的编码规范包括命名规范、缩进规范、注释规范等。
版本控制(Version Control)版本控制是一种用于管理和追踪软件开发过程中代码变更的工具。
软件工程(名词解释)
1、软件:能完成预定功能、性能,并对相应数据进行加工的程序和描述数据及其操作的文档。
2、软件工程:是采用工程的概念、原理、技术和方法,并结合正确的管理技术和当前能够得到的最先进的技术方法,经济高效地开发和维护软件的一门工程学科。
3、软件过程:软件过程是指软件开发人员为了开发出高质量的软件产品所需完成的一系列任务的框架,它规定了完成各项任务的工作步骤。
4、软件生命周期:一个软件从定义、开发、使用和维护直至最后被废弃要经历的漫长时期。
5、软件危机:是指计算机软件的开发和维护过程中所遇到的一系列严重的问题。
页脚6、结构化分析:是面向数据流自顶向下逐步求精获取的方法,适用于数据处理系统的需求分析。
7、实体—联系图:描述系统所有数据对象的组成和属性及数据对象关系的图形语言。
8、数据字典:由数据条目组成,数据字典描述、组织和管理数据流图中的数据流、加工、数据存储等数据元素。
9、结构化设计:基于数据流的设计方法,将数据流图转换为软件结构。
10、模块化:是指解决一个复杂问题时自顶向下逐层把软件系统划分成若干模块的过程。
页脚11、逐步求精:是一种自顶向下的设计策略,是人类解决复杂问题时常用的一种技术。
是为了能集中精力解决主要问题而尽量推迟考虑问题的细节。
12、信息隐蔽:在设计中确定模块时使得一个模块的所包含的信息,对于不需要这些信息的模块来说,是不能访问的。
13、耦合:也称模块之间的联系。
指在软件系统结构中,各模块间相互联系紧密程度的度量。
模块之间的联系越紧密,其耦合程度就越强,模块的独立性就越差。
14、内聚:也称块内联系,指模块的功能强度的度量,是一个模块内部各元素之间彼此结合紧密程度的度量。
15、作用域:是指受该模块内的一个判断影响的所有模块的集合。
页脚16、控制域:指模块本身以及其所有直接或间接从属于它的模块集合。
17、扇出:指一个模块直接调用模块的数目。
18、扇入:指有多少个上级模块直接调用它。
19、模块独立性:每个模块独立完成一个相对独立的特定子功能,并且和其他模块之间的关系很简单。
软件专业术语大全
1.SQL(Structured Query Language)结构化查询语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
同时也是数据库脚本文件的扩展名。
SQL 是用于访问和处理数据库的标准的计算机语言;2.SQL 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今五十年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不再仅仅是存储和管理数据,而转变成用户所需要的各种数据管理的方式。
数据库有很多种类型,从最简单的存储有各种数据的表格到能够进行海量数据存储的大型数据库系统都在各个方面得到了广泛的应用。
3.数据结构是计算机存储、组织数据的方式。
数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。
通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。
数据结构往往同高效的检索算法和索引技术有关。
编程语言算法可以理解为有基本运算及规定的运算顺序所构成的完整的解题步骤。
或者看成按照要求设计好的有限的确切的计算序列,并且这样的步骤和序列可以解决一类问题。
4.WEB 服务器也称为 WWW(WORLD WIDE WEB)服务器,主要功能是提供网上信息浏览服务。
WWW 是 Internet 的多媒体信息查询工具,是 Internet 上近年才发展起来的服务,也是发展最快和目前用的最广泛的服务。
正是因为有了 WWW 工具,才使得近年来 Internet 迅速发展,且用户数量飞速增长。
5.标记语言,也称置标语言,是一种将文本(Text)以及文本相关的其他信息结合起来,展现出关于文档结构和数据处理细节的电脑文字编码。
与文本相关的其他信息(包括例如文本的结构和表示信息等)与原来的文本结合在一起,但是使用标记(markup)进行标识。
6.脚本语言,脚本语言或扩建的语言,又叫动态语言。
是一种编程语言控制软件应用程序。
脚本通常以文本(如 ASCII)保存,只在被调用时进行解释或编译。
软件工程名词解释汇总
软件工程名词解释汇总软件工程名词解释汇总1:软件工程(Software Engineering):软件工程是指应用科学和数学原理、经验法则和艺术方法,以系统化生产、运行和维护高质量软件的工程化过程。
2:软件工程师(Software Engineer):软件工程师是指具备软件开发和维护技能的专业人员,负责软件生命周期中的不同阶段。
2.1 软件开发人员(Software Developer):负责开发和编码软件系统的专业人员。
2.2 软件测试工程师(Software Test Engineer):负责进行软件测试和质量保证的专业人员。
2.3 软件项目经理(Software Project Manager):负责规划、组织和管理软件项目的专业人员。
3:软件生命周期(Software Life Cycle):软件生命周期指软件从定义需求到和维护的整个过程。
3.1 需求分析(Requirements Analysis):在软件开发过程中,通过研究用户的需求并将其转化为明确的规格说明。
3.2 设计(Design):根据需求分析的结果,制定软件系统的整体结构和模块划分,并确定软件的详细设计方案。
3.3 编码(Coding):根据设计方案,将软件系统的功能代码实现出来。
3.4 测试(Testing):对编码完成的软件进行测试,以验证软件的正确性和可靠性。
3.5 验收(Acceptance):经过测试合格后,由用户进行验收,确认软件符合需求并满足用户的期望。
3.6 维护(Mntenance):在软件生命周期的后期,对软件进行修复、改进和升级,以保持其持续可用和稳定。
4:面向对象(Object-Oriented):面向对象是一种软件设计方法,强调将问题分解为多个相互关联的对象,并通过对象之间的通信和相互协作来解决问题。
4.1 类(Class):面向对象中的基本概念,用于描述具有相同属性和行为的对象的集合。
4.2 对象(Object):类的一个实例,具有独立的状态和行为。
软件工程名词解释
软件工程名词解释软件工程是一门涵盖软件开发、维护和管理的学科,它通过系统化的方法和工具,以及有效的团队合作,致力于开发高质量、可靠、安全且易于维护的软件。
在软件工程中,有许多专业术语,下面将对其中一些常见的名词进行解释。
1. 需求分析(Requirements Analysis)需求分析是软件开发的第一步,它涉及与用户交流、理解用户需求,并将其转化为可执行的软件功能和特性的过程。
在需求分析中,软件工程师会对系统进行详细的调研和访谈,以确定用户的期望和需求,并将其编写成需求规格说明书。
2. 设计模式(Design Patterns)设计模式是一种在软件设计过程中经常用到的解决方案,它提供了一种通用的方法来解决常见的设计问题。
设计模式是建立在面向对象设计原则上的,通过将各种设计思想和经验总结为可重用的模式,可以使软件设计更加灵活、可扩展且易于维护。
3. 迭代开发(Iterative Development)迭代开发是一种软件开发方法,它将开发过程分为若干个迭代周期,每个周期都包含需求分析、设计、编码和测试等阶段。
每个迭代周期都会逐渐完善和扩展系统的功能,以适应用户需求的不断变化。
迭代开发强调快速交付可用的软件,并通过与用户的积极反馈来不断优化系统。
4. 敏捷开发(Agile Development)敏捷开发是一种以迭代、增量和协作为基础的软件开发方法,其宗旨是更快、更灵活地响应用户需求的变化。
敏捷开发强调团队合作、持续交付和快速反馈,通过频繁的沟通和迭代开发,来使软件开发过程更加灵活、高效。
5. 工作流程(Workflow)工作流程是指一系列有序的任务和活动,以完成特定的目标。
在软件工程中,工作流程描述了软件开发过程中各个阶段和任务的流程和关系。
通过定义和管理工作流程,可以提高团队的协作效率和工作质量。
6. 单元测试(Unit Testing)单元测试是一种对软件系统中最小的可测试单元进行验证的测试方式。
软件开发名词解释
软件开发名词解释软件配置(集成)答:设立一个有效的总控部分,它能够在各个具体工具之上,实现信息的正确传递与转换,帮助人们完成上述协调与配合的工作,从而形成一个统一的、完整的支撑环境,并通过一个统一的、友好的人机界面与用户对话。
CASE工具指“计算机辅助软件工程”或“计算机辅助系统工程”,它的基本思想与软件开发工具完全一致,即应用计算机自身处理信息的巨大能力,帮助人们开发复杂的软件或应用系统。
水波效应:因修改程序带来的连带影响。
当人们修改程序的某一处时,由于没有充分考虑到这一修改对相关部分带来的影响,结果出现了新的错误。
项目管理(Project Mangement)答:项目管理指与固定的生产线上的日常生产管理不同的,具有更大变动性、时间性的一类管理任数据字典(DataDictionary)答:数据字典是一种描述数据内容的概念模式。
它用表格形式列出数据的基本属性以及相互关系。
它的雏型是编写软件时的变量说明或标识符清单。
它也常常与其他描述工具互相补充、配合使用。
实体关系图答:实体关系图是一种用于描述静态数据的概念模式。
它以实体、关系、属性三个基本概念概括数据的基本结构。
数据流程图(DataFlowDiagram)答:数据流程图描述某一业务处理系统的信息来源、存储、处理、去向的全面情况,简明扼要地勾画全局。
项目管理答:项目管理是与固定的生产线上的日常生产管理不同的,具有更大的变动性、时间性的一类管理任务。
项目数据库答:项目数据库实际上是信息库的一个组成部分。
它记录的是项目本身进展的各种有关信息。
项目负责人应当随时掌握这些情况,一方面把住验收质量关,使每一步都扎扎实实,同时掌握全局,及时发现瓶颈环节,从组织上加以解决。
黑箱检验:输入一些信息,通过观察是否能得出预期输出来判断软件是否正确的一种软件测试方法。
黑箱检验只能证明程序有错,而不能证明程序没错。
模块的凝聚性:模块的功能在逻辑上尽可能的单一化、明确化,最好做到模块与任务的一一对应,即每个模块完成一个任务,反之每一项任务仅由一个模块来完成。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
【转载】软件开发专业技术名词的解释【转载】软件开发专业技术名词的解释2019-11-25 13:09"Win32编程"很不幸,我从开始学习编程到理解这个名词中间隔了很长的时间(上个世纪的学习环境可见一斑)。
很长时间里我都不明白32是指什么,我用过Dos,Win31,win95,win97.但好像没用过名为Win32的操作系统啊?很久以后我才知道,32在这里并不是指操作系统的版本号,而是指32位。
微软操作系统在win31及其以前都是DOS系统,windows只是在dos 下运行的一个大程序而已。
在其后win95则稍有改变,windows除了DOS 核心以外也真正成为了操作系统的一部分,提供着各类操作系统提供的服务。
应该说,在win95之后的windows(新近的64位win系统以前)都可以称之为win32系统平台(95/98实际上是16与32位混合)。
所以在这样的平台上,直接或间接使用系统提供的API编程,就称之为Win32编程。
对Visual Studio而言,Win32编程一般指SDK、MFC、ATL这几类开发方法,其中ATL在国内应用不是很广泛,一般应用于以COM组件为架构的中大型软件产品。
"SDK":Software Development Kit,常译为软件开发(工具)包在Win32编程领域一般指与MFC这类框架编程相区别的,直接调用Windows提供的API的开发方式,与字面原意有一些区别。
另外一个经常见到的说法就是某软件(硬件)带有自己的一套SDK,这里其实一般是指一套API库函数或者类库,供上一层的开发者调用。
又譬如常说的DX 的SDK,其实是微软开发的一套COM组件,供上层开发者使用。
总之,供程序员使用的比较完备的代码库,就可以称之为SDK;"MFC":Microsoft Fundation classes微软基础类库大家都知道,使用SDK编程方式往往有很多每次都重复的固定不变的一些代码,为了提高编程的效率,减少上千个API带给开发人员巨大的精神压力,微软开发出了这么一个类库,注意,这个类库与操作系统本身无任何关系,它只是对API进行了一个面向对象的封装,当然,还给出了一系列编程的框架。
使用SDK的方法,使用Visual Studio,通过调用Windows API,MFC你也可以做得出来。
MFC把一些固定不变的代码已经写好了,只在编译时候链上,所以我们的代码里看不到WinMain(),而事实上整个程序的运行,和SDK的方式无任何区别,初学者请记住这一点。
另,补充一点个人感想,MFC的初衷,带给开发人员更多的便利,我觉得并不太成功。
学习MFC所费的力气和最终的所得,并不太成正比。
"API":Application Programming Interface,应用程序接口这个词的出现频率很高,从某种意义上来说,也可以看作是SDK的一个子集。
这也是做给程序员的程序,不过一般指用导出函数的方式提供服务的函数库,不包括类库和组件。
"GDI":Graphic Device Interface,图形设备接口这个是Win32程序下最常用的显示方式,与DirectX、OpenGL处于同一级。
在DOS要显示一些东东可不是容易的事,最简单的是调用一些C的图形库函数来实现显示,不过一般也就是些画线,填色,输出几个文字,效果很弱(所以DOS程序界面一般都不怎么样,且实现起来不是一般的复杂),要复杂一点的动画/图片显示什么的,经常要用到的就是硬件中断,调用一些显卡自身的子程序(固化在显卡内的)来做。
因为每一个显卡都不同,所以DOS的游戏兼容常常由于显卡的差异而很糟糕。
到Windows下大家就幸福多了,Windows将硬件这一层屏蔽起来,用一个表格(Device Context)来代表一个显示,我们要做的就是在这个表格上填好相关参数,然后画上我们想画的东东,然后操作系统会依照这个表格(DC),把相应的显示内容(一般是一块显示内存)传送到指定显卡的指定的显存,再由显卡传给显示屏。
我们不再需要与不同的显卡打交通,这是一个十分伟大的胜利!GDI中最常用的是双缓存技术,就是说你可以在内存中创建(也就是复制)一个DC,只不过在这个DC中显示的不再被传送到显示器上。
有什么用呢?因为它的各参数是与当前屏幕DC一致的(COPY嘛,当然是这个结果),所以它的显示内容可以完整无失真地传送到屏幕DC上。
我们通常在内存DC上画图,譬如画一圆,再画一条直线,画完后一次性地传送到屏幕DC上,这样对用户来说屏幕只刷新了一次,可以解决你画一点内容屏幕即刷新一次导致的闪烁问题。
当然,双缓冲甚至多缓冲还有很多别的用处,那就要靠自己揣摩了。
"DirectX"通常简称为DX(读音:低叉)这是个很吸引人眼球的名词,读起来就很上口:)。
Windows为我们作了许多屏蔽底层硬件的工作,其中DX是最知名的技术之一。
操作系统要与各类硬件打交道,特别是多媒体相关的,譬如显卡、声卡、手柄输入、多媒体流的网络传输等等,这些事情如果都自己来弄的话,那就太要命了(这些一般都涉及系统底层,自己也很难做出来)。
而DX则正是这么一套操作系统提供的隔离多媒体硬件与程序员的间质,DX自身一般并不实现处理的能力,它是一个标准,要求硬件来满足,好比DX提供一个函数名,硬件来实现函数内容一样。
通过它我们可以非常简单而快速地调用硬件提供的各类服务。
它主要包括DirectDraw(通过直接访问显示硬件来提供快速的图象处理能力),DirectSound(提供了软硬件的低延迟声音混频和回放,以及直接访问音频设备的能力),DirectPlay(它明确的提供了通用环境连接能力来简化你应用程序之间的通讯服务),Direct3D(DirectDraw的3D版),DirectInput(简化你的应用程序访问鼠标、键盘和操纵杆设备的能力),DX5.0之后又增加了一些(如DirectShow),不再详述。
DX一个重要的特点就是你可以通过它直接访问硬件而无需知道硬件的具体细节。
譬如DirectDraw,就能够越过内存而直接访问显存,这样的速度将比GDI快很多,不在一个数量级上。
补充一点:DX是以组件的方式提供的,而不是通常的导出API的形式。
DX SDK的最新版本是9.0"COM":component object model,组件对象模型,一般简称组件。
这是微软为了解决代码重用的一个重要机制。
重用代码的最简单办法是源代码重用,把写好的函数和类加到自己当前的代码中,编译即可。
简单是简单,敝病却显然的多。
另一个常用的方法是单独做成模块,以DLL的形式分发,DLL导出函数或者类,客户程序用动态/静态链接的方法将其加载,这显然比前一种源代码的方法好一些,难度也不大,最为常用。
但DLL也有一些不足,最根本的,它不是二进制兼容,DLL版本升级一次就需要与客户程序代码重链接一次,有些时候这几乎是不可能的任务。
为了更好地让编程像"搭积木"一样简单,让模块可以完美地配合,完美地替换,COM产生了。
COM不是类库,不是代码,不是操作系统的服务,而是一套编程模型,理论上来说,它与语言无关,与操作系统无关,unix下同样可以做COM。
COM是一种程序结构模型标准,你做的DLL或EXE在结构上满足这么一个标准,那这个DLL或EXE就是一个组件,它将在该平台上成为二进制兼容。
COM主要利用了注册表来登记本模块的信息。
客户程序调用时首先查注册表,找到所需组件的位置(这实现了位置透明),然后就用Loadlibrary把它加载进来,这和普通调用没有本质区别,区别在于由于组件特殊的实现方法使得整个过程中用户程序都不知道组件的位置,组件的类的实例化过程,如何销毁,不能直接访问组件的任何实现细节,用户只与组件的几个public接口打交道。
这将实现真正的模块之间的独立。
对用户程序而言,对于目标组件的认识,除了接口,一无所知。
在接口不变的情况下,组件可任意替换而客户程序不作任何改动,无需编译,仅这一点,在中大型程序的模块集成的过程中就将节约相当多的时间。
"STL":Standard Template Library,标准模板库这是最早由Alexander Stepanov和Meng Lee(蛮像中国人的名字)完成,于1994年提交给ANSI/ISO标准C++委员会并通过而成为标准C++的一部分。
望文生义即可知这是一个代码库标准,不是语法标准。
简单地说,STL是以C++中的模板语法为基础建立起来的一套包含基础数据结构和算法的代码库。
STL的特点是实现了"类型参数化",即STL的代码中可处理任意自定义类型的对象,如果不使用模板技术的话,这是一件相当困难的事。
也因为这个原因,在最新的java及C#语法中均加入了对模板语法的支持,可见其重要性。
另外一个有关STL重要的话题是GP(Generic Programming),泛型。
这是与面向对象相并列的另外的一个编程模型,它以模板为基础,弱化了实体类型的差异,简化了编程时问题抽象的模型,提供了更好的封装性和弹性,对于繁杂的面向对象编程毫无疑问是一种解脱,至少是精神上的。
GP并不是用来取代面向对象的,而是作为一个有益的补充体,是面向对象很好的合作伙伴。
GP是最近几年软件架构的一个研究热点,但国内真正的应用似乎并不多见,这项技术本身还基本处于研究前沿。
一书对C++中的GP应用有很好的诠释,而这本书对脑细胞的杀伤力之大,也是其它C++书藉望尘莫及的。
想知道C++的代码技巧可以做到怎样的出神入化吗?不妨看看这本书。
"ATL":Active Template Library,活动模板库这在VC编程下应该算是比较高级的话题了,它集COM和模板技术于一身,带来了极方便的组件编写方法和极高的学习门槛。
可以说,进入ATL领域就算是进入了中级以上的编程领域。
ATL是为组件而生,它的目的是为了让程序员更方便地编写组件(纯用C++写一个最简单的组件实现一个"Hello World"对初学者来说都是要命的),同时它使用模板技术来类似于MFC一样建立了一个开发COM的框架代码库(模板库),使用该框架及模板库可以相对方便地进行组件开发。
ATL中的一个特点就是你自己的类将成为ATL代码库中某些类的父类,这是一件很有趣的事(这也是模板技术的一个特点)。
"HANDLE":句柄这是一个中文翻译很古怪的字,对初学者来说是百思不得其解的东东。