软件开发术语定义
刘昌其 (华北计算所)
软件开发在沟通过程中,常常会出现因对一些名词-术语理解的差异,而发生争论,有时甚至产生僵局使工作无法开展,不得不花时间去讨论这些名词-术语,取得共识后工作才能进行下去。其实,如果在一开始就把一些容易产生混淆的名词先定义好,让大统一认识可能就不会出现上述情况,从而提高效率和提升软件质量。
以下列举这些术语定义就是本人在软件开发中经常遇到的,有些经过思考后改写的,有些是经过编辑的,有些是汇编过来的,希望对软件开发人员有所帮助,共大家参考:
01. 标准
是权威部门为某种产品制定的有关功能、性能和质量等的一组规范,供设计和生产部门遵照执行,以提高质量,降低成本,增加互换性。
02. 设计
是确定产品功能、性能、组成、质量和成本的优化过程。(设计是产品质量形成过程中的关键环节,通过设计把顾客的要求转化为产品的功能-性能及实现采购、检验、服务、技术规范等过程并形成文件,使工作按程序进行,以确保满足规定要求。)
03. 软件设计
是将用户需求转化为软件的功能-性能、结构、组成、接口、质量和成本的优化过程。
04. 方法
是解决问题的途径和办法。
05. 工具
是降低劳动强度,提高生产率的器具。
06. 验证定义
通俗讲是确定一个操作是否正确完成的过程;或者说是通过检验和提供客观证据,证明某项过程的输出已经满足了输入的要求。若输出满足了输入的要求,则该处理过程的正确性就得到了验证,否则就没有得到验证。
软件验证定义:通过测试报告证明软件输出已经满足本阶段输入的要求。验证的要点是过程的输出一定要满足输入时的要求。
07. 认证定义 Certif1cation
认证一词的英文原意是一种由权威机构出具证明文件(如资格证书)的行为。ISO/IEC指南2:1986中对“认证”的定义是:“由可以充分信任的第三方证实某一经鉴定的产品或服务符合特定标准或规范性文件的活动”。举例来说,对第一方(卖方)生产的产品,第二方(买方)无法判定其品质是否合格,而由第三方来判定。第三方既要对第一方负责,又要对第二方负责,不偏不倚,出具的证明要能获得双方的信任,这样的活动就叫做“认证”。第三方的认证活动必须公开、公正、公平,才能有效。
08· 可靠性定义reliability
在规定的时间和条件下,软件系统维持正常运行的概率。(或者是在单位时间内,系统维持正确运行的概率。)
09. 稳定性定义 stability
a.在有干扰或破坏事件影响下仍能保持不变的能力。
b.在(无意的)干扰事件发生之后,系统恢复原始状态的能力。
10. 安全性定义,保密性定义 security
对系统(硬件、软件)进行保护,以防止其受到有意攻击和破坏(如:存取、使用、修改、毁坏或泄密)的程度。安全性也涉及对数据的传输、存储、及处理的物理保护。
11. 有效性定义 effectiveness
衡量策划活动达到策划结果的程度。
有效性(validity)是衡量实际活动达到规定目标的程度(对质量体系而言,其有效性是指文件上说到-做到的程度)。
12. 需求分析定义
定义1. 需求分析是确定系统功能-性能、组成、接口、进度、成本和设备配置的优化过程。它是软件开发的关键步骤,主要是理解和表达软件系统的用户需求,包括:软件的功能、性能、可靠性、安全性、成本消耗、开发进度、资源利用、用户接口和所需的数据库等方面。系统分析员在研究用户需求的基础上,经过分析编写成软件需求说明书或软件规格说明书,作为需求分析阶段的主要工作成果。
定义2. 需求分析是开发人员对系统需要做什么和如何做的定义过程。从系统分析的经验来看,这个过程往往是个循序渐进的过程,一次性对系统形成完整的认识是困难的。只有不断地和客户领域专家进行交流确认,方能逐步明了用户的需求。从系统开发的过程得知,系统分析时犯下的错误,会在接下来的阶段被成倍的放大,越是在开发的后期,纠正分析时犯下的错误所花费的代价越是昂贵,也越发影响系统的工期和系统的质量。
13. 软件设计定义
确定软件功能、性能、接口及组成框架的过程;可分为概要设计(也称为总体设计或结构设计)和详细设计(模块设计)两个阶段。
14. 概要设计定义
是根据需求规格书,进行功能分解,确定程序结构、数据结构的优化过程。概要设计从宏观角度解决软件“怎么做”的问题,把系统按功能分界成各个模块,明确各模块的功能以及它们之间的接口,即各模块之间的相互关系以及相互间传递的信息。
15. 详细设计定义
详细设计是根据开发工具,把概要设计逐级细化成能在运行环境上进行编程的过程。详细设计将详细描述模块内部的处理过程,即给出每个模块的详细说明、流程图、一些典型或重要方法的结构化说明或伪代码等。
详细设计主要使用的工具有三种类型①图示工具,常用的有结构化流程图、N-S图和PAD图;②伪代码语言;③表格工具,如判定表、判定树等。
16. 软件测试定义
测试是为了发现程序中的错误,而执行程序的过程。它的主要任务是发现并排除需求分析、软件设计和编码等阶段产生的各种错误,得到正确-可靠的软件。
软件测试可分为四级①单元测试;②集成测试;③确认测试;④系统测试。常用的测试方法有白盒测试和黑盒测试二种。
测试-审计:测试是事后检验产品的质量,保证产品符合客户的需求;而 SQA 的职责是审计过程的质量,保证 CMM 中各个 KPA 过程被正确执行。
17. 软件维护定义
软件维护是在软件交付使用后,为使系统正常工作而进行的修改过程。目的是及时消除故障,保证软件能正确、持续、有效地为用户服务。维护可分为:
正确性维护,即:改正在系统开发阶段发生的而系统测试阶段尚未发现的错误。
适应性维护,即:是为适应软件的外界环境变化而进行的修改。
完善性维护,即:是为扩充系统的功能和改善系统性能而进行的修改。它是软件工程的重要环节,据统计资料表明,该阶段的花费占整个软件生存期花费的60%以上。
正确性维护是在软件运行中发生异常或故障时进行的,这种故障常常是由于遇到了从未用过的输入数据组合,或与其他硬、软件接口发生了问题。适应性维护是在软件的外部环境发生的变化时进行的,如计算机的更新换代,操作系统的升级,数据格式的变动等等。完善性维护是在扩充软件的功能时进行的,目的是提高原有软件性能而开展的维护活动。
18. 项目定义:
项目是在规定时间、成本、资源(含人力资源)内,按照某种标准和规范去生产某种新产品或提供某项新服务的过程。美国-哈佛大学
·软件项目定义
是软件企业根据合同,在规定时间和预算范围内,按某种规范,达到预计收益和合同规定目标的一次性任务。
有关项目定义还有其他一些说法,列举如下,供参考:
(1) 项目是在规定时间和预算范围内,达到特定目的和预计收益的一组活动。
(2) 项目是一项创造唯一产品或服务的时限性工作。
(3) 由一组有起止时间的、相互协调的受控活动所组成的特定过程,该过程要达到符合规定要求的目标,包括时间、成本和资源的约束条件。
(4) 项目通常可表述为:是一个组织为实现自己既定的目标,在一定的时间、人员和资源约束条件下,所开展的一种具有一定独特性的一次性工作。-南开大学戚安邦教授《现代项目管理讲义》
(5)项目是一种一次性的工作,是在规定的时间内,由专门组织起来的人员来完成;它有一个明确的预期目标;并且有明确的可利用的资源,它需要运用多种学科的知识来解决问题;没有或很少有以往的经验可以借鉴。这些都是一次性的,都要求在一定的期限内完成,不得超过一定的费用,并有一定的性能要求等。所以,有人说项目是新企业、新产品、新工程、新系统和新技术的总称。
19. 项目管理定义
是通过项目的启动、计划、实施、控制与结束等阶段,为使成本、进度、质量控制在预定范围内,所进行的分析和管理活动。
有关项目管理定义还有其他一些说法,列举如下,供参考:
(1)软件项目管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对成本、人员、进度、质量、风险等进行分析和管理的活动。
(2)MBOK(Project Management Body of Knowledge)定义
为了满足甚至超越项目涉及人员对项目的需求和期望,而将理论知识、技能、工具和技巧应用到项目的活动中去。(项目管理就是组织利用资源,按照预定的成本和进度,高质量地完成一个既定的目标。)
(3)所谓项目管理就是对项目的管理,项目管理者的中心工作就是按工期、按预算、按要求完成任务。美国项目管理学会(PMI)认为:项目管理就是把各种知识、技能、手段和技术应用于项目中,以达到人们的需要和期望。
·管理要素定义
是构成管理的必要因素和要解决的关键性问题。
20. 软件配置和配置项定义
软件配置(software configuration)是指开发过程中,构成软件产品的各种文档、程序及其数据的集合。该集合中的每一个元素称为配置中的一个配置项(configuration item)。
21. 软件配置管理定义
是对软件生存期内各阶段的文档、软件实体和最终产品的演化和变更进行管理;同时要解决变更的标识、控制和发布等问题。目的是使开发制度化、提高效率、减少错误,从而保证产品的质量。
◇里程碑即通常所说的软件开发过程中的“阶段”,如果说它们之间有区别的话,那么“阶段”强调的是过程,而“里程碑”则强调过程的终点和终点的标识。这些阶段可以是需求分析阶段,概要设计阶段等等。
◇基线是软件开发过程中最重要的里程碑,不过基线更强调的是一个开发阶段到达里程碑时的结果及其内容,如:功能基线是经过评审和批准的需求规格说明书;产品基线是经集成和确认测试后,经正式审批可交付客户的软件产品的全部配置项(包括:软件实体和所有的文档)。
◇受控库是软件开发过程中,其修改权限接受控制的文档库和程序库,其中基线库和产品库,特别是产品库的修改权限将受到严格的控制,即使是授权修改的人,在修改前还必须得到批准。
◇ 基线库是受控库中一些特别重要的库,如:需求(基线)库和产品(基线)库。
◇ 产品库是存放软件最终产品(即:产品基线)的库,基于它的重要性,对它的修改将受到特别的控制。产品基线是最初批准的产品配置标识。
22. 信息定义 information
定义1:信息是物质、事物、现象的属性、状态、关系标记的集合。
定义2:信息是物质、事物、现象的属性、状态、关系、效用,借助某种方式描记、排布的信号、符号及语义的序列集合。(再如C. Shannon 有名的Information Theory 将信息定义为事件发生机率倒数的对数值,则是将信息的重要属性『机率』予以量化)
定义3:是对物质运动和生物活动产生的数据、文字、图象、声音及其内在规律的记录。
定义4:信息是有一定含义、经过加工处理、对决策有价值的数据。 信息=数据+处理
23. 文件定义 document
定义1:文件是信息及其承载媒体。如:记录、规范、程序、图样、报告、标准。
注1:媒体可以是纸张,磁盘、光盘或其他电子媒体或它们的组合。
注2:一组文件,如若干个规范和记录,经常称为"documentation"。
注3:某些要求(如易读的要求)与所有类型的文件有关,可是对规范(如修订受控的要求)和记录(如可检索的要求)可以有不同的要求。
定义2:文件是一种在媒体上记录的数据。它具有永久性并可以由人或机器阅读。通常仅用于描述人工可读的内容。例如,技术文件、设计文件、版本说明文件。
23. 规范定义 specification
阐明规定要求的文件.
注:某个规范可能与活动有关(如:程序文件、过程规范和试验规范)或与产品有关(如:产品规范、图样和性能规范)。
24. 质量定义
产品质量是产品满足客户要求的程度。客户的具体要求可以是功能、价格、寿命、易用、可靠性、稳定性、安全性以及维护服务的方便性等等。
25. 质量管理 (quality management)定义
通俗讲是在质量方面指挥和控制企业的协调活动。严格讲是制定质量方针和目标,明确岗位职责,通过质量体系的运作,即通过质量的策划、实施、控制和改进等步骤,完成管理职能的全部活动。
26. 软件质量定义
软件质量(software quality)是软件的一组固有特性(如:功能、性能)满足客户要求的程度。具体讲软件质量就是软件在正确、易用、健壮、快捷、抗毒、安全等方面满足顾客要求的程度。
27. 质量计划定义 quality plan
对特定的项目或产品,规定由谁何时使用哪些程序和相关资源的文件。或者是利用资源,为达质量目标而对特定产品的质量活动和顺序做出规定的文件。
注1:这些程序通常涉及那些质量管理过程和产品实现过程。
注2:通常,质量计划引用质量手册的部分内容或程序文件。
注3:质量计划通常是质量策划的结果之一。
28. 记录定义 record
阐明所取得的结果或提供所完成活动的证据的文件。
注1:记录可用于实现和证明可追溯性提供文件,并提供验证、预防措施和纠正措施的证据。
注2:通常记录不需要控制版本。记录和文件的最主要区别是记录不能修改。而文件可以修改。
29. 评审定义 review
为确定主题事项达到规定目标的适宜性、充分性和有效性所进行的活动。
示例:管理评审、设计与开发评审、顾客要求评审和不合格评审。
30.设计评审 design review
设计评审定义是专家对设计方案中的功能-性能是否符合用户需求,及其实现的可行性进行评价,找出设计缺陷、提出改进建议的过程。
31. 软件验证定义:
通过测试报告证明软件输出已经满足本阶段输入的要求。验证的要点是过程的输出一定要满足输入时的要求。
32. 确认定义validation
在软件开发过程结束时对软件进行评价,以确认它和软件需求是否相一致的过程。软件开发结束,通过验收报告认定:软件的功能-性能已经满足客户的需求。“确认”要注意2个要点:一是确认一定要在项目结束时进行,二是一定要由用户确认。
33. 测试用例定义 test case
根据软件功能-性能和操作流程组织的测试数据,以及与之相关的测试规程的集合。它是为了特定目的(如考察特定程序路径或验证是否符合特定的需求)而产生出来的。
34. 测试用例设计
测试用例要根据用户对软件的实际操作和业务流程来设计,同时设定测试数据。重要的是这些设定的数据一定要有意义(例如:你不能把员工的性别定为“A或B”,一定要定为“男或女”;也不能把籍贯设定为“ZXCV”或“ASDF”什么的,一定要设定成“北京”或“江苏”等);否则测试得到的结果使人看不懂,而使测试失去原有的意义。可见,对大型软件测试用例的设计和数据准备的工作量是很大的。这是因为要全面测试软件的功能和性能,不仅需要设计大量的用例,更要准备更多有实际意义的数据才行。如果有用户真实的数据就更好,没有就只好根据软件功能,设定一些有真实含义的模拟数据进行测试。只有当准备的测试数据比较全面(如:正常值、边界值、异常值),软件测试才能被全面覆盖。
35.测试用例构造
对一个新开发的软件,构造其测试用例的最好办法,就是根据用户的实际使用的案例,经过改造变成该软件的测试用例和数据。用这样的测试用例去测软件效果是最好的,因为它很接近实际使用情况。如果实在找不到用户的实际案例,只好根据软件功能认真地设计一个测试用例,并模仿用户使用情况,尽可能定义一组符合实际情况的模拟数据,将其保存在测试数据库中。
36. 测试范围定义 test coverage
一个范围,在此范围内测试系统能否满足规定需求。
37. 测试数据定义 test data
用来测试系统或系统部件的数据。
38. 测试日志定义 test log
按年月日所做的测试活动的全部有关细节的记录。
39. 测试阶段定义 test phase
软件生存周期中的一段时间。在此期间对软件产品的部件进行评价且进行集成。并评价软件产品以确定需求是否已得到满足。
40. 测试计划定义 test plan
一个文件,它叙述了对于预定的测试活动将要采取的途径。典型的计划应包括:标识要测试的项目、要完成的测试、测试进度表、人事安排要求、报告要求、评价准则,以及任何临界的要求的临时计划。
软件测试计划主要描述测试阶段的划分、测试时机的安排、测试人员的配备、测试环境的要求等。为了使测试计划相对标准些,还需要增加一些章节如:测试目的、背景、定义、参考资料等。
41. 测试规程定义 test procedure
对给定的测试,就其建立、运行和结果估计所作的详细说明。常常把一组有关的过程组合起来形成测试过程文件。
42. 测试可重现性 test repeatability
测试的一种属性。指明相同环境、不同时间进行的测试是否产生相同的结果。
43. 测试报告定义 test report
描述对系统或系统部件进行的测试行为及结果的文件。
44. 测试有效性定义 test validity
完成测试规定目标的程度。
45. 可测试性定义 testability
a.软件的一种性质。它表明了既便于测试准则的建立又便于就这些准则对软件进行评价的程度。
b.需求的定义便于对需求进行分析以建立测试准则的程度。
46. 测试定义 testing
由人工或自动方法来执行或评价系统或系统部件的过程,以验证它是否满足规定的需求;或识别出期望的结果和实际结果之间有无差别。
47. 审核定义 audit
为获得审核证据并对其进行客观的评价,以确定满足审核准则的程度所进行的系统的、独立的并形成文件的过程。
48. 审核方案 audit program
针对特定的时间框架和特定的目的所策划的一组(一个或多个)审核。
49. 审核准则定义 audit criteria
用作依据的一组方针、程序或要求。
50. 审核证据定义 audit evidence
与审核准则有关的并且能够证实的记录、事实陈述或其他信息。
注:审核发现能表明是否符合审核准则,也能指出改进的机会。
51. 审核发现定义 audit findings
将收集到的审核证据对照审核准则进行评价的结果。
注:审核发现能表明是否符合审核准则,也能指出改进的机会。
52. 审核结论定义 audit conclusions
审核组在考虑了所有审核发现以后得出的审核结果。
53. 能力定义competence
经证实的应用知识和技能的本领。
54. 知识
定义1:知识是人们经过实践、试验得到的经验和规则,它们被广泛生产和社会活动所验证。所以知识只有经过广泛实践检验,成为人们的信念和活动准则后才能真正发挥作用。
定义2:知识是人们通过对信息进行归纳、演绎、比较等手段,使其有价值的部分沉淀下来,并与已有人类知识结合形成知识体系。这部分有价值的信息就转变成知识。
55. 智慧
定义1:智慧是人类运用已有知识去解决问题的一种特有能力。
定义2:智慧是人类按照已有的知识,针对物质世界运动过程中产生的问题,根据获得的信息进行分析、对比、演绎找出解决方案的能力。