软件诊断的基本原则
软件诊断可以借鉴西医诊断学中的一些指导思想。指导思想类内容比较务虚,有些读者会认为在实际工作中没有什么帮助。但是一些基本的原则可以帮助读者在遇到困难时期把握大致方向,不至于在错误的道路上花费太多精力。
在西医的经典诊断学中,有些基本原则。在软件诊断中可以拿来参考:
-
实证主义。这是西医诊断学的一个基本特征,它强调以事实为依据,以经验为准则,以实验为手段,以结果为目的,对疾病进行客观、科学、系统的分析和判断。在软件诊断中,也要遵循实证主义的原则,即通过收集、分析、验证和评估各种软件测试数据,对软件故障进行准确和有效的诊断。在实际操作过程中,部分工程师因自身的原因,会对软件诊断带有倾向,认为非自身问题。“我写的代码肯定没问题”,这是IT职场经典的笑话。在软件诊断领域,尽量没有自己的“屁股”,对于快速找到问题根因很有帮助。
-
分析与综合。这是西医诊断学的一个基本方法,它指把复杂的疾病分解为简单的部分或要素,以便于深入了解其本质和规律;同时又把分析得到的各个部分或要素重新组合起来,以便于形成一个完整的概念或判断。在软件诊断中,也要运用分析与综合的方法,即把复杂的软件系统或故障分解为简单的模块或特征,以便于探究其原因和影响;同时又把分析得到的各个模块或特征重新组合起来,以便于构建一个完整的故障模型或解决方案。以便于对软件故障进行定制和优化。在定位过程中,需要尽可能多的收集到运行过程中的信息,比如日志、报错堆栈、错误二进制、运行环境(运行的任务、cpu、内存占有率等),甚至在一些特殊场景下需要拿到源码。有经验的读者可以根据经验收集相关的信息。根据错误现象,进行初步的定界分析,然后抽丝剥茧,定位到根因并解决。
-
一元论。这是西医诊断学与中医诊断学共同遵循的一个原则,它要求医生在诊断过程中要避免对疾病的过度复杂化或简单化,而要寻找疾病的主要矛盾和主要因素,从而确定诊断的重点和方向。在软件诊断中,也要遵循一元论的原则,即在考虑多种可能性和因素的基础上,找出最有决定性的问题或原因,作为诊断的依据。对于一些已经交付使用的软件,两个组件同时出问题的概率极低。例如,企业中有N个设备同时运行。在某天之后,不同类的设备同时出现有时有监控数据,有时监控数据为0的情况。这时候,我们合理怀疑是监控设备出现了故障,而非怀疑所有的设备同时出现故障。
当然,软件诊断对比于诊断学有自己的特殊性。比如,一般来说软件具有输入固定则输出固定、软件可复现可在不同设备间移植等特征。里面还有更多可提取的规则原则,就需要读者在日常工作中善于总结,经常能够梳理、回顾和交流。多多总结一些能够指引未来工作的原则出来。
参考资料:
软件诊断学 - 简书 (jianshu.com), 欢迎关注!
共有 0 条评论