其他分享
首页 > 其他分享> > 软件工程:实际应用

软件工程:实际应用

作者:互联网

小团队如何应用软件工程?

成本敏感、人少活多、缺少流程规范,这几个是小团队在项目开发中存在的主要问题。那么在小团队应用软件工程的时候,我们就需要去解决好这些问题。

所以接下来,我就从团队建设、流程建设这两个维度来谈谈如何应用软件工程

团队建设

在实践的时候,最先应该考虑的却是团队建设,因为软件工程上讲的所有的过程、方法和工具,最终还是落地在人身上,需要人去基于开发过程去制定流程遵守流程;需要人去应用软件工程中总结好的方法;需要人去使用工具。如果团队对软件工程缺少认识,那再好的方法和工具也无法落地。

所以要实施好软件工程,也要同步做好团队建设团队建设,绕不开几件事:招人、培养人、管理人和开除人。

流程建设

对于小团队,一开始也不宜有太多的流程规范,不然,如果流程不合适反而会成为一种束缚,最好只是先设置最基本的流程规范,然后在实践过程中针对团队特点和业务特点去逐步完善。

那么哪些流程是软件开发中最基本的流程规范呢?

(1)选择适合你的软件开发模型

(2) 构建基于源代码管理工具的开发流程
(3)建立外部提交需求和任务的流程

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

VS Code 的开发迭代过程

如果你是 VS Code 的用户,你会发现 VS Code 每个月都会有新版本的更新,每次更新都会有很多新酷的功能。这是因为 VS Code 每个版本的开发周期是 4 周,每四周都会发布一个新的版本。

从开发模式来说,VS Code 采用的是快速迭代的开发模式,每四周一个迭代。那么这四周的迭代的工作都是如何进行的呢?

(1)第一周

(2)第二周和第三周

(3) 第四周

(4)下一个迭代第一周

VS Code 团队的角色和分工

VS Code 的开发团队现在大约 20 人左右,一半在苏黎世,一半在西雅图。整个团队基本上都是开发人员,结构很扁平。

从分工上来说,在开发新功能和修复bug的时候,会有一些侧重,比如有人侧重做git相关的功能,有人侧重做编辑器部分功能。这样有侧重的分工对于提升开发效率是有好处的。

从角色上来说,除了开发,还有主要有两种角色:Inbox Tracker和Endgame Master。这两种角色在每个迭代的时候是轮值的,每个人都有机会去担任这两个角色。

(1)Inbox Tracker

(2)Endgame Master

VS Code 的各个阶段

接下来,我们来按照整个开发生命周期,从需求收集和版本计划、设计开发、测试到发布,来观察 VS Code 各个阶段是如何运作的。

VS Code 的需求收集和版本计划

VS Code 每次版本发布,都能为我们带来很多新酷的功能体验,那么这些功能需求是怎么产生的呢?又是怎么加入到一个个版本中的呢?

那么,有了功能需求和 Bug 的 Issue,也有了迭代的计划,怎么将 Issue 和迭代关联起来
呢?

GitHub 的 Issue 管理有一个 Milestone 的功能,VS Code 有四个主要的 Milestone。

VS Code 的设计和开发

VS Code 的架构设计现在基本上已经定型,你在它的 WIKI 和博客上还能看到很多 VS Code 架构和技术实现的分享。

VS Code 的测试

迭代的最后一周是 End game,这一周就是专门用来测试的,并且有轮值的Endgame Master 负责整个测试过程的组织。

如果你的团队也没有专职测试,可以学习 VS Code 这样的做法:留出专门的测试阶段,事先制定出详细的测试计划,把所有要测试的项都通过测试跟踪工具跟踪起来,开发人员按照测试计划逐一测试。

VS Code 的发布流程

VS Code 使用的工具

VS Code 的源代码管理工具就是基于 GitHub,整个开发流程也完全是基于 GitHub 来进行的。

它的任务跟踪系统是用的 GitHub 的 Issue 系统,用来收集需求、跟踪 Bug。通过标记不同的 Label 来区分Issue 的类型和状态,比如 bug 表示 Bug,feature-request 表示功能请求,debt 表示技术债务。通过 Issue 的 Milestone 来标注版本。

VS Code 的持续集成工具最早用的是Travis CI和AppVeyor,最近换成了微软的Azure Pipelines

VS Code 的文档一部分是用的 GitHub 的 WIKI 系统,一部分是它网站的博客系统。WIKI主要是日常项目开发、维护的操作说明,博客上更多的是一些技术分享。

另外 VS Code 团队还自己开发了一些小工具,比如说帮助对 Issue 进行自动处理回复的GitHub 机器人 VSCodeBot。

总结

VS Code 使用的是快速迭代的开发模式,每四周一个迭代:

在团队分工上,VS Code 的团队很扁平,没有专职测试,通过轮值的 Inbox Tracker 和Endgame Master 来帮助团队处理日常 Issue 和推动测试和发布工作的进行。

在工具的使用方面,VS Code 使用的是 GitHub 托管代码,基于 GitHub Flow 的开发流程使用的。还有使用 Azure DevOps 作为它的持续集成系统。

为什么程序员的业余项目大多都死了

失败原因

怎样提升业余项目成功的概率?

为什么程序员应该做一些业余项目

强烈的建议你多尝试做一做业余项目。因为做业余项目,即使项目失败了,一样可以让你收获很多:

失败的软件项目

什么样的软件项目算是失败的项目?

项目管理协会(PMI)认为成功的项目必须满足六个条件:

  1. 按时交付。
  2. 成本在预算范围内。
  3. 能按照当初的设计正常运行。
  4. 有人使用。
  5. 满足项目最初的目标。
  6. 项目出资方对项目满意。

相应的,如果上面有一个或者多个条件没有满足,那么项目就有可能是失败的,比如说:

  1. 没能按时交付。
  2. 成本超出预算。
  3. Bug 太多,无法按照当初的设计正常运行。
  4. 产品没有得到市场认可,没有人使用。
  5. 产品偏移了最初的目标。
  6. 项目出资方不满意。

而那些特别失败的项目,往往是多个条件甚至所有条件都不能满足,并且时间、成本、交付结果跟最初目标都相差很大,无疑都造成了巨大的损失。

分析失败软件项目的原因

对于一个失败的软件项目案例,要去分析:外部环境、技术管理、项目管理和组织文化,这样才能帮助你找到项目失败的根源。

外部环境

技术管理

很多软件项目失败的原因是技术原因导致的。

项目管理

很多项目失败不是因为外部环境导致的,也不是技术原因,而是因为糟糕的项目管理。

在一个软件项目中,项目经理掌握了资源的分配,还要制定项目的计划,对任务进行分配,组织分工协作,管理风险,项目成员的日常沟通等等。而这些决策通常很难量化,需要基于当时的情况进行权衡,一旦这些决策出现大的失误,就会导致项目的失败。

组织文化

在软件项目中,一个开放、平等、注重沟通协作的团队或组织更容易及早发现和解决问题。

如果细化一下,还可以总结出一些具体的常见的失败原因:

软件工程是过程控制的方法论,而产品设计才是保证伟大的产品,两者应该结合

标签:Code,迭代,项目,VS,开发,软件工程,应用,团队,实际
来源: https://blog.csdn.net/zhizhengguan/article/details/122072534