1.了解系统目标

沟通
市场调研/理解标书,大致了解用户想干什么
引导
(可使用鱼骨图)分析问题本质,把用户的想法拉倒正确的方向上来
利益干系人
(任何项目都是为人服务的,)理清各类人群的利益诉求,使得需求更精准
边界
明确做什么、不做什么,避免后期扯皮
约束
用户能提供的支持(人、财、物、时间),对系统的期望(性能、安全、可用性,接口...)

2.可行性研究

政策法规
是否允许
技术难度
能否驾驭
经济回报
是否合适(收入大于成本)
市场前景
是否广阔(可以继续推销)

3.明确需求

细化
从什么地方(现有产品、背景资料、项目干系人),用什么方式(深入分析、现场观摩、用户访谈),获取什么信息(业务场景、用户习惯、系统约束)
梳理
理清思路,整理成文档
确认
通过反复评审、及用户沟通,落实成需求说明书

1.概要设计(方案)

功能设计
(用例图)梳理功能列表
数据设计
(E-R图)表和表之间的关系
架构设计
(构件图和部署图)构件和构件之间的关系,包括基础构件和业务构件
交互设计
系统提供的界面,构件提供的接口
测试用例设计
准备好测试数据(输入),针对各种场景给出期望(输出)

2.项目计划

人员安排
哪些人负责哪些构件的开发、测试
进度预估
各构件的完成时间节点

3.详细设计

功能设计
(序列图)梳理每个功能的实现步骤和约束(格式验证、逻辑验证、提示信息...)
数据设计
梳理字段(名称、类型、长度、约束),约束(PK、FK、唯一...)
架构设计
(协作图)梳理构件的细节,构件之间如何通信(REST同步/MQ异步)
交互设计
明确界面(元素、色彩、动作),构件接口的内容

4.编写代码

技术选择
根据项目特点,选择合适的技术(语言、框架)
开发环境准备
选择合适的【编辑器、编译器、调试工具、集成工具、测试工具、发布工具】,合理配置使之正常运行
基础构件开发
身份认证、授权、日志、会话信息、异常、数据验证、安全、依赖注入、数据访问...
业务构件开发
(类图)用设计模式组织逻辑,(活动图)用算法实现逻辑,尽量复用
质量检查
针对核心逻辑编写单元测试,定期做代码检查,集成测试某个功能

5.质量检查

静态代码检查
代码审查(开发经理/借助工具)
编写单元测试
针对 核心逻辑 || 复用程度高的逻辑
集成测试
针对某个功能,将几个构件连接起来,用测试用例来验证
系统测试
代码全部完成后,进行全面测试(包括:性能、安全、可靠性)

6.产品化

数据脚本
创建数据库、初始化数据的sql脚本
目标程序
编译各构件的源代码,生成目标程序
部署手册
描述创建数据库的步骤、启动各程序的步骤、配置方法,以及整体的部署图

1.部署

硬件准备
购买云服务器 / 使用甲方提供的设备
实地部署
参照部署手册,完成软件部署
简单测试
确认部署成功

2.用户培训

现场演示
面对面操作软件,引导用户了解大致的使用流程
用户手册
系统的使用帮助,交给用户深入学习操作细节
客户服务
公司的客服人员,解答用户偶尔遇到的疑惑

3.软件维护

问题修复
在使用过程中发现的bug,须立即修复
需求变化
用户变更需求,进行需求确认后更改软件(包括:需求、设计、代码)

1.麻雀虽小五脏俱全:无论大项目还是小项目,步骤是基本相同的
2.具体问题具体分析:每个项目都不同,但只有2方面不同【侧重点、 次序】
3.人使用软件解决问题,想简单点就是:理清楚你有啥问题,我用这个方案来解决,代码是方案的一部分、用户培训是另外一部分