版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1软件文档
文档的作用和分类
软件文档(document)也称文件,通常指的是一些记录的数据和数据媒体,它具有固定不变的形式,可被人和计算机阅读。它和计算机程序共同构成了能完成特定功能的计算机软件(有人把源程序也当作文档的一局部)。我们知道,硬件产品和产品资料在整个生产过程中都是有形可见的,软件生产那么有很大不同,文档本身就是软件产品。没有文档的软件,不成其为软件,更谈不到软件产品。软件文档的编制(documentation)在软件开发工作中占有突出的地位和相当的工作量。高效率、高质量地开发、分发、管理和维护文档对于转让、变更、修正、扩充和使用文档,对于充分发挥软件产品的效益有着重要意义。
然而,在实际工作中,文档在编制和使用中存在着许多问题,有待于解决。软件开发人员中较普遍地存在着对编制文档不感兴趣的现象。从用户方面看,他们又常常抱怨:文档售价太高、文档不够完整、文档编写得不好、文档已经陈旧或是文档太多,难于使用等等。究竟应该怎样要求它,文档应该写哪些,说明什么问题,起什么作用?这里将给出简要的介绍。
图文档桥梁作用
文档在软件开发人员、软件管理人员、维护人员、用户以及计算机之间的多种桥梁作用可从图9.2中看出。软件开发人员在各个阶段中以文档作为前阶段工作成果的表达和后阶段工作的依据,这个作用是显而易见的。软件开发过程中软件开发人员需制定一些工作方案或工作报告,这些方案和报告都要提供应管理人员,并得到必要的支持。管理人员那么可通过这些文档了解软件开发项目安排、进度、资源使用和成果等。软件开发人员需为用户了解软件的使用、操作和维护提供详细的资料,我们称此为用户文档。以上三种文档构成了软件文档的主要局部。我们把这三种文档所包括的内容列在图6中。其中列举了十三个文档,这里对它们作一些简要说明:
•
可行性研究报告:说明该软件开发工程的实现在技术上、经济上和社会因素上的可行性,评述为了合理地到达开发目标可供选择的各种可能实施的方案,说明并论证所选定实施方案的理由。
•
工程开发方案:为软件工程实施方案制定出具体方案,应该包括各局部工作的负责人员、开发的进度、开发经费的预算、所需的硬件及软件资源等。工程开发方案应提供应管理部门,并作为开发阶段评审的参考。
•
软件需求说明书:也称软件规格说明书,其中对所开发软件的功能、性能、用户界面及运行环境等作出详细的说明。它是用户与开发人员双方对软件需求取得共同理解根底上达成的协议,也是实施开发工作的根底。
•
数据要求说明书:该说明书应给出数据逻辑描述和数据采集的各项要求,为生成和维护系统数据文卷作好准备。
•
概要设计说明书:该说明书是概要设计阶段的工作成果,它应说明功能分配、模块划分、程序的总体结构、输入输出以及接口设计、运行设计、数据结构设计和出错处理设计等,为详细设计奠定基础。
•
详细设计说明书:着重描述每一模块是怎样实现的,包括实现算法、逻辑流程等。•用户手册:本手册详细描述软件的功能、性能和用户界面,使用户了解如何使用该软件。
文档
用户文档
用户手册
操作手册
维护修改建议
软件需求〔规格〕说明书
开发文档
软件需求〔规格〕说明书
数据要求说明书
概要设计说明书
详细设计说明书
可行性研究报告
工程开发方案
管理文档
工程开发方案
测试方案
测试报告
开发进度月报
开发总结报告
•
图三种文档
•
操作手册:本手册为操作人员提供该软件各种运行情况的有关知识,特别是操作方法的具体细节。
•
测试方案:为做好组装测试和确认测试,需为如何组织测试制定实施方案。方案应包括测试的内容、进度、条件、人员、测试用例的选取原那么、测试结果允许的偏差范围等。
•
测试分析报告:测试工作完成以后,应提交测试方案执行情况的说明。对测试结果加以分析,并提出测试的结论意见。
•
开发进度月报:该月报系软件人员按月向管理部门提交的工程进展情况报告。报告应包括进度方案与实际执行情况的比拟、阶段成果、遇到的问题和解决的方法以及下个月的打算等。
•
工程开发总结报告:软件工程开发完成以后,应与工程实施方案对照,总结实际执行的情况,如进度、成果、资源利用、本钱和投入的人力。此外还需对开发工作作出评价,总结出经验和教训。
•
维护修改建议,软件产品投入运行以后,发现了需对其进行修正、更改等问题,应将存在的问题、修改的考虑以及修改的影响估计作详细的描述,写成维护修改建议,提交审批。以上这些文档是在软件生存期中,随着各阶段工作的开展适时编制。其中有的仅反映一个阶段的工作,有的那么需跨越多个阶段。表5给出了各个文档应在软件生存期中哪个阶段编写。这些文档最终要向软件管理部门,或是向用户答复以下的问题:
表9.2软件生存期各阶段编制的文档
阶段
文档
可行性药酒与方案
需求分析
设计
代码编写
测试
运行与维护
可行性研究报告
工程开发方案
软件需求说明
数据要求说明
概要设计说明
星系设计说明
测试方案
用户手册
操作手册
测试分析报告
开发进度月报
工程开发总结
维护修改建议
•
•
哪些需求要被满足,即答复“做什么?〞•
所开发的软件在什么环境中实现以及所需信息从哪里来,即答复“从何处?〞•
某些开发工作的时间如何安排,即答复“何时干?〞•
某些开发(或维护)工作打算由“谁来干?〞•
某些需求是怎么实现的?
•
为什么要进行那些软件开发或维护修改工作?
上述十三个文档都在一定程度上答复了这六个方面的问题。这可从表中看到。
表文档所答复的问题
所提问题
文档
什么
何处
何时
谁
如何
为何
可行性研究报告
√
√
工程开发方案
√
√
√
软件需求说明
√
√
数据要求说明
√
√
概要设计说明
√
详细设计说明
√
测试方案
√
√
√
用户手册
√
操作手册
√
测试分析报告
√
开发进度月报
√
√
工程开发总结
√
维护修改建议
√
√
√
至此,我们对文档的作用有了进一步的理解。每一个文档的任务也是明确的,任何一个文档都此是多余的。文档的管理和维护
在整个软件生存期中,各种文档作为半成品或是最终成品,会不断地生成、修改或补充。为了最终得到高质量的产品,到达上节提出的质量要求,必须加强对文档的管理。以下几个方面是应注意做到的:
①软件开发小组应设一位文档保管人员,负责集中保管本工程已有文档的两套主文本。两套文本内容完全一致。其中的一套可按一定手续,办理借阅。
②软件开发小组的成员可根据工作需要在自己手中保存一些个人文档。这些一般都应是主文本的复制件,并注意和主文本保持一致,在作必要的修改时,也应先修改主文本。
③开发人员个人只保存着主文本中与他工作相关的局部文档。
④在新文档取代了旧文档时,管理人员应及时注销旧文档。在文档内容有更动时,管理人员应随时修订主文本,使其及时反映更新了的内容。
⑤工程开发结束时,文档管理人员应收回开发人员的个人文档。发现个人文档与主文本有差异时,应立即着手解决。这常常是未及时修订主文本造成的。
⑥在软件开发过程中,可能发现需要修改已完成的文档,特别是规模较大的工程,主文本的修改必须特别谨慎。修改以前要充分估计修改可能带来的影响,并且要按照:提议、评议、审核、批准和实施等步骤加以严格的控制。文档编制的质量要求
为了使软件文档能起到前节所提到的多种桥梁作用,使它有助于程序员编制程序,有助于管理人员监督和管理软件开发,有助于用户了解软件的工作和应做的操作,有助于维护人员进行有效的修改和扩充,文档的编制必须保证一定的质量。质量差的软件文档不仅使读者难于理解,给使用者造成许多不便,而且会削弱对软件的管理(管理人员难以确认和评价开发工作的进展),增高软件的本钱(一些工作可能被迫返工),甚至造成更加有害的后果(如误操作等)。
造成软件文档质量不高的原因可能是:
•缺乏实践经验,缺乏评价文档质量的标准。
•不重视文档编写工作或是对文档编写工作的安排不恰当。
最常见到的情况是,软件开发过程中不能按表5给出的进度,分阶段及•时完成文档的编制工作,而是在开发工作接近完成时集中人力和时间专门编写文档。另一方面,和程序工作相比,许多人对编制文档不感兴趣。于是在程序工作完成以后,不得不应付一下,把要求提供的文档赶写出来。这样的做法不可能得到高质量的文档。实际上,要得到真正高质量的文档并不容易,除去应在认识上对文档工作给予足够的重视外,常常需要经过编写初稿,听取意见进行修改,甚至要经过重新改写的过程。
高质量的文档应当表达在以下一些方面:①针对性;文档编制以前应分清读者对象,按不同的类型、不同层次的读者,决定怎样适应他们的需要。例如,管理文档主要是面向管理人员的,用户文档主要是面向用户的,这两类文档不应像开发文档(面向软件开发人员)那样过多地使用软件的专业术语。
②精确性:文档的行文应当十分确切,不能出现多义性的描述。同一课题假设干文档内容应该协调一致,应是没矛盾的。
⑧清晰性:文档编写应力求简明,如有可能,配以适当的图表,以增强其清晰性。
④完整性:任何一个文档都应当是完整的、独立的,它应自成体系。例如,前言局部应作一般性介绍,正文给出中心内容,必要时还有附录,列出参考资料等。同一课题的几个文档之间可能有些局部相同,这些重复是必要的。例如,同一工程的用户手册和操作手册中关于本工程功能、性能、实现环境等方面的描述是没有差异的。特别要防止在文档中出现转引其它文档内容的情况。比方,一些段落并未具体描述,而用“见××文档××节〞的方式,这将给读者带来许多不便。
⑤灵活性:各个不同的软件工程,其规模和复杂程度有着许多实际差异,不能一律看待。图6所列文档是针对中等规模的软件而言的。对于较小的或比拟简单的工程,可做适当调整或合并。比方,可将用户手册和操作手册合并成用户操作手册;软件需求说明书可包括对数据的要求,从而去掉数据要求说明书;概要设计说明书与详细设计说明书合并成软件设计说明书等。
⑥可追溯性;由于各开发阶段编制的文档与各阶段完成的工作有着紧密的关系,前后两个阶段生成的文档,随着开发工作的逐步扩展,具有一定的继承关系。在一个工程各开发阶段之间提供的文档必定存在着可追溯的关系。例如,某一项软件需求,必定在设计说明书,测试方案以至用户手册中有所表达。必要时应能做到跟踪追查。程序文档合一与动态文档
很多企业已经建立了许多庞大的计算机管理系统,而且将不断地推出新的系统。满足经营的需求须不断维护、改造计算机系统,但同时又要不影响现行生产,所以必须建立一整套机制来评价、控制和完成对系统的维护。在软件维护过程中,提出程序与文档合一的概念在软件开发的同时建立动态文档。
程序与文档合一概念的提出
一、目前软件的状况
程序与文档的形式别离,不仅是用各自独立的形式存放,而且使用不同的工具在不同的时间里书写和检索。维护程序时不能方便地得到文档的帮助,不能同步修改文档。
程序与文档的内容别离,由于程序与文档采用不同的描述,既有计算机语言也有自然语言。维护过程中不能及时、一致地更新文档或程序,使文档不能准确地描述程序而几乎成为废纸甚至带来负面价值。
软件开发与维护的别离,绝大多数软件在设计、开发时不太考虑以后可能的修改,加大了软件维护的难度,而且使维护容易引入新的错误。
这些别离也表现在设计、开发的不同阶段的文档之间的不相容性,例如:需求分析说明书是纸上的东西,在概要设计阶段不能很好地继承、利用需求分析说明书,设计、编制概要设计时必须从零开始,需要重新分析、理解需求分析,这种思维上的脱节,不仅延缓开发进度、加重设计人员的负担,而且由于理解上的不同导致不同阶段描述的对象有许多不相容情况。这些别离使得文档在系统的设计、开发、维护中的作用下降,这也是很多软件人员不愿意编写文档的主要原因。
二、程序与文档合一的概念提出
怎样才是好的文档系统呢?应当具备以下属性:
1.能够准确地描述软件、并且简单易懂;
2.能够迅速错误定位、影响分析、修正设计;
3.能够提高软件维护质量;
4.能够方便程序修改时理解程序。
为此提出了程序与文档合一的概念。这概念使软件成为真正意义上的软件:程序+文档,程序就是文档,文档集成在程序中。它要求在选择开发环境时不仅要考虑环境对设计、开发的完美支持,而且要考虑对维护、文档的支持;它要求软件人员在设计、开发过程中要考虑维护问题、文档问题;它要求程序与文档存储在同一位置、同一系统中;它要求使用相同工具进行程序与文档的书写、检索;它要求在编写和维护程序的同时形成文档,在书写文档时编写、维护程序。程序与文档合一的概念不仅存在于系统的设计、开发阶段而且存在于系统的维护阶段,它贯穿软件的生命周期。
动态文档系统是建立在程序与文档合一的概念根底上的、文档与程序一致的、简单易懂的联机文档系统。它包括构件说明与数据描述、对构件与构件之间、构件与数据之间的关系进行的描述。动态文档系统是提高了文档的可用性、易用性和连贯性,使文档更加有效,是解决维护问题的有效途径。
动态文档系统问题分析
需要解决的问题是:软件文档的内容划分与获取、文档的存储与维护、文档的检索、软件文档的生成打印。
一、软件文档的内容划分成:语义文档、结构文档、过程文档
语义文档是对软件的功能、概念、总体设计、流程、规约等用自然语言的描述,是软件人员根据标准在使用CASE工具编写并填入程序的文档,它也是为更全面的解释文档而灵活参加的额外信息。
结构文档是在软件设计工具、开发环境中对象的属性、构件间接口、构件间引用关系、软件的结构等的描述。利用词法、语法分析程序对整个系统的对象、构件进行识别、分析,获取上述描述并形成表格文件。
过程文档是对软件的设计、编码、维护过程中形成的过程描述和程序注释,如设计目的、设计人、时间等说明,利用开发环境对软件人员在设计、开发、维护过程中操作的记录形成操作跟踪。
二、程序与文档的统一存储与维护
根据程序与文档合一的概念和文档从程序中提取的要求,文档必须存放在程序中,甚至文档固有的源代码中。结构如此的程序源代码的存储必须采用一种新技术—对象仓储〔Repository〕技术,而不能采用流式文件,这样才能使程序与文档既结合又别离。程序与文档结合在一个对象仓储中,结合在统一的开发环境中;结合在修改代码时可以同时修改文档、修改文档时可以同时人工检查和修改程序,并在屡次文档生成而不会丧失手工输入的文档。程序与文档应当分别存放在对象仓储中的不同表或不同的字段中,在编译与运行时别离。
三、文档的检索
对单个对象、构件文档的检索方式是假设于文档存放在一个对象仓储中,它可以随源代码一起检索和维护。这种检索给分析和维护单个构件、对象提供文档支持。建立多种视图、编写程序对整个系统进行文档的检索和获取,完成对整个系统的分析,对整个系统进行实时文档支持。这将在例子中较详细的描述。
四、软件文档的生成打印
编写程序检索和获取整个系统的文档,按照国家软件标准的文档式样建立文档模板并将按模板生成文档和利用文字处理软件强大的功能进行创立、编辑文档并打印。
根据上述分析,文档分布和获取对开发环境提出了要求:开发环境应该是设计工具、开发工具的集成,应该基于CASE技术、对象仓储技术、构件技术、OLE技术。基于CASE技术的开发环境;设计、开发、维护过程中形成的文档并植入程序代码中,使文档成为程序的一局部。基于对象仓储技术的开发环境,将文档与程序统一存储在对象仓储中方便检索。基于构件技术的开发环境,便于识别、获取构件,分析、形成结构文档和过程文档。基于OLE等技术使文档可以很好地利用Word等文档处理软件。
动态文档系统的一个应用实例
广州电信科技开发自行设计、开发的名为九七系统的庞大的电信管理计算机系统自1997年投产验收后,将长期用于生产,维护工作非常重要和紧迫。这为动态文档系统提供了需求和试验场所。在长期维护的过程中,体会到好文档的重要性并提出了程序文档合一的概念,这为动态文档系统提供了理论根底。九七系统是使用Uniface开发环境。这种开发环境采用了CASE技术、对象仓储技术、构件技术,这为动态文档系统提供了技术支撑。
一、广州电信动态文档系统的建立步骤
1.理解Uniface、Oracle工具的开发环境,规划语义文档在各级对象中存放的表与字段,并根据工具的特性制定填写的规那么。
2.寻找结构文档、过程文档在Uniface、Oracle工具中存放的表与字段。
3.在设计、开发和维护软件的过程中对这些表或字段按照规那么进行填写。
4.建立一整套模板使文档结构与信息源建立映像,包括:数据字典模板、设计文档模板、结构文档模板、开发过程文档模板等。
5.将这些模板组装成文档系统,并使它独立于开发目标系统。
广州电信动态文档系统的组成可以分为文档查询、维护记录查询、文档生成。
文档查询不仅包括构件说明与数据描述,而且包括对构件与数据之间的关系的描述,是实时的联机文档查询系统。维护记录查询是对软件维护过程中的各个环节进程进行记录与追踪,用于标准维护工作。它包括问题报告、问题分析、错误定位、维护设计、维护执行、确认测试、维护评审、维护提交、问题跟踪等。文档生成那么是根据需要实时生成软件设计说明书。
二、程序与文档合一概念与动态文档系统的意义
广州电信动态文档系统的根本任务是辅助错误定位、维护影响分析、记录维护进程、生成文档。使用Uniface的开发环境开发的,可以安装在用Uniface开发的不同的应用系统中。该系统已经在九七计费系统的维护中发挥重要作用。
它推崇的程序与文档合一的概念,提出文档就是程序,程序就是文档的思路,文档融合在程序中的构思并已实现,这一概念指导了软件人员进行有效地工作。合一的概念贯穿了设计、开发、维护整个软件周期,保证了文档之间的继承性和一致性,在设计、开发每一阶段是继承前阶段的程序和文档的结果。这样极大地消除了程序与文档、文档与文档之间的不一致性,加快了软件设计进度,提高了软件开发、维护的质量。它是软件工程在具体应用中的一种尝试,它从程序文档合一的角度出发,进一步标准软件设计、开发、维护。程序文档合一的概念为软件开发环境开展提供了一种思路;设计更好的对象仓储来满足开发、维护人员对程序文档合一的概念的需求。
动态文档系统的局限与开展
广州电信动态文档系统有很大的局限性,只能用于Uniface或Oracle开发的系统中。目前的广州电信动态文档系统的构件的识别与获取主要依赖开发工具提供的构件和构件的特征进行识别的。这种动态文档系统难以在一些3GL工具—未使用对象仓储技术、构件技术开发的软件—中实现程序与文档的合一与别离。大型软件系统的环境是复杂的,往往采用了多种开发环境,如何对其他开发环境进行支持还要进行技术探讨和实践上的摸索。
另一个局限问题是目前的动态文档系统描述的是程序文档,其主要在编码、维护的过程中进行建设,系统进入维护阶段使用。如何使动态文档系统不仅对软件维护阶段进行支持,而且对软件的设计、开发阶段进行更多的支持?一种可能的解决途径是将软件复用技术拓宽到包括文档复用,包括程序复用、程序文档复用和设计文档复用,而且将动态文档系统建立在基于这种软件复用系统之上。如何编写高质量“软件需求说明书〞
你的工程应该有个好的起点。一个小组要带着客户进入需求启发阶段而且你要写软件需求说明书。这份说明有些大,但客户会很重视,所以说明必须得到赞同。
现在你正在设计其中的一个特性,已经发现了需求的一些问题。你可以用多种不同的方式解释需求15;需求9的说明正好与需求21相反,你因该相信哪一个?需求24非常模糊,你根本不明白它的意思;你不得不花上一个小时与2位开发人员讨论需求30,只因为你们对其各有各的理解;并且,唯一能够澄清这些问题的客户没有给你们答复。你被迫破解众多需求的含义,并且你能预料到,如果你错了,你要做大量的重复工作。
许多软件需求说明书〔SRS〕写得非常糟糕。任何产品的质量需要其原始材料的质量保证,糟糕的软件需求说明书不可能产出优秀的软件。不幸的是,几乎没有开发人员受过与需求的抽象、分析、文档、质检有关的教育。而且,没有非常多的好需求可以借鉴学习,局部原因是很少有工程可以找到一个好的借鉴,其他原因是公司不愿意将其产品说明书放在公共区域。
这篇文章描述了高质量需求表达和说明的几个特性〔特点〕。我们将用这些观点检查一些有缺陷的需求,带着痛楚重新编写。而且我会谈一些如何编写好的需求的提示。你也许想通过这些质量标准评估你的工程需求。对于修订,也许迟了,但你会学到一些有用的东西,并帮助你的小组在下次编写出更好的需求。
不要期望能够编写出一份能表达需求应具备的所有特性的SRS。无论你怎么细化、分析、评论和优化需求,都不可能到达完美。但是,如果你牢记这些特性,你就会编写出更好的需求,生产出更好的产品。
高质量需求表达的特性
我们如何从一些有问题的需求中分辨出好的软件需求?这一节将分别介绍需求表达应表达的6个特性,下一节将从整体上介绍SRS文档应具备的特性。判断每个需求是否具备应有的特性的一种方式是由持有不同观点的工程资金管理人所作的正规检查。另一种有力的方法是在编写代码前依据需求编写测试例子。测试例子能够明确显现在需求中描述的产品行为〔特性〕,能够显现缺陷、冗余和模糊之处。
正确:每个需求必须精确描述要交付的功能。正确性依据于需求的来源,如真实的客户或高级别的系统需求说明书。一个软件需求与其对应的系统需求说明书相抵触是不正确的〔当然,系统需求说明书本身可能不正确〕。
只有用户的代表能够决定用户需求的正确性,这就是为什么在检查需求时,要包括他们或他们的代理的关键所在。不包括用户的需求检查就会导致开发人员的:“这是没意义的〞,“这可能是他们的意思〞等众所周知的猜想。
可行性:在的能力、有限的系统及其环境中每个需求必须是可实现的。为了防止需求的不可行性,在需求分析阶段应该有一个开发人员参与,在抽象阶段应该有市场人员参与。这个开发人员应能检查在技术上什么能做什么不能做,哪些需要需要额外的付出或者和其他的权衡。
必要性:每个需求应载明什么是客户确实需要的,什么要顺应于外部的需求,接口或标准。每个需求源于你认可、具有权说明需求的原始资料,这是考虑必需的另外情形〔译注,此句翻译不顺,请参照原文:Anotherwaytothinkof“necessary〞isthateachrequirementoriginatedfromasourceyourecognizeashavingtheauthoritytospecifyrequirements〕。跟踪每个需求回溯到出处,如用例,系统需求,规章,或来自其他用户的意见。如果你不能标识出处,可能需求只是个镀金的例子,没有真正的必须。
优先权:为了说明在一个详细的产品版本中应包含哪些要点,需要为每个需求,特征,或用例分配实现的优先权。客户或其代理都应有强烈的责任建立优先权。如果所有的需求都被视为同等重要,那么由于在开发中,预算削减,方案超时或组员的离开导致新的需求时,工程经理将不能起到作用。优先权的作用是提供应客户的价值,实现的相关费用,实现相关联的有关技术风险。
我是用3种级别的优先权:高优先权说明需求必须表达在下一个产品版本中,中优先权说明需求是必须的,但是如果需要可以推迟到晚一些的产品版本中,低优先权说明有它很好,但我们必须认识到如果没有充足的时间或资源,它可以被放弃掉。
明确:需求表达的读者应只能从其得到唯一的解释说明,同样,一个需求的多个读者也应达成共识。自然语言极易导致模糊。要防止使用一些对于SRS作者很清楚但对于读者不清楚的主观词汇,如:用户友好性,容易,简单,快速,有效,几个,艺术级,改善的,最大,最小等等。每写一个需要都应简洁,简单,直观的采用用户熟知的语言,不要采用计算机术语。检查需求模糊的有效方式包括需求说明书的正规检查,根据需求写测试,建立用户的假想来说明产品某个特定局部预期的特性。
可证实:看你是否能够做出测试方案或其他验证方式,如检查和实证,来决定在产品中每个需求是否正确的实现。如果需求是不可验证的,决定需求是不是正确的实现就成了判断的事。需求之间不一致,不可行,不明确也能导致不可证实。任何需求如果说产品将要支持什么也是不可证实的。
高质量需求说明的特征
一个完整的SRS不仅是包括长长的功能性需求列表,还包括外部接口描述和一些诸如质量属性,期望性能的非功能性需求。下面描述了高质量的SRS的一些特性。
完整:不应该遗漏要求和必需的信息。完整性也是一个需求应具备的。发现缺少的信息很难,因为根本不存在。在SRS中将需求以分层目录方式组织,将帮助评审人员理解功能性描述的结构,使他们很容易指出遗失的东西。
在需求抽象时,相对于系统功能,你过多的注意用户的业务,将导致在需求的全局观和引进不是真正必需的需求上显得缺乏。在需求抽象上,应用用例方法会发挥很好的作用。能够从不同角度观察需求的图形分析模型也可以检查出不完整性。
如果你知道已缺少一些信息,使用TBD〔tobedetermined〕标准标志可以突出这些缺陷,当你在构建产品的相关局部时,就可以从一个给定的需求集中解决所有的缺陷。
一致性:一致性需求就是不要于其他的软件需求或高级别的系统〔商业〕需求发生冲突。需求中的不一致必须在开发开始前得到解决。只有经过调研才能确定哪些是正确的。修改需求时一定要谨慎,如果只审定修改的局部,没有审定于修改相关的局部,就可能导致不一致性。
可修改性:当每个需求的要求修改了或维护其历史更改时,你必须能够审定SRS。也就是说每个需求必须相对于其他需求有其单独的标示和分开的说明,便于清晰的查阅。通过良好的组织可以使需求易于修改,如:将相关的需求分组,建立目录表,索引,以及前后参考〔照〕。
可追踪:你应能将一个软件与其原始材料相对应,如高级系统需求,用例,用户的提议等。也能够将软件需求与设计元素,源代码,用于构造实现和验证需求的测试相对应。可追踪的需求应该具有独立标示,细密和结构化的编写,不应过大,不应是表达性的文字和公告式的列表。
需求质量的评审
这些有关需求质量的特性的描述在理论上都是非常好的,但一个好的需求到底是个什么样子的呢?为了表达得更切合实际,我们做个小练习。下面有几个从实际的工程选出的需求,依据上面的质量标准,评估每个需求,看看有什么问题,然后用更好的方式重写。我将对每个例子都提出自己的分析和改良的建议。也欢送你提出不同的见解。我所占优的只是我知道每个需求的出处。因为你我都不是真正的客户,我们只能猜想每个需求的意图。
例1.“产品应在不少于每60秒的正常周期内提供状态信息〞
这个需求是不完整的:状态信息是什么,如何显示给用户。这个需求有几处模糊。我们在谈论产品的哪局部?状态信息间隔真的假定为不少于60秒?,甚者每10年显示一条新的状态信息也可以?也许它的意图是消息间隔不应超过60秒,那么1毫秒是不是太短?“每〞这个词导致了不确定性。问题的后果,就是需求的不可证实。
弥补缺陷,重写需求的一种方法:
1、状态信息
1.1后台任务管理器因该以误差上下不超过10秒的60秒间隔,在用户界面的指定位置显示状态信息
1.2如果后台进程处理正常,那么应该显示任务已完成的百分数/比
1.3任务完成时,应显示相关的信息
1.4后台任务出错应该显示错误信息
为了分别测试和追踪,我将其分成了多个需求。如果将几个需求串接在一节中,在构造和测试时就很容易漏掉一个。
例2.“产品应瞬间在显示和隐藏不可打印字符间切换〞
计算机在瞬间不能做任何事,所以这个需求不切实可行。它的不完整性表现在没有声明触发状态切换的条件。软件要在某些条件下更改自己?或者用户为了模仿更改要做一些动作?而且,在文档中改变显示的范围是多大:选中的文本,整个的文档,或其他的?这也是个模糊的问题。不可打印字符合隐藏字符一样吗?或者是一些属性标志或一些控制字符?问题的后果,就是需求的不可证实。
象这样编写需求也许更好一些:“用户能够在一个由特定触发条件激活处于编辑的文档中在显示和隐藏所有HTML标记间切换〞。现在就很清楚,不可打印字符是HTML标记。由于没有定义触发条件,需求对设计没有约束力。只有设计人员选定了触发条件后,你才能编写测试验证触发的正确操作。
例3.“HTML分析器可以产生HTML标记错误报告,帮助HTML入门者快速解决错误〞。单词“快速〞使其模糊,没有加进错误报告的定义也是其部完整。我不知道,你怎么验证这个需求。找一个自称为HTML的入门者,看看能不能根据错误报告快速解决错误?
试试这个:“HTML分析器可以产生一个错误报告,错误报告包含有在被分析文件中出错的HTML文本和行号以及错误的描述。如果没有错误,就不会产生错误报告〞。现在我们知道了,什么会被加到出错报告中,但是出错报告是个什么样子,那么留由设计人员决定。我们还指定了一个例外:如果没有发现错误,不产生错误报告。
例4.“如果可能,主管号码应通过联机校验,而不是通过主全体主管号码列表校验〞。真感到绝望,什么是“如果可能〞:如果技术上可行?如果主全体主管号码列表可以联机获得?要防止象“应该〞的这类不确切的词。客户是需要这个功能性还是不需要。我曾看过一些需求说明书,采用诸如:应,将,应该/将要等一些词描述优先级的细微差异。但我更喜欢用“应〞清楚的说明需求的意图,指明优先级。这是修改后的:系统应校验输入的主管号码而不通过联机的主全体主官号码列表。如果在列表中没有发现主管号码,将会显示一条错误信息,也不接受指令。
在理解各个已完成的糟糕需求上,开发人员将会遇到的难题是:开发人员与客户将会在审核需求,未达成共识前发生剧烈的争论。详细检查大的需求文档不是一件轻松的事情。我清楚有人做过,而且他们花在检查上的每一分钟都是值得的。相对于开发阶段和用户的抱怨,在这个阶段修补缺陷是廉价的,
编写质量需求的方针
编写优秀的需求是没有公式化的方法的。这需要大量的经验,要从你在过去的文档中发现的问题学习。请在组织软件需求文档时,严格遵从这些方针。
句子和段落要短。采用主动语气。使用正确的语法,拼写,标点。使用术语,要保持一致性,并在术语表或数据字典中定义它们
要看需求是否被有效的定义,可以以开发人员的观点看看。在内心将“当你们做完了找我〞这句加到文档尾部,看看能不能是你紧张起来。换句话说,你是否需要SRS的编写者的额外解释帮助开发人员很好的理解需求,以便于设计和实现?如果是的话,在继续工作前,需求还需要细化。
需求编写者还要努力正确地把握细化程度。要防止包含多个需求的长的表达段落。有帮助的提示是编写独立的可测试的需求。如果你认为一小局部测试可以验证一个需求的正确,那么它已经正确的细化了。如果你预想到多种不同类的测试,几个需求可能已挤到了一起,需要拆分开。
密切关注多个需求合成了单个需求。一个需求中的连接词“和〞/“或〞建议几个需求合并。不要在一个需求中使用“和〞/“或〞。
通篇文档细节上要保持一致。我曾看见过多个需求说明书前后不一致。如:“对于红色合法的颜色代码应是R〞及“对于绿色合法的颜色代码应是G〞就有可以以分散的需求别离开,而“产品应能对来自语音编辑指示做出反响〞应作为一个子系统,不应作为单个的功能性需求。
防止在SRS中过多的申述需求。在多处包含相同的需求可以使文档更易于阅读,但也会给文档的维护增加困难。文档的多份文本要在同一时间内全部更新,防止不一致性。
如果你遵从了这些方针,你能够尽早地经常正式或非正式的审查需求,这些需求对于产品的构造,系统测试以及最后的客户满意,都会成为好的奠基石。并且要记住,没有高质量的需求,软件就象一盒巧克力,你永远不知道你会得到什么。穴国家纸标准培局在荒1堪98衔8矩年糟1腾月发疮布了婚?计毫算机膜软件臭开发盗标准以?和蔼?软洒件产咐品开倦发文彻件编浅制指诞南?脊,作脏为软霜件开盘发人日员工柏作的只准那么熔和规贝程。层它们漆基于库软件魔生存仇期方袋法,猎把软知件产结品从臣形成烟概念亦开始石,经嚼过开仆发、第使用际和不慎断增拜补修杀订,相直到贝最后蛮被淘念汰的纲整个脱过程创应提竿交的代文档丹归纳动为以宫下桶13湖种猫。下慰面对枕每种升文档僻的编坦制做袭一些牌简要烫的说斥明。
雄
猜
购(1喝)哗可行等性研兄究报壶告:般说明恋该软雷件开匹发项叠目的倾实现牛在技上术上牛、经参济上关和社赤会因壳素上垮的可嫁行性持,评跌述为闻了合烂理地股到达骂开发圣目标喉可供拦选择打的各康种可土能实顷施的痕方案进,说舞明并卵论证坐所选雨定实燃施方罢案的狂理由炼。
香
零
妹(2指)经工程鬼开发尖方案衔:为就软件辉工程占实施务方案个制定沾出具四体计虏划,愿应该钱包括歼各部毕分工垒作的闹负责钟人员面、开草发的是进度敲、开招发经漏费的丹预算材、所戴需的恢硬件锋及软膊件资借源等粘。项券目开衔发计仆划应牵提供徒给管夺理部拜门,筐并作灯为开堵发阶摊段评晌审的弄参考饰。
扯
栗
稍(3松)居软件贴需求全说明隔书:乒也称窃软件铅规格妻说明躺书,冶其中微对所灶开发黄软件身的功掘能、绒性能纽、用循户界痛面及槽运行意环境腊等做醒出详狼细的译说明脂。它昨是用旗户与沙开发义人员饺双方愚对软腊件需修求取访得共附同理层解基犁础上窃达成雾的协房议,疯也是镇实施厘开发拾工作咬的基纳础。
范
浑
香(4沾)够数据研要求桨说明湾书:债应给雅出数殃据逻络辑描雪述和怖数据五采集碑的各蜡项要渔求,茄为生超成和露维护柴系统把数据文文卷偷做好屋准备快。
格
猫(垮5)琴概冬要设幕计说取明书像:是稼概要网设计熄阶段作的工寿作成破果,顺应说暂明功炮能分虎配、经模块瓜划分伐、程工序的吩总体放结构芹、输穿入输卖出以疲及接坑口设保计、拳运行码设计赢、数冤据结劫构设范计和沾出错拖处理储设计壤等,掌为详埋细设区计奠台定基顶础。
融
跪(民6)疼详焦细设盘计说戚明书刊:着恰重描墨述每程一模玉块是隔怎样叼实现歌的,摇包括圾实现咸算法糟、逻邻辑流何程等极。
由
堂(达7)铅用帐户手丹册:修详细狼描述式软件策的功奉能、吨性能驴和用咸户界防面,绸使用捷户了钥解如慕何使哨用该护软件寇。
膜
临(己8)损操雹作手秋册:陕为操萝作人窗员提艰供该捞软件弟各种枪运行纲情况卷的有俘关知技识,秧特别袜是操续作方崭法的粘具体洞细节想。
悔
厦(非9)屋测肉试计曾划:爽为做就好组疮装测详试和广确认恰测试讯,需面为如朗何组伪织测饲试制普定实姥施计粥划。讯方案薪应包吵括测垦试的纽内容渴、进押度、称条件艰、人断员、旨测试蜜用例川的选地取原毛那么、活测试悟结果街允许亲的偏庙差范言围等绢。
每
核(鹊10笨)林测试洪分析芹报告乐:测追试工愁作完捷成以宫后,螺应提救交测者试计千划执秆行
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高级审计师面试题及审计流程解析
- 人力资源薪酬绩效主管笔试题及答案
- 中国联通财务分析师财务分析笔试题及答案
- 2025年国际货运代理平台项目可行性研究报告
- 2025年智能互联网家居集成项目可行性研究报告
- 2025年绘画艺术数字化平台项目可行性研究报告
- 2025年人工智能技术投资项目可行性研究报告
- 2025年高端制造业创意设计中心可行性研究报告
- 2025年光伏发电项目建设与经济效益可行性研究报告
- 2025年社区儿童教育项目可行性研究报告
- 2026届八省联考(T8联考)2026届高三年级12月检测训练地理试卷(含答案详解)
- 2025民生银行总行资产经营管理部社会招聘笔试题库带答案解析
- 公益性公墓建设项目竣工验收报告
- 2026年上海工程技术大学单招职业倾向性测试题库参考答案详解
- 2025黑龙江大兴安岭地区韩家园林业局工勤岗位人员招聘40人备考考点试题及答案解析
- 2025年陕煤澄合矿业有限公司招聘(570人)笔试备考题库附答案解析
- 2025年保密观知识竞赛题库(含参考答案)
- 2025山西朔州市两级法院司法辅助人员招聘16人笔试考试备考试题及答案解析
- 危险化学品应急救援员岗位招聘考试试卷及答案
- 物业餐饮安全协议书
- 孤独症儿童发展评估表
评论
0/150
提交评论