晚上7:30,我参加了我校梁昌洪教授的系列报告会,这是我第一次听梁教授的报告,内容是“培养科学的团队精神”,梁教授对近代优秀团队历史的研究让在场的同学学到了很多,整个报告在图文并茂的幻灯片掩饰下,气氛非常好,我觉得梁教授不愧是知名教授,他不光在专业领域有过人的成绩,而且在人文方面,也给我们留下了非常深刻的印象,同时还是一位让学生感觉非常和蔼,能给人动力和鼓舞的人。
报告从20世纪初的罗马学派、芝加哥学派讲到著名的普林斯顿高研所,主要涉及了在物理学领域的一些优秀团队领军人物,像费米、爱因斯坦、波尔等,都是诺贝尔奖获得者,在这些成功者的背后,一个个成功的团队也随之诞生,作为团队领军人物,他们的科学精神值得我们学习,而我们国家正是需要这种人才,能够有团队精神,甚至能够作为团队领军角色的人物。
事实上,如果我们留意的话,很多科学的研究成功,都是与科学的团队离不开的,在软件工程领域,团队的好坏直接影响到项目的成功与否,那么团队最重要的是什么?一是要有一个好的团队领军人物,其次团队的风气至关重要。现在我们经常在讨论的XP开发方法,就是一种强调团队作用的敏捷开发方法,与传统的文档驱动项目进度的模式相比,XP方法更看重的是团队的交流、反馈和合作,代码是团队中每位成员共享的,大家在一起拥有轻松的工作氛围,一周工作时间不超过40小时,大家有着自由的工作方式,我觉得这与普林斯顿高研所给科学家提供的研究方式很像,在普林斯顿高研所,伙食非常的好,即使是在50年代的时候,那里的科研人员都能每天享受美酒佳肴,可见处处以人为本的团队思想。
不久,我也将要开始工作,也必定要加入某个团队之中,希望从自我做起,将团队的作用发挥到最大。最后也非常感谢梁教授给我们带来的精彩报告,如果可能,以后我还会去继续参加此类的报告。
前边我们已经把试验辅导老师当作客户,现在的验收更是体现了客户的至高无上,作为重新设计该系统唯一的一位学生,我付出了数天的努力,冒着重构的风险,承受着项目进度的压力,但是对于这些,客户视而不见,因为客户是个彻头彻尾的业外人士,客户只关心软件有没有能够反映电动机转速的曲线,并且曲线颜色可以自由定制,虽然软件开发者经常不理解客户的有些滑稽的思想,甚至企图说服客户,但是有些客户总是坚持自己的意念,对此,软件开发者只能采取折衷的办法,甚至付出更大的代价来实现客户的要求。
我开发第三天的时候,我曾经尝试用windows图形界面来描绘曲线,但是我在实验室的计算机VC环境中,无法将程序在新线程中运行,事实上很多其他同学的计算机可以运行,但是我的编程环境给我带来了不利,虽然我试图向客户解释,说我的操作系统有问题,但是我不怎么对客户的宽容保有希望,结果恰恰也在我的意料中,客户对我的没有windows图形界面而只有DOS字符界面的程序完全没有兴趣,即使我的DOS程序一样可以使电动机稳速的转动,而且采用了全新的算法和面向对象的思想。
最终,我换了一台计算机,使用该实验以前版本的系统,才让客户最终满意了,而这个系统被实验室所有学生交付时所共享。
在扮演客户的角色时,试验辅导老师的顽固让我可以理解,但是回到课程设计,作为辅导老师,我却很难理解他为什么那么的迷恋图形界面,为什么对学生设计的一个新系统丝毫没有兴趣,为什么不能透过界面看到内核?难道他确实就是一个客户,而不是一个老师。
经过三天的设计后,我终于克服了开发中遇到的一些困难,设计出了该系统的原型。
几乎所有的同学都使用以前留下的版本,那个版本虽说可以实现功能,但是从软件设计模式的角度来看,非常糟糕,它把发动机的业务逻辑和界面的曲线绘制逻辑统统写在了一个函数里,可维护性非常差,不容易将其内核移植到其它程序中,试想,我们为发动机编写的驱动程序,最终要用到实际应用中,作为一项应用的一个模块,比如硬盘盘片的旋转,我们不应该把旋转控制逻辑和读盘写盘控制逻辑写在一起,而应该将一个原子功能作一个组件封装起来,提供给其他应用,增加该功能的可重用性。


在这里,我设计了一个类,封装了电动机的各种属性和方法,这样其他同学如果感兴趣的话,都可以调用它,然后前端的界面根据自己的喜好自由设计。该源程序提供下载:
对于以上设计的类,还存在一些问题,首先,它存在对输出格式的以来,增加了系统的偶合,改进的办法是设计好的接口来获得动态转速;其次,对于稳定转速的算法,我使用了幂函数,由于时间关系我没有更加精确的计算,希望有兴趣的同学可以在这里多下功夫,对稳定转速进行一定的数学建模,改进稳速算法。最后祝大家好运!如果有修改意见请告诉我。
为期一个星期的微机原理课程设计开始了,内容是设计“直流电机闭环控制系统”,简单的说就是在计算机上设计编写应用程序,来控制和稳定直流电动机的转速。
对于这次设计,我暂且当作一次项目开发,在实验室的计算机上,已经有了以前的同学做好的程序,这个版本流传了很久了,只是每次实验都会被别人微妙的修改一下界面,而且不是很大的修改,因为会大修改的同学都自己重新设计内核了:)
我们的实验辅导老师,在这里作为该项目的客户,确实他在整个实验过程中更多的扮演了客户的角色。因为最终的结果要由他验收,满不满意都是他说了算,他说让你重新作你就要重新作,不管你解释什么软件的异常和其他因素的干扰,他都不理睬,他只知道发动机没坏你就能够用软件控制它,不知道也不关心程序是怎么控制电动机的。最后他还要进行黑盒测试,只看软件界面上的转速曲线,并且把发动机用外力强制停止,看程序有无错误提示。
那么重新设计一套系统究竟可行性大吗?至少在目前,我不熟悉电动机原理,不熟悉电动机惯性规律,不熟悉实验室计算机的系统稳定性,不熟悉外接主板和一些芯片的功能,没有用VC操作外设驱动的项目经验等,在一个星期的时间,我首先要学习以上这些东西,并且开发出产品,最终交付给客户,我能办到吗?风险随之而来,经过权衡,我决定重新开发系统,如果在交付时候产品无法完成的话,可以使用以前的版本。
在准备系统分析师考试的这段时间里,整天都要阅读大量的资料,很多都是围绕着软件体系结构以及相关的技术,感觉很过瘾,不仅对以往项目中应用的技术有了更加系统的认识,而且理解到了很多新技术和新思想,从j2ee到.net,从流行的三层结构到应用服务器,再到中间件,从Java的RMI到.Net的Remoting,再到Web Service,从soap到xml,再到DOM,从数据仓库到数据挖掘,再到DSS,从OO到UML,到设计模式,从ERP到CMM,到ISO……
系统分析师确实在考核我们对当前实际应用的分析和掌握水平,而软件设计师(高级程序员)考试很少涉及以上这些实际应用的内容,还处于算法和汇编的阶段,与新技术脱节太远,通过者真的就具备了一定的行业水平和工程能力吗?我觉得高程考试内容有待改革,对于其中原来涉及计算机专业课方面的题目继续保留,适当精简,因为这些确实是非常重要的基础,同时增加一些当前实际应用的技术,毕竟只会几个算法和汇编的人,在真正的应用程序开发的时候,只会觉得不知所措。我觉得国内计算机考试以及教育一直有一种片面的观念,那就是先花上几年的时间打好基础,然后只要花很少的时间就能掌握新技术,也许这在几年前是对的,但是现在可能不太适用了,太浪费时间了,新技术体系结构已经不仅仅是那些计算机专业课基础之上的一些“花哨”的东西,而是很多新思想的产物,像XML这么伟大的思想,作为一门专业课也讲不完它的精髓。当然,不是说学基础没有用,而是应该在学习基础的同时,也关注当前主流应用和发展,对基础学习同时也是一种推动,我们也应该“并发”的学习新旧知识。
高级程序员的考核标准应该提高,这样给IT行业带来的则是更具有开发经验的人才。
前几天我的效果器不幸被饮料淋湿,导致今天练琴的时候两个音色切换按钮很难按下,仔细一看,原来是被粘住了,受不了,现在的饮料难道是胶水?以后还是少喝吧!
看看效果器,不就是个简单的信号处理电路加外壳,比mp3机的内核都简单,从小就爱拆电器的我自然不会放过这个小东西,不过比起我的同学就差远了,人家把笔记本电脑拆开不说,还把外壳放到水里洗了一遍,然后组装好继续用:)拆开后取出电路板,直接插上输入和输入线,海阔天空solo版过后,感觉很不错,真想把音响也变成电路加喇叭,以后放到琴包里,携带方便呵呵。
这款DigiTech的RP50效果器是我买的第一块数字效果器,感觉性价比非常高,看着内核那块电路板,让我想起信号与系统课中学到的那些乱七八糟的变换,还有数字电路、微机原理课程设计时候做的那些电路系统和指令系统,我们学校今年开设了录音艺术本科专业,推荐他们课程设计做一个效果器吧!


最近评论