团队项目——准β阶段企划之模块划分

                                             我们想成为继往开来的一届

  在经过了α阶段的研究,稍微对爬虫和数据处理这块整理清楚了思路,总结之后计划了一下下一个阶段的工作重点,

其实感觉目的还是挺明确的,稍微发篇博客记录一下这个阶段性的进展。

  首先先说α阶段的工作重心和遇到的困难:

  一、阅读代码,辅助性文档完全缺失

  第一个阶段最主要的是承接往届的代码,就是要获取到源代码,然后读明白个大概,至于细节功能实现,这个之

后慢慢深度研究。在读代码这个阶段,我们遇到最大的问题就是,完全没有辅助理解的文档和注释,这个为我们迅速

接手项目造成了巨大的挑战,在没有辅助性文档的情况下,想要在短时间内读明白整个大工程几乎是不可能的,无奈

之下,我们搜索到了往届的团队博客,根据每日例会的汇报博客中的微小线索,一点一点拼凑整个信息集合。之后更

让人绝望的事情来了,在往届团队博客的置顶总结中,我们看到了让整个情况更恶化的一句话。文末原文摘录:

********************************************************************************************

我们学到了什么? 如果历史重来一遍, 我们会做什么改进?

我们学到了测试也是非常重要的,只有这样才能及时发现软件中的问题,并作出相应的改进。我们会利用与写代码同等的重视去看待测试。

我们会直接摒弃学长的代码,然后自己重新规划,重新来做!

警戒下一届的学弟学妹们:

请推倒我们的代码,重新架构!一开始与所有组进行沟通,了解所

有情况之后再来着手,否则就会陷入泥潭之中不可自拔。谨记谨记。。。。。

*********************************************************************************************

  我不知道学长在最终总结里写下这句话的时候,心情是如何的,想必应该不是很开心的。但请相信我,当我看到

这句话的时候,内心绝对比他感觉更糟糕,我们唯一的线索,断了。

  真是个愁人的情况啊,我们整个组看到这些情况的时候心里不免抱怨一句,没有文档,跑不通的代码,连接不上

的服务器,看不懂的整体架构,细节实现就更不必说了,连想去寻求帮助的学长似乎都放弃我们了呢,真是……锻炼个

人能力啊。

  还好大家都是被一路虐过来的,可惜归可惜,但是大家还是没有放弃的,代码看不懂就根据变量名猜吧(吐槽一下

里面的英语拼写错误),代码跑不通,调试一行一行的跑,总之各种偏招歪招用尽了,代码总算能跑出个像样的样子来,

整体结构说不上明察秋毫,但是大概框架是能梳理出来的。

  当我们守得云开见月明,就发现了事实上,此月仅算是个十六夜之月(残缺之意),很明显的感觉到代码是被一代

代团队像揉雪球一样攒起来的,凑合能用,但是问题百出。

  其之一、模块功能重叠,代码冗余。

  工程整体采用面向对象编程,一共定义了26个类,但是在这26个类中有近三分之一的类是没有被调用过的,那么为

什么要写这些类呢,我们发现,这些类中的功能函数或者就是个空函数撑个样子,或者它的功能在其他类里面被实现了,

一个模块的功能被化整为零塞进了其他的类中,于是就出现了这么多个名存实亡的模块。

  这部分是对我们阅读代码阶段造成误导的罪魁祸首,本身没有注释就很伤,还有一堆空的类放在那里迷惑视听,简直

和玩推理一样。

  其之二、类的安全性很低

  这点说小了,算是代码风格不好,说大了就是没有考虑防御性编程。主体的类内的主要属性,几乎全都是public static

,其他随便一个类就可以修改访问这些属性,属性在被那里修改的根本不知道,而且失去了划分模块面向对象编程的意义。

贴几段感受一下:

                                     

                              类内的成员全都是静态

                 

                       所有修改直接改

 

二、根据需求添加新功能,摒弃无用功能

  读了往届代码之后,发现在数据处理部分,非常的迷,支持pdf和html文件的数据处理,但是对于更常见的word

文件却不支持,而且对于中文文本的处理功能的实现很多块都被注释掉了,于是我们添加了处理中文文件,word文档的

功能,选择中英文分词效果都很好的分词器(关键词提取算法有待提高,这个暂且按下不表,之后说),添加了来自更

多网站的html文件的处理,增添了关键词翻译功能,并且能按照得到的要求上传到solr,总之大概功能实现了,加了一些,

也删了一点。

 

 

  说到快一半了,题目一点都没提,真是失策啊。

 

 

 

 

 

 

 

 

 

  并不是的。

  做完了阿尔法阶段,我们的心情就是题目所说:

  我们想成为继往开来的一届

  足够中二,足够大口气,但是请不要笑话我们,我们确实暂时是这样想的。

  我们“继往”的工作已经完成的差不多了,虽然做的说不上多全面,但是确实有一个能满足需求的程序可以用了,那么

问题来了,我们β阶段做什么呢,继续研究怎么处理文件,处理的更精准?处理更多类型的文件?我们确实有想做,但这是

锦上添花的bonus,我们现在更想的是,这个项目八成还是会传下去的,那么我们能不能像邹欣老师所问:“这个项目能否

能可持续开发呢?”下一届的学弟学妹们是否要和我们走一遍相似的,不顺利的过程呢?这是我们不想看到的,我们想从我

们这届开始,做出一点改变,哪怕只是一点点微小的改变,我们也想改变目前的这个境况,我们想让之后的接手的人能够

迅速上手继续我们的工作,开启全新的、充满开放性的局面。

  基于以上,我们决定,我们的β阶段的主要任务是“开来”。

  拟定计划如下:

  1、保留原有功能代码的基础上,重新规划模块的划分,定义好接口,去掉多余的模块,使模块间的任务划分的更明确。

  2、将程序编译成动态链接库,和爬虫部分的JAVA程序合二为一,做成后台程序。

  3、爬虫部分选用更好地爬虫器(crawler4j),已经开始在做(之前的26小时爬到30多个网页真的不行,还爱死循环)。

  4、建立一个前端网页,控制程序的开始,查看进度。

 

  我们考虑过时间是否充裕的问题,也是因为考虑到时间,我们决定保留原有功能代码,只是在模块划分上更加清晰化,

增强安全性和防御性,还能省下一些时间。之后的几个部分的工作从上周末开始已经在不同进度的挺进了,感觉时间上虽然

不会特别充裕,但是大家努把力还是有希望的。

 

  当当当~所以我只是想把自己负责的这部分模块化后的结果记一下。

数据处理这块大概要分成一下几个模块:

1、源文件和文件去噪合成一个模块,统一为去噪,功能是获取源文件,去噪,返回去噪后的文本信息。

2、分词,统计关键词和翻译也应该合成一个模块,分词的结果直接影响关键词,原本的全文翻译功能摒弃,只需要关键词翻译。

3、展示最终结果在后台程序中就不需要了,可以去掉。

4、手动添加标签的类也可以去掉。

 

除了数据处理,其他方面:

1、主程序需要一个类,统筹各个分功能,其他模块中要实例化主程序,通过方法访问变量。

2、连接到爬虫的模块可以合到主程序中,毕竟只是一个连接,一个函数解决,不需要一个模块。

3、向solr发送数据需要一个模块。

 

具体各个模块的接口定义,就是明天大家一起讨论的结果了,暂且不写了。

 

 

 

(PS,说个题外话,其实在写博客这块,我属于内向型,之前不怎么用博客,也不习惯把自己的

过程性总结发布出来,今天尝试了一下,感觉还好,欢迎来表扬,我是得到表扬才能进步的孩子啊)

 

posted @ 2016-11-08 01:22  崔正龙  阅读(1228)  评论(7编辑  收藏  举报