我国最大的IT项目管理门户网站,国内IT项目管理培训与咨询服务提供商

当前位置:首页 > 精益开发 > 正文

“控本增效”之精益软件开发

2019-12-25 来源:上海分中心技术论坛
如何提升软件开发过程的效率、效果?
带着这个问题,笔者阅读了获得Jolt软件开发生产力大奖的著作《精益软件开发》以及《精益软件开发管理之道》,书中将精益的理念融入到软件开发中,形成诸如“消除浪费、构建品质、创造知识、延迟承诺、快速交付、尊重人、整体优化”等七条原则,并深刻阐述了敏捷和精益取得成功的原因,包括系统思考、技术杰出、可靠交付、不断改进、卓越的人以及一致的领导等,从时间、空间、行业、文化背景等角度进行了全局性阐述。
为了避免空洞、宽泛的谈论如何利用精益达到增效的目标,本文将基于精益理念,以技术作为切入点,探讨如何从技术角度提升软件开发过程的效率及效果。无论你当前采用的是瀑布还是敏捷,都将适用。
1、基本复杂性
Fred Brooks在1986年发表的地标性文章《No Silver Bullet》中提到“软件的复杂性是一项基本属性,不是偶然属性。开发软件产品的经典问题来自于这一基本复杂性,以及复杂性随规模增长而出现的非线性增长”。目前,业界均已承认软件的非线性增长的复杂性,“分而治之”是共识的解决方案,如何确定最好的划分标准并不简单。但我们回归到软件设计本身,从架构角度考虑是否可以降低复杂性?软件工程学中早已给出答案,“高内聚、低耦合”,即尽量在软件设计之初就尽量保证架构的低依赖,从根源降低后期的维护、管理成本,这在瀑布开发模式中有效,在敏捷开发中更是如此。敏捷中我们鼓励变更、积极应对变化,但对于拥有紧密耦合、高度依赖的系统来说,变更以及迭代的不断变化将存在很大风险,同时成本高昂。
所以,要使开发过程有效,且降低成本,首要考虑架构设计是否具有低依赖性。
2、构建高品质
业界普遍认可“通过尽早发现错误和立即改正错误可以有效降低成本”。即在缺陷引入时就能够及时发现。
目前软件中心普遍采用的瀑布开发方式中通过在需求分析、总体设计、详细设计、程序实现等阶段增加走查、评审,确保阶段输出结果正确,以降低缺陷延迟到测试阶段发现的高额修复成本。在测试环节,通过多种技术手段尽量识别缺陷。但纵观开发模式以及中心的基线数据,不难发现我们存在如下浪费:
1. 组织级“工作量占比-项目工作量构成”基线中显示,目前单元测试到功能测试工作量占比66.33%,“各工程阶段发现问题”基线中显示,单元测试到功能测试识别问题占比43.44%。即在项目的中后期花费项目三分之一的时间识别出项目43%的问题,这与我们 “尽早发现缺陷降低修复成本”的目标并不一致。
2. 瀑布的方式对于功能项来说是批量的分析、批量的设计、批量的开发与测试,大批量工作会在每个过程步骤上产生排队现象,所以缺陷不会在进入时即被检出,而必须等到批处理的检查、测试时才能发现。
3. 划分“设计”与“实现”阶段,无法对设计、实现是否合理、符合用户需求给予及时的反馈。同时,我们也不可否认,设计与实现是无法清晰的分离的。
我们可以参考精益原则,消除浪费、内建质量来构建高品质,进而降低成本。在敏捷开发中较多的成熟团队已采用相关的方法,如通过采用小批量、及时反馈验证降低延迟反馈成本,通过测试驱动开发和持续集成来构建高品质。这些良好的实践在瀑布开发模式也可以采用:
1. 以小步骤的方式开展工作,降低批量,减少等待;
2. 尽量采用有规律的节奏实施快速验证、反复进行;
3. 测试驱动开发:先编写必须保持的条件,然后再编码,以保证通过这些条件,将以往的先编码再测试的“缺陷—注入”过程改进成测试驱动编码的“错误—证明”过程,确保缺陷引入及被发现。
4. 分级分层的自动化测试,即保证测试覆盖,同时提升效率,降低人工成本。
5. 持续集成,并保持对识别的缺陷及时处理。
6. 编写逻辑简单、清晰的代码,提升可读性,有效降低维护成本。
总之,无论瀑布还是敏捷产品,在软件开发过程中应用如上敏捷实践,构建高品质产品是降低质量成本、维护成本的最有效方法。
3、演进式开发
在敏捷开发中演化形成“演进式开发”的概念,它的核心是一些列短期发现的循环,每个循环通过客户研究、协作建模、快速实验等方式不断发现开发产品以及团队的弱点,以便改进系统,提升效率、效果。
这里提到的客户研究不仅限于收集需求,更多采用走进用户现场,通过访谈、观察等方式进行客户研究、挖掘;协作建模通过流程图、图表、图像等简洁的方式促进团队内、团队与客户的交流;快速实验通过迭代的方式先开发高风险、高价值的特征,在这个过程中了解团队技能及产能,同时得到客户反馈。
这一过程循环式、演进式进行开发,并辅以上文提到的低依赖性架构和测试技术,可以有效适应客户、市场不断变化的需求,降低一次性、大规模实施带来的风险,提升效率以及客户满意度。
除以上几点外,通过培训、实践等方式提升每位开发者的专业技术能力,以工匠之心对待软件开发中的每一个过程,也是提升软件质量、降低成本的必要条件。
4、小结
精益软件开发是一个多维度的系统理念,本文仅从其中的技术角度进行剖析如何利用精益理念实现“控本增效”。首先,在架构层面,实现低依赖性;其次在实现层面,有效应用测试驱动开发和持续集成等敏捷开发实践,构建质量;并通过演进式的开发来提供改进循环,同时注重培养人员的专业技术提升。基于以上几点,以技术作为降低成本的切入,提升开发效率,提高客户满意度。
撰稿:上海分中心工程管理部质量管理团队 张欣璐  编辑:孙菲菲 高允
分享到:

免责声明:
  1、IT项目管理界发布的所有资讯与文章是出于为业界传递更多信息之目的,并不意味着赞同其观点或证实其描述。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请浏览者仅作参考,并请自行核实相关内容。
  2、本站部分内容转载于其他网站和媒体,版权归原作者或原发布媒体所有。如文章涉及版权等问题,请联系本站,我们将在两个工作日内进行删除或修改处理。敬请谅解!

延伸阅读:

more

会议活动

more

公开课

more

PMO

Copyright © 2021 IT项目管理界 版权所有 京ICP备17062359号-4 如转载本站文章,请注明原作者和原发布媒体

本着互联网分享精神,本站部分内容转载于其他网站和媒体,如稿件涉及版权等问题,请联系本站进行删除或修改处理

客服电话:010-89506650 89504891 非工作时间可联系:18701278071(微信) QQ在线:511524637

新闻与原创文章投稿:tougao#cpmta.com 客服邮箱:info#cpmta.com(请将#换成@)

IT项目管理界——我国最大的IT项目管理门户网站,隶属卓橡公司

IT项目管理界官方微信

IT项目管理界官方微信

PMO大会官方微信

PMO大会官方微信