软件开发专业技术名词的解释共15页文档
- 格式:doc
- 大小:42.00 KB
- 文档页数: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. 什么是软件需求规格说明书?软件需求规格说明书是在需求工程阶段编写的文档,用于明确软件系统的需求、功能和性能等要求。
【转载】软件开发专业技术名词的解释【转载】软件开发专业技术名词的解释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":句柄这是一个中文翻译很古怪的字,对初学者来说是百思不得其解的东东。