软件工程之美
宝玉
Groupon 资深工程师,微软最有价值专家
43658 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 55 讲
软件工程之美
15
15
1.0x
00:00/00:00
登录|注册

43 | 以VS Code为例,看大型开源项目是如何应用软件工程的?

你好,我是宝玉。如果你所在的团队在日常的软件项目开发中,能科学地应用软件工程的知识,让你的项目能持续取得进展,最终交付的产品也有很好的质量,那么是一件非常幸运的事情。
然而现实中,很多人并没有机会去参与或观察一个好的项目是什么样子的,也没机会去分析一个好的项目是如何科学应用软件工程的。
好在现在有很多优秀的开源项目,不仅代码是公开的,它们整个项目的开发过程都是公开的。通过研究这些开源项目的开发,你能从中学习到一个优秀项目对软件工程的应用,加深你对软件工程知识的理解,进而应用到你自己的项目实践中。
我想你对 VS Code 应该不陌生,它是一个非常优秀的编辑器,很多程序员包括我非常喜欢它。VS Code 也是一个大型的开源项目,整个开发过程非常透明,所以今天我将带你一起看一下 VS Code 是如何应用软件工程的,为什么它能构建出这么高质量的软件。

如何从 VS Code 的开发中学习软件工程?

也许你会很好奇,平时也去看过 VS Code 的网站,但并没有提到软件工程的呀?
是的,VS Code 的网站并没有特别突出这些信息,但是如果你有心,可以找到很多有价值的信息,它的整个开发过程都是公开透明的。
比如通过它项目的WIKI博客栏目,可以看到项目的计划、项目开发流程、测试流程、发布流程等信息。通过它的GitHub网站,你可以看到团队是如何基于分支开发,开发完成后提交 Pull Request,团队成员如何对代码进行审核,合并代码后如何通过持续集成运行自动化测试。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《软件工程之美》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(11)

  • 最新
  • 精选
  • 胡浩🐸
    赞,有好多值的学习和借鉴的地方,打开 VS Code 经常看到更新提示,感觉被后就有一个非常高效的敏捷团队,今天终于学习到了。 VS Code 每 4 周发布一个迭代节奏非常棒,每周做的事情都很科学合理,而且把 Github Issue 的功能用的淋漓尽致,打的各种 Label 很值的学习。

    作者回复: 谢谢蛙总指教🤝

    11
  • 一文字
    棒,感觉像打开了新世界的大门,赶紧把这种学习方法消化下🧘‍♂️

    作者回复: 👍以后看到好的软件项目,尝试去观察它们的软件工程应用,学习借鉴:)

    8
  • 露娜
    老师:现在遇到一个特别尴尬的事情,每次发测试前,都会预留时间每个人自测自己的代码,但是总有些人根本就不测,直接扔给测试。测试一测一大堆问题。请问这种情况有么有好的方法可以避免?

    作者回复: 这个问题我也遇到过,完全靠管理手段靠流程规范也难以完全杜绝。我觉得首先你要甄别一下,那些老是不自动测试的开发人员,他们只是因为习惯不好?还是就是混日子的?对于后者,还是早点清理出去更好,对于前者,可以想办法去帮助改进。 我现在用的开发流程(参考GitHub Flow https://help.github.com/cn/github/collaborating-with-issues-and-pull-requests/github-flow)还算比较有效,可以酌情参考: 1. 每个任务都要单独分支(branch)单独PR(Pull Request),这样以PR为单位,可以更好的跟踪评定一个开发任务所有相关的代码。否则你所有代码都直接提交到master就很难跟踪。 2. 引入代码评审(Code Review),PR要求有其他人批准才能合并到master,通过评审,让同组成员相互监督提醒。 3. 对于新功能或者Bug,可以要求在PR中提供功能的演示,比如说屏幕截图或者屏幕录屏,通过这样的方式来保证自己测试了,也有利于代码评审的人检查是否完成。 4. 要求有一定比例的自动化测试代码,自动化测试代码也是一种很好的自我测试方法,更可以有效保证质量。 5. 如果CI(持续集成)工具能帮助你自动运行自动化测试,这样测试结果就一目了然。如果新的PR导致了自动化测试失败,说明代码是有问题的,测试也是不充分的。那么就要先修复自动化测试的错误。 以上这个流程的执行,一方面要有开发工具的支持:Git、CI、自动化测试框架,这些网上都有现成解决方案,搭建起来应该不复杂。 另一方面团队里面要有认真负责技术好的成员帮助Review代码,如果没有合适的你就需要自己多费心了。

    5
  • Y024
    怎么学习开源项目?除了眼前的代码,还有诗和远方……

    作者回复: 有关如何学习开源项目的软件工程,我已经在这篇文章中介绍了。 如果你是想学习代码,我建议你可以把代码下载到本地,尝试着运行起来,然后去看看代码怎么运行的,再去尝试这修改代码,增加功能,去了解它的结构是什么样的,去思考它的设计有什么优缺点?哪些是可以学习借鉴的?

    5
  • yellowcloud
    宝玉老师,我们目前项目使用的管理工具是TFS,它好像也自带CI和CD功能,我想请问一下,它和文中介绍的Azure DevOps,那个好用呢?

    作者回复: Azure DevOps应该是TFS的升级版,如果在线托管的话,你应该考虑用Azure DevOps。

    4
  • 人人搞科研
    看了vscode感觉项目管理也不复杂,关键是一群靠谱的人有动力有方法有共识,项目管理失败基本都是人的因素,说难就难说不难也不难。

    作者回复: 是的,项目管理本身并不复杂,还是离不开人的实施。

    3
  • 小谢同学
    感觉vscode的日常开发管理工作非常饱和,这里有个问题想请教,以vscode为例,4周的一个迭代周期如何确保效率,特别实在第一周里,包含了历史遗留问题的处理,还要做本次迭代的规划安排,更何况开源项目如果不是全职铺在上面怎么办?如果在某一个迭代周期内因为不可抗力因素导致延期了怎么办?

    作者回复: VSCode的开发团队是全职的,而且整体水平相当高。 一个迭代周期内,并非所有功能做完才能发布,而是功能开发完成才合并到主干,如果一个迭代内没完成,那么会放到下一个迭代。 举个简单例子,一个迭代周期在计划的时候,打算增加2个新功能,修复3个bug。结果在第三周结束,发现只完成了一个功能,修复了3个bug,那么另一个功能就放到下一个迭代继续开发,第四周对已经完成的1个功能和修复的3个bug验证就好了。

    3
  • freda
    你好,我想请教下,我领导想用禅道软件做项目管理,可是我觉得禅道更适合做软件开发,想听听你的看法

    作者回复: 像VSCode,基于Github的Issues,都可以做到项目管理,用禅道或者同类型的Ticket跟踪工具更没问题的。 我在《14 | 项目管理工具:一切管理问题,都应思考能否通过工具解决》里面对项目管理工具也有一些介绍,可以作为参考。 项目管理工具,关键还是能对任务进行分配和进度跟踪,通过项目管理工具,项目成员能即时知道自己应该要做的任务,项目管理者能即时知道项目进展情况。

    2
    1
  • 远征
    师傅领进门:)不仅知道如何入手开源项目,而且在项目管理上也有新借鉴!谢谢老师

    作者回复: 谢谢支持! 有具体问题也欢迎留言:)

    1
  • ifelse
    当你日常在看一个开源项目的时候,不仅可以去看它的代码,还可以去观察它是怎么应用软件工程的,不仅可以加深你对软件工程知识的理解,还能从中学习到好的实践。--经记下来
收起评论
显示
设置
留言
11
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部