从控制论说明软件开发的不可控性(2)

从控制论说明软件开发的不可控性(1)指出,由于在传统软件开发管理中,难以检测到有用的反馈信息,所以不形成控制闭环,从而得到软件开发不可控的结论。

首先,我们分析一下,为什么在传统软件开发管理中,难以检测到有用的反馈信息?

传统开发管理中强调的是文档管理,软件开发计划管理文档、需求管理文档、概要设计文档、详细设计文档、测试用例文档等等,有了这些文档,比原来没有开发文档,只存在于开发人员头脑的管理要好得多,这是一个进步。但这些文档离实际的软件还有很大的距离,依靠文档进行管理,往往要到最后阶段才发现问题。CMMI基本上是依靠文档管理的。

其次,我们分析一下,有什么办法检测到实际开发中的有用反馈信息?

还是要从软件开发的根本上入手分析。软件开发的目标是开发出满足客户需求的软件,谁能下最终的结论?只有客户!所以我们要客户看需求规格说明书,但客户看不懂;客户看设计文档,也看不懂。如果客户能看懂,他们自己就能做软件开发了,要我们干嘛?但是,如果客户用一下我们开发的软件,他们是可以判断是否能满足需求的(如果客户还是判断不了,那你也不用担心了,因为他没有判断),所以我们需要做的是如何让客户在开发阶段就能用上我们开发的软件,好似悖论,这点难以理解了。以前有给客户做一个原型的方法,但原型不是最后的产品,所以不能代替。办法还是有的,我们可以把产品分为相对独立的部分,先做一部分给客户用,如果客户不满意,就修改甚至重新做,直到客户满意,当然应该先做对客户价值最大的部分。

所以我们需要检测的有用信息,是客户使用软件后的是否达到需求的判断。为了将检测工作自动化,我们需要将客户判断的标准写下来,最好能自动判断,这就是客户测试用例集。如果能有客户测试用例集作为目标集,小部分软件提交客户使用后判断作为反馈信息,就能形成闭环控制系统,从而达到软件开发的可控性。

客户反馈软件开发闭环

你可能感兴趣的:(从控制论说明软件开发的不可控性(2))