如何写好项目规划和方案设计文档

项目设计的方案及思路 一个网站或者其他项目来了,我们可以怎么设计该项目的功能设计数据库设计呢? 答:所谓功能设计,就是这个网站需要设计出哪些模块来,比如:登录模块,用户注册模块,购物车模块等等, 而每一个模块,再具体到程序之中就是一个类,也是一个类文件,因为在php中一个类文件有且仅有l一个类,而且类文件是由类名.class.php组成的,那么问题就来了,我们该如何来确定一个项目需要哪些模块呢!答案是:我 阅读详情

 

在工作中,很多时候,我们都需要就一个问题提出一个解决方案,这时候,我们很可能需要产出一个文档来供大家讨论,并指导下一步工作计划。

问题可大可小,形式上是否叫它为一个项目并不重要,重要的是为了解决这个问题,项目规划和方案设计的流程是一致的。就大数据平台构建的语言环境来说,它可以是整个平台体系的搭建方案,也可以是具体某个组件如调度系统的建设,还可以是某个具体的功能点或问题改进比如用户任务脚本的依赖关系分析,系统稳定性的提升等等。

一篇项目规划和设计文档的好坏,往往决定了一个项目整体的调性和可预期的产出结果。但是,这么重要的文档,真正能写好的同学却并不多,很多同学甚至可能都没有意识到它的重要性,而仅仅是把它当作领导要求的一个软件流程的规范来简单应付,怎么快怎么来。

事实上,撰写项目规划和设计文档,最重要的不是文档的模版和格式,而是里面的具体内容,它往往需要结合实际客观环境因素来综合考虑,平衡取舍,是一个需要充分脑力活动的工作。尽管如此,在大多数情况下,还是有一些相对通用的指导原则可以帮助我们更好的完成这项工作。

本文侧重于方案的需求分析到概要设计部分,因为这部分内容通常是最容易被大家忽视,也最需要方法论和“端正的思想”来指导的 ;)而详细设计相关内容,考验更多的是技术的深度,以及如何做到全面周到,我计划在后续文章中另行阐述。

总体原则和目标:

首先,需要有明确项目背景,目标,以及核心需求分析

方案规划设计文档的好坏,几乎完全取决于这一部分内容。但多数同学在这一部分内容身上,往往花费的时间却是最少的,常见的方式,就是“直奔主题”,上来就写具体要做的事

项目背景和目标

项目背景不是让你写一堆无关痛痒的铺垫材料。实际上,项目背景的作用是:

Why?为什么要在这个时候做这个项目?

换句话说,就是这个项目从产品或业务的角度,最核心的推动力是什么?再换句话说,痛点是什么?

有痛点自然就有目标,你希望项目最终以什么方式解决问题,能达成什么目标。

背景和目标的阐述,必须要能够自然合理的推导出下一部分内容:项目的核心需求/功能是什么。

如果项目背景,目标的描述不能起到这个作用,那这一节内容就没写好,因为项目方案文档就缺乏了根本的出发点,后续的内容都没有了好坏对错判断的基本依据。

项目核心需求

项目核心需求和项目目标有什么区别?实际上没有严格的区别,只是对需要解决的问题的概括抽象程度的不同,或者描述角度的不同。

目标可以理解为希望达到的一个状态,是抽象的,和技术方案无关的偏结果角度的表述方式。

而项目核心需求,可以理解为了解决背景描述的问题,为了实现那几个目标,进一步推导出来的,在当前系统环境或方案框架体系中:必须要提供的产品功能形态,或者是必须满足的关键特性,又或着是不能违背的约束条件。你也可以理解为用更技术的语言进行细化描述的项目目标。因为目标和背景的不同,可能同一件事推导出来的核心需求也不同。

这么说比较抽象。举个例子,如果我想构建一个数据交换服务或ETL系统,那么上述各环节的内容可能是(简化的写):

  • 背景 : 当前数据ETL链路极端难用,效率低下,稳定性差,维护代价高,用户抱怨多等等。
  • 目标 : 用户全自助,简单易用;可维护性好;性能高;可靠性好。
  • 核心需求 :比如针对“用户全自助,简单易用”这点(其它目标可以类似分析推理),可能是:
    • 提供统一的,标准化的配置后台:用配置的形式表达ETL业务语意,屏蔽下层实现细节。
    • 提供完善的错误反馈信息/机制:让用户能自助解决使用中遇到的问题。
    • ETL业务流程标准化:将最佳实践沉淀下来,通过配置的方式让用户选择,减少重复工作,降低用户开发的难度,规避使用姿势错误可能造成的问题。

讲完区别,继续回来讲,这部分内容的要求。很多同学在写这部分方案的时候,很容易把需求和实现手段混为一谈。所以:

核心需求的重点是:本质上需要提供什么能力,而不是具体实现上要做什么

换个角度说,核心需求的描述方式是:要做成什么样,是功能目标而不是实现手段。

在完整的项目文档中,显然目标和手段都需要,但是

目标必须先于手段,而非相反

原因也很简单,脱离了目标谈手段是没有意义的,很容易导致方向做偏,使得最终的结果产出背离了项目最初真正的需求出发点。

实践中,做成什么样和怎么做有时候很难绝对分开。一句话的描述方式可能既包含了目标需求也包含了实现手段。那么,怎么判断这部分内容写得是否满足要求呢。

  • 如果你描述的侧重点只是需求的一种实现方式,而这个需求可能还有更多的其它实现方式,或者即使真的只有一种实现方式,你所描述的内容的也只是因果关系中,间接的因而非直接的果,那么很可能你描述的就只是手段而非目标。
  • 如果看文档的同学看完只知道你要做什么,而不知道做这些是为了什么?是否做这些就足够了,还应该做点别的?是否有别的解决方案,又或者做完了到底有什么用。那么也很可能是因为你把需求和实现手段混为一谈了。
  • 核心需求必须是本质的,一定要实现的功能,它是一个原则,不是工作列表。不要事无巨细,凡是想做的都列在上面,那样反而淡化了项目最根本的诉求。但它也必须足够全面,要能确实解决项目目标中所提出的要求,应该用适当抽象的语言概括一个完整的事项。

总结一下,核心需求的根本目标是,让参与项目的同学有方向感,能够知道这个项目最终想要通过提供哪些能力,满足哪些约束条件来解决问题,至于怎么实现,具体要做哪些事,那是下一步才需要回答的问题,简单来说:先选择做正确的事,再考虑怎么把事做正确。

其次,需要对现状和问题进行充分的收集和分析

这一部分内容,从实际操作的先后顺序来说,未必是第二步,很可能在我们总结前面的背景,目标,核心区需求的时候,就需要加以收集和分析。

不过,从方案文档的角度来说,放在这里,是为了进一步细化问题,分析目标,核心需求与当前现状的差距在哪里,具体有哪些实际问题需要解决。为后续具体的实现方案,准备必要的输入信息,确定工作的优先级,重要性,项目迭代的步骤等等。

需要强调的是,现状和问题分析,要围绕前面的核心需求的条目展开,两者是强关联的,不要相互脱节,各讲各的

这块内容本身没有太特别的地方,就是现在实际情况如何,有什么问题,关键是如何把问题收集完整。

所以这部分内容,难的是如何发现问题,很多做技术的同学往往容易陷入只关心技术难点,只能看到技术问题的局面中,而实际上,更多的问题往往是整体流程如何设计更加合理的问题,而不是技术方案绝对对错的问题。

尽管行文上不难,但它的重要性,也往往容易被忽略,很多情况下被简单对待。实际的情况是,很多项目的方案计划往往是在对现状问题相关信息没有充分收集和分析的基础上就做出来的。导致项目方案后期不断调整,或者一期一期的总是在小步迭代,甚至不断推翻重来。而最终使用方真正关心的问题却一直没有得到重视和解决。

最后,是输出解决方案

定完需求目标,分析完问题和现状,接下来才是规划具体做什么,怎么做,什么时候做。

这部分内容,强依托前面的核心需求和问题分析工作,没有做好前面的准备工作,千万不要着急开始动手“规划”方案!!!

那么具体写的时候有哪些注意事项呢?

做什么:

  • 做什么和前面项目目标的要求刚好皆然相反,需要输出明确的可执行的事项,而不是模糊的不可执行的要求。
  • 具体做的每一件事情,都要和前面的核心需求和现状问题对应上。如果你发现有些工作,和前面的目标没有任何关联性,那么考虑一下目标是否需要再评估调整,或者这件事情根本就是不重要的。
  • 要做的事项列表,是一个经过归纳思考以后的总结,而不只是一个个零散的事情的随机列表。需要有重点和优先级。如果有必要,以归类,分组等形式结构化的组织相关联的事项。
  • 完整的事项列表,应该是一个和最终目标对应的完整解决方案,而不仅仅只是完成目标工作中的某一个环节。
    • 比如面向用户的终端产品项目,需要包括整个产品的交互逻辑,业务流程的规范设计等等,而不仅仅是对底层系统实现和后台功能点的设计。
    • 这点很多同学也很容易忽略,总觉得功能和架构的实现才是有挑战,需要规划的内容,而产品的形态并没有花心思去琢磨,事后开发前端时才来考虑。实际上后者可能才是真正影响项目成功的关键,也很可能会影响到底层架构的设计和取舍。类比一下,好比一个用户产品都开发完了,才来考虑埋点,数据采集和数据分析的工作,这时候就很被动了。

怎么做:

  • 前期方案文档,没有必要列出详细的技术方案细节,只需要一个整体的技术方向选型和初步的架构设想。但是,如果是涉及到核心需求能否有效满足的关键的技术点,有可能影响整体的架构或产品实现的,那就有必要就可能的方案的进行详细的评估并得出初步的结论。
  • 无关架构或进度安排的方案细节,没有必要写太多,可以后续再补充。
  • 方案中有不明确的地方,即使没有时间调研,也不要简单的略过不写,要在文档中明确的把问题写出来,给出下一步调研的方向计划等。归根到底,方案文档中,对每一个已知重要的问题,都需要一个明确的结论或者可以后续跟进的计划,以免事后遗漏。

再强调一下,做什么和怎么做就是手段,既然是手段,就要写得足够具体,具体到有明确的可落地实施的事情,有明确可以衡量的标准,或者针对当前存在的一个具体问题,不要在这个地方又写得像目标,没有明确的可执行的点。

继续举上文数据交换服务的例子,针对其中的一个核心需求:

  • ETL业务流程标准化:将最佳实践沉淀下来,通过配置的方式让用户选择,减少重复工作,降低用户开发的难度,规避使用姿势错误可能造成的问题。

这个内容要写具体的要做的事项。以下方式来写可能就是不合格的,因为不够具体,还没有足够思考:

  • 总结最佳实践
  • 生成标准的流程
  • 总结常见的错误

以下内容可能就更加明确,更加可落地一些:

  • 统一当前增量数据导入的存储,合并,归档方案
  • 将常见合并,去重逻辑标准化,通过配置自动生成任务脚本
  • 制定ODS快照表生命周期管理方案,规范存储路径和命名方式,定期清理过期数据。

什么时候做,谁来做:

  • 这是做什么和怎么做的进一步延伸,需要强调的是整个项目如何实施的整体步骤计划,而不仅仅是简单的列一下每项工作的人员和排期,
  • 需要分析系统可能的迭代步骤(包括可能的短期应急和长期解决方案),上下游依赖梳理,需要协同进行的工作,最终项目上线时可能的业务迁移,数据迁移,系统集成等等外围工作的安排。

如果不是工期严格要求,deadline为导向的项目,整体的依赖和步骤往往才是在项目规划阶段需要重点阐述的内容,也是有可能对整体产品的进度,风险产生影响的事项

而具体工作工期的安排,说实话,多数情况下,反到没有那么重要。如果整体工作和步调没考虑周全,工期排得再科学,再精细,也毫无意义。

总结一下,什么时候做什么事,最重要的目的,不在于工期的计算,甚至也不是人力资源的安排,而是为了理顺事情依赖关系,控制可能的意外风险,提升项目开发进度的可控性。

小结

方案规划设计文档,绝对不是为了满足流程需要凑数的文档,也不是头脑风暴式的简单记录。它的根本目标,抽象来说是:明确问题,圈定范围,确定重点,阐明路径。本质是为了统一认识,控制风险。它应该是一个问题经过思考以后的输出的答案,而不是问题的调查报告,笔记或备忘录。

它很像一个议论文体裁,事实,分析,结论缺一不可。所以,无论你的方案文档写的多么翔实,如果只是相关内容细节的罗列,只议不论,缺乏抽象总结,还需要阅读文档的同学再去揣摩项目意图,或者看完以后对项目所要做的工作为什么要做,重不重要,要做成什么样都不明确的话。那它就只是一个不合格的半成品,不能对后续的项目开发工作发挥实质的指导和规划作用。

结论列表

上面花了大量篇幅展开讨论,目的是说服你接受我的看法。

如果你只需要明确的结论,那么再总结一下:

总体原则:

  • 项目方案规划文档的根本目标是统一认识:明确问题,确定重点,阐明路径,控制风险。
  • 文档的撰写方式,是目标和需求先行,围绕出发点,逐步递进展开。
  • 文档的基本要素:背景,目标,核心需求,现状问题分析,关键方案难点解析,总体实施路径,工作事项列表,进度计划安排。

再细化到一些注意事项:

  • 核心需求,必须是核心的,一定要实现的内容!不能缺,也不能滥。
  • 问题现状,工作事项,必须呼应核心需求,要有明确的相关性,不要无的放矢。
  • 围绕最终目标,输出完整的端到端的解决方案,而不是局部环节的方案。需要从最终产品/功能形态的角度考虑要做的事,而不是仅仅考虑底层技术实现。
  • 事项目标列表,不要仅仅罗列要做什么事,更重要的是说明想要得到的结果,而不仅仅是描述实现手段。
  • 所有工作事项,需要明确思考过实施步骤,重要性和优先级,结合目标和需求,进行抽象归纳,而非简单随机罗列。
  • 要有明确的计划排期,但更重要的是,要完整的分析思考可能的上下游和周边工作依赖。排期只是结果,完整的梳理才是关键。

两条辅助判断依据:

  • 如果开发同学看完文档,无法根据后续开发过程中遇到的实际情况,调整工作事项和优先级,完善和改进这个文档,那么大概率这个项目方案文档是没有写好的。因为这个文档可能只起到了事项罗列和工作安排的作用,却没有起到指导思考,授人予渔的作用
  • 如果看完文档,这个项目的最终产出你无法预见,你对项目的目标最终能否实现无从判断,那么这个项目方案文档大概率也是没有写好的。因为这个文档自身的归纳总结可能还没做到位,风险和问题可能还没有评估清楚,还需要走一步看一步。

提示

写项目方案文档,不是八股文,所以本文的内容并非绝对的教条,你当然可以根据项目的实际情况和复杂程度自行调整,但前提是你真的知道你为什么要这么做,而不仅仅是为了偷懒

本文多数内容是各种观点,注意事项,结论和目标,具体如何做到这些,每个同学都可以自行思考。当然除了思想和目标端正,每个环节,其实也有一些具体Tips和checklist可供参考。下一次再说,下一次再说吧。。。

软广

本文写的各项原则,在我们之前的项目实践上实际都有体现,有兴趣结合实例比对参考的同学,我再厚脸皮再推一下这本书 《大数据平台基础架构指南》

京东,淘宝,中亚有售,JD购买链接 : https://item.jd.com/29923944547.html ;)


常按扫描下面的二维码,关注“大数据务虚杂谈”,务虚,我是认真的 ;)

项目规划项目规划与设计文档项目规划与设计文档项目规划与设计文档项目规划与设计文档 项目规划与设计文档项目规划与设计文档项目规划与设计文档项目规划与设计文档 立即下载

相关推荐

信息化建设方案规划

信息化建设方案规划,依据公司发展战略制定公司信息化发展规划

项目设计文档

目录 1. 开发规划 1.1. 概念术语描述 1.2. 基本设计描述 1.3. 主要界面流程描述 2. 总体设计 2.1. 开发人员 2.2. 开发环境与工具 3. 数据结构 4. 接口规范 5. 模块设计 1. 开发规划 1.1. 开发人员 陈兆庭、黄志鹏、吴雪晴:负责数据库部分编码,服务器部分编码,服务器与安卓端通信部分编码 胡宇晨、康鑫、林静雯、涂涵越:负责用户界面部分编码,及...

dizebang0309的博客 2044

项目概要设计说明文档.doc

项目概要设计说明文档,骨架,基本涵盖了 需要描述的概要点. 可以清晰的阐述项目的整体构造设计思路

【设计文档】软件项目详细设计说明书案例(套用模板Word)

2.5.3标准化、开放性、兼容性。2.5.4高可靠性、稳定性。2.5.6灵活性可扩展性。2.5.7经济性投资保护。2.5.2实用性先进性。6.2查询所有数据列接口。3系统功能模块详细设计。6.3修改指定数据接口。6.4删除指定数据接口。6.5获取待办事项接口。6.6修改用户信息接口。8.2数据管理能力要求。7.3 系统维护设计。

2302_79423711的博客 6283

软件开发项目文档模板------03 设计阶段

说明本数据库将反映的现实世界中的实体、属性它们之间的关系等的原始数据形式,包括各数据项、表、视图、存储过程、触发器的标识符、定义、类型、度量单位值域,建立本数据库的每一幅用户视图。本说明书说明 “XXX系统”的数据库设计、结构情况,用于开发人员进行项目设计,同时也为后续的数据库维护工作提供了良好的使用说明,也可以作为未来版本升级时的重要参考资料。该文档主要包含了系统数据库的详细设计,如系统数据库系统,设计工具,数据库配置,数据库命名规范,数据表结构定义,数据库逻辑设计,数据库物理设计。

weixin_44804002的博客 2328

怎样项目规划方案设计文档

在工作中,很多时候,我们都需要就一个问题提出一个解决方案,这时候,我们很可能需要产出一个文档来供大家讨论,并指导下一步工作计划。 问题可大可小,形式上是否叫它为一个项目并不重要,重要的是为了解决这个问题,项目规划方案设计的流程是一致的。就大数据平台构建的语言环境来说,它可以是整个平台体系的搭建方案,也可以是具体某个组件如调度系统的建设,还可以是某个具体的功能点或问题改进比如用户任务脚本的依赖关...

搬砖小鱼,请多指教呦 373

如何项目规划方案设计文档 (转)

在工作中,很多时候,我们都需要就一个问题提出一个解决方案,这时候,我们很可能需要产出一个文档来供大家讨论,并指导下一步工作计划。 问题可大可小,形式上是否叫它为一个项目并不重要,重要的是为了解决这个问题,项目规划方案设计的流程是一致的。就大数据平台构建的语言环境来说,它可以是整个平台体系的搭建方案,也可以是具体某个组件如调度系统的建设,还可以是某个...

dibengshao7358的博客 545

项目规划方案设计文档的编

引言 在工作中,很多时候,我们都需要就一个问题提出一个解决方案,这时候,我们很可能需要产出一个文档来供大家讨论,并指导下一步工作计划。这个文档便是所谓的设计文档。 问题可大可小,形式上是否叫它为一个项目并不重要,重要的是为了解决这个问题,项目规划方案设计的流程是一致的。就大数据平台构建的语言环境来说,它可以是整个平台体系的搭建方案,也可以是具体某个组件如调度系统的建设,还可以是某个具体的功能点或问题改进比如用户任务脚本的依赖关系分析,系统稳定性的提升等等。 一篇项目规划设计文档的好坏,往往决定了一个项目

nb_zsy的博客 953

一篇靠谱的方案设计文档-之实践问题清单

这篇实际上4年前就了,但是一直没发在csdn上,是上一篇如何项目规划方案设计文档_colorant的专栏-CSDN博客_项目方案的具体实践问题后续。 补发一下 上一篇,重点讲述的是撰项目规划方案设计文档的指导原则,要成什么样子才能发挥它应有的价值。 具体如何做到,往往还需要实践经验技术功底的支撑,仅仅知道方向,很可能也是心有余而力不足。 尽管如此,还是有一些在具体实践环节中通用的方法论Checklist清单,可以帮助到大家。让大家在自己的能力范围内,将思考的过程变得标准化,...

colorant的专栏 2026

如何方案规划设计文档,这里有一份实践清单

一些在具体实践环节中通用的方法论Checklist清单希望可以帮助到大家

yunqitech的博客 497

软件方案设计文档项目建设方案模板

项目建设总体规划【可选】业务需求分析与解决思路。实施人员组织实施计划。数据需求分析【可选】风险评估(限制条件)

weixin_41039677的博客 956

2015年国赛高教杯数学建模D题众筹筑屋规划方案设计解题全过程文档及程序

2015年国赛高教杯数学建模D题众筹筑屋规划方案设计解题全过程文档及程序

weixin_43292788的博客 1780

如何做好一个BI项目规划需求定义?

需求分析是在需求采集过程中,根据调研大纲,充分了解企业不同层次人员的需求,并且对需求进行仔细的分析、总结、归纳、整理,形成一份准确的需求分析报告。很多做技术的同学往往容易陷入只关心技术难点,只能看到技术问题的局面中,而实际上,更多的问题往往是整体流程如何设计更加合理的问题,而不是技术方案绝对对错的问题。正所谓磨刀不误砍柴工,一个项目的启动,先得从金字塔顶端做好规划,摸清楚需求、背景、客观条件、可投入资源等。强依托前面的核心需求问题分析工作,没有做好前面的准备工作,千万不要着急开始动手“规划方案

qq_38767591的博客 178

【设计文档】软件详细设计说明书案例文档(word直接套用)

【XXX项目】建设采用面向服务的架构(Service Oriented Architecture,SOA)是基于开放的Internet标准协议,支持网络服务(Web Services)的描述、发布、发现使用的一种应用架构,是一种很独特的架构,它由很多强调互联协作,本地透明的组件网际联接构成,被认为是下一代应用系统开发的架构。在组件技术的概念模式下,软件系统可以被看作相互协同工作的部件的集合,其中每个部件都会提供特定的服务,发出特定的消息,并以标准的形式公布出来,以便使其他对象了解调用。

2302_79423711的博客 1万+

详细设计说明书(直接套用实际项目案例模板2024)

6. 基于服务总线架构实现跨科室信息协同共享。1. 采用面向服务的体系架构(SOA)3. 采用C/S与B/S模式结合的架构。4. 使用信息资源规划(IRP)方法。5. 应用工作流技术实现流程再造。1. 面向服务的框架(SOA)(3) 公共代码定义的指导原则。(一) 通用数据标准制定方法。(1) 通用数据标准定义方法。(三) SQL语句的动态生成。2. 多源异构数据整合技术。(5) 标准制度保障体系。(二) 通用数据标准的实现。3. 先进实用的技术体系。3. 面向对象分析设计。(2) 公共代码定义方法。

weixin_41039677的博客 3306

软件项目-详细设计说明书范文参考(46页Word原件)

软件全生命周期文档分享:软件开发全套资料_数字中台建设指南-CSDN博客

xx_123321456的博客 2042

软件项目文档资料全套完整版(规格说明书+详细设计+测试计划+验收报告)

在软件开发过程中,文档资料是非常关键的一部分,它们帮助团队成员理解项目需求、设计、实施、测试、验收等各个环节,确保项目的顺利进行。以下是针对您提到的各个阶段的文档资料概述:

2401_83041532的博客 625
上一篇: 大数据平台基础架构指南
下一篇: 那些聪明又理智,勤奋还有钱的人,后来怎么样了
彩色蚂蚁
彩色蚂蚁 领域专家: 大数据技术领域 领域专家: 大数据技术领域
博客等级 码龄20年 2669粉丝 133原创
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值