个人博客作业4
半学期的软工课程心得
软工开课半学期,依次在指引下完成了个人项目、结对编程和团队项目,感悟到很多。
项目从小到大,相应的工作量也是随人数而攀升,渐渐地开始明白,自己以前写的小程序真的只是冰山一角,可能只可比值一个大项目里面的一个模块或者一小段的代码实现。
在做个人项目的时候,在算法构想上冥思了一段时间,最后用三天把一个简易四则运算的程序从无到有,到调试出正确结果,如垒一座沙堡,零零散散地更改函数,通过嵌套来避免遗漏任何的项目要求。最后的结果是程序写出来了,能跑,但是首先没有模块化地规划程序的组成部分,程序十分零散,可维护性很低,其次追求完成而没有追求完善,导致我的程序效率比不上其他的同学,一万条算式的生成我得用三四分钟,而别人的能够在一分钟内生成十万以上的算式。差在哪里?通过交流,才知道他们这些跑的高效的,在储存以生成代码的时候用了哈希表,哈希表在查重上的效率远比我的String[]来的高,而且根据后来结伴互评的结果来看,我还遗漏了数值范围太小,而生成数目太大的情况处理,这种在查重下无法生成指定数目的条件将导致程序崩溃,只能说我还是图样图拿衣服。个人项目让我体悟到两面:注重效率、考虑周全。
到了结对编程的时候,不得不说挺对不住我的小伙伴的,因为代码和界面基本都是他写的,我只负责考虑下异常处理,首先是他的计算内核更高效,所以他打算在他的内核上进行更改,然后他有过winform的编程经历而我没有,所以他把界面编写也拿到了自己手上做。那几周我就是在打酱油抱大腿的,说到底还是自己太年轻,技术跟不上需求,需要更多的历练,尝试更多类型的编程。
到了团队项目的时候,我自告奋勇做了PM,虽然我其实并不知道PM该具体做什么,就谢谢团队大博客,分配下任务。PM也是个累人的活,因为他需要统筹整体的进度,进行调配,而我们的爬虫项目是在前届学生的基础上接下来的摊子,虽然这个摊子不烂,但是里面的注释只能让你懂个大概,平日里对url、html、download等面向网络的编程根本就没接触过,所以我和我队的成员们花费了三天除了吃饭睡觉上课就是看代码的时间去把他们的代码嚼得烂一点。这个过程是痛苦的,看别人的代码总是很吃力,但是我们有充分地调用网络资源,我们上网百度,发现了很多的简易爬虫教程的博客、网站、论文。一开始看的挺开心,想说这么多资源可以用,最后仔细看下去才发现,真的是天下文章一大抄,凡是用到htmlclient和htmlparser来实现简易爬虫的源码里,从连接到访问获取的代码甚至注释都是一毛一样的。再后来在网上找到一本电子书,是清华大学出版社2009年出版的《自己动手写网络爬虫》,原来这本书才是鼻祖。网上的代码大都借鉴了书的第一章的单线程实例,但是其实转念一想,代码这种东西原创度能有多高,总不能你用过我就不能用吧,你写的好,我可以搬过来转化成我的风格来适配我的模块。意识到这点,我也渐渐看开,比对了一下上届的源码,基础的部分并不用修改,只用改改线程安全部分。为了在源码的基础上进行功能添加,我们搜索了动态添加、分布式爬虫,这些实现起来确实需要时间,尤其是分布式爬虫,这又是和服务器通信有关的东西,看来接下来的beta版本还需要做很多东西。团队项目alpha版本接近尾声,也是感触良多,我们接手的爬虫项目只能算是小型项目,但是如果让我们这些人从头写起,估计也是够呛,而且分配代码的过程中,我深刻体会撇开时间因素到有些项目如果由一个团队来完成,可能会比个人的完成度更高,因为这是个个人+结对的环环结合的过程,我写我的理解,你来帮我改。
以上。