软件工程双人项目总结——夏睿&张静

软件工程双人项目终于完工了,回首过去的一个多星期,紧张忙碌中也学到了很多知识。不仅仅熟悉了Silverlight编程的相关技能,同时也了解了团队项目中协作分工的方法。

我们的双人项目是基于微软学术搜索的Academic Map的一个工程。目标是为其增加一些新功能。具体来说,我组的任务是下面两个:

  1. 精简组织:由于组织众多,全部显示在地图,会显得很杂乱。因此,我组想到了可以在界面中增加一个密度调节工具,让用户选择显示组织的多少。 
     
  2. 作者详情:在浏览一个组织内部的众多作者时,当鼠标悬停在作者的照片上,可以显示作者的详细信息,如专业领域、相关作者等。 

下面具体阐述两个任务的细节。

精简组织

一开始的想法是根据组织的规模大小,选择性显示其中实力较强的一部分。后来发现这种做法很难达到预期的显示效果,因为组织并非均匀分布,随机去掉组织对聚集区域的密度几乎没有影响。因此,精简需要基于组织的地理位置。

基于此,我们将问题形式化如下:设组织的集合为V,对于给定的正数d,我们需要给出V的一个子集W,使得W中任意两个元素v1和v2之间的距离大于d,并且不存在V的子集W’,W’真包含W,且W’也满足条件。要想精确地得出这个问题的结果,最简单的算法就是把所有的组织对一一取出,比较大小。这需要N^2的时间复杂度,效率太低不予采用。为了提高效率,我们首先对问题进行了简化:其一,d只能取有限种值:1/2^k, k=0, 1, …, K(设地图的长和宽都是1);其二,所有的组织也只分布在坐标为(p/2^K, q/2^K)(p, q均为整数)的位置。这里的K表征了地图的细节程度,越大则近似与真实越接近。于是,我们便可以用四叉树的数据结构来存储组织的信息。根据所需显示的密度和地图的比例尺来决定显示到四叉树中哪一层的组织。

这个任务我们将它分为2个部分:

  1. 四叉树数据结构和基本操作:四叉树的建立、存储、查询等操作;
  2. 界面设计和用户事件处理:在主界面上添加一个滑块控制显示密度,并对用户的拖动、缩放等操作进行相应的处理。

作者详情

为了让用户在使用学术地图时,更方便快捷地获取作者相关信息,我们在作者信息的提示框中加入了作者的研究领域、相关作者信息。此任务也可分为两个主要部分:

  1. 网络数据发送接收:通过学术搜索的API发送所需的研究领域、相关作者信息的搜索请求,用JSON解析器解析收到的结果; 

  2. 界面显示:在提示框中加入相关的文本块,并将文本块的属性绑定到一个可供操作的变量,提供与网络数据通讯的接口。

     

成果展示

  1. 通过拖动滑块和放大缩小来改变显示的组织的多少

    此为改变密度滑块时,显示的不同结果


    此为放大地图时,显示的更详细的结果
  2. 作者详细信息,左图为正常状态,右图为鼠标经过状态。相关作者的链接可以点击,直接跳转到相应的作者的页面。 为了使下方的作者详情得以显示,可以按住鼠标右键拖动提示框。

     

时间估计

整个项目预估的时间基本和实际完成时间相差不大,check-in时和别组的工作结合时,花费了不少时间处理兼容性的问题。例如唐傲和林榕程增加的显示会议功能,就使得我组的精简组织功能需要同样能用于精简会议。

Task

Estimate time

Actual time

Get familiar with code and framework

2 days

3 days

Task 1: Algorithm

2 days

2 days (actually, 1 morning for quad-tree)

Task 1: UI

1 day

1 night

Task 2: Web client

1 day

1 night

Task 2: UI

1 day

1.5 days

Fix bugs & compatible issues

1 day

2 day

 

项目感想

双人项目的好处,我认为主要有两点:一是编程之前设计初期,两个人相互讨论,可以使想法更完善更全面;二是,在编程过程中,一人写一人检查,有助于提高代码的可靠性,一个人可能会由于疏忽大意写错一些代码,增加后期调试的工作量。例如我们的四叉树的基本操作部分,基本未经修改就可以直接使用了。不过,双人项目也有其弊端,在调试中遇到问题时,两个人只能盯着一个屏幕,去解决一个问题,影响了调试的效率。我认为双人编程更适宜在开发代码过程,而不是调试阶段运用。

互评

To 张静:你在这次双人项目中,提出了很多创造性的想法,能够耐心地读程序的代码,仔细地研究算法,精神可贵,值得我们去学习。唯一需要提高的是增加对计算机专业基础知识的了解,可能这对数学专业的你来说,要求高了点,但既然来到微软,还是应该逐渐积累一些计算机的基础,对不?相信经过这一年的学习和锻炼,你的计算机专业知识一定能更上一层楼,加油!

We are working

Written by 夏睿

posted @ 2011-08-27 21:50  OMG! 日记  阅读(1523)  评论(0编辑  收藏  举报