在软件编写的过程中,文档是其中非常重要的一环,并占据了整个软件开发的大部分时间,在这里我不想去讨论文档对程序编写如何重要,我只想研究一下在软件编写过程中有哪些类型的文档,这些文档都应该写什么。一个程序员通常都不怕写代码,却往往怕写文档,这其中有文笔不好之类的原因外,其中有一个很重要的原因是不知道这些文档是用来干什么,也不知道这些文档该写一些什么。今天在阅读一些相关文档模板的时候有些想法,现在把它们记录下,以备今后所用。
1 需求规格说明书
需求规格说明书(以下称:需求文档)是一个很重要的文档,是在软件交付使用的时候必须提交的一份文档,并且之前这份文档必须由用户确认过。需求文档的原始素材来源于需求分析人员与客户的交流,另一部分就来源于需求分析人员根据经验对原始素材挖掘与扩展。需求文档决定了软件系统的结构与走向,是整个软件项目的基石,如果需求文档存在问题,那么整个软件必然有问题,同时需求文档是其它文档生成的依据。那么求文档该如何写,以及书写的内容该是什么呢?
需求文档的内容不是凭空编写,不是闭门造车造出来的,而是与客户交流所得出的。需求文档编写的过程实际是与客户交流的一个过程,即需求调研过程。如何进行一个需求调研过程呢,需求调研有很多方法,但对于我说,都不是十分很清楚,我这里有一个想法,就是你不管用什么方法,只要你依据一份需求文档模板将里面的每一项与客户交流逐一确认清楚就可以当作完成了调研的过程。这里我想以中国电信的需求规格说明书来说明这一调研过程:
1 引言
1.1 编写目的
此项不需要与用户确认,根据实际写明为什么编写此文档,不过通常编写需求文档的原因都大同小异。
1.2 背景
此项不需要与用户确认,一般可以根据用户提供材料来获取与提炼
1.3 业务术语
此项不需要专门去询问用户,可以在后续调研的过程中逐一确认
1.4 需求文档编写约定
此项一般不需要与用户确认,只是为了方便文档的编写与组织,多数都是由需求分析人员提供,例如需求优先级别定义,状态定义,需求编号等的定义
1.5 参考资料
根据实际情况填写参考的资料
2 任务概述
2.1 目标
此项需要与用户交流确认,当然你不能直接去问客户目标是什么,你可以与客户谈论相关的话题:开发意图、应用目标、使用范围、项目背景等,尤其要弄清一个问题,这个系统是独立系统,还是与其它系统关联的系统,还是现有系统的一个子系统等
2.2 用户特点
此项需要与用户交流确认,软件由哪几类用户使用,每一类用户的教育水平与技术专长,软件预期使用的频度等与客户交流确认
2.3 假定与约束
列出假定与约束,可与客户交流确认:经费限制、时间限制,主要给后续设计人员参考和资源配置
2.4 需要收集和需求分析过程采用的方法
需要调研过程中所使用方法,有时间需要和用户商量确认怎样的调研方法最适合当前客户
3 需求规定
3.1 系统需求
确认客户对系统的高层次的需要或者说要求,此处你也不能直接去问客户:你高层次的需求是什么?你需求准备相关的话题与客户交流,最后由你来提炼,并最终给客户确认。(我认为这是确认高层需求、抽象需求、潜在需求等的一个方法,关关键在于交流之前的准备工作要做足)
3.2 用户需求
确认用户使用系统时的主要业务流程,就是确认用系统中有哪些用例,这里要反复挖掘,要充分考察现在的业务流程情况。这里的调研过程可以按照这样一个过程来完成:当前的业务由哪几类人来完成,每一类人他们做哪些事
3.3 功能综述
这里是对功能需求的一个概括描述,是由抽象提炼获取的
3.4 功能需求
3.4.1 xxx模块/子系统
3.4.1.1 功能名称:FN_XXX 功能编号:NO_XXX_001
3.4.2 yyy模块/子系统
3.4.2.1
3.5 性能需求
3.6 运行环境需求
3.7 灵活性需求
3.8 可靠性需求
3.9 界面需求
3.10 故障处理需求
3.11 安全性需求
3.12 质量需求
3.13 与其它系统集成需要
3.14 其它专门需求
4 验收与交付
4.1 最终交付的工作产品
4.2 验收准则
4.3 最后的交付时间
2 概要设计说明书
我认为概要设计最主要的工作就是根据需求分析进行模块的划分,并将它细分到功能点,并辅助以模块划分图,典型的用例图来说明。概要设计应该不与具体的一种编程技术相关,做好的概要设计应该能够用任何一种编程技术实现,只是难或易的问题,因此我并不认为概要设计不能细化到功能点,当然这也不是绝对的,在概要设计这个阶段也可以软件的体系结构,命名规范,接口规范,分层结构作一个比较详细的说明,那么此时将可能会有某种技术的倾向,但这并不影响大局。
3 详细设计说明书
我认为详细设计就是在编程,虽然不是写代码但它应该是以一种具体的语言、架构为蓝本来对概要设计的抽象结构进行翻译,以我熟悉的J2EE来说,详细设计的时候你需要设计出前台需要的所有界面及操作方法;控制层每个action的名称,每一个执行方法的名称及出入参说明;业务层每service的名称,每个方法的出入参及说明;持久层每个dao的名称,每个方法出入参的说明。简单来说明有了详细计就有了程序,到时只需要按文档写代码就可以了
4 数据库设计说明书
数据库设计说明书应该是内容相对比较明确的文档,主要是依据需求分析与概要设计来完成数据库的逻辑设计与物理设计,即理清抽象的ER关系图,定义出每一个实体的字段名称、类型、约束以及取值含义
分享到:
相关推荐
在软件开发过程中,文档起着至关...对于初学者来说,理解和掌握这些文档的编写与使用,将有助于提升其在软件开发领域的专业素养。而对于经验丰富的开发者,一套完整、详尽的文档体系更是保证项目稳定、高效进行的基石。
深入理解MFC(Microsoft Foundation Classes)的多文档/视图(Document/View)架构是开发Windows...在实际编程过程中,熟练掌握文档、视图、框架窗口和文档模板的使用方法,能帮助我们更好地应对各种MDI应用的挑战。
### 正确理解技术文档的作用 #### 一、引言 技术文档作为IT行业中不可或缺的一部分,对于技术人员来说具有重要的意义。然而,很多人可能并没有真正理解技术文档的作用以及如何有效地利用它们。本文旨在深入探讨...
在描述中提到的"RFC规范的中文文档,里面有大部分的规范",意味着这个压缩包内包含的资源广泛且实用,可以帮助读者理解并遵循各种RFC标准,而不必受限于英文阅读能力。这对于中文使用者来说是一个宝贵的资料库,可以...
"MSRA-万字综述 直击多模态文档理解" 本文将围绕"MSRA-万字综述 直击多模态文档理解"这一主题,详细解释多模态文档理解的概念、发展历程、技术架构、应用场景等方面的知识点。 多模态文档理解的概念 多模态文档...
文档应包含业务流程图、数据流图、用例图和需求矩阵等,以便团队理解和追踪需求。 2. **概要设计说明书**:概要设计阶段是对整个系统的高层次结构和组件的规划,它将需求转化为一组模块或组件,并定义它们之间的...
尽管这里只列出了一个“新建文件夹”,但在实际操作中,这个文件夹很可能包含了与文档总结相关的各种文件,如PDF、Word文档、Excel表格、PPT演示文稿等。这些文件可能包含了项目计划、需求规格、设计草图、源代码...
CMMjobs压缩包内的文档提供了具体的实例,可以帮助读者更好地理解和应用CMM标准。通过对这些文档的学习和实践,可以深入了解CMM模型的运作方式,并将其应用于实际的项目管理中,提升团队的工作效率和软件质量。这些...
通过不断实践和学习,你将逐渐掌握各种类型的文档编写技巧,从而在文档撰写方面变得更加得心应手。 "文档模板"这个压缩包文件很可能是包含多种不同类型的文档模板,例如项目报告模板、技术手册模板、会议纪要模板等...
"软件开发过程中所需要文档.zip"这个压缩包很可能包含了从项目启动到交付的全过程所需的各种文档模板和规范,这对于遵循国家标准的软件开发至关重要。 首先,我们要了解软件开发中的主要文档类型: 1. **需求规格...
Python实现基于阅读理解的自动问答模型项目源码+文档说明.zipPython实现基于阅读理解的自动问答模型项目源码+文档说明.zipPython实现基于阅读理解的自动问答模型项目源码+文档说明.zipPython实现基于阅读理解的自动...
"C#各种项目文档范例"集合了一套全面的资源,旨在帮助开发者,尤其是初学者和求职者提升技能,理解C#项目开发的各个方面。这份文档可能包含了从基础概念到高级特性的详细教程,涵盖了C#编程的多个关键领域。 首先,...
学习C#文档能帮助开发者理解如何创建高效、安全的桌面和服务器应用程序。 JavaScript,简称JS,是一种轻量级的解释型编程语言,主要应用于网页和网络应用开发。它使网页具有动态交互性,例如表单验证、动画效果、...
综上所述,"海康威视开发文档.zip"中的内容对于开发人员来说是一份宝贵的资源,它不仅提供了接口的技术细节,还提供了丰富的示例和指导,使得开发者能够高效地集成和利用海康威视的摄像头产品。通过对这份文档的深入...
全文搜索则意味着系统具备强大的文本分析能力,即便用户记不清文件名,也能通过内容关键词找到所需文档。 总的来说,企业文档管理系统是现代企业提升管理水平、保障信息资产安全的重要工具。其易用性、实用性与强大...
在软件开发过程中,软件测试是不可或缺的一...以上就是“软件测试各种模板文档”所涵盖的主要内容。通过理解和应用这些模板,测试人员能更专业、系统地进行软件测试,提高测试效率,降低产品风险,为软件质量保驾护航。
本文将深入解析"程序开发功能需求文档模板",并提供相关指导,帮助开发者和项目经理理解如何有效地制定和使用此类文档。 1. 引言 引言部分是需求文档的开篇,其目的是明确文档的目的、适用范围以及引用的参考资料。...
本文将深入解析这个文档中的关键知识点,帮助你更好地理解和运用FineReport。 1. **界面介绍**:离线文档首先会引导用户熟悉FineReport的工作界面,包括菜单栏、工具栏、设计区、预览区等,理解各个区域的功能,是...
它旨在提供一个高效、便捷的平台,使用户能轻松访问和理解中兴的各种技术文档、操作手册、维护指南等。通过这款阅读器,用户可以快速定位所需信息,提高工作效率,降低学习成本。 阅读器的主要功能包括: 1. **...
1. 团队共享:确保所有项目成员都阅读并理解文档,以便于协同工作。 2. 培训新成员:新加入团队的成员可以通过文档快速了解项目需求。 3. 进度跟踪:定期回顾文档,检查是否偏离原定需求。 4. 测试依据:测试人员可...