GKLBB

当你经历了暴风雨,你也就成为了暴风雨

导航

软件研发 --- 应用程序开发流程(大白话版)

 想象一下你要盖一栋梦想中的房子,开发一个App也差不多是这个意思,只不过盖的是一个能在手机或电脑上运行的程序。下面是主要的步骤:

1.想要啥(收需求)客户经理

  • 要干啥

    • 是想做个游戏App?还是购物App?或者是能帮人解决某个问题的工具App?比如,你想做一个能帮你记录每天喝了多少水的App。

  • 给谁干,有价值?

    • 确定App的核心价值。是给年轻人用,还是给老年人用?是给上班族用,还是给学生用?了解你的用户,才能做出他们喜欢的东西。

  • 找同款

    • 看看别人是怎么做的,有哪些优点可以学习,有哪些缺点可以避免。

    • 你的App要有啥不一样的地方,才能吸引人?

  • 法律合规初步评估: 确认项目在法律上可行。
  • 输出物:需求文档、 市场分析(用户分析,竞品分析,市场分析)、

2. 画草图(出方案)产品经理

  • 设计图

    • 啥功能?(功能列表)

      • 比如记录喝水App,可能需要的功能有:记录每次喝水的量、设定每日目标、提醒喝水、查看历史记录等。把这些功能都列出来。

    • 长啥样? (界面草图/线框图)

      • 不用太漂亮,用笔在纸上画出来就行,哪个按钮放哪里,哪个信息显示在哪里。

      • 比如,首页显示今日喝水进度,一个“+”号按钮用来添加喝水记录。

    • 怎么用? (用户流程图)

      • 想象一下用户打开App后,先点哪里,再点哪里,一步一步怎么操作。

  • MVP(最小可行产品)设计是互联网产品开发的关键理念:

    • 先做出一个最小版本测试市场反应,防止投入过大却没人用。比喻:就像先搭一个样板间,看看用户喜欢不喜欢再决定全面开工。

  •  怎么挣钱

    • 是否内购、广告、会员制、增值服务等

    • 免费用户与付费用户的设计差异。

    • 比喻:房子是租给人住?卖给人?自己住?模式不一样,设计结构就不同。

  输出产物:设计方案(线框图 & 用户流程图 、MVP、资源预算 )

怎么干(项目经理角色)

  •  

    • 制定时间表和里程碑

    • 管理项目进度和团队协作

    • 控制预算与风险

    • 跨部门沟通协调

  • 比喻:就像盖房子的工地负责人,保证施工顺利进行,按时交付。

  • 输出物:研发计划、任务管理

3.出设计(设计阶段)设计师

  • UI (User Interface - 用户界面) 

    • 画平面图: 把草图细化,设计出App的正式样子,包括颜色搭配、图标样式、字体选择等等。要看起来舒服、美观。

  • UX (User Experience - 用户体验)

    • 画交互图: 考虑用户用起来顺不顺手,操作方不方便,逻辑清不清晰。目标是让用户用得爽,不想卸载。

    • 比如,添加喝水记录的按钮是不是足够显眼?查看历史记录是不是很容易找到?

  • 开发线路图,制订开发任务,表示从哪里开发基础功能,然后逐步深入。
  • 输出物:
    • 平面图 通俗讲就是ps设计的海报,为后面提供图片素材等
    • 原型图 (例如在Figma, Sketch, Adobe XD中制作) 通俗讲就是 可交互的ui设计稿
    • UI设计规范文档  包含颜色、字体、图标、按钮、表单等所有UI组件的样式和使用规范,是保证开发一致性的“零件库”。
    • 切图及设计资产 (Sliced Assets & Design Resources): 提供给开发人员的、各种分辨率下的图标、图片等素材文件。

4.开干(开发阶段)程序员

    • 前端开发 (盖房子的外壳和内部装修): 就是用户能看到和操作的部分,比如按钮、图片、文字显示等。安卓App用Java或Kotlin语言,苹果App用Swift或Objective-C语言。也可以用一些跨平台技术,一套代码两边用。

    • 后端开发 (盖房子的地基和水电煤气管道): 用户看不到的部分,负责处理数据、用户账号管理、消息推送等等。比如你记录的喝水数据,就存在后端服务器上。后端开发会用到像Java, Python, Node.js, Ruby, Go等语言。

    • 前后联调: 编写接口文档,这里有个矛盾点,到底是前端还是后端出文档,我在开发时常常发现是后端出文档,前端对接接口,但是也有前端出文档后端对接,不管是谁出文档另一个必然要付出开发工作,没有人愿意给自己增加工作量的。前端和后端之间沟通的桥梁。好比服务员,前端告诉服务员要什么(比如获取喝水记录),服务员去后端厨房拿来给前端。

    • 数据库 (存放家具和物品的仓库): 用来存储App里的各种数据,比如用户信息、喝水记录等。

    • 输出物:
      • API文档 现在也可以 使用Swagger (OpenAPI) 这样的工具,后端工程师在写代码的同时就可以自动生成标准化的、可交互的API文档,前端可以直接在线调试,大大减少了沟通成本和扯皮。所以,这份文档是 后端的核心输出物。、
      • 源代码库 (Source Code Repository): 托管在Git(如GitHub, GitLab)等平台上的完整前后端代码。
      • 可执行的应用程序包 (Executable Application Package): 即编译好的测试版本,如安卓的 .apk 或苹果的 .ipa 文件。数据库文件。
      • 单元测试与集成测试代码/报告 (Unit & Integration Tests): 开发者编写的用于保证代码质量的自动化测试脚本及其运行结果。
      • 构建与部署脚本 (Build & Deployment Scripts): 用于CI/CD流水线的自动化脚本。

5.挑毛病(测试阶段)测试工程师

  •  

    • 功能测试: App的各个功能是不是都能正常工作?点这个按钮有没有反应?数据保存对不对?

    • 兼容性测试: 在不同品牌、不同型号的手机上,App能不能正常运行?会不会变形或者卡顿?

    • 性能测试: App运行快不快?占不占内存?耗不耗电?

    • 用户体验测试: 找一些真实用户来试试,看看他们觉得好不好用,有没有不明白的地方。

    • 安全测试/渗透测试
    • 发现Bug(程序里的错误或问题)就要赶紧告诉程序员去修改。

    • 输出物:
      • 测试计划 (Test Plan): 定义测试范围、策略、资源和时间表的纲领性文件。
      • 测试用例 (Test Cases): 您已列出,这是执行测试的具体步骤清单。
      • 缺陷/Bug报告 (Defect/Bug Reports): 在Jira等缺陷管理系统中创建的、详细描述每个Bug的报告。
      • 各类测试报告 (Various Test Reports):
        • 功能测试报告 (Functional Test Report)
        • 性能测试报告 (Performance Test Report)
        • 兼容性测试报告 (Compatibility Test Report)
        • 安全测试报告 (Security Test Report)
      • 测试总结报告 (Test Summary Report): 在上线前,对整个测试活动进行的总结,包含测试结果、遗留Bug风险评估等,是决定“能否上线”的重要依据。

6.交钥匙(上线阶段) 运维工程师

  部署服务器、配置域名、配置证书、提交备案审核材料

  • 上架到各大应用商店。

    • 比如苹果的App Store,安卓的Google Play Store,还有国内的各种安卓应用市场(华为、小米、应用宝等)。

    • 需要准备App的介绍、截图、宣传视频等资料。

    • 应用商店会对App进行审核,通过了才能上架。

  • 输出物:
    • 应用商店上架材料 (App Store Submission Materials): 包括应用图标、截图、宣传视频、应用描述、隐私政策URL等。
    • 服务器与环境配置文档 (Server & Environment Configuration Document): 生产环境的详细配置记录,是未来运维和排错的依据。
    • 运维手册 & 紧急预案 (Operations Manual & Emergency Plan): 指导运维人员进行日常维护、监控、备份和处理突发事件(如宕机)的操作手册。
    • 账号与密钥交接清单 (Credentials & Keys Handover List): 您提到的“密码本”的正式、安全版本,包含服务器、数据库、第三方服务、应用商店等所有相关账号和密钥。
    • 备案证明文件 (Filing/ICP License Documents): 在中国大陆等地区上线所必需的法律文件。

7. 试运行 (运营阶段)   运营人员

  • App上线了不是结束,而是新的开始:

    • 收集用户反馈: 看看用户在应用商店的评论,或者通过App内的反馈渠道了解用户怎么说。

    • 修复Bug: 即便测试再仔细,也可能有些隐藏的Bug在用户使用过程中才暴露出来,需要及时修复。

    • 数据分析: 看看哪些功能用户用得多,哪些用得少,用户从哪里来等等,帮助你改进App。

    • 版本更新: 根据用户反馈和市场变化,可能需要增加新功能,优化旧功能,不断推出新的版本。

    • 推广运营: 想办法让更多人知道和使用你的App,比如做广告、搞活动等。


      • 留存与裂变:

        • 埋点分析、A/B测试、邀请机制、积分奖励等

      • 比喻:房子建好后不仅要有人住,还要让大家介绍朋友来一起住。

      • 输出物:
        • 更新日志 (Changelog): 您已列出,向用户说明每个版本的新增和修复内容。
        • 用户手册/帮助中心 (User Manual/Help Center): 您已列出,供用户查询使用。
        • 用户反馈分析报告 (User Feedback Analysis Report): 定期整理和分析来自各渠道的用户声音。
        • 数据分析报告 (Data Analytics Report): 基于埋点数据,分析用户行为、功能使用率、留存率等关键指标的报告。
        • A/B 测试结果报告 (A/B Test Result Report): 对比不同方案优劣的实验结论。
        • 运营活动总结报告 (Campaign Summary Report): 对拉新、促活等运营活动的效果复盘。
        • 下一版本迭代计划 (Next Version Iteration Plan): 基于数据和反馈,形成的新的产品需求,开始新一轮的循环。

8 拆机

  • 当App完成历史使命,规划如何下架、迁移用户和数据、关闭服务。
  • 比喻:规划房子的拆迁或重建方案。
  • 输出物:
    • 产品下线计划 (Product Sunsetting Plan): 包含详细时间表、用户沟通策略、数据处理方案和技术步骤的完整计划。
    • 用户告知公告 (User Notification Announcements): 用于邮件、App内推送、官网公告的文案。
    • 数据迁移或归档方案/报告 (Data Migration/Archiving Plan/Report):* 如何处理用户数据的技术方案,以及完成后的确认报告。
    • 项目复盘总结报告 (Post-Mortem/Retrospective Report): 对项目从诞生到结束的全过程进行回顾,总结经验和教训,为未来的项目提供宝贵财富。

 

还有一个角色是架构师

主要作用是:

  1. 设计App的技术蓝图(地基和承重墙):

    • 决定App的整体技术结构,比如是采用前后端分离的模式,还是微服务架构等等。
    • 选择合适的技术栈,比如用什么编程语言、什么数据库、什么服务器、什么框架。这就像总工程师决定房子的主要承重结构用什么材料(钢筋混凝土还是木结构),水电煤气管道怎么走最合理。
    • 他们要确保App的“骨架”是稳定、可靠并且能够支撑未来的发展。
  2. 保证App的性能和可扩展性(房子能住多少人,以后能不能加盖):

    • 架构师需要考虑,当用户量暴增或者数据量变大时,App还能不能流畅运行,会不会崩溃。
    • 他们设计的系统要能够方便地在未来增加新功能或者容纳更多用户,就像房子设计时要考虑到以后可能加盖楼层或者扩建房间。
  3. 制定技术规范和标准(施工标准):

    • 架构师会制定一些开发规范、编码标准,确保开发团队写出来的代码质量高、易于维护,大家用的“砖”和“水泥”都是合格的。
  4. 解决复杂的技术难题(攻克技术难关):

    • 在开发过程中遇到的一些棘手的技术问题,架构师通常会带领团队去攻克。
  5. 沟通协调:

    • 架构师需要和产品经理、项目经理、开发团队、甚至客户进行沟通,确保技术方案能够满足业务需求,并且在技术上是可行的。

 其他可选流程

避风险(法规审核、隐私协议)

  •  

    • 数据隐私保护(如《GDPR》、中国的《个人信息保护法》)

    • 用户协议、隐私政策编写

    • 第三方服务授权(如微信登录、支付SDK合规)

  • 比喻:就像房子盖好后要通过消防、质量验收;App也要通过法律合规审查。

防黑客(安全设计)

  •  

    • 如何防止用户信息被盗

    • 如何防止服务器被攻击(如SQL注入、XSS、DDoS)

    • 支付相关接口如何加密传输

  • 比喻:房子要有防盗门、防火设计;App也要有安全设计。

国际化 本地化 / 多语言支持

  • 若目标用户包括国际市场,需要考虑语言翻译、时间格式、本地支付、法律等适配。

  • 比喻:房子要建在不同国家,还得符合当地的建筑规范和风格。

 

加速大型项目非开发性的工作 。持续集成 / 持续交付(CI/CD)

    • 没有提及 DevOps 工程实践:

      • 自动化构建、自动化测试、自动化部署

      • 常用工具:Jenkins、GitHub Actions、Docker、Kubernetes

    • 对于中大型项目非常重要,能大幅提升开发效率和上线速度。

    • 比喻:像建筑工地引入了机械化施工流水线。

补充:

1. 开发方法论:敏捷开发 (Agile Development)

您的流程描述了工序,但没有定义“施工节奏”。现代App开发很少采用“把所有图纸画完再一口气盖到顶”的瀑布模式(Waterfall),而是普遍采用敏捷开发(Agile),最常见的是Scrum框架。

  • 核心理念:将一个大的开发周期(比如3个月)拆分成多个短的、固定的“冲刺”周期(Sprint),通常为1-2周。每个Sprint结束时,都要交付一个可用的、增量的新版本。
  • 如何融入您的流程
    • 冲刺规划会 (Sprint Planning): 每个Sprint开始时,团队从产品需求(您的阶段1&2的产物)中挑选出这个周期内要完成的最高优先级任务。
    • 每日站会 (Daily Stand-up): 团队成员每天快速同步进度、计划和遇到的障碍。这是您阶段2中项目经理角色的日常实践。
    • 冲刺评审会 (Sprint Review): Sprint结束时,开发团队向产品经理、设计师等所有干系人演示已完成的功能(可工作的软件,是阶段4的产物)。
    • 冲刺回顾会 (Sprint Retrospective): 团队复盘这个Sprint的协作流程,讨论哪些做得好,哪些可以改进。这是持续优化的核心。
  • 比喻:敏捷开发就像分单元、分楼层精装修。你不是等整栋楼毛坯都盖好再从一楼开始装修,而是在盖好一二层并通过验收后,马上开始精装修,并邀请一小批“体验官”入住。根据他们的反馈,你可能会微调三四层之后的户型设计。这使得房子能更早产生价值,并及时应对需求变化。

2. 以用户为中心的持续验证 (Continuous User-Centric Validation)

您在测试阶段提到了“用户体验测试”,但现代开发强调将这个环节“左移”,即在开发全周期中持续验证。

  • 核心理念:在投入大量开发资源前,通过低成本的方式不断验证你的设计和功能是否真的为用户所需。
  • 如何融入您的流程
    • 阶段3 (出设计) 之前: 进行用户访谈 (User Interview),深入理解用户痛点,验证阶段1的需求假设。
    • 阶段3 (出设计) 之中: 对产出的交互原型 (Interactive Prototype)进行可用性测试 (Usability Testing)。找5-8个目标用户,观察他们如何操作你的原型,看他们是否能顺利完成核心任务,是否存在困惑。这个成本极低,但能避免大量后续的开发返工。
  • 比喻:可用性测试就像在房子刚搭好框架、墙壁都还是木板的时候,就请未来的住户进来走一圈,模拟从客厅到卧室的路线,看看动线是否合理,门的位置是否别扭。这样在“砌砖”前就能发现设计缺陷,而不是等“精装修”完了再敲墙。

3. 技术债务管理 (Technical Debt Management)

这是一个在您**阶段4 (开干)阶段7 (试运行)**中非常关键,却常常被忽视的隐性流程。

  • 核心理念:在开发过程中,为了追求速度,有时会采用一些非最优的、临时的技术方案(“走捷径”)。这些“捷径”就像欠下的技术债,短期内能快速上线,但未来会导致系统维护困难、扩展性差、Bug频出。
  • 如何管理
    • 识别与标记: 团队要有意识地识别和记录技术债。
    • 定期偿还: 在每个Sprint或每个版本迭代中,规划出一部分时间来进行代码重构 (Refactoring),即在不改变外部功能的情况下,优化内部代码结构,偿还技术债。
  • 比喻:技术债务就像为了赶工期,你用了质量稍差但能用的水管接头,或者电线排布得比较杂乱。房子能用,但漏水和短路的风险更高。定期“偿还债务”就是安排专门的工时,系统性地更换那些劣质接头,重新规整电线,消除隐患,保证房子的长久稳固。

4. 可观测性体系建设 (Building an Observability System)

这是您**阶段7 (试运行)**中“数据分析”和“修复Bug”的进阶版和技术保障。

  • 核心理念:不仅要“监控”到系统出问题了(比如服务器CPU 100%),更要具备“可观测性”,能够快速、深入地探究“为什么出问题”。
  • 三大支柱
    • 日志 (Logging): 记录离散的、具体的事件。好比工地的施工日志,记录了“几点几分,哪个工人,在哪面墙上,刷了什么漆”。
    • 指标 (Metrics): 可聚合的、周期性的数值。好比房子里的水电总表,告诉你每小时的用电量、用水量。
    • 追踪 (Tracing): 记录一个请求在整个系统中的完整调用链。好比给一滴水装上GPS,看它从自来水厂出发,经过了哪些主管道、分管道,最终从哪个水龙头流出。
  • 比喻:传统的监控告诉你“地下室漏水了”(警报)。而可观测性则通过水管各处的压力指标、关键节点的日志和水的流动追踪,让你能立刻定位到是“三楼厕所的冷水管接头因老化破裂”,而不是两眼一抹黑地到处砸墙找漏点。
    •  App 开发流程地图(角色+阶段)如下:

      阶段关键角色核心内容
      1. 需求调研 客户经理 / 产品经理 确定做什么,给谁用,痛点在哪
      2. 市场分析 产品经理 竞品调研、定位差异化
      3. 原型设计 产品经理 画原型、设计用户流程、确认MVP
      4. 视觉设计 UI/UX设计师 完成界面、交互、用户体验设计
      5. 技术架构 架构师 决定技术蓝图、架构风格、选型
      6. 项目管理 项目经理 制定计划、协调人力、管理风险
      7. 开发实现 前后端工程师 编码实现、前后联调、接口设计
      8. 数据库设计 数据库管理员 建表、建索引、数据模型设计
      9. 自动化部署 DevOps工程师 配置CI/CD、测试环境、发布流程
      10. 测试验证 测试工程师 功能、性能、安全、兼容性测试
      11. 法律合规 法务/合规专员 隐私协议、版权、合规审核
      12. 上线部署 运维工程师 部署服务器、申请域名/备案
      13. 上架发布 运维 / 产品 提交应用商店、审核资料准备
      14. 用户运营 运营 / 市场 反馈收集、数据分析、增长策略
      15. 安全保障 安全工程师 加密、权限控制、防攻击
      16. 持续更新 开发+产品 版本迭代、功能优化、bug修复

posted on 2025-05-12 07:32  GKLBB  阅读(139)  评论(0)    收藏  举报