对一个驱动程序的重构过程.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
对一个驱动程序的重构过程

对一个驱动程序的重构过程 第一部分 虚拟驱动介绍及重构准备 作者:雷立辉 (个人主页:) (郑重声明:本故事人物纯属虚构,如有雷同,概不负任何责任。目的在于提高文章生动性, 不做个人映射和人身攻击。) 关键字:面向对象,重构,虚拟设备驱动,程序设计 简 介:本文主要描述了如何使用重构方法接手历史工程并且消除历史遗留bug 的过程。 同时,简要介绍了虚拟串口原理及重构的方法,讲述了一些程序员在使用面向对象 程序设计方法中常犯的编程错误及其解决方法。 1. 引子 Manager: “把这两个驱动程序合并了!” Goooder: “为什么?” Manager: “我问过牛牛了。他说可以。” Goooder: “可这个结构非常合理啊。虚拟串口驱动专门负责和用户程序打交道。而虚拟串口管理器 驱动则将这些多个写往虚拟串口的数据传送给协议栈,同时将协议栈收到的数据写到串口。分工明 确。” Manager: “不信你问大牛。”(大牛刚好在旁边听着) 大牛: “这样做可以减少一个驱动的安装。不是在Windows 2000 及windows XP 上蓝屏都是虚拟串 口管理器造成的吗?” Goooder: “可是,如果合并了。不仅会使我们程序的结构变得很不清晰,而且还要修改协议栈接口。 而且,合并了就一定会不蓝屏吗?” (大牛来不及回话,就被人找去解决更重要的问题去了) Goooder: “我们应该先做测试,看看在什么情况下蓝屏,为什么蓝屏。这样才有可能解决问题。不 能因为虚拟网卡驱动与虚拟网卡管理器驱动成功合并就说明这两个驱动应该合并。” (其实合并不顺 利) (Manager 无言以对,脸色似乎有点不对) (Goooder 看到形式不对) Goooder: “唉,这样吧。我先测试,再看看代码。给我点时间,让我好好瞧瞧这究竟怎么会事。” 。。。 。。。(过了十分钟左右) Manager: “Goooder,我和你现在看看这安装驱动程序的代码吧。” Goooder: “不是要我看这驱动了吗?蓝屏绝对不是安装驱动程序引起的。老大,别让我切换进程了 好不好?”(其实安装驱动程序也有其它问题) (Goooder 开始脸色铁青) (于是乎,Manager 自己去看安装驱动程序了。。。) 哈哈,一直处在一个小病不断的工程中的我又要辛勤劳动了。 噢,忘了介绍自己。Goooder,就是我,男,现年二十岁零七十二个月,无不良嗜好。我所 在的公司是一家开发无线通讯软硬件公司。我从事无线通讯协议栈上层的应用程序开发,对 面向对象,软件工程有浓厚兴趣。正在看Martin Fowler 的大作《Refactoring Improving the Design of Existing Code》。上面描述的便是我和Manager 顽强斗争,不怕牺牲的精彩对话。 (我似乎听见掌声,无论如何谢谢大家对我的鼓励) 现在,上级交给我一个光荣而艰巨的任务,要我将这个纠缠了我们近十八个月蓝屏问题扼杀 在摇篮之中(其实这份驱动代码要追溯于2000 年3 月份,历经二人维护,算我则是第三位 了。看看日历,现在可是2003 年11 月份了。一年半之前我加入这个公司)。 现在描述一下问题吧: 问题模块: VirtualCom.sys,VirtualComMgr.sys 问题症状: 当卸载程序完成发出重启系统命令之后,在某些机器的Windows2000 或 Windows XP (多发于Windows 2000)上偶尔有蓝屏现象。很难重现。 面临困难: 1.只有一份最初的设计文档。现今程序很多地方已经与文档描述不符。 2.最初开发人员已经离职。第二位(就是牛牛)也是公务缠身。Manager 鼓励我多多联系他,但我知道牛牛也很忙。 目 标: 将这个纠缠了我们近十八个月蓝屏问题在两周之内扼杀在摇篮之中。 解决方案: 方案一:将VirtualComMgr.sys 合并入VirtualCom.sys 中,减少安装入 系统的驱动,从而降低蓝屏概率。

文档评论(0)

pengyou2017 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档