Go 进阶 · 分布式爬虫实战
郑建勋
Go 语言技术专家,《Go 语言底层原理剖析》作者
15839 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 58 讲
Go 进阶 · 分布式爬虫实战
15
15
1.0x
00:00/00:00
登录|注册

04|敏捷之道:大型Go项目的开发流程是怎样的?

你好,我是郑建勋。
前面,我们介绍了和 Go 语言相关的基础知识与学习方法,但仅仅掌握高级语言的语法与原理还不足以让我们完成一个真实的项目。
要想完成一个项目,需要遵循一些基本的开发流程。一个优秀的开发流程可以帮助我们识别和降低开发过程中可能面临的风险,助推项目的开发进度。
但是高效研发流程的最佳实践是怎样的?针对具体的项目,又应该选择怎样的研发流程?接下来两节课,我将为你展示大型互联网产品的整个开发流程,帮助你理解复杂流程背后的设计、技术和工具,方便你搭建起适合自己团队的开发流程。

瀑布模式 vs 敏捷模式

谈到项目的开发流程,有过软件开发经验的同学脑海中大致会出现市场调研、需求分析、产品设计、研发实现、集成与测试、项目交付与维护这些阶段。传统的研发流程确实是这样连续的过程,只有完成前一个阶段的验收审核才能够开始下一个阶段,这种开发模式也被称为瀑布模式(Waterfall Model)。瀑布模式借鉴了传统工业生产的预设性方法,它也是大多数软件开发的最初标准。
瀑布模式
瀑布模式比较适用于下面的场景。
需求在规划和设计阶段就已经确定了,而且在项目开发周期内,需求没有或极少有变化。例如航空航天或者金融核心系统等。
团队对这一技术领域很熟悉,风险低、规模小。
合同式的合作方式。项目的开发严格依据说明,客户需求明确且不参与软件实现过程。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文介绍了软件开发流程中的需求阶段和设计阶段。在需求阶段,商业需求、功能需求和非功能需求的重要性被强调,并介绍了敏捷开发中的最小可行性产品概念。在设计阶段,涉及到UI设计、交互设计、系统架构设计、研发工程师和测试工程师的工作内容,以及项目排期和项目管理工具的应用。总结指出了良好的研发流程能够高效管理项目资源、降低风险、加速项目进度,并强调了敏捷开发的灵活性和对变化的包容。文章还提出了两个思考题,引发读者思考和讨论。整体而言,本文内容涵盖了软件开发流程的关键阶段和最佳实践,适合读者快速了解软件开发流程的概览。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Go 进阶 · 分布式爬虫实战》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(9)

  • 最新
  • 精选
  • 运维夜谈
    思考题: 1、QA 测试应该是必须存在的一个环节,虽然开发者是应该做好测试,但是开发者也只能做好自己负责模块的测试,特别是在微服务环境下,每个开发者只关注自己负责的服务,对于系统整体的集成测试、性能测试,还是需要专门的 QA 来完成。另一方面,QA 其实也可以对开发者所交付的东西的质量进行监督,可以发现开发者疏忽的问题。 2、Scrum 框架的缺点:感觉 Scrum 框架更讲究迅速,看起来更适合小型、要求先快速交付一版的新项目,很多环节由文档转变为面对面沟通,对于长期迭代的项目来说,可能会导致一些重要材料的丢失,如果项目人员流动大,可能会对后续的长期维护埋坑。 不知道是否理解正确。 另外也有一个问题想请教老师:以上内容讲的是一个软件开发的生命周期,即便是在网上查找资料,也都是类似的内容,但是有 2 个疑惑: 1、对于长期维护和迭代的项目来说,可能一个项目做了好几年了,甚至运行了十年了,那么每一个功能需求都需要走全部流程吗,包括需求分析、设计方案的制定等等? 2、对于一个运行很长时间的复杂项目来说,在设计方案的时候怎么去避免冗余、重复等问题,举个例子,假设项目中某个子模块存储了用户信息数据,现在来一个新需求也要这些数据,或者说,一个功能里写了一个工具包,另一个新需求也需要这方面的功能,开发者怎么在设计方案的时候就知道原本项目里已有这样的功能,从而直接使用就好,不用重复开发?当一个项目很大时,可能架构师也未必能对整个项目的方方面面都了如指掌,即便可以耐心地对方案进行细抠,但是这可能需要花费较多时间,又会影响需求完成的进展。 不知道对于上面的问题,老师有没有什么经验可以分享下,谢谢老师~

    作者回复: 第一个问题要根据实际情况来看,就算是很老的项目,但是人员却是不断在流动的,如果不留下资料,后面的人两眼一抹黑。另外越老的项目越容易犯错,因为如果前期没有经过设计和遵守规范,随着业务越来越复杂,牵一发就都能全身了,所以设计方案并让团队成员review是有必要的,至于需求分析更有必要了,通常是产品经理给出的,决定了为什么要做这个项目以及要做什么事情。 第2个问题,主要还是项目的组织不合理,这是实践中常常遇到的问题,功能都混杂在一起了,比如一个用户的鉴权功能不能每一个功能模块都写一份自己的吧。合理的抽象,把对应的功能模块能够清晰的抽离出来,还有基础的工具库,通用的能力单独出来,我在后面设计项目架构的时候还会详细说。

    2022-10-18归属地:北京
    3
    4
  • thinkings
    请问老师课程中的课件,是否可以提供下载

    作者回复: 你指的课件是什么呢,PPT?

    2022-10-19归属地:北京
    2
    1
  • 抱紧我的小鲤鱼
    qa测试是必须的,虽然开发对项目很熟,但会思维固化,不容易发现逻辑之外的错误,当局者迷 旁观者清。以前公司试图让开发做交叉测试,去掉qa,但实际效果可以说几乎没有
    2022-10-18归属地:江苏
    9
  • Realm
    1 QA测试很有必要,不能保证研发对每个功能都做了充分的测试,研发有时候对用户输入、边界条件考虑不妥,这些可能在QA阶段可以测试出来; 2 敏捷开发对需求固定,变更较小的项目必要性不大,会觉得“形式大于内容”;
    2022-10-18归属地:浙江
    3
  • 范飞扬
    讲的很好,借用郑晔老师的话,“拓宽上下文”
    2022-10-30归属地:上海
    2
  • Scrum 最大的问题就是会议太多了,最后会流于形式。 要根据实际的情况进行改进
    2022-10-19归属地:广东
    2
  • 会飞的大象
    关于QA测试是否需要,个人觉得视情况而定,如果开发者有足够高的开发质量,完善的单元测试和自动化检查手段,不一定需要单独的QA测试。但是从个人的工作经验来看,大多数的公司并不满足该前提要求,所以QA测试的存在还是必要的
    2022-10-23归属地:上海
    1
  • 大毛
    QA是需要的,开发人员更多着眼于细节,很容易着相,陷入只关注技术问题的陷阱。 个人认为敏捷和瀑布最大的区别就是需求是否确定,敏捷可以更快地产出产品,进行试错,调整自己的需求,不断适应。如果一个系统的需求是确定的,总有牛逼人可以将细节分析出来,按部就班地开发即可。 敏捷开发一个周期比较小,如果某个部门的某个环节出了问题,很可能会影响到其他部门的所有人。而瀑布的工作时间区间很大,某个方面出了问题可以自己尝试调整,而不至于阻塞太多人。
    2024-01-13归属地:新疆
  • M
    2022-10-18归属地:上海
收起评论
显示
设置
留言
9
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部