• Java web产品开发经验分享



    前几天在公司应领导要求搞得一个分享,也在这里分享下。

    产品研发流程

    • 需求对接
    • 研发过程
    • 测试与版本

    需求对接与变更

    需求来源

    • 来自客户的直接需求,日常售后运维收集的
    • 参考资料,其他公司的竞品
    • 与项目部、售后部门等沟通,需求调研
    • 公司产品规划
    • 主要原则,不闭门造车,不想当然,参考已有成熟产品或业界规范,或者最新的政策文件

    输入输出

    • 需求规格说明书,或者简单的说明文档(因为后期肯定有变动,文档要重写)
    • 功能脑图、原型图 Axure RP,或者html地址
    • 产品预期的目标
    • 产品与相关研发人员,进行需求说明评审会议
    • 会议前,相关文档提前发给相关人员(UI、开发和测试),供阅读思考
    • 会议时,产品经理按需求点逐一讲解,待讲解完一个大的功能点,大家提问讨论,统一对需求的理解
    • 一个简单的会议纪要,记录一下大家有矛盾的点

    解决方案编写

    • 需求会议后,研发人员针对需求编写解决方案
    • 解决方案包括功能模块划分、表结构设计、实体类设计等,产出一个解决方案文档,包含对需求的理解,功能实现方式,包括一些业务流程图、架构图、部署图、SQL脚本等(可以使用Visio、亿图图示、PowerDesign等工具进行设计)
    • 如果是完全的新项目,可能还需要考虑技术选型,例如使用哪种编程语言、开发框架、数据库等,是否需要集群部署,一般与团队原有知识体系保持一致
    • 解决方案,经研发负责人评审后,进行任务分解分配,到具体人员
    • 根据现有资源情况,进行大致工期规划,列一个时间表
    • 项目进度工期可以使用project等管理,明确任务时间点,人员等
    • 需求可以使用JIRA、禅道等工具进行管理,可以将资料作为附件放在记录里
    • 注意:一般根据项目情况,要按照1.5倍时间预估,因为总有突发情况,而且前期的估算不一定准确

    需求变更处理

    • 对于新产品研发,或者客户项目开发,需求变更无法避免
    • 主要是新的东西,大家没法一开始就能明确其所有特性,后续可能有一些更好的想法,或者发现现有设计有重大缺陷
    • 需求变更,则需要对变更需求进行对接、评审(对现有框架、工期等的影响)、解决方案编写、工期计划的调整
    • 对于需求变更处理,要有原则,并不是所有的变更都要立即接受处理
    • 对于重大缺陷,或越往后期改动成本越大的,可优先处理
    • 对于一些不影响使用的优化或需求,可按列入写一个版本计划
    • 所有的需求变更,需要在JIRA或禅道里记录,新增一条记录

    研发过程管理

    功能开发

    • 重点任务,及时跟踪,根据需要加班完成
    • 进行阶段性短会,或者周会,每周要有项目进度说明
    • 前后端分离,要做好API接口维护,要尽量保证一个稳定环境和数据,供前端调试
    • 针对部分疑难问题,短时间无法处理掉的,及时汇报,大家一起解决
    • 宜早不宜迟,前中期多干点,留出冗余时间处理突发情况,尽量不要卡着时间点去完成任务
    • 及时维护JIRA或禅道里的任务状态,任务完成情况作为一项考核指标
    • 不能简单粗暴使用,因为有的关键任务可能要好几天完成,小任务可能半小时完成,所以数量和按时完成率也只是参考

    代码审查

    • 编码规范,约定大于配置,阿里编程规范、数据库规约等
    • 合理的类和变量命名,合理的注释,合理的方法长度
    • 代码静态审查 sonar cube
    • 人工审查,代码走读
    • 审查完成后,整理出现的问题并宣讲,大家一起学习下,避免类似问题

    知识库

    • 产品相关文档,包括需求文档、设计文档、用户手册等
    • 功能模块的文档,开发人员编写和使用,包括功能实现逻辑,在什么位置、有哪些类和表、有哪些接口等,可作为阶段性的工作文档,减少后续维护成本
    • 疑难问题的文档,记录遇到的问题,解决过程,解决结果等
    • 知识分享文档,产品中用到的关键技术,或者新技术,进行简单的介绍,包括特性、使用方式等

    测试与版本

    测试要求

    • 首先要按层功能自测,自己测试通过,再交由前端联调或测试人员测试
    • 保留必要的测试数据,接口测试要保留好输入输出(可以使用postman等工具)
    • 对测试人员的测试要持续跟进,对于影响测试的问题优先处理,其他缺陷或优化,后续处理
    • 对于多变的阶段,来不及使用JIRA禅道等管理工具时,可以使用腾讯在线文档,使用表格管理
    • 对于稳定期,可以使用JIRA禅道等管理工具,对问题追踪
    • 测试介入越早越好,最好在需求阶段介入,方便更早的开始编写维护测试用例,测试完成后要有测试报告
    • 如果条件允许,一个大的功能模块完成后,可以让测试人员对这个功能先行测试
    • 至少两轮完整测试,一轮集成测试,一轮测试问题修改后的回归测试

    版本管理

    • 代码主线分支管理
    • 产品代码管理
    • 项目代码管理
    • 发布版本管理(程序包、文档、SQL/shell脚本)
    • 部署文档(自动化部署脚本,数据库初始化脚本)

    经验分享

    保持学习

    • 学会利用互联网,开源免费的各种资料,源码
    • 推荐CSDN、B站、腾讯课堂、开源中国等
    • 学习的广度和深度,根据需要针对性学习,学了要用起来,要有总结和记录
    • 有计划、有一定强度的持续学习,日积月累

    几条工作经验

    • 输入参数校验,前端做了,后端也要做,可以借助框架的validate,也可以自己写
    • 避免在循环里访问数据库、打开文件等,防止对资源的过度占用
    • 数据库操作要谨慎,删除修改操作要谨慎,对数据有备份计划,脚本定时备份
    • 要有运维日志,对重要数据的增删改一定要有操作记录
    • 程序输出的日志级别,刚上线日志级别可以调低点,要关注磁盘剩余空间,定时压缩,适时清理
    • 提升开发效率,每天要完成的任务列个列表,按优先级和紧急程度顺序完成,实在无法按时完成要及时主动的和上级领导沟通
    • IT行业加班是常态,几乎所有公司都无法避免,要尽量按时吃饭。当你加班加到身体不舒服的时候,例如头疼、胸闷、胸口痛,赶紧回家休息,如果情况严重,及时去医院或者打120

    后期分享计划

    • DevOps自动化运维(docker、k8s)
    • clickhouse大数据组件
    • 分库分表在sass平台的应用
    • 产品国产化(使用国产操作系统、应用服务器、数据库等)
    • elasticsearch搜索引擎使用
    • 微服务如何应对高可用、高并发(redis缓存、SQL优化与索引使用、集群负载均衡、分库分表等)
    • 大家可以拟一些主题,后期有时间时做一些工作相关的、产品技术相关的分享会
  • 相关阅读:
    Unity 中3D数学基础-向量
    guava之RateLimiter
    HTML+CSS大作业:众志成城 抗击疫情 抗击疫情网页制作作业 疫情防控网页设计
    C. Dolce Vita Educational Codeforces Round 127 (Rated for Div. 2)
    【ASE入门学习】ASE入门系列二十四——轴向溶解
    跟着江南一点雨学习springmvc(2)
    Actors 基于消息驱动的异步编程模型
    JAVA【Maven中的核心概念】
    P8976 「DTOI-4」排列,贪心
    android compose Canvas 绘制图案居中展示
  • 原文地址:https://blog.csdn.net/u010882234/article/details/126336543