在传统控制系统理论中,最为重要的概念莫过于反馈了。反馈的基本做法是把系统的输出通过某种变换后再输入到系统中去,简单的例子如电炉温度控制系统,传感器一直在探测温度,并将其反馈到控制系统中和设定的温度做对比,如果实际温度超多了设定温度,则要把电流降低甚至切断。在日常生活中,反馈的例子就更多了。比如,开车时驾驶员一直注意汽车在道路的行驶路线,偏了就要调整一下方向盘。著名的“摸着石头过河”的说法也包含了反馈控制的基本思想。
MILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
反馈控制成功的一个前提就是对系统的输出能够及时测量。对于软件工程,系统的输出是可以安装部署的软件系统,对它的测量就是对软件系统的各种类型的测试。
当然,软件工程系统的主体—人的活动,受日常作息规律的制约,即日出而作,日落而息。虽然也有个别时候是反过来的,但不管怎样在时间上是不连续的,因此是一个离散型控制系统。相应地,反馈也不是连续的。在离散系统中一般要经过若干个周期(时间间隔)系统才能达到目标稳定状态。在这里,重要的是时间间隔的数量,而非每个时间间隔的大小。所以,应尽可能地缩短每个时间间隔的大小,而从最大程度地缩短达到系统稳定的时间。对一个正常的软件工程项目,以一天为一个基本的集成周期比较合适。
事实上,由于软件工程有多人参与并有多个环节,所以又是一个多环控制系统,软件开发过程反馈系统如下图所示。按照多环控制的理论,越在系统的内环出现的“振荡”越容易得到控制。联系到软件工程,要把问题尽可能地解决在内环中,越在内环的问题解决起来成本越低。具体地来说,能在代码开发中发现并解决的问题不要拖到测试中去,能在测试中发现的问题不要带到客户那里去。