,但是至少不会出现(内存)注册机。对软件加壳也不是什么防弹衣,对于有经验的破解者几分钟就可以用OllyDbg从内存Dump(先用Process Explorer杀掉屏蔽调试工具的线程),接着就是用Import REConstructor修复IAT,再用Lord PE对EXE进行优化。
DeDe可以让破解者看到程序内的资源,事件,既可以静态分析,也可以在OllyDbg中对分析出的地址进行动态调试。
破解Delphi控件当然也可以用DeDe,但是我们有更好的选择,那就是DCUcu与Dcu2Pas,可以将Dcu直接反编译成汇编
代码,通过静态分析其中的字符串以及调用的API,破解真的是很容易。
只有做到知己知彼,才能做到有的放矢,反破解就是做到以最小的保护代价来使得破解者付出极大的破解行动。
--------
版本控制
--------
版本控制最流行的就是VSS, CVS, SVN,我比较喜欢SVN,但是由于在Delphi下始终没有很方便的连接SVN的插件,因此,仍然是Delphi+VSS是最方便的版本控制的选择。VssConneXion是专门用于为Delphi增加VSS支持的插件,确实为开发人员带来了无比的便利。Delphi+TortoiseCVS与Delphi+TortoiseSVN同样也是不错的选择。VSS最大的缺点就是只能在内网中使用,除了可以透过VPN来允许远程访问外,我们还可以用Dynamsoft SourceAnyWhere或SourceOffSite实现VSS通过Internet访问。当然VSS 2005也支持Internet访问。如果你是个人开发者,觉得使用VSS也太麻烦,不妨试试FileHamster。
--------
软件测试
--------
在提交给测试人员前,要求开发人员首先做自测,不要出现给测试人员的是一个都不能运行的版本,这样是对测试人员的不尊重。
Java有JUnit,.Net有NUnit,同样Delphi也有DUnit,这主要是用来做单元测试用的,特别是在不停的代码重构中,能够及时发现修改出的
问题,是每日构建中的重要组成部分。开发人员在完成功能前就写好测试用例代码,也称之为测试驱动开发,让自己作为自己代码的第一个用户,以确保自己提交的代码是易用的、正确的;让测试人员更专注于发现那些隐藏的逻辑性错误。
TestComplete是AutomatedQA出品的专业自动化测试工具,与Rational Robot和Mercury WinRunner相比,特别适合用于Delphi开发的程序的测试。自动化测试可以减轻测试人员的
工作量,提高他们的测试效率。当然,采用自动化测试对于测试人员的要求就更高了,因为需要测试人员维护测试脚本。
--------
缺陷管理
--------
测试人员的
报告需要反馈给开发者,同时又要知道开发者的修改意见,上级主管需要知道当前的测试进度与修改情况,这一切都是需要缺陷
管理系统所管理的。通常缺陷管理都是做成B/S
系统,当然也有提供客户端的。JIRA, Mantis, Bugzilla, Axosoft OnTime, Axosoft PowerTrack, Bug Tracker, BugFree, Dev Hound, SourceGear Dragnet, TestTrack Pro, URTracker,同样有很多选择。
--------
内存泄漏
--------
Java与.NET自身有垃圾回收机制,而且没有指针,除了外部资源(数据连接,文件等)需要使用完关闭,让开发人员是不需要主动管理内存释放的,Delphi却是需要自己管理对象的创建与释放(Create and Free, New and Dispose, GetMem and FreeMem),在这一点上有些初学者往往不太注意,应坚持谁创建谁负责释放的原
则。虽然Delphi下没有垃圾回收机制,但是有工具可以帮助我们检查内存泄漏。
MemProof就是一款专门用来检查内存等资源分配情况的
软件。作者Atanas Stoyanov后来加入了AutomatedQA公司。
AQtime是AutomatedQA出品的专业的测试软件,包括性能分析,内存与资源分配情况,最有用的当然是性能分析与内存泄漏检测。
Fast Memory Manager,一款优秀的内存管理器,Delphi 2006以后就采用FMM替换了BorlandMM,Delphi 7下也可以