`
dazhilao
  • 浏览: 246006 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

【转】软件系统需求说明书写的经验之谈

阅读更多
原文地址:http://tech.it168.com/a2009/0430/274/000000274583.shtml

    软件工程中明确定义了,最为一个软件需求说明书的任务,它是一个沟通客户和程序员的纽带,是一个对于系统将要干什么的详细描述。因此,在这个文件中,必须包含很多内容,最近几天,我一直在阅读一份很奇怪的需求说明书和设计说明书,这两份资料里,不但没有系统流程说明,而且没有概念定义,需求说明书先写系统与其他系统关系,然后是系统菜单,后写菜单内容,最后写设计的表结构,我连软件对应的实体有几个都没弄清。设计说明书中,先写系统目的和产生原因,后写定义的数据和功能界面设计,我连设计的那些表哪些是其他系统定义的,哪些是自己生成的,数据如何关系都不知道。就这样两个文件,要设计程序代码,读得我这个头疼啊!
    下面是我根据我历史曾经做过几个管理软件系统的需求分析与设计的经验,写的心得,希望能给大家以帮助。
    一个需求说明书,必须包含以下内容:
    1、必须包含系统建立的背景资料,目的和参考资料索引以及附带相应的参考资料文件。这部分信息看上去似乎对于软件开发没有直接关系,但是,它就象我们吃一道菜必须有盘子一样,必不可少。它首先告诉读者,这个说明书依据什么而写的。
    2、必须包含系统的简单介绍。简单介绍最好能用图片说明,或者不要超过200字。就象文章的关键词一样,系统简单介绍是让人们快速把握系统是什么的关键内容,使阅读者有一个概念。这就象一个菜的名字/简介一样,简单,易于掌握。
    3、必须包括系统的范围、主要完成什么内容、和已经有的或已知的正在建的系统关系是什么?这个关系描述,有两种,一种以业务操作为线索描述操作员在哪个系统做什么,又到另一个系统做什么。还有一个线索,是程序开发角度,一个系统给另一个系统提供了什么,内容是什么,或者系统间用什么方式沟通的等。根据阅读者已经有的共识和知识体系去书写。
    4、必须包括计划安排或开发人员安排。这个内容很关键。也很微妙。因为开发人员有的能力强,有些功能能做,有的能力弱,有些需求他可能不会做。我曾经做过些系统,也写过需求说明书,很多时候,因为开发人员的变动,往往会影响系统计划与质量。因此,一定事先获得开发人员的配置。一般需求说明书在书写开始,是没有这个信息的,只有当需求基本确定后,就可以根据功能范围,由开发团队计划出一个人力预安排,根据这个人力安排,时间安排等来决定系统开发到什么程度与范围。这部分内容,如果放在概要设计时,就有些偏晚。因为需求不应该只是用户想要干什么,很多时候,需求目标是要综合多方面因素来确定的。如果放在概要设计上,就会使一个系统说好完成什么,但实际上却被分出几个阶段来实现,或者需求都谈好了要这样实现,结果开发人员不会做,不得不改变目标甚至流程。因此,在需求说明书书写中,一定要在需求框架基本明晰的基础上,进行开发人员的确认与预安排。预安排的结果要写在文件里,作为一个参考资料。
    5、必须包含业务/操作流程描述。可以用E-R图,写清楚都牵扯了什么部门,每个角色/实体都怎么怎么样操作的。或者用业务流程图去说明,或者用表格/文字说明。但是必须说明清楚。并且,是需求分析中占主要的部分,尤其是一个新建立的系统,这部分内容可能经常被改动!这是我做过10来个管理信息系统(包括几个大型管理软件)分析设计的经验。这部分内容的改动是恐怖的,尤其是新建立一个系统,各部门先决定这么干,讨论讨论就出问题了,又换一个想法。建立管理信息系统的时候,会引起企业流程重组,业务关系变化,个别操作简化,职能重组,这些都直接引起要建立一个新的流程。所以,如果想让系统做好,就要把这部分内容写的不能再细,说的不能再清楚,同时,还要忍受在与用户讨论、小组分析中可能要不断推翻重写与改动。要经得起各方面推敲。
    6、必须包含概念定义。不要小看概念定义,它就象说文解字一样,是解决沟通障碍的关键问题。如果懒得做名词解释,就一定会为它付出代价。代价就是可能会多出去很多问题,多开好几次讨论会,延长整个软件项目实现的时间。甚至,可能程序都做出来,某个功能根本不是用户要的。概念定义一定要定义准确,严谨,反复推敲,避免二义性,要同时能被用户和开发人员读懂。最好定位阅读者具有小学文化。
    7、必须包含系统数据流的说明。这部分内容看上去好象是概要设计的内容。其实,在需求报告中,不应该只简单说明有什么什么单子,上面有什么。一定要说明清楚,谁根据什么产生了这个信息,信息里有什么,经过什么途径,又给了哪个位置等。同时,如果流程重组了,可以不描述旧的流程,直接按照新的流程开始说明。这部分不仅可以使阅读者明白详细的系统要求,同时还可以给需求报告书写人员一个整理思路的方式。它可以使需求分析更准确严谨,避免出错,遗漏或避免一些关键点没问清楚。
    8、必须包含界面或其他要求的描述。比如数据精度,界面颜色与布局风格等。很多人尝试在概要设计中,去做这部分内容,其实,有的时候,在需求报告中,也要反应用户的要求。现在很多用户已经具备了比较强的计算机理解与使用能力,他们有时会主动告诉你他要的是上面有什么,下面有什么,左面什么样,右边什么样,哪个地方都怎么样。这是很宝贵的信息,采集并获得用户确认,就可以使系统推广的时候,减少不少阻力。
    9、必须包括系统未来的思考。这部分内容主要是作为一个需求调研人员,需求分析后,认为系统现在这样做,还有哪些局限或不足,将来还可以发展成什么样。这部分书写,可以给系统概要设计人员定义系统生存周期、设计数据结构等提供宝贵的参考资料。因此,如果有能力,就要让自己发挥作用,一定别忘了写上。
    在需求说明书的书写中要注意的几个问题与误区:
    1、不要怕写的多。一定要建立合理的目录结构,使人们可以按照自己关心的部分去阅读。不要怕长,但是语句一定要准确精练。有的时候,阅读者不一定需要第一次就把文件全看完,他首先是有一个概念,然后去某部分仔细确认与查找。要把需求说明书写得象我们的手机使用说明书那样,越明白越细致越准确越好。
    2、千万不能出现二义性。在需求说明书中,有二义性的语句可能会产生灾难性后果的!所以,作为书写人员,一定要尽量回避二义性,同时做需求报告评审审核时,也要把二义性做为重点消除目标。
    3、写报告前定义阅读者。这个工作可以写在需求说明书里,让每个阅读者都知道,也可以开发小组内部确认就行了。因为实际情况不同,需求说明书可能不是给用户读,也可能是用户与开发人员,还可能是用户、开发人员和某些特殊部门。阅读者的不同,会影响我们说明书的内容与书写角度。看看手机说明书,如果是给用户,一种写法,如果是给维修人员,一种写法,如果是给测试人员,一定是另一种写法,所以,需求说明书书写前,要确认阅读者范围。
    4、一定要在写需求说明书的同时,保留一份书写记录。这个工作看上去没什么,其实,这个工作可以帮助你去清理思路,甚至指导需求分析人员,去问什么,找什么人,系统计划是否合理等。我的记录内容是一个表格,从什么时间开始,到什么时间,做了什么,参与人是谁,内容简介。比如,我接触一个系统,先根据个人经验,写了一个系统框架,以它为第一稿。然后获得了一些电子文件资料,我就会在书写记录里加一行,什么时间,从谁那里获得电子资料,是什么,放哪个目录里了。然后,根据这个电子资料,写了一个改动文件,定义为第二稿,我也会写什么时间,写了第二稿,与第一稿的区别主要是增加/修改了哪些内容。 我个人觉得,这个资料对于一个大型管理系统的分析非常有用,前后责任人及项目进度很清晰。
    5、讨论会议与流程确认前,一定要写计划及执行结果。内容为有哪些疑问,都是怎么回答的。这个资料可以使需求说明书更严谨,不容易出错,也可以避免一些理解偏差与重复讨论。还可以参考结果进行计划安排。
    6、个人定位要低调。做需求调研和报告书写,必须本着唯物主义,客观的,冷静的观点去书写。同时,还要肯付出,对于反复修改的工作不厌其烦,始终保持耐心细致,扎实认真的态度。这个态度决定说明书的可用性有多高。
分享到:
评论

相关推荐

    编写需求规格说明书的几点经验之谈

    需求规格说明书是软件开发过程中的关键文档,它详尽地定义了软件系统应当具备的功能和特性,以便开发团队能够明确地了解用户需求并据此进行设计和实现。在编写需求规格说明书时,遵循一定的原则和最佳实践能显著提高...

    需求编写的经验之谈

    5. 可验证性(Verifiable):需求必须可以验证,确保系统能满足用户需求。 6. 可追踪性(Traceable):每个需求都能被追踪,便于管理和修改。 7. 可行性(Feasible):需求应在预期的时间和成本内实现。 8. 模块化...

    需求编写的几点经验之谈

    ### 需求编写的几点经验之谈 #### 一、引言 在软件开发过程中,良好的需求管理是至关重要的第一步。它不仅关乎项目的成功与否,还直接影响到产品的质量和用户体验。错误的需求描述可能会导致时间浪费、项目延期...

    项目开发设计模板(是著名软件设计师经经验之谈)

    "项目开发设计模板"集合了著名软件设计师的经验之谈,为开发者提供了一套完整的项目管理框架,帮助我们规范流程,提高开发效率。以下是根据这个模板可能涵盖的一些关键知识点: 1. **需求分析**:这是项目开发的第...

    架构师有话对你说 软件开发经验之谈

    "架构师有话对你说——软件开发经验之谈"这篇文档,无疑是对这个重要职位的深入洞察和经验分享。下面,我们将根据标题和描述中的线索,探讨一些关键的软件开发知识点。 首先,架构师的角色并不仅仅是画出漂亮的图表...

    项目管理经验之谈.pdf

    - 需求调研与分析后的结果,即《用户需求说明书》和《软件需求规格说明书》,必须获得客户的签字确认。 - 在EAS项目初期,由于对需求不够重视,导致了需求理解上的偏差,影响了项目的进度。 - 项目需求变更时,...

    「安全教育」基于Splunk的安全监控系统_企业SIEM经验之谈 - APT攻击.zip

    「安全教育」基于Splunk的安全监控系统_企业SIEM经验之谈 - APT攻击 NGFW 日志审计 信息安全 安全众测 防火墙

    软件测试的经验之谈

    软件测试的经验之谈软件测试软件工程中有相当部分是关于软件测试的:1、测试概念的范畴广义上讲,测试是指软件产品生存周期内所有的检查、评审和确认活动。如:设计评审、系统测试。狭义上讲,测试是对软件产品质量...

    FlashPaper经验之谈

    FlashPaper是一款由Adobe公司开发的软件,主要用于将各种文档快速转换为交互式的Flash(SWF)格式,使得用户能够在网页上方便地查看和分享这些内容。这篇“FlashPaper经验之谈”涵盖了我在使用该工具时积累的一些...

    林锐博士讲义,对软件设计的经验之谈

    在IT行业中,软件设计是构建高效、稳定且可维护系统的关键环节。林锐博士作为业界知名专家,他的讲义深入浅出地分享了他在软件设计领域的丰富经验,为我们提供了宝贵的指导。以下是对林锐博士讲义中核心知识点的详细...

    基于Splunk的安全监控系统_企业SIEM经验之谈.pdf

    目录 面临哪些问题 如何解决 安全监控系统架构 持续而广泛的安全监控

    采购工程师经验之谈.doc

    采购工程师经验之谈.doc 采购工程师在日常工作中面临着各种挑战和难题,如何处理客户对价格的不满、供应商的降价、品质和价格的关联等问题都是采购工程师需要面临和解决的。下面将总结采购工程师经验之谈的主要知识...

    pcb 设计经验之谈

    PADS是一款广泛使用的PCB设计软件,以其强大的功能和易用性深受工程师喜爱。本篇文章将详细探讨在PADS中进行PCB设计的经验与技巧。 1. **元器件布局**:PCB设计的第一步是元器件布局。在PADS中,应遵循“先大后小,...

    软件测试中总结出的有关功能测试的经验之谈

    软件测试中总结出的有关功能测试的经验之谈从事软件测试这么长时间了,以前一直只是听同事朋友们学起功能测试有多么的利害,自己却一直没有去学习过。后来在网上看了一些有关功能测试方面的教学课程,至今我也学习了...

    关于下载全自动下载ImageNet等大型数据集的经验之谈,以及代码.zip

    关于下载全自动下载ImageNet等大型数据集的经验之谈,以及代码 关于下载全自动下载ImageNet等大型数据集的经验之谈,以及代码 关于下载全自动下载ImageNet等大型数据集的经验之谈,以及代码 关于下载全自动下载...

    江苏省计算机三级偏软经验之谈

    Windows操作系统的发展历程展示了其不断进化以满足用户需求和技术进步的过程。 编译程序和解释程序是两种不同的程序转换方式。编译程序将高级语言转换为机器语言,分词法分析、语法分析、中间代码优化和目标代码...

Global site tag (gtag.js) - Google Analytics