????????项目立项
估计项目的花费,确定大致的所需开发人员数,确定项目是否可行;
????????需求分析
整体过程:
- 项目背景和目标,即项目的目的是什么
- 用户需求,即甲方所需要的功能需求,准确记录甲方的要求,防止后期需求不对,项目重做;
- 功能需求,从甲方的需求中剥离出来功能需求,以及一些必须性的功能(登录注册等)。
- 非功能需求,性能要求,安全要求,可靠性要求,应有一个大致的了解(比如可能需要支持百万并发,可能需要绝对可靠),为下一步设计提供参考。
其他:…
????设计
通过需求分析,知道大致的功能,需要对其抽象成业务场景,即拆分成多个独立的业务模块,这些业务和甲方需求比,更加偏向于程序员的理解,例:登录业务,订单管理和支付业务,基础增删改查业务,私信和群聊业务,外卖购买与支付业务,点赞评论业务等等。
对项目中出现的业务模块进行优先级的划分,优先级高的先将人力物力投入进去开发。(通常表现为依赖性较高,用户体验影响较大,风险难度较大,市场需求较高的模块,-比如登录注册,用户聊天等)(小项目对该概念并不深刻,但要知道企业项目中业务是有优先级划分的)
对这些单独的业务进行逻辑探究和分析,制定出较合理的实现方式,然后对这个业务进行模拟实现~~(流程图,时序图的绘制,大型项目最好是要有,有些文字并不直观~~),具体表现为抽离出实现这个业务的具体接口。
在此处对技术进行待选,例如:点赞评论的业务实现,需要使用到redis的缓存功能,那么便引入redis;
再例如,一些多高并发场景,使用go进行开发更便捷等等;最终选出最合适的技术栈和应用;
应考虑极端环境下的实现,以及安全性的实现。
(例如,高并发,高流量,事务,锁等)可以代码中先不加上,但要有这个意识,留有余地,在后期进行优化;
实现这个业务的接口抽离出后,再判断这些接口中涉及到的数据库字段,依次列出这些业务所需要的数据库字段和关联的数据,为建表做准备,分析完全部的业务后,将所需的表进行创建汇总和分析,指定主键,外键等数据,再总体过一遍项目流程以保证项目整体的合理性;
进行项目框架和技术栈的选择,例如对于go-web项目,可能会选择gin中的gin-vue-admin当作框架或go-admin框架,或者自建脚手架(对于成熟开发者还是使用成熟框架的好,有助于学习一个非常完整的框架流开发),在企业中大多会使用企业框架或者成熟的开源框架,以及gorm,mysql,redis等各种技术选型。
之后规范开发文档的编写,以及项目中各种规范化的注意事项和命名的要求,前后端统一文档格式,做到阅读零压力。