汽车行业软件开发可否借鉴软件行业的开发模式?

本文来自微信公众号:汽车新技术与行业热点,欢迎关注。

汽车产业经历百年发展,已经走过了“机械定义汽车”、“电气定义汽车”、“电子定义汽车”现在到了“软件定义汽车”的发展阶段。丰田汽车成立软件子公司Woven,大众将成为一家软件驱动的公司,特斯拉软件人才密度是传统主机厂的4到10倍,上汽零束软件分公司成立,长城设立数字化中心等,这些行业的重大调整和布局表明“软件定义汽车”已成为行业的战略共识,软件将是未来汽车智能化的基础和竞争力的核心。软件定义的汽车将通过OTA的方式升级汽车软件,可以持续为用户提供新功能,持续改善驾乘体验。为了及时响应用户对新功能以及功能修复的需求,汽车行业需要为此建立合适的软件开发模式。IT软件行业已经相对成熟,因此,本文介绍软件行业的三种软件开发模式(瀑布型开发、敏捷开发和DevOps),希望通过对软件行业的软件开发模式和发展规律的介绍,能为汽车行业建立软件开发模式提供参考。

瀑布型开发模式

瀑布型开发,也就是传统开发模式。瀑布型模型式是最典型的预见性的方法,严格遵循预先计划的需求、分析、设计、编码、测试的步骤顺序进行。例如需求规格,设计文档,测试计划和代码审阅等等。

瀑布型开发模式具有以下不足:

1). 需求分析占比很重,对客户想要的产品进行详细分析,明确指定产品结果。但是由于需求人员的考虑的方面可能有疏漏,客户的需求的变化,行情的变化等等因素存在,需求文档会不断变更,开发人员产生抵触心理。

2). 开发人员按照需求文档严格开发,限制思维,参与不到需求的设计。

3). 需求与客户沟通存在障碍,可能导致最终产物不是客户想要的。重新开始项目,很费事费力。

所谓的瀑布,很形象的表达了这一开发模式,就是留下去了,就回不去了。当然程序开发的时候可以重新开始,但是就相当于之前作废,重立项目。但是市场在变,科技在变,一切都在不断改变,拥抱变化才能更快的适应环境的变化。因此瀑布型开发模式逐渐被敏捷开发所取代。

敏捷开发模式

敏捷开发(Agile Development)是一种以人为核心、迭代、循序渐进的开发方法。它不是一门技术,它是一种开发方法,也就是一种软件开发的流程,它会指导我们用规定的环节去一步一步完成项目的开发;而这种开发方式的主要驱动核心是人;它采用的是迭代式开发。

敏捷开发只写有必要的文档,或尽量少写文档,敏捷开发注重的是人与人之间,面对面的交流,所以它强调以人为核心。而瀑布开发模型,它是以文档为驱动的。因为在瀑布型的整个开发过程中,要写大量的文档,把需求文档写出来后,开发人员都是根据文档进行开发的,一切以文档为依据。

迭代是指把一个复杂且开发周期很长的开发任务,分解为很多小周期可完成的任务,这样的一个周期就是一次迭代的过程;同时每一次迭代都可以生产或开发出一个可以交付的软件产品。

Scrum是一种流行的敏捷开发流程构架,也可以说是一种套路。Scrum框架中包含三个角色,三个工件,四个会议,听起来很复杂,其目的是为了有效地完成每一次迭代周期的工作。

Scrum工作流程如下图所示。在学习Scrum工作流程之前,我们先要了解几个基本术语:

Sprint:冲刺周期,通俗的讲就是实现一个“小目标”的周期。一般需要 2-6 周时间。

User Story:用户的外在业务需求。拿银行系统来举例的话,一个 Story 可以是用户的存款行为,或者是查询余额等等。也就是所谓的小目标本身。

Task:由 User Story 拆分成的具体开发任务。

Backlog:需求列表,可以看成是小目标的清单。分为 Sprint Backlog 和 Product Backlog。

Daily meeting:每天的站会,用于监控项目进度。有些公司直接称其为 Scrum。

Sprint Reviewmeeting: 冲刺评审会议,让团队成员们演示成果。

Sprint burn down:冲刺燃尽图,说白了就是记录当前周期的需求完成情况。

Release:开发周期完成,项目发布新的可用版本。

如上图所示,在项目启动之前,会由团队的产品负责人(Product owner)按照需求优先级来明确出一份 Product Backlog,为项目做出整体排期。

随后在每一个小的迭代周期里,团队会根据计划(Sprint Plan Meeting)确定本周期的 Sprint Backlog,再细化成一个个 Task,分配给团队成员,进行具体开发工作。每一天,团队成员都会进行 Daily meeting,根据情况更新自己的 Task 状态,整个团队更新 Sprint burn down chart。

当这一周期的Sprint backlog 全部完成,团队会进行 Spring review meeting,也就是评审会议。一切顺利的话,会发布出这一版本的 Release,并且进行 Sprint 回顾会议(Sprint Retrospective Meeting),也称为总结会议,以轮流发言方式进行,每个人都要发言,总结并讨论改进的地方,放入下一轮Sprint的产品需求中。

从上述工作流程可以看出,敏捷开发并没有将运维也纳入进来,有可能需求,开发,测试很快做出了很多版本,但是没有部署,或者部署很慢。也拖延产品的进程。这就需要开发,测试,运维的相互沟通。为了加快这些环节的沟通问题,形成了devops开发模式。

DevOps开发模式

DevOps是Development与Operations的缩写。DevOps就是要打破开发与运维之间的隔阂,提高了各个团队的协作,通过自动化流程来使得软件构建、测试、发布更加快捷、频繁和可靠。

DevOps是为了填补开发端和运维端之间的信息鸿沟,改善团队之间的协作关系。不过需要澄清的一点是,从开发到运维,中间还有测试环节。DevOps其实包含了三个部分:开发、测试和运维。

DevOps希望做到的是软件产品交付过程中IT工具链的打通,使得各个团队减少时间损耗,更加高效地协同工作。专家们总结出了下面这个DevOps能力图,良好的闭环可以大大增加整体的产出。

下图是以Jira为源的DevOps工具链。整个DevOps流程包括:需求管理、持续集成&测试、配置&部署、监控&运营,各个环节的任务均有相应的工具来完成。

下面给出了一个通用的逻辑流程,在这个流程中所有内容都将自动进行无缝交付。但是此流程也会因不同组织的不同需求而导致一些差异。

开发人员开发代码,源代码由Git等版本控制系统工具管理。

开发人员将此代码提交到Git,并且对代码所做的任何更改都将提交到此代码仓库。

Jenkins通过Git插件从仓库中提取此代码,并使用Ant或Mave 等工具构建它。

配置管理工具(如Puppet)部署和提供测试环境,然后Jenkins在使用Selenium等工具进行测试的测试环境上发布此代码。

代码测试结束后,Jenkins就会将其发送到生产服务器上进行部署(甚至生产服务器也由 Puppet 等工具进行配置和维护)。

部署后,Nagios等工具会进行持续监控。

Docker容器提供测试环境来测试构建功能。

DevOps和敏捷开发有以下区别:

总结

市场对软件行业的开发需求,促使其软件开发模式不断演进,从瀑布型开发模型发展到目前流行的DevOps开发模式,其核心在于通过自动化工具提高软件团队的沟通效率,改善软件功能可持续部署和交付的能力。软件行业开发模式的演变必定会给汽车行业制定软件开发模式带来启发。

参考文献来源:

1. 一篇文全面了解DevOps:从概念、关键问题、兴起到实现需求,作者:木环

2. devops理念,作者:超级塞亚人之神

3. 2019 DevOps必备面试题——DevOps 理念篇,作者:superXX07

本文来自微信公众号:汽车新技术与行业热点,欢迎关注。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,524评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,869评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,813评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,210评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,085评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,117评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,533评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,219评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,487评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,582评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,362评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,218评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,589评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,899评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,176评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,503评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,707评论 2 335