136书屋 > 都市言情 > 生活不相信眼泪之深圳青春无悔全文阅读 > 第50章 腾耀的重获新生(4)

第50章 腾耀的重获新生(4)


腾耀科技是家集单片机研发、生产和销售为一体的公司。单片机内核的研发、生产都在台湾进行,深圳这边做些产品应用和方案设计,以此支持销售。我过来之初被安排做两项工作,一则是做各种型号单片机的烧录器软件,另外是维护修改单片机仿真器程序。在那个开发工具delphi大行其道的年代,台湾经理选择它的兄弟工具BuilderC++让我使用。这两款开发利器,我都没有接触过,本来VB6。0、VC6。0和JAVA工具就让我云里雾里,稀里糊涂了,再学这个更是糊上加糊。这里我要提醒一下研发路上的初学者,千万不要一口气学数门研发语言,任何人都不可能在短期内掌握多种开发工具的,精通一门就好。至于学哪门呢?哪门简单学哪门,哪门和你有缘学哪门(比如你所在的公司用JAVA工具,就学JAVA)。

公司派单片机工程师马飞飞引导我做烧录器软件,马工已经设计了该程序的大致框架。腾耀的单片机采用的是4位和8位型号的处理器,ROM(只读存储器)和RAM(读写存储器)的容量都很小,C语言写的程序资源太大,无法在这些单片机上运行。马工他们都是用汇编语言编写软件。马工用的是结构化编程思想,面对对象的编程方法他以前完全用不到。结构化编程写几千字节的程序基本没有问题,但是写烧录器这样编译后有数十万字节的程序就力不从心了。

国内的开发人员,特别是作坊式公司的软件研发队伍,都没有按照《软件工程》的步骤要求,对准备开发项目或者产品进行前期调研,项目可行性分析,资源、进度、质量保证和风险等评估,再出需求分析,概要设计,详细设计,具体编码,阶段评审,阶段测试和集成测试,最后项目或产品研发完成进行系统测试,上述工作完成后归档,进行总结,知识沉淀等工作。按照软件工程的标准设计产品和做项目的好处是显而易见的,但是每个步骤认真执行需要耗费时日。

没有做的原因无非是下述三点原因:

一、老板层面没有这样意识,由于要赶工期、任务,受项目受交付时间的约束,产品要尽快投放,抢占市场先机,老板希望看到的是最终的结果,其他工作不需要做,实际上和那则“空中楼阁”故事中的富翁没有什么两样。一位富人看见人家一栋楼的第三层修建的美轮美奂,找当初做这栋楼的工匠帮他建造,但是富翁只要第三层,工匠无能为力。这则故事蕴含的道理,顽童小儿皆能明白,但是回到现实生活中,人们却常犯同样的错误。

二、研发人员不积极的态度也是这些工作没有做的重要原因。如今,我带了一帮徒弟,我让他们按照《软件工程》的要求设计产品,每个步骤都要参照模版留下文档记录,有人却不屑一顾说,“这是公司文员干的工作,他们做是大材小用。”在他们眼中,编码是面子工程,是看得见,摸得着的成果。但是他们说的文员是无法完成这项工作的。评估、分析、编码、检验都是研发人员设计的,方案全在他们大脑中啊。

三、如果上述两点还是态度问题,浑然不知还有这些工作要做的设计人员也是大有人在。

台湾经理将自己的对烧录器最终的展望告诉马工。马工思索片刻便开始摸着石头过河了。他既没有BuilderC++开发工具使用的经验,对烧录器软件整体构架和设计细节也非常模糊。这种情况下,片刻须臾用大脑简单的构思,就开始编写代码,完全是匪夷所思的事情。他在数千行的代码中基本上用的都是全局变量,什么类、继承、封装和多态的设计方法空空如也。程序中到处充斥有时当全局用,有时当局部用的举不胜举没有规划,没有章法的变量,且变量名称让人琢磨不透它的功能。除了这些随心所欲的变量。函数的实现也不符合“程序设计”的规范,基本都是无参函数,函数的输入和输出全靠那些重复拷贝来,拷贝去的外部变量、全局变量来实现。一个函数几百行的代码司空见惯,有的函数实现甚至达到数千行代码。

网传国内知名企业华为公司要求函数实现,代码不能超过60行,超过必须分解来实现,这样的好处就是将功能细化,便于功能模块的组装。我拿生活中的例子做比如,读者就能一目了然了。汽车组装车间将主梁、四个轮子、发动机和外壳等不同的部件拼装起来制造汽车。如果将来车轮坏了,不过是头痛医头脚痛医脚,哪儿坏了换哪儿,大可不必去更换发动机和主梁等部件吧。但是如果汽车设计之初,生产出的是轮子、发动机和主梁为一体的部件,牵一发而动全身,任何一处有故障,就得整体更换。这样的设计无论对研发,还是生产来说也是苦不堪言,难度要远远大于分开设计、生产和组装。马工写出的代码就类似汽车部件一体化的东西,他将本可分开独立的功能集成在一起。

这样的代码完全没有模块性和重用性可言。做出的程序也尚失了健壮性和可扩展性。一个程序老手看这样的代码都会头昏脑胀,语句艰深晦涩,可读性太差。马工的程序,就好像没有规划管理的机房有成千上万的网线在交换机群中穿来穿去,如果坏了一根线需要更换,那也是难于上青天。