Stamp of Software Debugging
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
navigation bar seprate line
第5篇 可调试性

前面3篇我们分别探讨了CPU、操作系统和编译器对调试的支持,它们分别是计算机系统的硬件核心、软件核心和生产软件的最重要工具。可以说,来自这三方面的支持是软件调试技术的三大根基。在对这三个方面的调试支持有了比较深的理解后,本篇和下一篇将讨论影响软件调试效率的另外两个主要因素:被调试软件的可调试性和调试工具。

概言之,软件的可调试性(Debuggability)就是指软件容易被调试的程度,或者说当这个软件发生故障时,调试人员可以多方便或多快地寻找到问题的根源。如果上升到成本和费用的层次,那么可调试性就是调试这个软件所需成本的倒数,调试代价越高,那么可调试性越差,代价越低,可调试性就越好。在第26章中我们将详细讨论可调试性的内涵、外延和衡量标准。

如果把软件故障比喻成灾害(不为过吧),则提高软件的可调试性就是增强软件抵御灾害的能力。在如何应对灾害方面,古人留给我们一个非常好的成语:未雨绸缪。它来源于我国最早的诗歌总集《诗经》中的一首著名的寓言诗《鸱鸮(chī xiāo)》,原诗如下:

鸱鸮
鸱鸮鸱鸮,既取我子,无毁我室。恩斯勤斯,鬻(yù)子之闵斯。
迨天之未阴雨,彻彼桑土,绸缪(móu)牖(yǒu)户。今女下民,或敢侮予?
予手拮据,予所捋荼。予所蓄租,予口卒瘏,曰予未有室家。
予羽谯谯,予尾翛翛,予室翘翘。风雨所漂摇,予维音哓哓!

这首诗以一只被猫头鹰(鸱鸮)夺去幼鸟的母鸟的口气叙述了它重建鸟巢时的所想和所感:“猫头鹰夺取了我的幼鸟,再不能毁坏我的鸟巢。我辛苦养育(鬻)儿女,已经病(闵)了。趁着天还未阴雨,我啄取桑根,缚紧(绸缪)巢的缝隙(牖本指窗,户指门)……”

未雨绸缪的道理对软件开发也是适用的,它告诉我们应该在设计软件时就为调试这个软件做好准备,否则等故障出现了,就会措手不及,甚至为时晚矣!这种在设计软件时就考虑软件调试的思想经常被称为Design For Debug(DFD)或Design Better, Debug Faster。

对于较大型的软件,要做到DFD并不单单是某个角色(比如程序员)的事情,它需要整个软件团队所有成员的共同努力。这是提高软件可调试性的另一个重要原则,那就是要把提高可调试性纳入到软件工程的每个环节当中,使其成为所有团队成员的目标。我们将在第27章详细讨论如何在软件工程中贯穿可调试性设计,提高整个软件项目的可调试性。

navigation bar seprate line
Copyright (C) 2008-2013 Raymond Zhang, All Rights Reserved