软件调试-张银奎

附:

模型
用来表示一个系统、过程、事物或概念(的一种表达形式)。
模型可以是物理实体、图形、数学表达式或一段描述文字。
好处:是形成一种具体的印象,有助于了解过程的实质。

工作模型
就是对一个事物完成一次工作的描述、工作流程、步骤

1.7.1 什么是模型?

模型(Model)就是一个系统的抽象表现(Abstract representation)。由于一个真实的系统可能太庞大,也可能含有许多细节,常常超过人类智力可能认知的范围,所以人们必须从系统中“抽”离出重要的“现象”(Essential factor),让人们能够认识与理解系统的重要特性,包括系统各组件静态动态合作关系

模型包含一组明确定义的基础概念(Building concept),以及这些概念之间的关系。即这些基础概念根据明确定义的规则(Rule)来组合成为较高层次的概念或系统

简单而言,模型的基础元素包括一组基本概念以及一组关系或规则。借助这些元素来表达出系统的架构(Architecture)。由于人们对基础元素有了共同的认知,所以整个系统的架构的描述(即系统的模型)也就成为人与人之间可以认知和理解的东西。

因此,人与人之间采用共同的模型时,就易于沟通,易于互相合作了。

 

软件调试-张银奎

详情 查看回复 前言

本书写作目的:
软件调试,就是通过调试手段来解决软件中的问题(BUG)或作底层的探索研究(HACK等)

具体就是想告诉大家:

1、软件调试的原理、步骤(原文:工作的模型,即一次调试工作的步骤、流程)、工具(又一轮原理、步骤等)。(这是被动,出了问题再来解决,是从外面来治病,比如西医。是软件外的东西,是外部)

为什么要知道这些:

类比:

软件调试可比喻为修理汽车。作为修理工,当然不能像司机一样会开就行了,首先要知道一个事物的工作原理,如汽车各部分的作用,它们如何配合起来让汽车动起来?动力来自于哪(发动机的活塞上下运动),它又是怎么变成让轮子向前滚动(通过巧妙的传动装置让力变成了旋转轮子的方向)?

然后要知道一次具体修理的过程,即先拆哪部份再拆哪部分,出什么问题应该观察哪几部分,什么时侯需要开动发动机来修理,什么时侯应该关掉不然会搞坏东西。

最后,应该知道你所使用的工具的原理,从原始的滑轮吊装,你应该知道拉哪根是向上吊、几根才够,现在修车还有一些先进的调试设备,什么四轮定位,甚至X光机等都有了。

而软件调试也相当于修理,只不过你修理的东西是在内存和CPU中的一些磁信号罢。你也应该知道基本原理(为什么能工作)、不同情况下的调试步骤、各类调试工具的使用原理(才知道什么情况下适用)。

2、代码自身可调试性。这是主动,是预防问题,从内部来发现、医治,比如中医。是软件自身、内在)

类比来解释:

光事后去修还太被动了,任何设备都应该能自行发现一些故障并作记录、作相关动作(及时停止工作以保护用户的工作成果,并方便找出毛病所在等。)

所以,

就是在代码中加入一些预备对付故障毛病的代码(记录情况、通知用户、诊断位置与原因等),方便以后调试。

3、教授方法与技巧(都是摸索出来的)。

除了上面那些通用性的东西外,由于东西太多,肯定还有很多其它情况,所以有一些经验性的东西。或者说,一些找不到文档不被公开的东西。一些很少说明的东西。这不是经验和技巧,不太都知道的东西。都知道的就是教材上的东西。



4、总结:

掌握原理、体会到重要性(通过一些实例或情况)、学会方法和工具、学会用这些方法和工具去索更多知识、解决更多问题。



------------------------------
http://591000.cn/bbs/ShowPost.asp?ThreadID=397

你可能感兴趣的:(软件调试-张银奎)