如何写好一份软件开发设计文档

设计文档 - 也被称作技术规范和实现手册,描述了你如何去解决一个问题,是确保正确完成工作最有用的工具,其目的是迫使你对设计展开缜密的思考,并收集他人的反馈,进而完善你的想法,同时在软件交付和交接的过程中,能让其他人更通俗易懂的了解之前的设计目的和思路


目录:

  • 一、什么是软件开发设计文档

  • 二、为什么要写软件开发设计文档

  • 三、写软件开发设计文档需要主要些什么

  • 四、怎么写好一份开发设计文档


一、什么是软件开发设计文档

  • 设计文档 - 也被称作技术规范和实现手册,描述了你如何去解决一个问题,是确保正确完成工作最有用的工具

  • 一般来说,设计文档的生命周期有如下几个步骤:

  1. 创建并快速迭代 - 通过不断的思考论证和缜密思考,完善出第一版稳定的文档

  2. 评审(可能有多轮) - 头脑风暴,直面他人的疑问,收集他人的反馈和意见,完善文档

  3. 实现和迭代 - 在发现编码实现和设计有冲突或设计有缺陷时,及时调整更新文档

  4. 维护和学习 - 随着业务功能不断的变化,应该及时更新文档,以免误导后来接手或阅读的人

  • 不同的领域的设计文档要求不一样,这里主要介绍软件开发过程的设计文档,其组成部分可能会包含如下几部分:

  1. 概要 (时间、地点、人物、背景、方案)

  2. 表结构及其之间的关系【E-R 图:实体-联系图 Entity Relationship Diagram】

  3. 业务流程图、时序图(按照人操作的维度)

  4. 程序流程图、时序图(按照代码执行的维度)

  5. 接口约定(对外公开的方法、api 接口等)

  6. 其他(伪代码、类图、思维导图、泳道流程图)

  7. 附注(附加的解释和说明、引用资料)

  8. 评审情况


二、为什么要写软件开发设计文档?

  • 磨刀不误砍柴工,设计文档是确保正确完成工作最有用的工具,且不应该让写设计文档成为大家工作的负担

  • 其目的是迫使你对设计展开缜密的思考,并收集他人的反馈,进而完善你的想法

  • 同时在软件交付和交接的过程中,能让其他人更通俗易懂的了解之前的设计目的和思路

  • 它是一种知识的沉淀和传承

  • 我参与过很多次设计评审,经常会发现如下问题:

  1. 文档工具不统一,不同的小组、部门存在差异,有些甚至不知道是什么格式的文件,无法打开

  2. 过度拷贝需求文档,缺少软件设计的内容,不像软件设计文档

  3. 设计文档未按照标准模板顺序,排版混乱,缺少清晰的目录结构

  4. 设计文档太多图片,有些质量很差,且缺失原始文件,比如 EA 工具做的缺乏 eapx 文件,会导致文档迭代需要全部重新绘图

  5. 没有统一的文档版本管理工具

  6. 数据库表结构设计样式杂乱不统一,字段无中文描述(毕竟母语不是英语),且基本没有考虑主键和索引设计

  7. 程序流程基本比较简单,缺少主线,无法描述核心算法及关键点 (例如,取款机如何取钱?有些仅仅描述了【插卡 -> 取钱 -> 取卡】是不够的,还应包含各种校验、事务、并发、缓存等处理)

  8. 类图缺乏体现类之间的关系,有的直接用英文函数名,缺乏描述

  9. 时序图大多只描述与数据库的交互,缺少业务流程和程序执行的时序图

  10. 不理解设计文档的意义,缺少重点,不是什么任务需求都需要写设计文档


三、写软件开发设计文档需要主要些什么

  • 文档撰写人:架构设计师或功能的开发者

  • 明确文档面向的读者:是部门内部的开发者?伙伴实施人员?外部的开发者?

  • 设计先行:设计文档在撰写应该是在编码之前,可以极大地避免后期出现返工的情况,也能提升开发效率

  • 一图胜千言:尽可能地使用图文的方式表达清楚设计思路

  • 统一的绘图工具:需要支持导入及导出,方便后续更新

  • 统一的文档模板:为了防止出现千奇百怪的文档、排版不一致、难以阅读等的问题

  • 确定承载的形式:可以从安全性(文档加密)、便于查看、版本管理等方面考虑,推荐内部的知识文档管理系统、类似 wiki \ git \ svn 的版本管理工具、内网微盘

  • 好代码优于设计文档:有时候写出优雅的代码和注释更胜于写一篇设计文档

  • 版本迭代:在软件功能迭代的过程中,可能经过几次迭代后功能和设计有了很大的变化,设计文档应该及时更新,以免给人传递错误的信息


四、怎么写好一份开发设计文档

  • 用什么工具

1、推荐开源的绘图工具:https://www.draw.io/?lang=zh

官网截的图

2、word (设计文档模板,也可以使用 wiki \ confluence 这类团队工作空间管理工具)

3、xMind (画思维导图)

4、visio (画图工具,目前没发现有 mac 版的)

  • 如何写、如何画?

1、下一篇我将介绍如何用 draw.io 画图(时序图、流程图、类图、ER 图、架构图)

2、参考资料:

▶ 流程图:http://www.woshipm.com/zhichang/2329530.html
▶ 时序图:http://www.woshipm.com/ucd/607593.html
▶ 类图:https://design-patterns.readthedocs.io/zh_CN/latest/read_uml.html
▶ 程序流程图 https://cn.vuejs.org/v2/guide/instance.html#生命周期图示

3、放一波预览图(样例,仅供参考):






(0)

相关推荐

  • 推荐大家几款非常实用的工具,尤其是我们做...

    推荐大家几款非常实用的工具,尤其是我们做技术的IT人员,使用它们后能大大地提高你的战斗力 . 1. 个人笔记记录 : Notion 2. 编写markdown文档 :Typora 3. 思维导图工具: ...

  • 手把手教你撰写交互设计文档(保姆级教程)

    大家好,今天想跟大家分享一下如何撰写一份专业的交互设计文档,作为交互设计师,我们平时工作最大的产出就是交互设计文档,很多刚转行的同学会在网上寻找模板直接套用或者自己慢慢摸索,而这篇文章会手把手教你怎样 ...

  • 如何写软件设计文档

    自己在公司1年多前写的一篇文章,今天翻出来,重温一下. 软件设计的不同模型:瀑布式.快速原型法以及迭代式 自从1968年提出"软件工程"概念以来,软件开发领域对于借鉴传统工程的原则 ...

  • 基于Autosar的SOA软件开发设计详解

    知圈 | 进"域控制器群"请加微13636581676,备注域 面向服务的架构SOA的出现可以打破车内静态交互模型,并且建立功能灵活治理的系统架构.确保新增功能的实现可以与车辆原有 ...

  • 开发到底需要一份怎样的需求文档? | 产品壹佰

    开发到底需要一份怎样的需求文档?这个问题我记得我做产品不久后在PMcaff上提过,非常感谢当时解答的朋友,为我在以后的写文档提升了很大的质量和减少了很多不必要的沟通. 今天做为已有丰富经验的产品老司机 ...

  • 朱晔的互联网架构实践心得S1E9:架构评审一百问和设计文档五要素

    本文我会来说说我认为架构评审中应该看的一些点,以及我写设计文档的一些心得.助你在架构评审中过五关斩六将,助你写出能让人收藏点赞的设计文档. 技术架构评审一百问 架构评审或技术方案评审的价值在于集众人的 ...

  • 第三次作业设计文档

    需求: 两个以上UI界面 运用Collider,Transform,Rigidbody,Ugui,摄像机等常用组件实现一个demo 尽可能的不耗费性能 设计: 实现一个3d版的吃豆子小游戏. 敌人AI ...

  • Layui 开发使用文档

    开始使用 - 入门指南 layui(谐音:类UI) 是一款采用自身模块规范编写的前端 UI 框架,遵循原生 HTML/CSS/JS 的书写与组织形式,门槛极低,拿来即用.其外在极简,却又不失饱满的内在 ...

  • 一份美味的“在线文档”背后,要经历多少技术探险与匠心锤炼?

    今天的年轻人都信奉这样一个理念:办公软件就是生产力,苦什么也不能苦办公. 更好用的办公工具不仅让我们的效率更高,心情愉悦,更可能给整个社会经济和产业发展的提质增效. 在移动互联网时代,最常用到的办公软 ...

  • 一份完整的行业门户网站策划开发设计营运方案

    一份完整的行业门户网站策划开发设计营运方案