学术搜索地图中机构自动展示-----------吴岳
<软件工程双人项目总结/>
经过9天的努力,我和陈晓萌终于完成了软件工程双人项目的任务,一路汗水,几多纠结,9天的努力最后化作几分钟匆匆的展示,却没有发现期待已久的欣喜。
工程介绍
我们这次的任务是要实现全球研究机构简要信息的自动展示,具体来说包括以下两个方面:
- 设计一个友好的用户界面来展示机构信息,包括:
(1)友好简洁的用户界面
(2) 合理的内容布局
(3)充分的机构信息
(4)简单的事件触发方式,比如开始暂停等等
- 获取需要展示的机构信息,比如机构的名称,图片,简介,机构主页,机构的维基百科主页,最新的论文,论文作者,论文下载链接等等。
(1)机构名称
(2) 机构代表性图片,如logo,建筑等等
(3)机构的主页链接和维基百科链接
(4)最新的论文,论文作者,论文下载链接等等
经过详细的计划安排,我们绘制出了以下任务明细图(WBS)和时间规划:
由于设计界面这种任务不像处理数据那样有一个明确的完成与未完成,而是一个不断可以优化的过程,所以我们在时间安排上没有十分精细。同时我们也感觉到,作为理工科的忠实子弟,美感这种东西可以欣赏却很难把玩,耗时却只能看到很少,甚至很简单的结果。真正界面的设计其实只需要很少的时间就可以完成,尤其是在silverlight开发平台下,一个MFC时代让人惊叹的动画效果在这里只需要几行简单直观的xaml代码就可以完成。
上图使我们最终的时间分布,调试时间被计划的太少,主要是因为我们的工作需要与其他界面设计任务很好的磨合,既要保证自身的正确性,又不能影响到其它组的结果。
经过两个人的讨论,我们的UI采用了由小变大,透明度逐渐减小的动画展现方式,当用户点击屏幕上的开始按钮时,切换到自动展示模式,全球前100顶尖研究结构将被依次展现到用户面前,下图是动画结束以后的效果:
界面中,标题“Chinese Academy of Sciences” 可以链接到中科院的主页,单击图片右边文字介绍可以链接到维基百科获取最新的信息。发表论文栏中的detail可以帮助用户方便的下载论文。
也许很难相信这么简单的一个界面我们竟然做了9天的时间。在刚开始的两天时间里,我和晓萌同学花了很多时间在silverlight的学习和界面设计的讨论上。事实证明,审美这种东西比技术更难让人信服。另个人的协商的结果可以得出一个明确的结论,同时也会让两个人都有些遗憾,当然这其中一部分的原因是为了迎合双人合作的需要,其实我个人更愿意把设计的东西让一个人做,另外一个人或征求多人来对做出的结果提出改进意见,这也是我们在界面设计的后期及时采取的方案。这里要感谢张宁同学提出的建议,建议本身对改进界面质量的作用不说,更重要的是,它在一定程度上帮助了我们做出决断,而不是时间上的消磨。
另外占很大一部分权重的就是数据的获取了。关于图片和简介的获取可以参考我的另外一篇博客:从WikiPedia挖掘数据,其中对我们从维基百科挖取数据做了一个基本介绍。选择维基百科是因为维基百科上的内容一则比较全面,二则不同机构的内容结构基本相同,方便提取,三则维基百科上的信息比较客观,用户认可度高。我们将获取到的信息存储在一个excel文件中,最后导入到工程。之所以选择excel文件是因为对excel的操作十分方便,而且可以方便的添加和删除信息,后来展示的时候出了一点小问题,由于服务器上没有安装office,数据不能读取,难免有些遗憾。
图片获取到以后的处理也是一个很纠结的过程。目前silverlight 4是不支持SVG格式图片的,而维基百科上的很多图片偏偏就是SVG格式,由此导致的直接够过就是我们必须要把图片下载下来,进行格式转换,再添加到工程里作为工程的一部分,幸亏只是展示100个机构,要不然这个工程就显得有些滑稽了。其实我们的本意是只存储图片在网络上的地址,用户可以实时的获取,一个图片格式的问题却大费周折。听闻silverlight 5 是支持SVG图片的,这确实是一个令人振奋的消息。相对于传统格式的图片,矢量图片可以用更小的空间占用获得更好的用户体验,在数据量急剧膨胀的今天,矢量图片极有可能成为未来图片格式的一支劲旅。
而对于机构最新发表论文的获取则利用了微软学术搜索的API。
然后谈一谈第一次双人合作的感受吧。首先必须得承认这是一次不同寻常的体验,但不等于说双人合作只要两个人足够默契就可以事半功倍。
Benefits:
- 双人合作时,我们可以写出更加规范的代码,而不是像一个人写的时候那么随意,这对于代码的维护是至关重要的。
- 两个人一起写代码确实可以大大减少一些很幼稚的错误。人时不可能像机器一样按照一个规则运转而不轻易出错的,有时候一个小小的分神导致的小小的错误可能需要几日几夜的调试来弥补。有另外一个人的把关可以大大减少这种悲剧的发生。
- 当碰到一些比较纠结的问题时,有个人讨论是一件很幸福的事情。有好几次都是我和晓萌陷入了死结,然后她在阐述想法的时候,我灵光突闪,问题轻松搞定!
Not Beneficial All The Time:
有些时候,我们需要冷静的思考。讨论是提高效率很有效的一种方法,但讨论有一个前提,就是参与者一定要有自己的想法,而这种想法的建立往往是一个人在一个很安静的环境中思考出来的。从这个角度说,双人合作并不一定说写代码一定要再一起。我们需要一些自己的时间自己的空间去尝试一下自己的思路,要不然就显得有些古板而拘泥不化。
还有就是前面提到的界面设计这种东西,我还是觉得像我们这种理工科的江湖儿女,像解决技术问题一样解决美感这种东西,可行性是有的,就是两个人的审美趣味相仿,不过这貌似是个随机事件,概率还挺小的。
We are working together:
晓萌同学作为6系的大牛在这次合作中表现出来的智慧让我十分惊叹,很多创造性的思路让我茅塞顿开。不过嘛,随着进度的推进,我越来越感觉到我在掌握这这个任务更多的主动权,其实我还是希望两个人都能够充分参与其中,共同主导这个任务。如果这样的话,我们的任务一定会more creative!