编写一个项目开发文档

项目开发过程中为了增加程序的可读性和程序的健壮性, 方便后期程序的调试和维护,所以需要在开发过程中统一技术规范,一般会在项目初期确定好相关文档作为这一统一的规范。不同公司会对文档做不同要求,划不同的分类,但一般来说(或者拿自己的经验说)大致可以分为需求文档、接口文档、流程图(可以单独作为一份文件可以作为附件附在文档中)、变更文件等。

一、需求文档

在项目启动之后,项目的目标已经明确了,那么就要开始着手干活了,但是在干活之前,需要对整个项目分析透彻。那么,如何对业务进行分析呢,看以下的建议。

首先,开发人员要有随意转换身份的意识和能力。

A、明确产品功能

在分析业务时,站在用户的角度上,思考要做的产品能实现什么功能。把所有的功能点列出来!

B、分析某一功能点的流程

在罗列了所有的功能之后,需要站在开发者的角度分析每一个功能点,考虑从客户端到后台操作数据库的整个流程,可以从是什么、为什么、在哪、怎么做、谁来做、做完如何反馈、反馈给谁、上传到哪、服务器用什么数据库、数据库需要什么表、表里有什么字段、每个字段的属性及意义等等。比如,我要要做一个软件中个人头像上传的功能,首先明确我做的是上传功能;为什么要上传?因为个人资料需要头像;怎么做上传?通过网络I/O实现;这个功能在什么位置?软件有个个人中心模块,个人中心里有个个人信息子模块,在这个模块里可以上传头像;谁上传?已经登录的用户;上传完之后如何反馈?弹窗提示上传成功;反馈给谁?客户端已登录的用户;上传到哪?服务器上;用什么数据库?MySQL;需要什么表?(存到)用户表;表里有什么字段?用户信息的基本字段;每个字段的属性及意义?略。在思考完这些问题之后,可以把一个功能点串成一条完整的从前端到数据库的线。

C、整合各个功能点–明确分工

在串完所有的功能点之后,站在一个高一层次的角度,把每个功能点之间的联系理清楚,按照相互的联系分工合作,优化其中的细节问题。

D、撰写需求文档

分工完成之后,按照第二步分析的内容,每个人把自己负责的功能整理成文档,最后合并文档,作为统一的需求文档。

E、绘制业务流程图

需求文档确定之后,绘制整个项目的业务流程图,这时候的流程图只需要包含前端的业务流程,后台实现的流程图不需要在需求文档中体现,而是放在后面的接口文档中。

二、接口文档

不同公司对接口文档的要求也不尽相同,但包括的内容却是大同小异的。封面、标题、审批页、修订历史以及格式字体等等风格迥异的次要内容不做赘述,只讲干货!干货!干货!

A、请求地址

需要哪个线上地址就写哪个。注意不要反低级错误,比如写错某个字母或者大小写问题。

B、接口信息

说明请求方式,是POST还是GET。

C、功能描述

清晰地描述接口功能,要求言简意赅,不要写太多废话,也不要遗漏任何细节。

D、接口参数说明

声明参数的名称,严格要求与调用一致,包括大小写;

简单说明参数的含义;

参数的数据类型,是string 、int 还是long等(例如参数为@RequestParam(“appKey”)  String appKey,  @RequestParam(“randomId”)  Integer randomId);

备注部分,说明参数值是需要哪个公司提供,并详细说明参数怎么生成的,例如时间戳,是哪个时间段的;参数是否必填,一些参数是必须要有的,有些是可选参数,一定要注意写清晰。

E、返回值说明

有一个模板返回值,并说明每个返回参数的意义。提供一个真实的调用接口,真实的返回值。

F、接口调用限制

为了安全,双方采用一个一致的加密算法,保证接口调用的安全。

G、文档维护

文档维护时,修改内容部分需要有修改人、修改日期、版本号的信息。

三、流程图

流程图可以单独作为一份文件,也可以作为附件附在对应的文档中,具体执行按要求来。

业务流程图

程序结构图

程序流程图

四、变更文件

在开发过程中如果出现与预期计划、文档不一致的地方,则视为发生变更,此时大致需要提供以下信息:

A、版本历史(版本号、基本信息)

B、变更前现状

C、变更内容

D、影响评估

E、审批
————————————————
版权声明:本文为CSDN博主「Fuzz_」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_36186690/article/details/82903265

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/454263.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)

[索引页][源码下载]乐在其中设计模式(C#) - 原型模式(Prototype Pattern)作者:webabcd介绍用原型实例指定创建对象的种类,并且通过拷贝这个原型来创建新的对象。示例有一个Message实体类,现在要克隆它。MessageModelusing System; using Syst…

python123添加列表元素_Python之列表

Python变量没有数据类型,所以Python没有数组。 整数;浮点数;字符串;对象 创建一个列表: 1.member[大鱼,123,3.14,[1,2,3]] 2.empty[] 向列表添加元素: append(): member[…

为机器学习占地14

是将若干个学习器(分类器&回归器)组合之后产生一个新学习器。弱分类器(weak learner)指那些分类准确率只稍微好于随机猜测的分类器(errorrate <。 集成算法的成功在于保证弱分类器的多样性(Diversity)。而且集成不稳定的算法也能够得到一个比较明显的性能提升。 常见的…

优秀程序员 分析提高能力 程序进阶

我出生在南方的一个农村。还记得小时候家里是很穷的&#xff0c;那时候上学也很便宜&#xff0c;我已记不清初中以前的学费是多少了。反正从小在家里玩泥巴&#xff0c;有一日村里两个女孩去上学&#xff0c;看到我就说一起去上学吧。当时一想&#xff0c;玩泥巴也厌烦了&#…

html中通过点击button标签实现页面跳转的三种方法

方法1&#xff1a;使用onclick事件 <input type"button" value"按钮"onclick"javascrtpt:window.location.hrefhttp://www.baidu.com/" />或者直接使用button标签 <button onclick"window.location.href https://www.baidu.com…

mybatis调用存储过程

直接贴代码吧 注解式可以调用 但是不能返回结果 所有我就贴配置式的 有知道注解怎么返回结果的请评论 数据库代码 #表 DROP TABLE IF EXISTS p_user; CREATE TABLE p_user (id int(11) NOT NULL AUTO_INCREMENT,name varchar(10) DEFAULT NULL,sex char(2) DEFAULT NULL,PRIMAR…

java dump分析工具_Java 性能分析工具 (2):Java 内置监控工具

引言本文为 Java 性能分析工具系列文章第二篇&#xff0c;第一篇&#xff1a;操作系统工具。在本文中将介绍如何使用 Java 内置监控工具更加深入的了解 Java 应用程序和 JVM 本身。在 JDK 中有许多内置的工具&#xff0c;其中包括&#xff1a;jcmd&#xff1a;打印一个 Java 进…

Linux+php+memcache+APC加速PHP网站

一、前言对于一个站长而言不仅要做好网站内容外&#xff0c;还需要对网站做优化&#xff0c;如果速度访问很慢的&#xff0c;没有人下次再访问你的站点&#xff0c;目前国内使用php的网站不计其数&#xff0c;这里用我的博客为例&#xff1a;http://chinaapp.sinaapp.com 以加速…

为机器学习占地13

是将若干个学习习 弱分类器间存在一定的差异性&#xff0c;这会导致分类的边界不同&#xff0c;也就是说可能存在错误。那么将多个弱分类器合并后&#xff0c;就可以得到更加合理的边界&#xff0c;减少整体的错误率&#xff0c;实现更好的效果&#xff1b; 对于数据集过大或者…

Python面试题(第二篇)

第二部分 网络编程和并发&#xff08;34题&#xff09;1、简述 OSI 七层协议。2、什么是C/S和B/S架构&#xff1f;3、简述 三次握手、四次挥手的流程。4、什么是arp协议&#xff1f;5、TCP和UDP的区别&#xff1f;6、什么是局域网和广域网&#xff1f;7、为何基于tcp协议的通信…

noip模拟赛 radius

分析&#xff1a;这道题实在是不好想&#xff0c;一个可以骗分的想法是假定要求的那个点在中心点上,可以骗得不少分.但是在边上的点要怎么确定呢&#xff1f;理论复杂度O(&#xfe62;无穷).答案一定是和端点有关的&#xff0c;涉及到最大值最小&#xff0c;考虑二分最大值&…

来自IT公司速查手册的各大IT公司薪资和待遇内幕

来自IT公司速查手册的各大IT公司薪资和待遇内幕 &#xff08;转载于 http://xuchaoyi99.cnblogs.com/ &#xff09; 编号 1. 杭州 诺基亚 2. 南京 趋势科技 Trend 3. 北京 联想&#xff08;北京&#xff09;有限公司 4. 深圳 华为 5. 深圳 中兴通讯 6. 上海 SAP 7.…

Docker 精通之 Dockerfile

Docker 精通系列 Docker 精通之入门Docker 精通之微服务Docker 精通之常用命令Docker 精通之 Dockerfile 1.基本说明 Dockfile 是一个用于编写 docker 镜像生成过程的文件&#xff0c;其有特定的语法。在一个文件夹中&#xff0c;如果有一个名字为 Dockfile 的文件&#xff0c…

c语言中int的取值范围_c语言入门(1)

c语言入门C语言一经出现就以其功能丰富、表达能力强、灵活方便、应用面广等特点迅速在全世界普及和推广。C语言不但执行效率高而且可移植性好&#xff0c;可以用来开发应用软件、驱动、操作系统等。C语言也是其它众多高级语言的鼻祖语言&#xff0c;所以说学习C语言是进入编程世…

vue : 无法将“vue”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确, 然后再试一次。

vue : 无法将“vue”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写&#xff0c;如果包括路径&#xff0c;请确保路径正确&#xff0c; 然后再试一次。 报错原因&#xff1a; 没有安装脚手架vue-cli 解决方法&#xff1a;安装脚手架vue-cli npm inst…

session的生命周期

session的生命周期分为创建、活动、销毁三个阶段 创建一个新的会话不代表旧的会话就销毁了 session.invalidate()方法可以销毁当前会话 在page1中写上这个方法再打开网页 说明该会话被销毁了出现了错误 我们把这个方法写在所有代码段的下面 再打开这个网页 刷新网页 这个sessio…

虚拟化与网络

本文转自Grodd51CTO博客&#xff0c;原文链接&#xff1a;http://blog.51cto.com/juispan/1959791&#xff0c;如需转载请自行联系原作者

算法基础之搜索和经典排序

目录 简介 搜索算法 二分法查找 排序算法 冒泡排序&#xff08;Bubble Sort&#xff09; 选择排序&#xff08;Selection Sort&#xff09; 插入排序&#xff08;Insert Sort&#xff09; 快速排序&#xff08;Quick Sort&#xff09; 归并排序&#xff08;Merge Sort…

IT人不要一直做技术

发表于&#xff1a;2009-03-04 09:51:44 楼主IT人不要一直做技术 【引子】感觉这篇文章很有深意&#xff0c;正是我所想说的话。希望大家有借鉴。 【原文】 我现在是自己做&#xff0c;但我此前有多年在从事软件开发工作&#xff0c;当回过头来想一想自己&#xff0c;觉得特别…

背景宽高随文本变化_中科大提出ContourNet:更准确的任意形状场景文本检测新方法...

点击上方“CVer”&#xff0c;选择加"星标"置顶重磅干货&#xff0c;第一时间送达本文转载自&#xff1a;CSIG文档图像分析与识别专委会本文简要介绍2020年被CVPR录用的论文“ContourNet: Taking a Further Step toward Accurate Arbitrary-shaped Scene Text Detect…