代码设计阶段基本思想

来源:互联网 发布:重庆seo推广服务 编辑:程序博客网 时间:2024/06/11 23:41

VC:断点跟踪,内存查看,变量跟踪
代码设计阶段包括:
环境搭建 系统架构设计:代码设计 : 工程级debug 。
时间比例为 2:3:5
工程级debug :
需要根据客户的接口需求调整和增加代码或模块以适应。
对非内核代码的调整重构工作。

尽可能加快反馈环和缩小反馈环的目标代码片即:规划–>设计–>验证—>修改—>再验证。

原创代码的设计,基本遵循自顶向下设计,逐步求精面向过程程序设计方法,而不是自下向上设计。

至少以下经验,实际实现过大约万行级的国际标准的算法整体重写设计。我认为至少针对万行级的代码还是可操作的。
第一步,准备环境
第二步,写好main 函数,就是一个hello world 。
第三步,增加信息断点打印代码和文件输入输出
第四步,测试输入输出是否打通

简单的讲,就是将输入文件的所有内容。读出来,并写到输出文件里。最好都是二禁制或都是文本格式。然后用文件比较命令在命令行下比较。通常我自己写了个小程序,进行二进制比较,出现错误会给出出错点的位置信息并在首次出错时停住。

这样做的目的是明确了你的程序,输入有了。输出也有了。而且中间转通了。

第5步 这个阶段就很长了。逐步细化你上述三个函数。慢慢实现你的目标。

而每次细化完毕,都需要灌入数据,并对结果进行文件比较方式的判断。看期望和实际运行结果的差异。当出错时,通过检测出错数据在文件中的位置,检测属于第几次循环写出,该循环写出时,对应处理模块各个环节的中间值是否等于预期(通过信息打印方式实现)。

信息打印属于向strerr中写入信息。你需要重定向该文件,或者直接在屏幕上打印。但尽可能打到一个专门的文件中。

最后的建议。每次改动,特别是模块增加时,先用个空函数(有代码,但只是象征性的过次数据)模拟该动作,在细化内部实际操作。而且尽可能的步步为营,版本上传(通常本机我会自己做个版本服务器),上传前,一定要跑,并对输出进行比对验证。这样做的好处是不用单步跟踪,而采用正向设计分析方法来判断已有的代码改动的错误。

有效的推进依赖大量中间测试数据的正确性。大量中间测试数据其实是可以构造出来的。根据算法分析。或并行的第三方原理性代码中间截取出来的。

当不存在原理性代码时,上述做法,依赖于你写两套版本的代码。将两套不同实现方法的代码的数据进行交叉比对。其理论基础是:

假设A出错的概率是1%,B出错的概率也是1%。当A,B同时有同样错误的概率是1%%。

因此理论上可以大为降低,两套版本同时出错的可能。这其实是没有办法的办法。

以上方法只是代码设计的方法,和系统构架(系统设计分析)与测试数据构造没有关系。

测试数据构造是门学问。评判测试数据是否好还是不好,我个人的意见是,根据是否能有效保证BUG浮现来决定。
测试数据非常重要。

0 0