附:
模型
用来表示一个系统、过程、事物或概念(的一种表达形式)。
模型可以是物理实体、图形、数学表达式或一段描述文字。
好处:是形成一种具体的印象,有助于了解过程的实质。
工作模型
:
就是对一个事物完成一次工作的描述、工作流程、步骤
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
Prata《C++ Primer Plus》:基础,第一本书。(之前的版本也可,不过推荐最新的)
Lippman《Inside C++ Object Model》:初级,加深语言层次上的理解。不过有点小老了。里面的cfront编译器早退出江湖好久了。思想值得学习
侯捷《STL源码剖析》:第三本书,中级,深入STL
Vandevoor
如果说
软件
的执行过程就像是CPU在无数条道路(指令流)间飞奔,那么开发
软件
的过程就是设计和构建这个交通网络的过程。其基本目标是要让CPU在这个网络中奔跑时可以完成需求(requirement)中所定义的功能。对这个网络的其他要求通常还有可靠(reliable)、灵活(flexible)、健壮(robust)和易于维护(maintainable),开发者通过简单的改造就能让其他类型的车辆(CPU)在...
大会讲师系列访谈(3) :Windows系统内核专家-
张银奎
大会会务组:张老师是什么时候开始关注Windows系统内核和
软件
调试
排错方面的?为什么选择这些领域研究?张老师能否与广大IT工程师分享一下技术道路上的成长心得?
张银奎
:对系统内核的重
软件
是信息时代的主角,它已经对人类社会产生了巨大的影响,而且正在产生更大的 影响。如果你在做
软件
方面的
工作
,那么你应该感觉很幸运;如果你在学习
软件
,那么你选择了前景无限广阔的方向,一定要坚持。
回顾作者学习
软件
的亲身经历,如果要分享经验,那么第一条经验就是多写代码,多
调试
。笔者一直觉得自己不是一个聪明的人,如果说作者的
软件
技术学得还可以,那么靠的就是这条:几乎每一天都写代码,几乎每一天都高度,坚持了二十多年,已经成为了习惯。
最近在公司比较闲,再加上自己好久没有认真的看过书了
打算买本书来充实一下,网上倒腾了一圈,决定买
张银奎
老师的《
软件
调试
》。今天收到书了,浏览了一下,觉得很不错,打算认真看看。
书的内容还没有细看,记不了啥。先写写买书原因吧...
主要三点:
1)
张银奎
老师在 《程序员》杂志"
调试
之剑"栏目上的系列文章是《程序员》目前还健在的不可多得的"硬开发"技术文章。
2)某网站下载了
横枪立马观核景 挥码枪线上发布会2022年6月11日下午14:00至15:30,挥码枪的线上发布会通过腾讯会议举办,有近百名来自全国各地的
软件
同行和
调试
技术爱好者参与了本次发布会。主持过后,先由格蠹科技创始人
张银奎
介绍了CoreSight技术背景。他先从自身对
调试
技术的一些理解入手,借用梁肇新博士的名言——“好代码是
调试
出来的”,...
1、Android7.1禁用锁屏功能
— a/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
@@ -2488,7 +2488,7 @@ class DatabaseHelper extends SQLiteOpenHelp