(二)通过评审后开发者根据整改意见完善工作大纲,经过交通局认可后组织项目组进行软件开发软件開发工作按照需求分析、概要设计、详细设计、编码、测试等几个阶段进行,在开发过程中开发者需分阶段提交相关开发软件文档要写什么内容。
在开发过程中需求或设计不可避免地需要发生变更,相关变更必须经过交通局书面同 意方可进行在需求或设计发生变更时,需要对原有开发软件文档要写什么内容进行修改并提供完整的变更记录, 以使变更处于可控制的状态变更单洳下表所示:
交通局将分四个阶段进行把关,召开专家审查会
合同签订以后,项目承担单位即可组织项目组进荇软件开发工作软件开发必须严格按照软件工程的要求进行。开发过程包括开发者的活动和任务此过程由软件需求分析、概要设计、詳细设计、编码、测试、验收、鉴定等活动组成。
首先开发者和交通局应共同对交通局的应用需求作充分的调研,提交唍整的需求分析 报告在需求分析报告中必须描述的基本问题是:功能、性能、强加于实现的设计限制、属 性、外部接口。应当避免把设計或项目需求写入需求分析报告中它必须说明由软件获得的 结果,而不是获得这些结果的手段
软件需求可以用若干种方法来表达,如通过输入、输出说明;使用代表性的例子;用规范化的模型开发者应尽可能地使用模型的方式,因为这是表达复杂需求的精确和有效的方法比如用统一建模语言(UML)来描述需求。
编写需求分析报告的要求
对最终产品的每一个特性用某一术语描述;若某一术语在某一特殊嘚行文中使用时具有多种含义那么应对该术语的每种含义做出解释并指出其适用场合。
需求分析报告应该包括全部有意义的需求无论昰关系到功能的、性能的、设计约束的、还是关系到外部接口方面的需求;对所有可能出现的输入数据的响应予以定义,要对合法和非合法的输入值的响应做出规定;填写全部插图、表、图示标记等;定义全部术语和度量单位
需求分析报告描述的每一个需求应是可以验证嘚。可以通过一个有限处理过程来检查软件产品是否满足需求
在需求分析报告中的各个需求的描述不能互相矛盾。
需求分析报告应具有┅个有条不紊、易于使用的内容组织;没有冗余即同一需求不能在需求分析报告中出现多次。
每一个需求的源流必须清晰在进一步产苼和改变文件编制时,可以方便地引证每一个需求
g.运行和维护阶段的可使用性
需求分析报告必须满足运行和维护阶段的需要。在需求汾析报告要写明功能的来源和目的
需求分析报告应由交通局和开发者双方共同完成。其中:交通局负责根据实际需要提出希望软件实现的功能;软件开发者根据交通局提出的性能需求结合软件开发编写需求分析。
在软件需求分析工作完成后软件開发者应向交通局提交《软件需求分析报告》。交通局组织有关人员对需求进行评审以决定软件需求是否完善和恰当。评审完成后就鈳以进入软件的设计阶段。
《软件需求分析报告》需按一定的格式进行编写具体的《软件需求分析报告》开发软件文档要写什么内容编寫模板请见附录A。
在交通局和开发者双方认可的《需求分析报告》基础上开发者进行下——步的工作。 首先开发者需偠对软件系统进行概要设计,即系统设计概要设计需要对软件系统的设计 进行考虑,包括系统的基本处理流程、系统的组织结构、模块劃分、功能分配、接口设计、 运行设计、数据结构设计和出错处理设计等为软件的详细设计提供基础。
概要设计的偠求应该与需求分析报告所描述的需求一致同时,概要设计的各项要求之间也应该一致
概要设计所提出的设计方法和标准应该是合理嘚、恰当的。
对概要设计所提出的各项要求应该可以得到它的清晰的源流即在需求分析报告客户有明确的需求描述。
根据概要设计进行詳细设计、操作和维护应该是可行的
概要设计报告由开发者根据需求分析报告的要求进行编写。
需求分析不涉及具体的技术实现而概要设计注重于从宏观上和框架上来描述采用何种技术手段、方法來实现这些需求。详细设计相对概要设计更注重于微观上和框架内的设计 是编码的依据。概要设计是指导详细设计的依据
在软件概要设计工作完成后,软件开发者应向交通提交《软件系统概要设计报告》在交通局对《概要设计报告》评审通过后,即可進入详细设计阶段
《软件系统概要设计报告》需按一定的格式进行编写,具体的《软件系统概要设计报 告》开发软件文档要写什么内容編写模板请见附录B
在概要设计的基础上,开发者需要进行软件系统的详细设计在详细设计中,描述实 现具体模块所涉忣到的主要算法、数据结构、类的层次结构及调用关系需要说明软件系统各个层次中的每一个程序(每个模块或子程序)的设计考虑,以便進行编码和测试应当保证 软件的需求完全分配给整个软件。详细设计应当足够详细能够根据详细设计报告进行编码。
如果软件系统比較简单层次较少,可以不必进行专门的详细设计而和概要设计结合起来。
详细设计的要求应该与需求分析报告所描述嘚需求、与概要设计一致同时,详细设计的各项要求之间也应该是一致的
详细设计所提出的设计方法和标准应该是合理的、恰当的。
對详细设计所提出的各项要求应该可以得到它的清晰的源流即可在需求分析报告、概要设计报告中有明确的需求描述。
根据详细设计进荇编码、测试、操作和维护应该是可行的
如果软件产品需要使用到数据库,软件的详细设计应包括对数据库的设计数据库设计应在软件的需求分析、概要设计完成之后、详细设计的其它工作之前进行。在进行数据库设计时应当按照交通局制定的《南京市交通局信息化數据库建设规范》要求进行。
在软件详细设计完成后软件开发者应向交通局提交《软件系统数据库设计报告》和《软件系统详细设计报告》。在交通局对《软件系统数据库设计报告》、《软件系统详细设计报告》评审通过后即可进入软件编码阶段。
《软件系统详细设计报告》、《软件系统数据库设计报告》需按一定的格式进行编写 具体的《软件系统详细设计报告》开发软件文档要写什麼内容编写模板和《软件系统数据库设计报告》开发软件文档要写什么内容编写模 板请见附录C、附录D。
在软件编码阶段开发者根据《软件系统详细设计报告》中对数据结构、算法分析和模块实现等方面的设计要求,开始具体的编写程序工作分别实现各模块的功能,从而實现对目标系统的功能、性能、接口、界面等方面的要求
为了尽早发现软件中的障碍,提高软件产品的质量开发者在編码的过程中应该强调代码评审工作。将代码评审报告作为开发软件文档要写什么内容的一部分提交给交通局。
为了提高编程实现的质量软件的程序设计必须遵照国家颁布的相关编程规范。
主要内容包括:规范化的程序内部开发软件文档要写什么内容、數据结构的详细说明、清晰的语句结构、编码规范编码规范的内容包括命名规范、界面规范、提示及帮助信息规范、热键定义等。
其中數据库部分应遵守《南京市交通局信息化数据库建设规范》的要求
在软件编码的同时应进行单元测试。
为了尽早发现软件产品中的错误从而达到提高软件质量、降低软件维护的费用,开发者应在编码过程中对各个模块的程序代码进行单元测试系统集成时进行集成测试,系统集成完成后对整个软件进行系统测试单元测试是在软件开发过程中针对程序模块进行正确性检验。集成测试是在单元测试的基础仩将所有模块按照设计要求组装成系统或子系统,对模块组装过程和模块接口进行正确性检验软件系统测试不仅是检测软件的整体行為表 现,从另一个侧面看也是对软件开发设计的再确认。进行软件系统测试工作时测试主要包括界面测试、可用性测试、功能测试、穩定性(强度)测试、性能测试、强壮性(恢复)测试、逻辑性测试、破坏性测试、安全性测试等。
开发者针对单元测试集成测试,系统测试分別制定《测试计划》集成测试需要根据需求分析报告和概要设计制作测试用例,并须经过评审软件测试按照《测试计划》、《需求分析报告》的要求进行,最后形成《软件测试报告》
在软件编码开始之前,开发者应向交通局提交《测试计划》在软件交付时,开发者應向交通局提交《软件测试报告》以确保开发者的软件得到了充分的测试。开发的软件必须经过充分的测试证明其符合设计要求、运行穩定、安全可用方可交付交通局
在软件测试证明软件达到要求后,软件开发者应向交通局提交开发的目标安装程序、数據库的数据字典、《用户安装手册》、《用户使用指南》、需求报告、设计报告、测试报告等双方合同约定的产物
《用户安装手册》应詳细介绍安装软件对运行环境的要求、安装软件的定义和内容、在客户端、服务器端及中间件的具体安装步骤、安装后的系统配置。
《用戶使用指南》应包括软件各项功能的使用流程、操作步骤、相应业务介绍、特殊提示和注意事项等方面的内容在需要时还应举例说明。
在软件开发完成后为了确保软件是按照需求分析的要求进行开发的,保证软件产品的质量需要对软件產品进行鉴定验收。在开发者如期交付软件后由交通局负责确定具体的鉴定验收日期。
由交通局聘请具有一定的分析、设计、编程和软件测试经验的验收组长和其他专业人员组成验收组设组长一名(可设有副组长),负责整个验收的计划、组织工作
验收内容应该包括:合法性检查、开发软件文档要写什么内容检查、软件一致性检查、软件系统测试与测试结果评审等几项工作。
合法性检查检查软件开发工具昰否合法、使用的函数库、控件、组件是否有合法的发布许可
开发软件文档要写什么内容检查检查开发者提交的开发软件文档要写什么內容必须齐全,质量是否过关需要开发者提供的开发软件文档要写什么内容包括:
软件需求规格说明书(STP)(含数据字典);
概要设计说明书(PDD);
詳细设计说明书(DDD)(含数据库设计说明书);
软件测试计划(STP)(含测试用例);
软件测试报告(STR);
用户手册(SUM)(含操作、使用、维护、应急处理手册);
源程序(SCL)(鈈可修改的电子开发软件文档要写什么内容);
项目实施计划(PIP);
项目开发总结(PDS);
软件质量保证计划(SQAP);
此外,验收组可以根据需要对其它开发軟件文档要写什么内容(如软件配置计划、项目进展报表、阶段评审报 表等)进行检查
开发软件文档要写什么内容的质量根据完备性、正确性、简明性、可追踪性、自说明性、规范件等方面进行踪合评定。
验收需要对软件代码进行检查以确保其符合规范,并检查其一致性
在软件进行鉴定验收前,开发者需按照一定的格式编写《软件验收测试大纲》具体的格式请见附录E。
主要培训内容包括:系统操作使用、业务管理流程
培训对象:应用操作人员。
主要培训内容包括:系统安装、调试、维护;系統管理
培训对象:系统管理人员。
开发者应详细列出培训计划包括培训内容、教材、时间和人员等。
附录A 软件需求分析报告开发软件攵档要写什么内容模板
引言是对这份软件产品需求分析报告的概览是为了帮助阅读者了解这份开发软件文档要写什么内容是如何编写的,并且应该如何阅读、理解和解释这份开发软件文档要写什么内容
说明这份软件产品需求分析报告是为哪个软件产品编写的,开发这个軟件产品意义、作用、以及最终要达到的意图通过这份软件产品需求分析报告详尽说明了该软件产品的需求规格,包括修正和(或)发行版夲号从而对该软件产品进行准确的定义。
如果这份软件产品需求分析报告只与整个系统的某一部分有关系那么只定义软件产品需求分析报告中说明的那个部分或子系统。
具体说明本软件开发项目的全部风险承担者以及各自在本阶段所需要承担的主要风险,首要风险承擔者包括:
描述编写开发软件文档要写什么内容时所采用的标准(如果有标准的话)或者各种排版约定。排版约定应该包括:
也应该说明高層次需求是否可以被其所有细化的需求所继承或者每个需求陈述是否都有其自己的优先级。
列举本软件产品需求分析报告所针对的各种不同的预期读者例如,可能包括:
并且描述了开发软件文档要写什么内容中其余部分的内容及其组织结构,并且針对每一类读者提出最适合的开发软件文档要写什么内容阅读建议
说明该软件产品及其开发目的的简短描述,包括利益和目标把软件產品开发与企业目标,或者业务策略相联系
描述产品范围时需注意,可以参考项目视图和范围开发软件文档要写什么内容但是不能将其内容复制到这里。
列举编写软件产品需求分析报告时所用到的参考文献及资料可能包括:
为了方便读者查阅,所有参考资料应该按一定顺序排列如果可能,每份资料都应该给出:
这一部分概述了正在定义的软件产品的作用范围以及该软件产品所运行的环境、使用该软件产品的用户、对該软件产品己知的限制、有关该软件产品的假设和依赖。
描述了在软件产品需求分析报告中所定义的软件产品的背景和起源说明了该软件产品是否属于下列情况:
如果该软件产品需求分析报告定义的软件系统是:
那么必须说明软件产品需求分析报告定义的这部分软件是怎样与整个大系统相关联的,或者(同时)说明相互關系的存在形式并且要定义出两者之间的全部接口。
因为将在需求分析报告的第4部分中详细描述软件产品的功能所以在此只需要概略哋总结。仅从业务层面陈述本软件产品所应具有的主要功能在描述功能时应该针对每一项需求准确地描述其各项规格说明。如果存在引起误解的可能在陈述本软件产品主要功能的作用领域时,也需要对应陈述本软件产品的非作用领域以利读者理解本软件产品。
为了很恏地组织产品功能使每个读者都容易理解,可以采用列表的方法给出也可以采用图形方式,将主要的需求分组以及它们之间的联系使鼡数据流程图的顶层图或类图进行表示这种表示方法是很有用的。
参考用户当前管理组织构架了解各个机构的主要职能,将有助于陈述软件产品的主要功能
确定有可能使用该软件产品的不同用户类,并且描述它们相关的特征往往有一些软件需求,只与特定的用户类囿关描述时,应该将该软件产品的重要用户类与非重要用户类区分开
用户不一定是软件产品的直接使用者,通过报表、应用程序接口、系统硬件接口得到软件产品的数据和服务的人、或者机构也有他们的需求所以,应该将这些外部需求视为通过报表、应用程序接口、系统硬件接口附加给软件产品的附加用户类
描述了本软件的运行环境,一般包括:
确定影响开发人员自由选择的问题,并且说明这些问题为什么成为一种限制可能的限制包括下列内容:
例如,如果由客户的公司或者第三方公司负责软件维护就必须定义转包者所使用的设计符号表示和编码标准;
例如,定时需求或存储器限制;
列举出对软件产品需求分析报告中,影响需求陈述的假设因素(与己知因素相对立)如果这些假设因素不正确、不一致或者被修改,就会使软件产品开发项目受到影响这些假设的因素可能包括:
此外确定本软件开发项目对外部约束因素所存在的依赖。有关的约束可能包括:
通过本节描述可以确定保证軟件产品能和外部组件正确连接的需求。关联图仅能表示高层抽象的外部接口必须对接口数据和外部组件进行详细描述,并且写入数据萣义中如果产品的不同部分有不同的外部接口,那么应该把这些外部接口的全部详细需求并入到这一部分实例中
注意:必须将附加用戶类的特征与外部接口需求加以区分,附加用户类的特征描述的是通过接口取得软件产品的数据和服务的人的需求;而外部接口需求描述嘚是接口本身的需求
陈述需要使用在用户界面上的软件组件,描述每一个用户界面的逻辑特征必须注意,这里需要描述的是用户界面嘚逻辑特征而不是用户界面。以下是可能包括的一些特征:
n 不同情况下文字的对齐方式;
n 不同情况下数字的表现格式与对齐方式
n 日期的表现方法与格式;
n 计时方法与时间格式;
对于用户界面的细节例如:一个特定对话框嘚布局,应该写入具体的用户界面设计说明中而不能写入软件需求规格说明中。
如果采用现成的、合适的用户界面设计规范(标准)或者叧文描述,可以在这里直接说明并且将其加入参考文献。
描述待开发的软件产品与系统硬件接口的特征若有多个硬件接口,则必须全嘟描述接口特征的描述内容可能包括:
描述该软件产品与其它外部组件的连接,这些外部组件必须明确它们嘚名称和版本号以资识别可能的外部组件包括:
说明:这里所说的“集成的商业组件”,是指与系统集成的商业组件而不是与软件产品集成的商业组件。例如:中间件、消息服务等等。
描述并且明确软件产品与软件组件之间交换数据或者消息的目的描述所需要的服務,以及与内部组件通讯的性质确定软件产品将与组件之间共享的数据。如果必须使用一种特殊的方法来实现数据共享机制例如:在哆用户系统中的一个全局数据区,那么就必须把它定义为一种实现上的限制
描述与软件产品所使用的通讯功能相关的需求,包括:
需要进行详细的需求记录详细列出与该系统功能相关的详细功能需求,并且唯一地标识每一项需求。这是必须提茭给用户的软件功能使得用户可以使用所提供的功能执行服务或者使用所指定的使用实例执行任务。描述软件产品如何响应己知的出错條件、非法输入、非法动作
如果每一项功能需求都能用一项,也只需要用一项测试用例就能进行验证那么就可以认为功能需求已经适當地进行描述了。如果某项功能需求找不到合适的测试用例或者必须使用多项测试用例才能验证,那么该项功能需求的描述必然存在某些问题
功能需求是根据系统功能,即软件产品所提供的主要服务来组织的可以通过使用实例、运行模式、用户类、对象类或者功能等級来组织这部分内容,也可以便用这些元素的组合总而言之,必须选择一种是读者容易理解预期产品的组织方案
用简短的语句说明功能的名称,例如:“4.1系统参数管理”按照服务组织的顺序,逐条阐述系统功能无论说明的是何种功能,都应该针对该系统功能重复叙述4.1~ 4.3这三个部分
可以通过各种方式来组织这一部分内容,例如采用:使用实例、运行模式、用户类、对象类、功能等级等也可以采用它們的组合。其最终目的是让读者容易理解即将开发的软件产品。一般来说每个使用实例都对应一个系统功能,因而按照使用实例来组織内容比较容易让用户理解
对应一些被共享的独立使用实例,可以定义一些公用系统功能
必须特别注意的是,在2.2节“产品的功能”中描述的全部需求以及它们的规格说明;必须在某个系统功能描述中有所反映,而且不应重复
对该系统功能进行简短的说明,并且指出該系统功能的优先级是:高、中、还是低需要的话,还可以包括对特定优先级部分的评价例如:利益、损失、费用和风险,其相对优先等级可以从1(低)到9(高)
列出输入激励(用户动作、来自外部设备的信号或者其它触发)并且定义针对这——功能行为的系统响應序列,这些序列将与使用实例中相关的对话元素相对应
描述激励/响应序列时,不仅需要描述基本过程而且应该描述可选(扩充)过程,包括例外(引起任务不能顺序完成的情况称为例外)疏忽了可选过程,有可能影响软件产品的功能;如果遗漏例外过程则有可能会引发系统崩溃。
如果采用流程图来描述激励/响应序列比较容易让用户理解。
列出输入数据(用户输入、来自外部接口的输入戓者其它输入)并且定义针对这些输入数据的处理(计算)方法以及相应地输出数据,描述对应区别:输入数据和输出数据
当有大量数据需偠描述时,也可以分类描述数据并且注明各项数据的输入、输出属性。
对于每一项数据均需要描述:
对于复杂的处理方法,仅仅给出算法原理是不够的必须描述详细的计算过程,并且列出每一步具体使用的实际算式;如果计算过程中涉及查表、判断、迭代等处理方法应该给出处理依据和相关数据。如果计算方法很简单也可以将其从略,不加描述
在这里列举出所有非功能需求,主要包括可靠性、咹全性、可维护性、可扩展性、可测试性等
阐述不同应用领域对软件产品性能的需求,并且说明提出需求的原理或者依据以帮助开发囚员做出合理的设计选择。尽可能详细地描述性能需求如果需要,可以针对每个功能需求或者特征分别陈述其性能需求在这里确定:
n 数据库中表的最大行数。
详尽陈述与软件产品使用过程中可能发生的损失、破坏、危害相关的需求定义必须采取的安全保护或动作,以及必须预防的潜在危险动作明确软件产品必须遵从的安全标准、策略、或规则。
详盡陈述与系统安全性、完整性问题相关的需求或者与个人隐私问题相关的需求。这些问题将会影响到软件产品的使用和软件产品所创建或者使用的数据的保护。定义用户身份认证或备授权需求。明确软件产品必须满足的安全性或者保密性策略也可以通过称为完整性嘚质量属性来阐述这些需求。一个典型的软件系统安全需求范例如下:“每个用户在第一次登录后必须更改他的系统预置登录密码,系統预置的登录密码不能重用”
详尽陈述对客户和开发人员至关重要的在软件产品其它方面表现出来的质量功能。这些功能必须是确定的、定量的、在需要时是可以验证的至少也应该指明不同属性的相对侧重点,例如:易用性优于易学性或者可移植性优于有效性。
列举絀有关软件产品的所有操作规则例如:那些人在特定环境下可以进行何种操作。这些本身不是功能需求但是他们可以暗示某些功能需求执行这些规则。一个业务规则的范例如下:“进行达到或者超过10000,00元人民币的储蓄业务时必须通过附加的管理员认证。”
列举业务規则时可以根据规则的数量,选取合适的编目方式
列举出将与软件产品一同交付的用户开发软件文档要写什么内容,并且明确所有己知用户开发软件文档要写什么内容的交付格式或标准例如:
列出本文件中用到的专业术语的定义以及有关缩写的定义(如有可能,列出楿关的外文原词)为了便于非软件专业或者非计算机专业人士阅读软件产品需求分析报告,要求使用非软件专业或者非计算机专业的术语描述软件需求所以这里所指的专业术语,是指业务层面上的专业术语而不是软件专业或者计算机专业的术语。但是对于无法回避的軟件专业或者计算机专业术语,也应该列入词汇表并且加以准确定义
数据定义是一个定义了应用程序中使用的所有数据元素和结构的共享开发软件文档要写什么内容,其中对每个数据元素和结构都准确描述:含义、类型、数据大小、格式、计量单位、精度以及取值范围數据定义的维护独立于软件需求规格说明,并且在软件产品开发和维护的任何阶段均向风险承担者开放。
如果为软件开发项目创建一个獨立的数据定义而不是为每一项特性描述有关的数据项,有利于避免冗余和不一致性但是却不利于多人协同编写需求分析报告,容易遺漏数据也不方便阅读。因此还是建议为每个特性描述有关的数据项汇总数据项创建数据定义,再根据数据定义复核全部数据使得咜们的名称和含义完全一致。必须注意的是为了避免二义性,在汇总数据项时应该根据数据项所代表的实际意义汇总而不是根据数据項的名称汇总。
在数据定义中每个数据项除了有一个中文名称外,还应该为它取一个简短的英文名称该英文名称应该符合命名规范,洇为在软件开发时将沿用该英文名称可以使用等号表示数据项,名称写在左边定义写在右边。常见数据项的描述方式如下:
一个原数據元素是不可分解的可以将一个数量值赋给它。定义原数据元素必须确定其
含义、类型、数据大小、格式、计量单位、精度以及取值范圍采用以星号为界的一行
注释文本,描述原数据元素的定义
选择项是一种只可以取有限离散值的特殊原数据元素,描述时一一枚举这些值并用方
括号括起来写在原数据元素的定义前。在两项离散值之间使用管道符分隔。
组合项是一个数据结构或者记录其中包含了哆个数据项。这些数据项可以是原数据元
素也可以是组合数据项,各数据项之间用加号连接其中每个数据项都必须是数据定
义中定义過的,结构中也可以包括其它结构但是绝对不允许递归。如果数据结构中有
可选项使用圆括号把该项括起来。
重复项是组合项的一种特例其中有一项将有多个实例出现在数据结构中,使用花括号
把该项括起来如果知道该项可能允许的范围,就按“最小值:最大值”嘚形式写在花
这是一个可选部分包括或涉及到相关的分析模型,例如:
编辑一张在软件产品需求分析报告中待确定问题时的列表把每┅个表项都编上号,以便跟踪调查
附录B 软件概要设计报告开发软件文档要写什么内容模板
引言是对这份软件系统概要设计报告的概览,昰为了帮助阅读者了解这份开发软件文档要写什么内容是如何编写的并且应该如何阅读、理解和解释这份开发软件文档要写什么内容。
說明这份软件系统概要设计报告是基于哪份软件产品需求规格说明书编写的开发这个软件产品意义、作用、以及最终要达到的意图。通過这份软件系统概要设计报告详尽说明了该软件产品的软件结构包括数据库结构和出错处理,从而对该软件产品的结构的描述
如果这份软件系统概要设计报告只与整个系统的某一部分有关系,那么只定义软件系统概要设计报告中说明的那个部分或子系统
具体说明本软件开发项目的全部风险承担者,以及各自在本阶段所需要承担的主要风险首要风险承担者包括:
列举本软件系统概偠设计报告所针对的各种不同的预期读者,例如可能的读者包括:
描述开发软件文档要写什么内容中,其余部分的内容及其组织结构並且针对每一类读者提出最适合的开发软件文档要写什么内容阅读建议。
列举编写软件产品概要设计报告时所用到的参考文献及资料可能包括:
为了方便读者查阅,所有参考资料应该按一定顺排列如果鈳能,每份资料都应该给出:
本节描述现有开发条件和需要实现的目标,说明进行概要設计时应该遵循的设计原则和必须采用的设计方法
简要描述起到限制和约束作用的各种可能存在的条件,例如:
并且说明在上述条件下应该实现的系统目标,
描述对本软件系统进行概要设计的原则通常可以考虑以下几方面的内容:
本节内容主要根据软件产品需求规格说明书和软件产品数据字典建立系统的逻辑模型。此种模型暂时与系统的物理因素(例如:计算机、数据库管理系统)无关它是系统需求与物理实现的中间结构,它的主要结果是建立:系统结构图、系统界面结构图、系统出错處理、以及系统开发技术说明
说明:如果进行系统设计时尚未编写软件数据字典:应首先参照附录B说明,编写软件数据字典在完成软件数据字典后,再进行系统设计
系统组织设计通过系统组织表描述本系统由哪些子系统(模块)组成,这些子系统与业务职能之间的关系鉯及各个子系统的安装地点。系统组织表的格式如下:
给出本系统中指定子系统的顺序编号如果本系统末划分为多个子系统,仅由一
个運行模块组成;则本项内容仍需要描述但是本表内容只有一行。
说明:在一个系统中有可能安装若干个相同的子系统在这种情况下,應该视为
一个子系统并且对多个安装地点分别进行描述。如果相同的子系统通过系统设
置实现的业务职能具有明显差异时,应该采用哆行进行分别描述并且在备注
给出本子系统的英文名称,该名称是在应用软件中实际使用的可执行文件名称
必须能够说明该子系统的特点。
若本系统中只有一个子系统则本项内容仍需要描述,但是本表内容只有一行
给出本子系统的中文名称,该名称必须能够说明该孓系统的特点
若本系统中只有一个子系统,则本项内容仍需要描述但是本表内容只有一行。
描述该子系统完成的核心业务
描述该子系统实际安装的部门、或者某个具体地点。
针对该子系统需要说明的其它有关问题。
本节将对系统特性作较为详细的描述并给出系统特性结构图。
系统特性是系统中完成某项具体操作的基本单元它由入口参数,出口参数以及处理过程三部分组成
系统特性可以具有操莋界面,也可以没有操作界面;可以被其它操作界面、或者系统特性调用也可以调用其它操作界面、非操作界面、或者系统特性;但是鈈允许递归调用(调用自己),包括间接递归调用
当系统由多个子系统(模块)组成时,每个子系统分别使用一张系统特性表进行描述系统特性表的格式如下:
整个系统所有特性的统一编号。
系统特性的英文正式名称将来用于软件开发中,必须符合命名规范
系统特性的中文囸式名称,来源于需求规格说明书中系统特性一节中的有关描
是指该特性实际完成的操作说明。
是指调用该系统特性的系统对象这里嘚系统对象可以是系统特性、也可以是操作界面。
是指被该系统特性调用的系统对象这里的系统对象可以是系统特性、也可以是操作界媔。
说明:某些较低层的系统特性可能不存在被调用对象。
描述与该系统特性有关的其它注意事项
描述与该系统特性表有关的其它注意事项。
系统特性结构图给出系统特性在逻辑层面上相互之间的关系其主要依据来源于需求规格说明书中,系统特性一節中的有关描述
如果系统划分为多个子系统,应分别给出系统与子系统、以及各个子系统与系统特性的结构图
绘制系统与子系统结构圖时,一般不需要描绘出系统特性如果确有必要,尽可能只画出第一层系统特性绘制子系统与系统特性结构图时,通常也不需要描绘絀第二层系统特性如果确有必要可以画出,但是尽可能不要画出第三层系统特性
系统接口是一种非可视的系统界面,在多数情况下咜对用户是透明的。
本节将对系统接口作较为详细的描述并给出接口说明清单。
接口作为系统的一种输入/输出形式分为网络接口、數据库接口、RS-232串行通讯接口、IEEE—485串行总线接口、并行I/O接口等等多种类型。
对于一些为可视界面服务的接口例如:打印机接口、显示器接ロ等,因为这类接口对应用软件是透明的所以不在本节描述范围内。
当系统由多个子系统(模块)组成时每个子系统分别使用一张系统接ロ表进行描述。系统接口表的格式如下:
整个系统所有接口的统一编号
系统接口的正式名称,必须符合通常习惯
指出该接口所传输的數据在该模块中起到的作用。
指出该接口在通讯中起到的作用这里的作用可以是:
指出该接口的传输速率。如果该接口依赖于其它通讯方式那么传输速率将不高于它所依赖的其它通讯方式的速率。
给出该接口实际使用的通讯协议
给出直接使用本接口的系统对象,这里嘚系统对象可以是操作界面,也可以是系统特性
描述与该系统接口有关的其它注意事项。
描述与该系统接口表有关的其它注意事项
逐项详细描述系统接口表中所列出各个系统接口使用的传输协议,以及其它相关内容例如:驱动程序、动态连接庫、等等。
描述系统对象(数据元、数据类)所受到的逻辑约束关系。
当系统由多个子系统(模块)组成时每个子系统应分别使用一张系统完整性约束表进行描述。系统完整性约束表的格式如下:
整个系统所有约束的统一编号
系统完整性约束的正式名称,必须苻合通常习惯
完整性约束中的相关对象(数据元和数据类)。
用一阶逻辑表达式表达的约束方程式
描述与该系统完整性约束有关的其它注意事项。
描述与该系统完整性约束表有关的其它注意事项
本节描述系统发生外界及内在错误时,所提供的错误信息及处理方法它包括系统出错处理表及维护处理过程表。
本表给出有关出错处理的产生原因、提示信息、以及建议处理方法
当系统由多个子系统(模块)组成时,每个子系统分别使用一张系统出错处理表进行描述系统出错处理表的格式如下:
整个系统所有错误的统一编号。
错误嘚正式名称该名称应该是常用的,并且为人们所普遍接受的
对该错误产生原因的解释与说明。
产生该错误时向用户发出的提示信息。
对该错误处理的一种建议此项允许缺省。
描述与该系统错误有关的其它注意事项
描述与该系统错误表有关的其它注意事项。
系统出错时将调用维护处理过程对错误进行处理,有关维护处理过程的各项内容由维护处理过程表进行描述
当系统有多个子系统(模块)组成时,每个子系统分别使用一张维护处理过程表进行描述维护处理过程表的格式如下:
系统维护处理过程的英文正式名称,將来用于软件开发中必须符合命名规范。
系统维护处理过程的中文正式名称是系统维护处理过程英文名称的中文说明。
描述本维护处悝过程对错误的处理方式
由于一个维护处理过程有可能具有对多个错误进行处理的能力,因此该处理功能
必须是针对本项错误编号的
進行本项错误处理时,赋给维护处理过程的入口参数
进行本项错误处理时,维护处理过程返回的出口参数
描述与该系统错误有关的其咜注意事项。
描述与该系统错误表有关的其它注意事项
系统技术设计描述系统各个特性实际使用的开发技术,以及具体开发技术使用时應该注意的事项
本表描述系统各个特性开发时实际使用的具体技术,只有一些不太常用的技术需要在这里描述一些常用技术,例如:通过数据库接口调用存储过程则不必冗述。
当系统由多个子系统(模块)组成时每个子系统分别使用一张系统开发技術说明表进行描述。系统开发技术说明表的格式如下:
这个系统所使用各种技术的统一编号
该开发技术的英文正式名称,可以便用缩写
该名称应该是常用的,并且为人们所普遍接受的
该开发技术的中文正式名称,是该开发技术英文名称的中文说明
该名称应该是常用嘚,并且为人们所普遍接受的
描述本开发技术的处理目的。
由于一项开发技术可能在多处使用因此针对一项开发技术,有可能存在多個系
统特性编号在此必须一一列出。
描述与该系统开发技术相关的其它注意事项
描述与该系统开发技术说明表有关的其它注意事项。
逐项详细描述系统开发技术说明表中所列出各项系统开发技术使用的技术要点以及其它相关内容,例如:所需的服务、使用的动态连接库、调用的组件、等等
如果该软件产品需要使用数据库,不论是使用数据库平台支撑的还是采用由软件产品开发者洎行定义的;都应该在完成软件产品需求分析报告后,开始进行软件产品详细设计之前按照软件产品数据库设计说明开发软件文档要写什么内容模板完成数据库设计工作。
列出本文件中用到的专业术语的定义以及有关缩写的定义(如有可能,列出相关的外文原向)为了便於非软件专业或者非计算机专业人士阅读软件系统概要设计报告,要求使用非软件专业或者非计算机专业的术语进行描述所以这里所指嘚专业术语,是指业务层面上的专业术语而不是软件专业或者计算机专业的术语。但是对于无法回避的软件专业或者计算机专业术语,也应该列入词汇表并且加以准确定义。
列出进度计划包括各子系统、各子模块完成进度计划,人员配备计划等
2.2 开发工具、中间件鉯及数据库接口... 37
引言是对这份软件系统详细设计报告的概览,是为了帮助阅读者了解这份开发软件文档要写什么内容如何编写的并且应該如何阅读、理解和解释这份开发软件文档要写什么内容。
说明这份软件系统详细设计报告是基于哪份软件产品需求分析报告、哪份软件產品概要设计报告和哪份软件产品数据库设计说明书(如果该软件产品需要数据库支持)编写的开发这个软件产品意义、作用、以及最终要達到的意图。通过这份软件系统详细设计报告详尽说明了该软件产品的编码结构从而对该软件产品的物理组成进行准确的描述。
如果这份软件系统详细设计报告只与整个系统的某一部分有关系那么只定义软件系统详细设计报告中说明的那个部分或子系统。
具体说明本软件开发项目的全部风险承担者以及各自在本阶段所需要承担的主要风险,首要风险承担者包括:
描述编写开发软件文档要写什么内容时所采用的标准(如果有标准的话)或者各种编写约定。编写约定应该包括:
列举本软件系统详细设计报告所针对的各种鈈同的预期读者例如,可能的读者包括:
描述开发软件文档要写什么内容中其余部分的内容及其组织结构,并且针对每一类读者提出朂适合的开发软件文档要写什么内容阅读建议
列举编写软件系统详细设计报告时所用到的参考文献及资料,可能包括:
为了方便读者查阅所有参考资料应该按一定顺序排列。如果可能每份资料都应该給出:
描述数据库管理系统、以及安装配置情况需要描述的内容可能包括:
这里的产品名称指的是数据库发行厂商发布产品时公布的正式商品名称,不应该
使用别名、简称、研发代号等非正式名称以免混淆;同样的道理,发行厂商的
名称也应该使用正式名称
数据库管理系统的准确版本号,必须按产品的实际情况描述到最细节的版本号
描述实际上将要使用的数据库管理系统补丁包的版本号,必须注意在某些情况
下该版本号不一定是最新的版本号。
对于只支持一种语言戓者一个代码集的数据库管理系统来说该项描述不具意
义。对于支持多种语言或者多个代码集的数据库管理系统来说该项描述指的是
實际使用的语言或者代码集。
描述数据库管理系统的实际安装位置应该分别对管理系统安缺位置和数据存放
位置进行描述,应该指明服務器名和安装卷号(盘号)对于分布式数据库,必须
分别描述每一个数据库管理系统
描述数据库管理系统在实际安装时应该配置的各个参數,对于分布式数据库必
须分别描述每一个数据库管理系统的配置参数。
同时参照《南京市交通局信息化数据库建设规范》
描述所选用的工具软件和中间件的名称、版本号,以及开发工具与数据库或者中间件接口的情况如果使用了多種开发工具、辅助开发工具、第三方软件部件、多种中间件、多种接口、等答应该逐项分别描述,并且说明每一项的适用范围需要描述嘚内容可能包括:
同2.1中产品名称以及发行厂商。
同2.1中补丁包版本号
同2.1中语言或代码集。
描述数据库接口的名称如果使用别名时,应同時描述使用的别名
描述与数据库接口的方式,并说明该接口方式的特点;如果需要还应该说明使
描述各种接口设置,包括:协议、端ロ号等等
同时参照《南京市交通局信息化数据库建设规范》。
描述所选用的硬件环境各种机型,例如:服务器、工作站应该分别描述。需要描述的内容可能包括:
描述可能影响应用软件访问数据库的各种网络环境如果存在加密传输、VPN链路等情况,也必须描述对于結构复杂的网络,还应该提供网络拓扑图和数据流向示意图需要描述的内容可能包括:
当软件产品将来可能遇到嘚多种运行环境时,应该分别按照3.1节至3.4节的内容列表描述如果软件产品各个子系统的运行环境不完全一样时,应该分子系统按照3.1节至3.4节嘚内容列表描述
遇到上述情况时,不仅需要详细描述各种软件开发、调试、测试的环境为了确实保证软件产品将来能够在各种可能的運行环境中正常运行,还需要对软件产品进行严格的配置管理
这里所提及的软件部件,系指能够完成特定功能、相对独立的一些代码集匼它们可以是插件、组件、控件、函数、过程、子程序、动态连接库、等等。具体呈何种形态取决于实际采用的开发工具和将要实现嘚软件结构。
按照合适的顺序逐个描述软件部件的详细情况。描述的顺序可以是按层次横向进行描述也可以是按模块纵向进行描述,總之描述的方式必须有利于读者理解软件结构
每个部件采用一张软件部件表进行描述,软件部件表的格式见附表一其中;
软件部件的統一顺序编号;对于实行配置管理的软件开发项目来说,该编号必须
与该部件在配置管理中的编号相同
软件部件的正式英文名称,该名稱是程序中使用的实际名称必须符合国家相关软件命名标准。
指该部件所属的子系统;
对于不分为多个子系统的软件来说不必填写该欄。
指调用该部件的部件(或界面参数)的编号和名称
指被该部件所调用的部件的编号和名称。
指该部件入口数据类名称或者数据名称以忣对这些数据的描述;
如果部件没有入口参数,该栏为空
指该部件出口数据类名称或者数据名称,以及对这些数据的描述;
如果部件没囿出口参数该栏为空。
指该部件的算法形式表示如果很简单、或者不存在,也可以为空
指该部件的处理流程的详细表示或描述。
指該部件完成开发后的最终表示形式具体形式取决于开发工具和软件结构,表
n 插件、组件、控件
n 函数、过程、子程序,
描述该部件所适匼的运行环境即说明该部件是针对何种运行环境所开发的;
可以直接描述运行环境,也可以描述运行环境的编号;
对于实行配置管理的軟件开发项目来说该描述必须与该部件在配置管理中的描
指开发该部件时必须满足的专门要求,这些要求可以是:
提出的要求一般不宜超过3项以排列的先后顺序表示优先级。
列出本文件中用到的专业术语的定义以及有关缩写的定义(如有可能,列出相关的外文原词)为叻便于非软件专业或者非计算机专业人士也能够在一定的范围内,读懂软件系统详细设计报告要求尽可能使用非软件专业或者非计算机專业的术语进行描述。所以这里所指的专业术语是指业务层面上的专业术语,而不是软件专业或者计算机专业的术语但是,对于无法囙避的软件专业或者计算机专业术语也应该列入词汇表,并且加以准确定义
说明:如果软件不见使用一张表表述不完时,可以采用续表描述但是必须注明是那张表的续表。
说明:如果软件不见使用一张表表述不完时可以采用续表描述,但是必须注明是那张表的续表
附录D 软件数据库设计报告开发软件文档要写什么内容模板
引言是对这份数据库设计说明书的概览,是为了帮助阅读者了解这份开发软件攵档要写什么内容是如何编写的并且应该如何阅读、理解和解释这份开发软件文档要写什么内容。
说明这份数据库设计说明书是为哪份軟件产品编写的开发这个软件产品意义、作用以及最终要达到的意图。通过这份数据库设计说明书详尽准确地描述了该软件产品的数据庫结构如果这份数据库设计说明书只与整个系统的某一部分有关系,那么只定义数据库设计说明书中说明的那个部分或子系统
具体说奣本软件开发项目的全部风险承担者,以及各自在本阶段所需要承担的主要风险首要风险承担者包括:
描述编写开发软件文档要写什么內容时所采用的各种排版约定。排版约定应该包括:
列举本数据库设计说明书所针对的各种不同的预期读者例如,鈳能包括:
并且描述了开发软件文档要写什么内容中其余部分的内容及其组织结构,并且针对每一类读者提出最适合的开发软件文档要寫什么内容阅读建议
列举编写需求规格说明书时所用到的参考文献及资料,可能包括;
为了方便读者查阅所有参考资料应该按一定顺序排列。如果可能每份资料都应该给出:
完整并且清楚的说明本数据库的命名规则在《南京市交通局信息化数据库建设规范》中已经给出了一个完整的數据库命名规则,开发者应遵守执行如果本数据库的命名规则与该规范不完全一致,应作出解释
数据库设计人员根据《软件需求分析报告》,创建与数据库相关的实体关系图(E-R图)如采用面对对象的分析和设计方法,则此处的实体相当于类
在此处,应给絀逻辑设计的完整的E-R图
在此处应给出完整的数据库物理结构E-R图。开发者应根据逻辑设计的结果进行数据库的物理设计,并对表结构进行规范化处理(第一范式第二范式,第三范式)
数据库分布采用一张表格进行描述,其格式如下:
给出本系统中指定数据庫的顺序编号
若本系统中只有一个数据库,则本项内容不需要描述本表内容也只有一行。
说明: 在一个系统中可能安装若干个相同的戓者不同的数据库管理系统
一个数据库管理系统也可能安装一个或者多个数据库。
给出本系统中指定数据库管理系统的商品名称
若本系统中只有一种数据库管理系统,则本项内容不需要描述
给出本系统中指定数据库管理系统的版本号。
若本系统中只有一个版本的数据庫管理系统则本项内容不需要描述。
给出本数据库的英文名称该名称是在应用软件中实际使用的名称,必须符合《南京市交通局信息囮数据库建设规范》中相关命名规范
给出本数据库的中文名称,该名称是本数据库英文名称的说明
给出本数据库安装的实际位置,必須描述清楚该位置是在那个物理设备的哪一
个逻辑存储设备上以及存储文件的名称。
每个基表采用一张表格进行描述其格式如下:
给絀本基表的顺序编号。
给出本基表的英文名称该名称是在应用软件中实际使用的名称,必须符合命
给出本基表的中文名称该名称是本基表英文名称的说明。
该基表中各个字段的顺序编号。
该基表中各个字段的英文名称,该名称必须符合《南京市交通局信息化数据库建设规范》中相关命名规范
该基表中,各个字段的中文名称该名称是英文字段名的说明。
该基表中各个字段的类型;如果需要,在說明类型时还需要说明字段长度。
该基表中各个字段有关的限制性说明,需要描述的内容可能包括:
n 显示格式与小数位数;
n 有效性规則与约束;
说明一些有关本表的、必须描述清楚的问题需要描述的内容可能包括:
n 索引、排序方式和类型;
每个视图采用一张表格进行描述,其格式如下:
给出本视图的顺序编号
给出本视图的英文名称,该名称是在应用软件中实际使用的名称必须符合
给出本视图的中攵名称,该名称是本视图英文名称的说明
列出建立该视图时,所用到的基表和视图
该视图中,各个字段的顺序编号
该视图中,各个芓段的英文名称该名称必须符合《南京市交通局信息化数据库建设规范》中相关命名规范。
该视图中各个字段的中文名称,该名称是渶文字段名的说明
该视图中,各个字段的类型;如果需要在说明类型时,还需要说明字段长度
该视图中,各个字段的来源即该字段原来是那个表或者那个视图中的那个字
段;在某些情况下,字段可能来自一个特定的表达式
该视图中,各个字段有关的限制性说明包括:
n 显示格式与小数位数;
n 有效性规则与约束;
说明一些有关本视图的、必须描述清楚的问题,需要描述的内容可能包括:
每个数据库嘚所有采用一张表格进行描述其格式如下:
给出本项索引的顺序编号。
给出本项索引所在的基表名称
给出本项索引所在的字段名称或鍺字段集名称。
描述有关本项索引中其它需要说明的事项,例如:排序方式、等等
每个数据库的完整性约束采用一张表格进行描述,其格式如下:
给出本项完整性约束的顺序编号
给出本项完整性约束的名称。
给出本项完整性约束所在的基表名称
给出本项完整性约束所在的字段名称。
给出本项完整性约束的逻辑表达式
描述有关本项完整性约束中,其它需要说明的事项
每个数据库的授权采用一张表格进行描述,其格式如下:
给出本项授权的顺序编号
给出本项授权的用户名称,这里的用户不一定是具体用户也可以是用户组。
给出夲项授权的对象名称例如:基表、字段、等等。
必须注意到一个用户可能存在多项授权,应该逐项描述
被授权用户在该对象上拥有嘚访问权限,例如:查询权、修改权、等等
描述有关本项授权中,其它需要说明的事项
给出本触发器的顺序编号。
给出本触发器的英攵名称必须符合《南京市交通局信息化数据库建设规范》中相关命名规范。
给出本触发器的中文名称该名称是本触发器英文名称的说奣。
给出该触发器产生触发的条件
给出该触发器被触发后所执行的动作内容。
每个数据库的授权采用一张表格进行描述其格式如下:
给出本存储过程的顺序编号。
给出本存储过程的英文名称该名称是在应用软件中实际使用的名称,必须符
给出本存储过程嘚中文名称该名称是本存储过程英文名称的说明。
给出该存储过程算法或者描述详细内容如果需要,应该辅以流程图说明
描述本存儲过程需要说明的一些事项。
每项数据复制采用一张表格进行描述其格式如下:
给出本数据复制的顺序编哥
给出本数据复淛的英文名称,该名称是在应用软件中实际使用的名称必须符
给出本数据复制的中文名称,该名称是本数据复制英文名称的说明
作为複制数据源的数据库编号,编号含义同上
作为复制目标的数据库编号,编号含义同上
给出该复制的详细描述,如果需要应该辅以示意图说明。
给出该复制的执行方式描述时应该说明:
必须说明执行周期或者执行条件。
必须说明被那个模块调用以及是手动调用,还昰条件调用
给出对应源数据库编号的源数据库名称。
给出对应目标数据库编号的目标数据库名称
分别给出源数据库和目标数据库中,進行对应复制的源基表名称和目标基表名
分别给出源基表和目标基表中进行对应复制的源字段名称和目标字段名称。
描述本复制中需要說明的一些特殊事项
列出本文件中用到的专业术语的定义,以及有关缩写的定义(如有可能列出相关的
外文原词)。为了便于非软件专业戓者非计算机专业人士(例如:开发软件文档要写什么内容编写人员等等)
阅读数据库设计说明书,要求使用非软件专业或者非计算机专业嘚术语进行描述所以这里所指的专业术语,是指业务层面上的专业术语而不是软件专业或者计算机专业的术语。但是对于无法回避嘚软件专业或者计算机专业术语,也应该列入词汇表并且加以准确定义。
严格说来历史数据处理并不属于数据库设计范畴。但是对于夶多数数据库来说如果历史数据处理不当,少则数月、多则数年最终将使数据库无法正常运行。这段时间的长短取决于数据库设计容量大小以及数据流强度(即在单位时间内进入数据库的数据记录数量)高低。因此应该设计专门的归档数据库并根据历史数据需要保存备查的时间长短,定期将历史数据转移到归档数据库中
设计归档数据库时,需要根据具体情况进行考虑下面列出一些可能需要考虑的内嫆:
例如:日、周、旬、月、季、年、等等
例如:手动、自动、条件、等等。
哆数情况下归档的历史数据并不需要保存全部细节,可以去掉部分细节采
用压缩归档处理的方法减少归档数据库的占用空间。
注意:洳果压缩数据时去掉了不该去掉的细节,将是无可挽回的
4.2.3 由业主确定必须检查的其他开发软件文档要写什么内容... 59
为了尽可能的找出软件的不足,提高软件的质量促进软件的成功验收,专门制定了本大纲其主要目的在于为所要进行的测试工作制定各种必要的准则和规范,以及在有关方面协议的基础上对测试工作进行合理组织与管理
本大纲所提及的术语,其定义遵照GB/T 11457标准
信息技术软件生存期过程
计算机软件产品开发文件编制指南
计算机软件需求说明编制指南
计算机软件测试文件编制指南
计算机软件质量保证计划规范
计算机软件配置管理计划规范
计算机软件可靠性和可维护性管理
软件开发者有关软件工程的规范
例如:合同书等,法律文件中的有关规定
说明:(1)应該遵循自顶而下、就严不就宽的原则,除非合同书等法律文件中另有规定
开发方如期交付软件的基础上,由业主审核确定具体日期安排
由业主聘请具有一定的分析、设计、编程和软件测试经验的测试组长和其他专业人员组成。测试组设组长一名(可设有副组长)负责整个測试的计划、组织工作。
或委托具有国家认可测试资质的第三方进行测试
测试内容应该包括:合法性检查、开发软件文档要写什么内容檢查、软件一致性检查、软件系统测试与测试结果评审等几项工作。
检查开发者在开发本软件时使用的开发工具是否合法。对在编程中使用的一些非本单位自己开发的也不是由开发工具提供的控件、组件、函数库等,检查其是否有合法的发布许可
说明:如果业主认为4.1.1节和4.1.2节所列开发软件文档要写什么内容之外,还需要检查其它开发软件文档要写什麼内容则在此列出开发软件文档要写什么内容名称;如果业主认为不需要进行额外的开发软件文档要写什么内容检查,则本部分无内容
开发软件文档要写什么内容是软件的重要组成都分,是软件生存周期各个不同阶段的产品描述开发软件文档要写什么内容质量的度量准则就是要评审各阶段开发软件文档要写什么内容的合适性。主要有以下六条:
开发方必须按照GB 8567(计算机软件产品开发文件编制指南)的规定编制相应的
开发软件文档要写什么内容以保证在开发阶段结束时其开发软件文档要写什么内嫆是齐全的。
在软件开发各个阶段所编写的开发软件文档要写什么内容的内容必须真实的反映阶段的工作且与该阶
在软件开发各个阶段所编写的各种开发软件文档要写什么内容的语言表达应该清晰、准确简练,适合各
在软件开发各个阶段所编写的各种开发软件文档要写什麼内容应该具有良好的可追踪性开发软件文档要写什么内容的可追踪
性包括横向可追踪性和纵向可追踪性两个方面。前者是指在不同的開发软件文档要写什么内容的相关内
容之间相互检索的难易程序;后者是指确定同一开发软件文档要写什么内容某一内容在本开发软件文檔要写什么内容范围中检
在软件开发各个阶段所编写的各种开发软件文档要写什么内容应该具有较好的自说明性开发软件文档要写什么內容的自说明
性是指在软件开发各个阶段中,不同开发软件文档要写什么内容能够独立表达该软件在其相应阶段的
在软件开发各个阶段所编写的各种开发软件文档要写什么内容应该具有良好的规范性。开发软件文档要写什么内容的规范性是
指开发软件文档要写什么内容的葑面、大纲、术语的含义以及图示符号等符合有关规范的规定
仅对系统关键模块的源代码进行抽查,检查模块代码编寫的规范性批注的准确性,是否存在潜在性错误以及代码的可维护性。
检查源代码中的变量、函数、对象、过程等的命名是否符合约萣规范该规范可
以由开发方在软件工程开发软件文档要写什么内容规范中单方面约定。
检查程序中的注释是否规范注释量是否达到约萣要求,例如:要求注释量达到
检查数据库接口等外部接口是否符合要求各程序模块使用的接口方式是否一
致,特定的外部接口协议是否符合
源代码中涉及的金额的常量、变量及数据集和数据库中涉及金额的数据类型是否
采用货币类型,以防止在特定条件下产生较大的誤差而影响统计结果
对一些程序中使用到的、具有使用限制的命令、事件、方法、过程、函数、对象、
控件等进行检查。检查在长时间運行时有无可能接近或者达到限制条件,
这里考虑的系统运行时间可能长达数年
要求提交的源代码在其规定的编译环境中,能够重新编译无错误并且能够完成
相应的功能,从而确定移交的确实是正确的源代码
在新系统上用交付的软件安装盘重新安装各个模块,并且通过运行这些软件模
块能否完成相应的功能,从而确定移交的确实是正确的软件安装盘
在安装后立即卸载所安装的模塊,并且检查是否能够做到彻底卸载
将新安装的软件模块与现场运行模块用软件工具抽样比较,确认交付的软件安装
盘与现场运行软件┅致
抽查数处现场运行模块用软件工具比较,确认现场运行软件一致
软件系统测试不仅是检测软件的整体行为表现,从另一个侧面看也是对软件开发设计的再确认。
进行软件系统测试工作时具体的测试用例是由开发方提供,并由测试方和用户共同补充制定的在开發方做完功能演示后,可以进行下列测试:
说明:实际进行的测试内容有测试方法和业主根据具体情况共同确定并非文中所列测试内容嘟必须进行测试。
对照界面规范(在软件需求规格说明书中规定或者由软件工程规范中给出)和界面表(在概要设计中给出),检查各界面设计昰否规范包括:界面风格、表现形式、组件用法、字体选择、字号选择、色彩搭配、日期表现、计时方法、时间格式、对齐方式等等,昰否符合规范、是否协调一致、是否便于操作
测试操作是否方便,用户界面是否友好等测试系统是否有影响操作流程的界面Bug和功能Bug,紀录具体Bug的数量、出现频率和严重程度
检查数据在流程中各个阶段的准确性。对系统中每一模块利用实际数据运行将其结果与同样数據环境下应该得出的结果相比较,或与软件需求规格说明书中要求的结果进行比较如有偏差,则功能测试不能通过
检查软件需求规格說明书中描述的需求是否都得到满足;系统是否缺乏软件需求规格说明书中规定的重要功能;以及系统实际使用中不可缺少而软件需求规格说明书中没有规定的功能。
如果存在遗产数据应该检查遗产数据转换是否正确。
测试系统的能力最高实际限度即检查软件在一些超負荷情况下,功能实现的情况例如:要求软件进行某一行为的大量重复、输入大量的数据或大数值数据、对数据库进行大量复杂的查询等。
利用边界测试(最大值、最小值、N次循环)对系统进行模拟运行测试观察其是否处于稳定状态。
根据系统设计指标或者对被测软件提絀的性能指标,测试软件的运行性能例如:传输连接最长时限、传输错误率、计算精度、记录精度、响应时限和恢复时限等。
采用人工嘚干扰使应用软件、平台软件或者系统硬件出错中断正常使用,检测系统的恢复能力进行强壮性测试时,应该参考性能测试相关的测試指标
根据系统的功能逻辑图,测试软件是否按规定的逻辑路径运行选择一些极限数据判断软件运行是否存在错误或非法路径,从而發现系统的逻辑错误或非法后门
输入错误的或非法的数据(类型),检查系统的报错纠错的能力及稳定性并测试可连续使用多长时间而系統不崩溃。
验证安装在系统内的保护机构确实能够对系统进行保护使之不受各种非常的干扰,安全测试时需要设计一些测试用例试图突破系统的安全保密措施检验系统是否有安全保密的漏洞。
说明:进行安全
简介:本开发软件文档要写什么内容为《软件开发开发软件文档要写什么内容doc》可适用于IT/计算机领域
软件开发软件文档要写什么内嫆(document)也称文件通常指的是一些记录的数据和数据媒体它具有固定不变的形式可被人和计算机阅读。它和计算机程序共同构成了能完成特定功能的计算机软件(有人把源程序也当作开发软件文档要写什么内容的一部分)我们知道硬件产品和产品资料在整个生产过程中都是有形可见嘚软件生产则有很大不同开发软件文档要写什么内容本身就是软件产品。没有开发软件文档要写什么内容的软件不成其为软件更谈不到软件产品软件开发软件文档要写什么内容的编制(documentation)在软件开发工作中占有突出的地位和相当的工作量。高效率、高质量地开发、分发、管理囷维护开发软件文档要写什么内容对于转让、变更、修正、扩充和使用开发软件文档要写什么内容对于充分发挥软件产品的效益有着重要意义然而在实际工作中开发软件文档要写什么内容在编制和使用中存在着许多问题有待于解决。软件开发人员中较普遍地存在着对编制開发软件文档要写什么内容不感兴趣的现象从用户方面看他们又常常抱怨:开发软件文档要写什么内容售价太高、开发软件文档要写什麼内容不够完整、开发软件文档要写什么内容编写得不好、开发软件文档要写什么内容已经陈旧或是开发软件文档要写什么内容太多难于使用等等。究竟应该怎样要求它开发软件文档要写什么内容应该写哪些说明什么问题起什么作用这里将给出简要的介绍图开发软件文档偠写什么内容桥梁作用开发软件文档要写什么内容在软件开发人员、软件管理人员、维护人员、用户以及计算机之间的多种桥梁作用可从圖.中看出。软件开发人员在各个阶段中以开发软件文档要写什么内容作为前阶段工作成果的体现和后阶段工作的依据这个作用是显而易見的软件开发过程中软件开发人员需制定一些工作计划或工作报告这些计划和报告都要提供给管理人员并得到必要的支持。管理人员则鈳通过这些开发软件文档要写什么内容了解软件开发项目安排、进度、资源使用和成果等软件开发人员需为用户了解软件的使用、操作囷维护提供详细的资料我们称此为用户开发软件文档要写什么内容。以上三种开发软件文档要写什么内容构成了软件开发软件文档要写什麼内容的主要部分我们把这三种开发软件文档要写什么内容所包括的内容列在图中。其中列举了十三个开发软件文档要写什么内容这里對它们作一些简要说明:l可行性研究报告:说明该软件开发项目的实现在技术上、经济上和社会因素上的可行性评述为了合理地达到开发目标可供选择的各种可能实施的方案说明并论证所选定实施方案的理由l项目开发计划:为软件项目实施方案制定出具体计划应该包括各蔀分工作的负责人员、开发的进度、开发经费的预算、所需的硬件及软件资源等。项目开发计划应提供给管理部门并作为开发阶段评审的參考l软件需求说明书:也称软件规格说明书其中对所开发软件的功能、性能、用户界面及运行环境等作出详细的说明。它是用户与开发囚员双方对软件需求取得共同理解基础上达成的协议也是实施开发工作的基础l数据要求说明书:该说明书应给出数据逻辑描述和数据采集的各项要求为生成和维护系统数据文卷作好准备。l概要设计说明书:该说明书是概要设计阶段的工作成果它应说明功能分配、模块划分、程序的总体结构、输入输出以及接口设计、运行设计、数据结构设计和出错处理设计等为详细设计奠定基础l详细设计说明书:着重描述每一模块是怎样实现的包括实现算法、逻辑流程等。·用户手册:本手册详细描述软件的功能、性能和用户界面使用户了解如何使用该软件。开发软件文档要写什么内容用户开发软件文档要写什么内容用户手册操作手册维护修改建议软件需求(规格)说明书开发开发软件文檔要写什么内容软件需求(规格)说明书数据要求说明书概要设计说明书详细设计说明书可行性研究报告项目开发计划管理开发软件文档偠写什么内容项目开发计划测试计划测试报告开发进度月报开发总结报告 l图三种开发软件文档要写什么内容l操作手册:本手册为操作人员提供该软件各种运行情况的有关知识特别是操作方法的具体细节l测试计划:为做好组装测试和确认测试需为如何组织测试制定实施计划。计划应包括测试的内容、进度、条件、人员、测试用例的选取原则、测试结果允许的偏差范围等l测试分析报告:测试工作完成以后应提交测试计划执行情况的说明。对测试结果加以分析并提出测试的结论意见l开发进度月报:该月报系软件人员按月向管理部门提交的项目进展情况报告。报告应包括进度计划与实际执行情况的比较、阶段成果、遇到的问题和解决的办法以及下个月的打算等l项目开发总结報告:软件项目开发完成以后应与项目实施计划对照总结实际执行的情况如进度、成果、资源利用、成本和投入的人力。此外还需对开发笁作作出评价总结出经验和教训l维护修改建议软件产品投入运行以后发现了需对其进行修正、更改等问题应将存在的问题、修改的考虑鉯及修改的影响估计作详细的描述写成维护修改建议提交审批。以上这些开发软件文档要写什么内容是在软件生存期中随着各阶段工作的開展适时编制其中有的仅反映一个阶段的工作有的则需跨越多个阶段。表给出了各个开发软件文档要写什么内容应在软件生存期中哪个階段编写这些开发软件文档要写什么内容最终要向软件管理部门或是向用户回答以下的问题:表软件生存期各阶段编制的开发软件文档偠写什么内容阶段开发软件文档要写什么内容可行性药酒与计划需求分析设计代码编写测试运行与维护可行性研究报告项目开发计划软件需求说明数据要求说明概要设计说明星系设计说明测试计划用户手册操作手册测试分析报告开发进度月报项目开发总结维护修改建议 ll哪些需求要被满足即回答“做什么”l所开发的软件在什么环境中实现以及所需信息从哪里来即回答“从何处”l某些开发工作的时间如何安排即囙答“何时干”l某些开发(或维护)工作打算由“谁来干”l某些需求是怎么实现的l为什么要进行那些软件开发或维护修改工作上述十三个开发軟件文档要写什么内容都在一定程度上回答了这六个方面的问题。这可从表中看到表开发软件文档要写什么内容所回答的问题所提问题開发软件文档要写什么内容什么何处何时谁如何为何可行性研究报告√√项目开发计划√√√软件需求说明√√数据要求说明√√概要设計说明√详细设计说明√测试计划√√√用户手册√操作手册√测试分析报告√开发进度月报√√项目开发总结√维护修改建议√√√ 至此我们对开发软件文档要写什么内容的作用有了进一步的理解。每一个开发软件文档要写什么内容的任务也是明确的任何一个开发软件文檔要写什么内容都此是多余的开发软件文档要写什么内容的管理和维护在整个软件生存期中各种开发软件文档要写什么内容作为半成品戓是最终成品会不断地生成、修改或补充。为了最终得到高质量的产品达到上节提出的质量要求必须加强对开发软件文档要写什么内容的管理以下几个方面是应注意做到的:①软件开发小组应设一位开发软件文档要写什么内容保管人员负责集中保管本项目已有开发软件文檔要写什么内容的两套主文本。两套文本内容完全一致其中的一套可按一定手续办理借阅。②软件开发小组的成员可根据工作需要在自巳手中保存一些个人开发软件文档要写什么内容这些一般都应是主文本的复制件并注意和主文本保持一致在作必要的修改时也应先修改主文本。③开发人员个人只保存着主文本中与他工作相关的部分开发软件文档要写什么内容④在新开发软件文档要写什么内容取代了旧開发软件文档要写什么内容时管理人员应及时注销旧开发软件文档要写什么内容。在开发软件文档要写什么内容内容有更动时管理人员应隨时修订主文本使其及时反映更新了的内容⑤项目开发结束时开发软件文档要写什么内容管理人员应收回开发人员的个人开发软件文档偠写什么内容。发现个人开发软件文档要写什么内容与主文本有差别时应立即着手解决这常常是未及时修订主文本造成的。⑥在软件开發过程中可能发现需要修改已完成的开发软件文档要写什么内容特别是规模较大的项目主文本的修改必须特别谨慎修改以前要充分估计修改可能带来的影响并且要按照:提议、评议、审核、批准和实施等步骤加以严格的控制。开发软件文档要写什么内容编制的质量要求为叻使软件开发软件文档要写什么内容能起到前节所提到的多种桥梁作用使它有助于程序员编制程序有助于管理人员监督和管理软件开发有助于用户了解软件的工作和应做的操作有助于维护人员进行有效的修改和扩充开发软件文档要写什么内容的编制必须保证一定的质量质量差的软件开发软件文档要写什么内容不仅使读者难于理解给使用者造成许多不便而且会削弱对软件的管理(管理人员难以确认和评价开发笁作的进展)增高软件的成本(一些工作可能被迫返工)甚至造成更加有害的后果(如误操作等)。造成软件开发软件文档要写什么内容质量不高的原因可能是:·缺乏实践经验缺乏评价开发软件文档要写什么内容质量的标准。·不重视开发软件文档要写什么内容编写工作或是对开发软件文档要写什么内容编写工作的安排不恰当最常见到的情况是软件开发过程中不能按表给出的进度分阶段及·时完成开发软件文档要写什么内容的编制工作而是在开发工作接近完成时集中人力和时间专门编写开发软件文档要写什么内容。另一方面和程序工作相比许多人对编淛开发软件文档要写什么内容不感兴趣于是在程序工作完成以后不得不应付一下把要求提供的开发软件文档要写什么内容赶写出来。这樣的做法不可能得到高质量的开发软件文档要写什么内容实际上要得到真正高质量的开发软件文档要写什么内容并不容易除去应在认识仩对开发软件文档要写什么内容工作给予足够的重视外常常需要经过编写初稿听取意见进行修改甚至要经过重新改写的过程。高质量的开發软件文档要写什么内容应当体现在以下一些方面:①针对性开发软件文档要写什么内容编制以前应分清读者对象按不同的类型、不同层佽的读者决定怎样适应他们的需要例如管理开发软件文档要写什么内容主要是面向管理人员的用户开发软件文档要写什么内容主要是面姠用户的这两类开发软件文档要写什么内容不应像开发开发软件文档要写什么内容(面向软件开发人员)那样过多地使用软件的专业术语。②精确性:开发软件文档要写什么内容的行文应当十分确切不能出现多义性的描述同一课题若干开发软件文档要写什么内容内容应该协调┅致应是没矛盾的。⑧清晰性:开发软件文档要写什么内容编写应力求简明如有可能配以适当的图表以增强其清晰性④完整性:任何一個开发软件文档要写什么内容都应当是完整的、独立的它应自成体系。例如前言部分应作一般性介绍正文给出中心内容必要时还有附录列絀参考资料等同一课题的几个开发软件文档要写什么内容之间可能有些部分相同这些重复是必要的。例如同一项目的用户手册和操作手冊中关于本项目功能、性能、实现环境等方面的描述是没有差别的特别要避免在开发软件文档要写什么内容中出现转引其它开发软件文檔要写什么内容内容的情况。比如一些段落并未具体描述而用“见××开发软件文档要写什么内容××节”的方式这将给读者带来许多不便。⑤灵活性:各个不同的软件项目其规模和复杂程度有着许多实际差别不能一律看待图所列开发软件文档要写什么内容是针对中等规模的軟件而言的。对于较小的或比较简单的项目可做适当调整或合并比如可将用户手册和操作手册合并成用户操作手册软件需求说明书可包括对数据的要求从而去掉数据要求说明书概要设计说明书与详细设计说明书合并成软件设计说明书等。
在程序员的日常工作中除了编寫代码之外,还免不了需要编写各种技术开发软件文档要写什么内容一个编写良好的技术开发软件文档要写什么内容在项目中能够很好哋建立沟通与协作,起到很积极的作用因此,编写技术开发软件文档要写什么内容也就成为了程序员技能提升的很重要的一面
为此,峩们特意收集了一些在项目开发过程中经常用到的开发软件文档要写什么内容模板这些模板包括格式和简单的写作说明,相信能够帮助夶家编写出更加高效、实用的技术开发软件文档要写什么内容在收集过程中,我们十分注重其实用性以确保每个模板的价值,而且对於一些重要的开发软件文档要写什么内容提供了多个模板
为了方便大家查找,我们将收录的57模板分为以下几类:
1) 项目及开发管理类:包括立项前的分析立项后的计划、以及进度跟踪、风险控制方面的开发软件文档要写什么内容模板,共计16个;
2) 需求分析类:明确清晰嘚需求是项目成功的基础,在此收集了在需求分析过程中所将使用到的开发软件文档要写什么内容模板共计14个;
3) 系统分析与设计类:包括体系结构设计、高层设计、详细设计、数据库设计等6个相关开发软件文档要写什么内容模板;
4) 软件质量保证类:软件测试是质量保证的关键活动,在此收集了软件测试相关的11个开发软件文档要写什么内容模板;
5) 其它类:除此之外还收集了关于用户手册、软件维護等方面的10个开发软件文档要写什么内容模板,其中还有一个软件过程规范的示例
另外,值得说明的是开发软件文档要写什么内容模板只是为开发软件文档要写什么内容的编写提供一个基础,在实际的编写过程中你可以根据自己的需要进行必要的剪裁和增补。
可行性研究报告(ISO标准)
在立项时应该对项目进行综合分析,探讨项目的经济、社会、技术可行性从而为决策提供基础。该模板为ISO标准开发软件攵档要写什么内容模板其不仅适用于软件项目,对于其它的系统项目也适用
1.1 该项目工作的用户问题或背景
[对引发开发任务的工作和情況的描述。同时也应描述用户希望用将要交付的软件来完成的工作]
[该节内容为该项目提供了合法的理由,你应该考虑用户的问题是否严偅是否应该解决和为什么应该解决。]
[用一句话或很少的几句话来说明“我们希望该产品做什么”换言之,即开发该产品的真正原因
[項目如果没有一个表述清晰、易于理解的目标,就会迷失在产品开发的沙漠中产品必须带来某种优势。典型的优势是产品会增加组织在市场上的价值减少运作成本,或提供更好的客户服务这个优势应该是可度量的,这样才能够让您确定交付的产品是否达到目标]
2.客户、顾客和其它风险承担者
2.1 客户是为开发付费的人,并将成为所交付产品的拥有者
[这一项必须给出客户的姓名三个以内是合理的。]
[客户最終将接受该产品因此必须对交付的产品满意。如果你无法找到一个客户的姓名那么也许你就不应该构建该产品。]
2.2 顾客是将花钱购买该產品的人
2.3 其它风险承担者
[其他的一些人或组织的名称他们或者受到产品的影响,或影响产品]
1) 经理或项目负责人;
2) 业务领域专家;
7) 测试和质量保证人员;
8) 审查员,诸如安全审查员或审计人员;
11)你所处行业的专业人员
[产品的潜在用户或操作员的列表。针对每种類型的用户提供以下信息:]
2) 用户工作的任务;
3) 主要相关的经验;
5) 其他用户特征:包括身体、智力、工作态度、对技术的态度、教育程度、语言技能、年龄、性别等。
[用户是为了完成工作而与产品交互的人你了解用户,就越可能提交适合用户工作方式的产品]
3.2 对用戶设的优先级
[在每类用户后面附上一个优先级,这区别了用户的重要性和优先地位:]
1) 关键用户:对产品的后续成功至关重要;
2) 次要用戶:他们使用产品但对产品的长期成功并无影响;
3) 不重要的用户:不常用、未授权和没有技能的用户。
[如果认为某些用户对产品或组織更重要那么应该写明,因为它会影响你设计产品的方式]
4.1 解决方案限制条件
[此处明确了限制条件,它们规定了解决问题必须采取的方式您可以认为它们是指令式的解决方案。仔细描述该解决方案以及测试是否符合的度量标准。如果可能您应该解释使用该解决方案嘚原因。]
[换一句话说就是要求软件解决方案满足哪些限制条件!]
[该环境也将成为设计解决方案时的限制条件之一。]
[此处描述那些不属于產品的一部分但产品却又必须与其协作的应用程序。]
4.5 预期的工作场地环境
[此处描述用户工作和使用该产品的工作场地此处应该描述任哬可能对产品设计产生影响的工作场地特征。]
4.6 开发者构建该产品需要多少时间
[任何已知的最后期限或商业机会的时限,应在此处说明]
4.7 該产品的财务预算是多少
[该产品的预算,以金钱的形式或可得资源的形式说明]
[定义项目中使用到的所有术语,包括同义词这里的内容僦是一个字典,包括在需求规格说明书中使用的所有名称的含义这个字典应该使用你的组织或行业使用的标准名称。这些名称也应该反映出在工作领域中当前使用的术语该字典包括项目中用到的所有名称。请仔细地选择名称以避免传达不同的、不期望的含义。为每个洺字写下简明扼要的定义这些定义必须经过相应的风险承担者同意。]
[可能对产品产生影响的外部因素但不是命令式的需求限制条件。]
[列出开发者所做的假设]
[将所有的假设列在此的目的是让每一个项目成员都意识到这个假设。]
8.1 工作的上下文范围
[上下文范围图用来表示将偠开发的系统、产品与其它系统之间的关系以确定系统边界。]
[一个事件清单确定系统要响应的所有业务事件。清单包括:]
9.功能性需求與数据需求
[与产品/系统有密切关系的主题域相关的业务对象、实体、类的说明书]
[一些与产品的用户界面相关的需求描述。]
11.2 学习的容易程序
[学习使用该产品应该多容易的说明通常是有学习时间来衡量。]
[明确完成特定任务需要的时间这常常指响应时间。]
12.2 安全性的需求
[对可能造成人身伤害、财产损失和环境破坏所考虑到的风险进行量化描述]
12.4 可靠性和可用性需求
[本节量化产品所需的可靠性。这常常表述为允許的两次失败之间无故障运行时间或允许的总失败率。]
13.1 预期的物理环境
[本节明确产品将操作的物理环境以及这种环境引起的任何特殊需求。]
13.2 预期的技术环境
13.3 伙伴应用程序
14.可维护性和可移植性需求
14.1 维护该产品需要多容易
14.2 是否存在一些特殊情况适用于该产品的维护
[关于预期嘚产品发布周期和发布将采取的形式的规定]
14.3 可移植性需求
15.1 该产品是保密的吗?
[关于该被授权使用该产品以及在什么样的情况下授权等方面的描述。]
15.2 文件完整性需求
[关于需要的数据库和其他文件完整性方面的说明]
[本节包括针对社会和政策的因素的规格说明,这些因素会影响产品的可接受性如果你开发的产品是针对外国市场的,可能要特别注意这些需求]
[问一下是否产品的目标是你所不熟悉的文化环境,是否其它国家的人或其他类型的组织的人会使用该产品人们是否有与你的文化不同的习惯、节日、迷信、文化上的社会行为规范。]
17.1 该產品是否受到某些法律的管制
17.2 是否有一些必须符合的标准
[对未确定但可能对产品产生重要影响的因素的问题描述按照需求分析的术语还說,就是TBD(To Be Define)的问题]
19.1 是否有一些制造好的产品可以购买
[应该调查现存产品清单,这些产品可以作为潜在的解决方案]
19.2 该产品是否可使用淛造好的组件
[描述可能用于该产品的候选组件,包括采购的和公司自己的产品列出来源。]
19.3 是否有一些我们可以复制的东西
20.1 新产品会在当湔环境中带来什么问题
20.2 新的开发是否将影响某些已实施的系统
20.3 是否我们现有的用户会受到新开发的敌对性影响
20.4 预期的实现环境会存在什么限制新产品的因素
[关于新的自动化技术、新的组织结构方式的任何潜在问题的描述]
20.5 是否新产品会带来其他问题
21.1 为提交该产品已经做了哪些事
[用来开发产品的生命周期和方法的细节。画一个高层的过程图展示各项任务和它们之间的接口这可能是沟通这方面信息的最好办法。]
[关于每个开发阶段和操作环境中的组件的规格说明]
22.1 我们要让已有数据和过程配合新产品,有什么特殊要求
22.2 为了新产品哪些数据必须修改/转换
[数据转换任务清单,同时确定新产品需要转换的数据]
23.1 当你开发该产品时,要面对什么风险
23.2 你制定了怎样的偶然紧急情况计划
[需求的其他费用是你必须投入到产品构建中去的钱或工作量当需求规格说明书完成时,你可以使用一种估算方法来评估费用然后以构建所需的资金或时间的形式表述出来。]
[用户开发软件文档要写什么内容的清单这些开发软件文档要写什么内容将作为产品的一部分交付。]
[這里记录下一些希望今后版本中实现的需求]
Guild还提供了一个配套的Volere需求记录卡,这个记录卡十分实用建议大家在需求调查、分析过程中,将需求记录在一系列的Volere需求记录卡上这个卡让你能够很好的理清需求之间的关系,需求提出的背景用户对需求的期望,有了这些素材整理SRS时将变得更加简单。
注:顾客满意度是指完成该项功能顾客满意的程度而顾客不满意度则是指未实现该功能顾客不满意的程度。
如果在需求分析时采用了用例(Use case)技术那么该需求规格说明书将更加符合你的需要。当然你也可以结合Volere需求规格说明书对该模板进荇必要的修改。
[该部分主要是对软件需求规格说明书开发软件文档要写什么内容进行基本的描述包括该开发软件文档要写什么内容的目嘚、范围、术语定义、参考资料以及概要。]
[软件需求规格说明书用来系统、完整地记录系统的软件需求该软件需求说明书的基础是用例汾析技术。因此该开发软件文档要写什么内容中应包括用例模型、补充规约等内容]
[在此小节中,主要对软件需求规格说明书的目的做一概要性说明通常软件需求规格说明书应详细地说明应用程序、子系统的外部行为,还要说明非功能性需求、设计约束以及其它的相关洇素。]
[系统是有范围的而不是无限扩展的,对于无限扩展的需求是无法进行描述的因此,在本小节应该对该说明书所涉及的项目范围進行清晰的界定指定该规格说明书适用的软件应用程序、特性或者其它子系统分组、其相关的用例模型。当然在此也需要列出会受到该開发软件文档要写什么内容影响的其它开发软件文档要写什么内容]
1.3 定义、首字母缩写词和缩略语
[与其它开发软件文档要写什么内容一样,该开发软件文档要写什么内容也需要将本开发软件文档要写什么内容中所涉及的所有术语、缩略语进行详细的定义还有一种可简明的莋法,就是维护在一个项目词汇表中这样就可以避免在每个开发软件文档要写什么内容中都重复很多内容。]
[在这一小节中应完整地列絀该开发软件文档要写什么内容引用的所有开发软件文档要写什么内容。对于每个引用的开发软件文档要写什么内容都应该给出标题、标識号、日期以及来源为阅读者查找这些开发软件文档要写什么内容提供足够详细的信息。]
[在本小节中主要是说明软件需求规格说明书各个部分所包含的主要内容,就像一个文章摘要一样同时也应该对开发软件文档要写什么内容的组织方式进行解释。]
[在本节中将对整個软件需求进行总体性的描述,以期让读者对整个软件系统的需求有一个框架性的认识也就是说,该节中主要包括影响产品及其需求的┅般因素而不列举 具体的需求。主要包括产品总体效果、产品功能、用户特征、约束、假设与依赖关系、需求子集等方面的内容]
[在本尛节中,将列出该软件需求的用例模型该模型处于系统级,对系统的特性进行宏观的描述在此应该列出所有的用例和Actor的名称列表,并苴对其做出简要的说明以及在图中的各种关系。]
2.2 假设与依赖关系
[在软件系统的开发过程中存在许多假设和依赖关系。在本小节中应列舉出所有的重要的技术可行性假设、子系统或构件可用性假设以及一些可行性的假设。]
[如果说第二章节是框架那么本节就是血肉。在夲节中应该详细列出所有的软件需求,其详细程序应使设计人员能够充分理解并且进行设计的要求同时也应该给予测试人员足够的信息,以帮助他们来验证系统是否满足了这些需求整个需求的组织可以采用用例描述进行。]
[如果你使用用例建模技术那么你已经通过用唎定义了系统的大部分功能性需求和一些非功能性需求。因此在软件需求规格说明书只需将这些具体的用例描述,整理在一起全部放茬该小节之中。当然也可以将用例描述做为附件在此列出引用,只是这样做并不利于阅读建议在组织形式上采用以“软件需求”为线索,在每个需求中填入对应的1个或几个用例描述。]
[由于用例毕竟主要针对功能性需求因此还会有一些其它的补充需求遗漏,因此在本尛节中就是将这些东西补充出来这些补充需求大部分集中在非功能需求之上,包括以下几个方面的内容:]
1) 易用性:例如指出普通用户囷高级用户要高效地执行某个特定操作所需的培训时间;指出典型任务的可评测任务次数;或者指出需要满足的可用性标准(如IBM的CUA标准、Microsoft嘚GUI标准
2) 可靠性:包括系统可用性(可用时间百分比、使用小时数、维护访问权、降纸模式操作等);平均故障间隔时间(MTBF,通常表示為小时数但也可表示为天数、月数或年数);平均修复时间(MTTR,系统在发生故障后可以暂停运行的时间);精确度(指出系统输出要求具备的精密度、分辨率和精确度);最高错误或缺陷率(通常表示为bugs/KLOC即每千行代码的错误数目或 bugs/function-point,即每个功能点的错误数目);错误或缺陷率(按照小错误、大错误和严重错误来分类:需求中必须对“严重”错误进行界定例如:数据完全丢失或完全不能使用系统的某部汾功能)。
3) 性能:包括对事务的响应时间(平均、最长);吞吐量(例如每秒处理的事务数);容量(例如系统可以容纳的客户或事务數);降级模式(当系统以某种形式降级时可接受的运行模式);资源利用情况:内存、磁盘、通信等
4) 其它:包括用户界面要求、联機帮助系统要求、法律许可、外购构件,以及操作系统、开发工具、数据库系统等设计约束
[支持信息用于使软件需求规格说明书更易于使用。它包括:目录、索引、附录等]
计算机软件需求说明编制指南
软件需求规格说明是十分重要的开发软件文档要写什么内容,因此为開发团队提供一份详细的编制指南是十分有意义和必要的本开发软件文档要写什么内容就是一个编制指南的例子,你可以根据该指南結合自己的实际情况进行修改。
本指南为软件需求实践提供了一个规范化的方法本指南不提倡把软件需求说明(Software Requirements Specifications,以下简称SRS)划分成等級避免把它定义成更小的需求子集。
1)软件客户(Customers)以便精确地描述他们想获得什么样的产品。
2)软件开发者(Suppliers)以便准确地理解愙户需要什么样的产品。
对于任一要实现下列目标的单位和(或)个人:
1)要提出开发规范化的SRS提纲;
2)定义自己需要的具体的格式和内嫆;
3)产生附加的局部使用条款如SRS质量检查清单或者SRS作者手册等。
SRS将完成下列目标:
1) 在软件产品完成目标方面为客户和开发者之间建竝共同协议创立一个基础对要实现的软件功能做全面描述,帮助客户判断所规定的软件是否符合他们的要求或者怎样修改这种软件才能适合他们的要求;
2) 提高开发效率。编制SRS的过程将使客户在设计开始之前周密地思考全部需求从而减少事后重新设计、重新编码和重噺测试的返工活动。在SRS中对各种需求仔细地进行复查还可以在开发早期发现若干遗漏、错误的理解和不一致性,以便及时加以纠正;
3) 為成本计价和编制计划进度提供基础SRS提供的对被开发软件产品的描述,是计算机软件产品成本核算的基础并且可以为各方的要价和付費提供依据。SRS对软件的清晰描述有助于估计所必须的资源,并用作编制进度的依据;
4) 为确认和验证提供一个基准任何组织将更有效哋编制他们的确认和验证计划。作为开发合同的一部分SRS还可以提供一个可以度量和遵循的基准(然而,反之则不成立即任一有关软件嘚合同都不能作为SRS。因为这种文件几乎不包括详尽的需求说明并且通常不完全的);
5) 便于移植。有了SRS就便于移值软件产品以适应新嘚用户或新的机种。客户也易于移植其软件到其他部门而开发者同样也易于把软件移植到新的客户;
6) 作为不断提高的基础。由于SRS所讨論的是软件产品而不是开发这个产品的设计。因此SRS是软件产品继续提高的基础虽然SRS也可能要改变,但是原来的SRS还是软件产品改进的可靠基础
本指南适用于编写软件需求规格说明,它描述了一个SRS所必须的内容和质量并且在第6章中提供了SRS大纲。
GB 8566 计算机软件开发规范
GB 8567 计算機软件产品开发文件编制指南
GB/T 11457所列术语和下列定义适用于本指南
合同(contract):是由客户和开发者共同签署的具有法律约束力的文件。其中包括产品的技术、组织、成本和进度计划要求等内容
客户(customer):指个人或单位,他们为产品开发提供资金通常(但有时也不必)还提絀各种需求。文件中的客户和开发者也可能是同一个组织的成员
语言(language):是具有语法和语义的通信工具,包括一组表达式、惯例和传遞信息的有关规则
分割(partitioning):把一个整体分成若干部分。
开发者(supplier):指为客户生产某种软件产品的个人或集团在本指南中,客户和開发者可能是同一个组织的成员
用户(user):指运行系统或者直接与系统发生交互作用的个人或集团。用户和客户通常不是同一些人
4.編写SRS的背景信息
SRS是对要完成一定功能、性能的软件产品、程序或一组程序的说明。对SRS的描述有两项基本要求:
1)必须描述一定的功能、性能;
2)必须用确定的方法叙述这些功能、性能
必须认识到SRS在整个软件开发规范(见GB 8566)所规定的有关阶段都起作用。正因为如此SRS的起草鍺必须特别注意不要超出这种作用的范围。这意味着要满足下列要求:
1) SRS必须正确地定义所有的软件需求;
2) 除设计上的特殊限制之外SRSΦ一般不描述任何设计、验证或项目管理细节。
当且仅当它对每一个需求只有一种解释时SRS者是无歧义的。
2) 要求最终产品的每一个特性鼡某一术语描述;
3) 若某一术语在某一特殊的行文中使用时具有多种歧义那么对该术语的每种含义作出解释并指出其适用场合。
需求通瑺是用自然语言编写的使用自然语言的SRS起草者必须特别注意消除其需求的歧义性。提倡使用形式化需求说明语言
如果一个SRS能满足下列偠求,则该SRS就是完整的:
1) 包括全部有意义的要求无论是关系到功能的、性能的、设计约束的,还是关系到属性或外部接口方面的需求;
2) 对所有可能出现的输入数据的响应予以定义要对合法和非合法的输入值的响应做出规定;
3) 要符合SRS要求。如果个别章节不适用则茬SRS中要保留章节号;
4) 填写SRS中的全部插图、表、图示标记和参照,并且定义全部术语和度量单位
4.3.2.1 关于使用“待定”一词的规定
任何一个使用“待定”的SRS都是不完全的。
1) 若万一遇到使用“待定”一词时作如下处理:
? 对产生“待定”一词的条件进行描述,使得问题能被解决;
? 描述必须干什么事以删除这个“待定”;
2) 包含有“待定”一词的任何SRS的项目文件应该:
? 标识与此特定文件有关的版本号或敘述其专门的发布号;
? 拒绝任何仍标识为“待定”一词的SRS章节的许诺。
当且仅当SRS中描述的每一个需求都是可以验证的该SRS才是可以验证嘚;当且仅当在某一性能价格比可取的有限处理过程,人或机器能通过该过程检查软件产品能否满足需求时才称这个需求是可以验证的。
当且仅当SRS中各个需求的描述是不矛盾时SRS才是一致的
如果一个SRS的结构和风格在需求有必要改变时是易于实现的、完整性的、一致的,那麼这个SRS就是可以修改的可修改性要求SRS具备以下条件:
1) 具有一个有条不紊的易于使用的内容组织,具有目录表索引和明确的交叉引用表;
2) 没有冗余。即同一需求不能在SRS中出现多次
? 冗余本身不是错误,但是容易发生错误冗余可增加SRS的可读性,但是在一个冗余文件被更新时容易出现问题例如:假设一个明确的需求在两个地方详细列出,后来发现这个需求需要改变若只修改一个地方,于是SRS就变得鈈一致了
? 不管冗余是否必须,SRS一定要包含一个详细的交叉引用表以便SRS具备可修改性。
如果每一个需求的源流是清晰的在进一步产苼和改变文件编制时,可以方便地引证每一个需求则该SRS就是可追踪的。建议采用如下两种类型的追踪:
1) 向后追踪(即向已开发过的前┅阶段追踪)根据先前文件或本文件前面的每一个需求进行追踪。
2) 向前追踪(即是向由SRS派生的所有文件追踪)根据SRS中具有唯一的名芓和参照号的每一个需求进行追踪。
当SRS中的一个需求表达另一个需求的一种指派或者是派生的向前、向后的追踪都要提供。例如:
1) 从總的用户响应时间需求中分配给数据库操作响应时间;
2) 识别带有一定功能和用户接口的需求的报告格式;
3) 支持法律或行政上需要的某個软件产品(例如计算税收)。在这种情况下要指出软件所支持的确切的法律或行政文件。
当软件产品进入运行和维护阶段时SRS的向湔可追踪性显得特别重要。当编码和设计文件作修改时重要的是要查清这些修改所影响的全部需求。
4.3.7 运行和维护阶段的可使用性
SRS必须满足运行和维护阶段的需要包括软件最终替换。
1) 维护常常是由与原来开发无联系的人来进行的局部的改变(修正)可以借助于好的代碼注释来实现。对于较大范围的改变设计和需求文件是必不可少的,这里隐含了两个作用:
? SRS中必须包括一个记录它记录那些应用于各个成分的所有具体条文。例如:它们的危急性(如故障可能危及完全或导致大量财政方面和社会方面的损失);它们仅与暂时的需要相關(如支持一种可立即恢复原状的显示);它们的来源(如某功能是由已存在的软件产品的全部拷贝复制而成)
2) 要求在SRS中清楚地写明功能的来源和目的,因为对功能的来源和引入该功能的目的不清楚的话通常不可能很好地完成软件的维护。
软件开发的过程是由开发者囷客户双方同意开发什么样的软件协议开始的这种协议要使用SRS的形式,应该由双方联合起草这是因为:
1) 客户通常对软件设计和开发過程了解较少,而不能写出可用的SRS;
2) 开发者通常对于客户的问题和意图了解较少从而不可能写出一个令人满意的系统需求。
软件产品嘚开发过程中在项目的开始阶段不可能详细说明某些细节,在开发过程中可能发现SRS的缺陷、缺点和错误之类的问题所以可能要对SRS进行妀进。
在SRS的改进中应注意如下事项:
1) 尽管可以预见校正版本的开发以后不可避免,而对需求还必须尽可能完全、清楚地描述
2) 一旦朂初识别出项目的变化,应引入一个正式的改变规程来标识、控制、追踪和报告项目的改变批准了的需求改变,用如下的方法编入SRS之中:
? 提供各种改变后的正确的、完全的审查记录;
? 允许对SRS当前的和被替代部分的审查
编制SRS最显而易见的方法是用自然语言来描述。尽管自然语言是丰富多彩的但不易精确,用形式化的方法较好
4.6.1 形式化说明方法
在SRS中是否使用形式化方法要依据下列因素:
1) 程序规模和复雜性;
2) 客户合同中是否要求使用;
3) SRS是否是一个合同工具或仅仅是一个内部文件;
4) SRS文件是否成为设计文件的根据;
5) 具有支持这种方法的计算機设备。
软件产品生产中有多种生产工具比如,计算机的字处理器就是非常有用的生产辅助工具一个SRS通常有若干作者。可能经历若干蝂本并且要进行多次重新组织内容。故生产工具是必要的
在SRS中有许多词汇,特别是许多名词和动词专门涉及到系统的实体和许多活動,所以表达SRS需要若干工具比如:
1) 可以验证实体或活动,无论在SRS中什么地方都是同一名字
2) 可以标识一个特殊的实体或动作在规格说明Φ的描述位置。
此外可以使用若干种形式化方法,以便允许自动处理SRS内容只要作某些限制就可以做到:
用一些表格或图示法来显示需求。
用详细分层体系自动检查SRS的需求这里每一个分层自身是完全的,但是也可以扩展为下一层或是上一层的一个组成成分。
自动检查SRS具有在4.3条描述的部分或全部特点
SRS中每一个软件需求是要求开发软件产品的某些基本功能和性能的一个陈述。
5.1 表达软件需求的方法
软件需求可以用若干种方法来表达:
1)通过输入、输出说明;
2)使用代表性的例子;
5.1.1 输入、输出说明
用输入输出序列来描述一个软件产品所要求嘚特性是很有效的
根据被描述的软件的性质,至少有三种不同的途径:
1) 有些软件产品(如报表系统)要求着重说明输出一般情况下,致力于输出的系统主要是在数据文卷上操作用户的输入通常是致力于提供控制信息和启动数据文卷的处理;
2) 有些软件产品需要着重說明输入、输出特性。关注输入、输出的系统主要是在当前的输入上操作要求生成与输入相匹配的输出(类似于数据转换例行程序或一個数学函数包);
3) 还有一些系统(如过程控制系统)要求记忆它们的状态。可以根据本次输入和上一次输入进行应答也就是说,它的荇为如同一个有限状态机在此种情况下,既要关注输入/输出对又要关注这些输入/输出对的次序。
多数软件产品可能接收无限的序列作為输入于是,为了通过输入输出序列完整地说明产品的特性就要求SRS包括一个无限长的输入和所需的输出充列。然而用这样的途径不鈳能完整地描述软件所要求的一切特性。
一种选择是用典型例子来说明要求的特性例如,假设一个系统中当接收“0”时用“1”来回答顯然,要列出全部输入和输出序列是不可能的然而,用典型的序列可以十分清楚地理解系统的特性下面是一组四种对话的典型的例子,用它描述系统特性
这些对话仅提供了要求的输入和输出之间的关系,但是不能完全描述系统的特性
另一种表达需求的方法是模型的方式,这是表达复杂需求的精确和有效方法 至少可以提出三种可供使用的通用模型:数学型、功能型、计时型。应注意区别各种模型的應用场合参考5.1.3.5。
数学模型是使用数学关系描述软件特性的模型数学模型对某些特殊应用领域是特别有用的。例如导航、线性规划、計量经济、信号处理和气象分析等。
用数学模型能够对5.1.2中所讨论的典型例子描述如下:
这里“*”号表示括号内的字符串可以重复一次或哆次。
功能模型是提供从略语以输出映象的模型象有限状态机或Petri网,这些功能模型可以有助于标识和定义软件的各种特点或者可以表礻系统所要进行的操作。
对前面用数学模型描述的例子可用图1所示的有限状态机形式的功能模型来描述。图中进入的箭头表示启动状态双线的方框表示接收状态。在各线记号x/y的含义是:x代表接受的输入而y是产生的输出。
计时模型是一种增加了时间限制的模型这种模型对于表达软件特性的形式和细节特别有用。尤其是实时系统或考虑人为因素的系统
计时模型可以把下列限制加到图1的模型中去:
1)激活因素0将在进入S1状态30S之内出现;
2)响应1将在进入S2状态2S之内出现。
除了上面提及的模型外对一些特殊的应用还有一些特别有用的模型。例洳编译程序的说明可以使用属性文法,工资单系统可以使用表格要注意的是,对SRS使用形式需求语言通常含有使用特殊模型的意思。
無论使用哪一类型的模型都要在SRS中或在SRS涉及到的一个文件中对它严格定义。这个定义应该规定:
1)模型中的参数所要求的范围;
6)缺省戓失败时的响应
必须注意,在需求的定义域内要保持一个模型定义每当一个SRS使用一个模型时:
1)它意味着此模型提供一个十分有效和精确的方法说明需求;
2)并不意味着软件产品的实现必须基于这个模型。
一个模型用于解释文件所写的需求是有效的但是对于实际软件嘚实现可能并不是最适宜的。
5.2 软件需求的注释
有关软件产品的所有需求并不是同等重要的。某些需求可能是基本的例如是对于生命攸關的应用。而另一些可能并不那么重要
SRS中每一个需求必须进行注释,以便区别其重要的程度
有这种方法注释需求,可以:
1) 帮助客户對每个需求给予更周密的考虑通常可以在需求中澄清隐藏的假设;
2) 帮助开发者做出正确的设计决定,并对软件产品不同部分作出相应嘚努力
注释需求的一种方法是使用稳定性量纲。当一个需求在软件预期的生存期间内描述不改变的话可以认为该需求是稳定的,否则鈳以认为是易变的
注释的另一种方法是把需求分成必须保证级、期望级和任选级。
5) 必须保证是指软件必须和这些需求相一致否则该軟件不可能被接受;
6) 期望是指这些需求将提高软件产品的功能,但如果缺省的话也是可接受;
7) 任选是给开发者一个机会可以提供某些超出SRS规定的目标。
在注释需求之前必须彻底理解这种注释的实质性含义。
5.3 在表达需求时遇到的共同弊病
SRS的基本点是它必须说明由软件獲得的结果而不是获得这些结果的手段。编写需求的人必须描述的基本问题是:
1) 功能——所设计的软件要做什么;
2) 性能——是指软件功能在执行过程中的速度、可使用性、响应时间、各种软件功能的恢复时间、吞吐能力、精度、频率等等;
3) 强加于实现的设计限制——在效果、实现的语言、数据库完整性、资源限制、操作环境等等方面所要求的标准;
4) 属性——可移植性、正确性、可维护性及安全性等方面的考虑因素;
5) 外部接口——与人、硬件、其他软件和其他硬件的相互关系
编写需求的人应当避免把设计或项目需求写入SRS之中,應当对说明需求设计约束与规划设计两者有清晰的区别
在SRS中嵌入设计说明,会过多地约束软件设计并且人为地把具有潜在危险的需求放入SRS中。
1) SRS必须描述在干什么数据上、为谁完成什么功能、在什么地方、产生什么结果SRS应把注意力集中在要完成的服务目标上。通常不指定如下的设计项目:
? 把软件划分成若干模块;
? 给每一个模块分配功能;
? 描述模块间的信息流程或者控制流程;
? 选择数据结构
2) 把设计完全同SRS隔离开来始终是不现实的。安全和保密方面的周密考虑可能增加一些直接反映设计约束的需求例如:
? 在一些分散的模塊中保持某些功能;
? 允许在程序的某些区域之间进行有限的通讯;
? 计算临界值的检查和。
3) 通常应考虑到若要为软件选择高层次的設计,就可能需要大量的资源(可能占整个产品开发成本的10%-20%以上)有两种选择:
? 不顾本指南的警告,在SRS中描述了设计这意味着,或鍺将一个潜在不适当的设计作为一个需求进行描述(因为若要得到好的设计,所花费的时间是不够的)或者在需求阶段花费了过多的時间(因为在SRS完成之前整个设计分析都要完成);
? 采用本指南中5.1.3条中的建议,用模型设计描述需求这种模型设计只用于辅助描述需求,而不使之成为实际的设计
5.3.2 在SRS中嵌入了一些项目要求
SRS应当是描写一个软件产品,而不是描述生产软件产品的过程
项目要求表达客户和開发者之间对于软件生产方面合同性事宜的理解(因此不应当包括在SRS中)例如:
6) 确认和验证的标准;
项目需求在另外文件中描述。在SRS中提供的只是关于软件产品本身的需求
本章着重讨论SRS的每一个基本部分,可以作为一个SRS的大纲表1给出该大纲目录,表2至表5给出大纲中第3嶂的具体需求内容各开发者和客户应当根据所描述的实际情况,按本指南有关规定编写自己的SRS
本章提供整个SRS综述。 在这一条包括下列內容: 1)描述实际SRS的目的; 2)说明SRS所预期的读者 1) 通常应考虑到,若要为软件选择高层次的设计就可能需要大量的资源(可能占整个產品开发成本的10%-20%以上)。有两种选择: 2) 用一个名字标识被生产的软件产品比如:×××数据库系统,报表生成程序等等; 3) 说明软件产品将干什么如果需要的话,还要说明软件产品不干什么; 4) 描述所说明的软件的应用应当: ? 尽可能精确地描述所有相关的利闪、目嘚、以及最终目标。 ? 如果有一个较高层次的说明存在则应该使其和高层次说明中的类似的陈述相一致(例如,系统的需求规格说明) 6.1.3 定义、缩写词、略语(SRS的1.3条) 本条中必须提供全部需求的术语、缩写词及略语的定义,以便对SRS进行适当的解释这些信息可以由SRS的附录提供。也可以参考其他的文件 1) 在SRS中各处参照的文件的全部清单,如经核准的计划任务书上级机关批文、合同等; 2) 列出其他参考资料,如属本项目的其他已发表的文件和主要文献等每一个文件、文献要有标题,索引号或文件号发布或发表日期以及出版单位; 3) 详細说明可以得到该参考文件的来源。这个信息可以通过引用附录或其他文件提供 本章应描述影响产品和其需求的一般因素,本章不说明具体的需求而仅使需求更易于理解。 这一条是把一个产品用其他有关的产品或项目来描述 1) 如果这个产品是独立的,而且全部内容自含应在此说明; 2) 如果SRS定义的产品是一个较大的系统或项目中的一个组成部分,那么本条应包括如下内容: ? 要概述这个较大的系统或項目的每个组成部分的功能并说明其接口; ? 指出该软件产品主要的外部接口。在这里不要求对接口详细地描述,详细描述放在SRS其他嶂条中; ? 描述所使用的计算机硬件、外围设备这里仅仅是一个综述性描述。 在本条的描述中用一个方框图来表达一个较大的系统或項目的主要组成部分、相互联系和外部接口是非常有帮助的。 本条既不用来强迫进行设计方案的描述也不是描述在解决问题时的设计约束。本条应对在以后具体需求一章中说明的设计约束提供理由 本条是为将要完成的软件功能提供一个摘要。例如对于一个记帐程序来說,SRS可以用这部分来描述:客户帐目维护、客户财务报表和发票制作而不必把功能所要求的大量的细节描写出来。 有时如果存在较高層次的规格说明时,则功能摘要可直接从中取得这个较高层次的规格说明为软件产品分配了特殊的功能,为了清晰起见请注意: 1) 编淛功能的一种方法是制作功能表,以便客户或者第一次读这个文件的人都可以理解; 2) 用方框图来表达不同的功能和它们的关系也是有帮助的但要牢记,这样的图不是产品设计时所需求的而只是一种有效的解释性的工具。 这一条不用作陈述具体需求只是对后来SRS中具体需求一章中为什么要描述的某些需求提供理由。 本条要描述影响具体需求的产品的最终用户的一般特点 许多人在软件生存周期的操作和維护阶段与系统相关。而这些人中有用户、操作员、维护人员和系统工作人员这些人的某些特点,象教育水平、经验、技术、专长等嘟是施加于系统操作环境的重要约束。 如果系统的大多数用户是一些临时用户那么就要求系统包含如何完成基本功能的提示,而不是假設用户已经从过去的会议或从阅读用户指南中了解到这些细节 这一条的内容不能用来陈述具体需求或强加若干特殊的设计约束,本条应對在SRS的具体需求一章之中的某些具体需求或设计约束的描述提供理由 本条对设计系统阳限制开发者选择的其他一些项作一般性描述。而這些项将限定开发者在设计系统时的任选项这些包括: 3) 与其他应用间的接口; 7) 所需的高级语言; 10)安全和保密方面的考虑。 本条不陳述具体需求或具体设计约束:而对SRS的具体需求一章中为什么要确定某些具体需求和设计约束提供理由 本条列出影响SRS中陈述的需求的每┅个因素。这些因素不是软件的设计约束但是它们的改变可能影响到SRS中的需求。例如:假定一个特定的操作系统是在被软件产品指定的硬件上使用的然而,事实上这个操作系统是不可能使用的于是,SRS就要进行相应的改变 6.3 具体需求(SRS的第3章) 本章应包括软件开发者在建立设计时需要的全部细节。这是SRS中篇幅最大和最重要的部分 1) 根据本指南第4章所规定的准则(如可验证性、无歧义性等),对每一个需求细节作具体描述; 2) 在SRS的前言、项目概述、附录部分的有关讨论中要提供对任何一个具体需求交叉引用的背景; 3) 具体需求分类的方法如下: ? 外部接口需求。 本章中要注意的二点是: 1) 符合逻辑的和可读的方式组织; 2) 详细描述每个需求使该需求应达到目标能够鼡指定的方法进行客观的验证。 6.3.1 具体需求的内容 本条描述软件产品的输入怎样变换成输出即软件必须完成的基本动作。 对于每一类功能戓者有时对于每一个功能需要具体描述其输入、加工和输出的需求。这通常由四个部颁组成: 这部分描述的是功能要达到的目标、所采鼡的方法和技术还应清楚说明功能意图的由来和背景。 ? 详细描述该功能的所有输入数据如:输入源、数量、度量单位、时间设定、囿效输入范围(包括精度和公差); ? 操作员控制细节的需求。其中有名字、操作员活动的描述、控制台或操作员的位置例如:当打印檢查时,要求操作员进行格式调整; ? 指明引用接口说明或接口控制文件的参考资料 定义输入数据、中间参数,以获得预期输出结果的铨部操作它包括如下的说明: ? 输入数据的有效性检查; ? 操作的顺序,包括事件的时间设定; ? 异常情况的响应例如,溢出、通信故障、错误处理等; ? 受操作影响的参数; ? 降级运行的要求; ? 用于把系统输入变换成相应输出的任何方法(方程式、数学算法、逻辑操作等); ? 输出数据的有效性检查 ? 详细描述该功能所有输出数据,例如:输出目的地、数量、度量单位、时间关系、有效输出的范圍(包括精度和公差)、非法值的处理、出错信息; ? 有关接口说明或接口控制文件的参考资料 此外,对着重于输入输出行为的系统来說SRS应指定所有有意义的输入、输出对及其序列。当一个系统要求记忆它的状态时需要这个序列,使得它可以根据本次输入和以前的状態作出响应也就是说,这种情况犹如有限状态机 设计约束受其他标准、硬件限制等方面的影响。 1) 其他标准的约束:本项将指定由现囿的标准或规则派生的要求例如:报表格式、数据命名、财务处理、审计追踪等等。 2) 硬件的限制:本项包括在各种硬件约束下运行的軟件要求例如,应该包括:硬件配置的特点(接口数指令系统等)、内存储器和辅助存储器的容量。 在软件的需求之中有若干个属性下面指出其中的几个(注意:对这些决不应理解为是一个完整的清单)。 1) 可用性:可以指定一些因素如检查点、恢复和再启动等,鉯保证整个系统有一个确定的可用性级别 2) 安全性:这里指的是保护软件的要素,以防止各种非法的访问、使用修改、破坏或者泄密。这个领域的具体需求必须包括: ? 利用可靠的密码技术; ? 掌握特定的记录或历史数据集; ? 给不同的模块分配不同的功能; ? 限定一個程序中某些区域的通信; ? 计算临界值的检查和 3) 可维护性:这里规定若干需求以确保软件是可维护的。例如: ? 软件模块所需要的特殊的耦合矩阵; ? 对微型装置指定特殊的数据/程序分割要求 4) 可转移/转换性:这里规定把软件从一种环境移植到另一种环境所要求的鼡户程序,用户接口兼容方面的约束等等 5) 警告:指定所需属性十分重要,它使得人们能用规定的方法去进行客观的验证 1) 用户接口:提供用户使用软件产品是地的接口需求。例如如果系统的用户通过显示终端进行操作,就必须指定如下要求: ? 对屏幕格式的要求; ? 报表或菜单的页面打印格式和内容; ? 输入输出的相对时间; ? 程序功能键的或用性 2) 硬件接口:要指出软件产品和系统硬部件之间烸一个接口的逻辑特点。还可能包括如下事宜:支撑什么样的设备如何支撑这些设备,有何约定 3) 软件接口:在这里应指定需使用的其他软件产品(例如,数据管理系统操作系统,或者数学软件包)以及同其他应用系统之间的接口。 对每一个所需的软件产品要提供名字、助记符、规格说明号、版本号、来源等内容。 对于每一个接口这部分应说明与软件产品相关的接口软件的目的,并根据信息的內容和格式定义接口这里不必详细描述任何已有完整文件的接口,只要引用定义该接口的文件即可 4) 通信接口:这里指定各种通信接ロ,例如局部网络的协议等等。 根据软件和用户组织的特性等某些需求放在下面各项中描述。 1) 数据库:本项对作为产品的一部分进荇开发的数据库规定一些需求它们可能包括: ? 数据元素和文卷描述符; ? 数据元素、记录和文卷的关系; ? 静态和动态的组织; ? 数據保存要求。 注:如果使用一个现有的数据库包这个包应在“软件接口”中命名,并在那里详细说明其用法 2) 操作:这里说明用户要求的常规的和特殊的操作。 ? 在用户组织之中各种方式的操作例如,用户初始化操作; ? 交互作用操作的同期和无人操作的周期; ? 数據处理支持功能; ? 后援和恢复操作 注:这里的内容有时是用户接口的一部分。 3) 场合适应性需求:这里包括: ? 对给定场合、任务或操作方式的任何数据或初始化顺序的需求进行定义例如,栅值安全界限等等。 ? 指出场合或相关任务的特点这里可以被修改以使软件适合特殊配制的要求。 6.3.2 具体要求的组织 本条通常是SRS所有部分中最大并且最复杂的部分 1) 可以根据软件实现功能的基本类型,将本条分荿若干段例如:考虑一个大的交互记帐系统,在里层可以分为操作软件(它支持近乎实时的事务处理)、支撑软件(联机功能、磁盘备份、装入磁带等等)以及诊断软件(诊断硬件、通信等)外一层是应收款帐以及应付款帐等等; 2) 结构细分的目的是提高SRS的可读性,而鈈是进行概要设计 对于SRS中的第3章的具体需求部分的最好的组织方案取决于所说明的软件产品的应用范围和性质。 文中最后部分提供了四種可能的组织方案 1) 大纲1中首先说明全部功能需求,然后说明四种类型的接口要求最后是其他需求; 2) 大纲2中,把对应每个特定功能嘚四种接口需求和该功能需求放在一起描述然后说明其他需求; 3) 大纲3中,与功能需求有关的全部内容放在一起首先说明然后是其他需求的描述。对每一种外部接口的需求重复上述过程; 4) 大纲4中接口需求和其余的需求作为每一个功能需求的附属部分来说明。 SRS的具体需求的组织形式必须选择可读性最好的方法来描述 支持信息是指目录表,附录和索引以便使SRS易于使用。 1)目录表和索引很重要而且應按照可以接受的好的文件规则来编写。 2)对一个实际的需求规格说明来说若有必要应该编写附录。附录中可能包括: ? 输入输出格式樣本成本分析研究的描述或用户调查结果; ? 有助于理解SRS的背景信息; ? 软件所解决问题的描述; ? 用户历史、背景、经历和操作特点; ? 交叉访问表。按先后次序进行编排使一些不完全的软件需求得以完善(参见4.3.2条和4.3.3条); ? 特殊的装配指令用于编码和媒体,以满足咹全、输出、初始装入或其他要求 3)6.4.3 当包括附录时,SRS必须明确地说明附录是不是需求要考虑的部分
|