需要咨询么?

如果您有任何问题,可以在下面提问或者输入您需要咨询的内容!

软件产品研发的技术债务如何度量?

软件产品在其持续多年的生命周期中持续演化,逐渐变得越来越复杂。软件产品的资产、负债及控制权也碎片化地以不同的形式分散到不同的地方,常规性的财务资产负债表报表也仅仅是对其资产负债结构的近似度量和描述,具体的精确程度也很难说清楚,然么软件产品研发的技术债务如何度量呢?

软件产品研发完整的生命周期与流程一般包括4大部分:(a).市场营销,(b).产品、项目与服务销售,(c).产品管理,(d)项目管理。每一部分都会对软件产品的资产负债表两边产生一定影响。

软件产品研发流程的4大部分还可以进一步细分为:

(a).市场营销:创意采集、管理与筛选,内部POC概念验证(技术、业务等),市场测试,面向客户与市场的POC概念验证,商业需要(需求)调查统计(网站引流、点击访问统计、问询记录统计、调查问卷、已投产项目服务跟踪与数据统计),选择用户及客户代表沟通,

(b).产品、项目与服务销售:销售提案与跟踪,合同生命周期跟踪,销售现金主要流入(产品许可证销售收入),销售现金附加流入(产品二次开发与项目定制销售收入),其它现金流入

(c).产品管理:产品管理-商业计划,产品管理-产品规划,产品管理-需要分析,产品管理-需求分析

(d).项目管理:项目管理-探索,项目管理-建设,项目管理-完善,项目管理-服务

软件产品的资产、负债及控制权也碎片化地以不同的形式分散到上述的不同地方,比如以文档、沟通、报表、数据、试验、资金流动等方式提现,这些碎片化的非结构性数据量大、语义可能还会矛盾、难以管理、度量,这些多维度的碎片资产负债表最终会被压缩到软件产品的一维线性源代码字符序列里或者二维源代码章节里。

这样,我们可以统一地使用软件产品的源代码来对软件产品的资产负债表做量化度量和管理。第一步首先需要用软件产品的源代码做量化度量,然后才有可能使用这些度量的结果对其进行管理。实际当中大多数管理者犯的错误是,当使用软件源代码来获得软件产品资产负债表度量数据的时候,以为只需要在软件源代码层面做操控修复,即可操控修复软件产品的资产负债表。软件产品的源代码只是上述高维度复杂事物在一维或者二维空间的投影,这个投影可以方便人类使用眼睛观察复杂高纬度事物,但人类无法通过改变投影的形状来改变实际事物的运转,如需影响改变实际的复杂高纬度事物,还需要实际去操作实际的事物而不是其投影。对于软件产品研发来说,就是需要首先超控变更市场营销、产品、项目与服务销售、产品管理与项目管理里面的每一个细分实践领域,然后最终反应到软件产品源代码的变更上。

理想中的软件产品研发的技术债务度量需要对上述高维度的全部资产负债表碎片做度量然后做合计处理,考虑到上述高纬度资产的复杂性、碎片性、稀疏性等多种特性,直接对其度量成本会很高。实际情况中,对其源代码进行度量的精确性基本已经足够应对大部分场景。

因此可以使用一套基于代码的统计和度量方法对软件产品的资产负债表进行度量和作为管理的初始输入。

比如:代码复杂度、团队人力资源对代码的熟悉掌握程度。

复杂的代码通常也对应着复杂得不可分解的需求与设计,一般也蕴含着大量的技术债务。

当有团队人力资源交接时,对应软件产品的功能模块的技术债务也会突然上升很多,人员对软件产品的熟悉程度通常也和软件产品相关功能的资产负债率成线性比率关系。比如在全部更换软件产品团队人力资源后,短期内新团队接受不下来的话,相当于技术债务接近软件产品的全部资产,软件产品线所有者基本失去了对该产品的控制权,可能连简单的变更操作都不能进行,几次新的项目迭代可能就会废掉整个产品线。

(0) Comments

回复留言

您的电子邮箱地址会被隐藏。*为必填字段 *

您可以使用这些HTML标签和属性 <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

验证码