软件工程双人项目终于完工了,回首过去的一个多星期,紧张忙碌中也学到了很多知识。不仅仅熟悉了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 夏睿

转载于:https://www.cnblogs.com/OMG-Team/archive/2011/08/27/2155799.html

软件工程双人项目总结——夏睿张静相关推荐

  1. MPB:北林张静等-丛枝菌根真菌(AMF)孢子、菌丝密度及侵染率定量测定方法

    为进一步提高<微生物组实验手册>稿件质量,本项目新增大众评审环节.文章在通过同行评审后,采用公众号推送方式分享全文,任何人均可在线提交修改意见.公众号格式显示略有问题,建议电脑端点击文末阅 ...

  2. 实验三 软件工程结对项目

    Deadline:2018-4-4 10:00,以博客发表日期为准 评分标准: 按时交 - 有分(满分30分,代码和博客各15分),检查项目包括: -  未提交项目源码到Github上,代码部分不得分 ...

  3. 软件工程结对项目--实用计算器的设计和制作

    一.题目简介 题目:软件工程结对项目--实用计算器的设计和制作 简介:计算器是人们生活中经常使用的一种工具,已经可以说是人们日常生活中必不可少的工具了.本次实验我们设计并实现了一款基于Android系 ...

  4. ACL国际计算机语言协会2019,我校夏睿团队获得自然语言处理国际顶级会议ACL2019杰出论文奖...

    7月29日至31日,在意大利佛罗伦萨召开的第57届国际计算语言学年会(ACL2019)上,来自我校计算机科学与工程学院青年教授夏睿及其博士研究生丁子祥合著的论文"Emotion-Cause ...

  5. 青源 LIVE 第21期|中国人民大学张静:知识图谱的神经符号推理

    知识图谱可以看做是知识的一种离散符号表示,基于知识图谱的符号推理可以较为精准地定位答案.然而,符号推理对于语言的歧义性和噪声数据不够鲁棒.相反,深度学习的发展推动了知识图谱的神经推理方法,能够弥补符号 ...

  6. 地大计算机学院教授,张静(地大教授)

    自1999年以来,一直围绕矿床成矿流体和区域成矿学的这一主题,进行了系统的研究工作,具有较好的成矿学研究背景.对秦岭地区.西南三江.长江中下游等地区的金.银等多金属矿床开展过野外调查和较深入的理论研究 ...

  7. 软件工程个人项目——买书的最低价格

    软件工程个人项目--买书的最低价格 题目要求: 书店针对<哈利波特>系列书籍进行促销活动,一共5卷,用编号0.1.2.3.4表示,单独一卷售价8元, 具体折扣如下所示: 本数        ...

  8. 大三软件工程小项目-小技术集合总结

    大三软件工程小项目-小技术集 此篇文章是给出了此小项目用到的技术的总结: 方便自己有忘记的知识点后方便查阅. 也方便有需要的博友看. 下面是各个计算的链接 大家点击了进能进去 大三软件工程小项目-小技 ...

  9. 计算机二级制作简历张静,张静的简历值30分!其他都不是问题

    今天我们来说说张静这个神秘的女人, 这么优秀的女同学,找不到工作-- 我想,这原因应该归于 她都做不出一份带有smartart图形的简历吧 也许你不相信 自己有一天可以暴富 但是这不妨碍 先定一个小目 ...

最新文章

  1. oracle log block size,案例:Oracle无法启动报错ORA-00218: block size 0 重建控制文件
  2. VTK:多重渲染窗口用法实战
  3. 【Go API 开发实战 3】API 流程和代码结构
  4. fanuc roboguide_FANUC机器人虚拟仿真教程:Roboguide弧焊仿真工作站工装添加
  5. php读这文件速度,php 测试硬盘读写-php 测试硬盘写速率
  6. 使用webpack打包ThinkPHP的资源文件
  7. 安装Hyper-v Server 2016
  8. 获取Resources文件下图片的精灵格式
  9. 博客也是网络赚钱的有利工具
  10. 555低电平出发定时器
  11. python+django酒店客房餐饮管理系统vue源码
  12. 郑码输入法 字根记忆表 一般根变通处理
  13. 『Java安全』反序列化-浅析Hessian反序列化POP链
  14. mysql expire_mysql expire_logs_days是怎么生效的
  15. java游戏怎么导入jme3,java - JME:将带有纹理的Cinema 4d模型导入jMonkey Projekt - 堆栈内存溢出...
  16. 信息化系统要如何选型?
  17. android酷狗缓存目录,酷狗缓存的歌曲在哪个文件夹_酷狗音乐缓存的歌曲在电脑哪个目录-win7之家...
  18. struct timeval用法与时间溢出问题
  19. JSONObject 的清除
  20. C语言萌新写题第四天

热门文章

  1. 紧急求助,各位大神看看这个ADC采集电路是什么问题?
  2. PHP自定义字段设置,实例演示如何为Z-BlogPHP添加自定义字段
  3. 计算机的网络在哪设置,如何设置调出网络图标
  4. 计算机广播状态下操作,二,操作题:1
  5. 23年电赛控制类笔记
  6. vue中的input使用e.target.value赋值的问题
  7. 华为申请“仓颉语言”商标,开发编程语言实锤?
  8. R:GAM非线性回归曲线拟合与散点密度图绘制
  9. 手撸一个一起看电影应用-3-Vue前端信息收发
  10. 牛顿拉夫逊PQ节点法c语言编程,牛顿拉夫逊介绍(原理、计算方法、程序)..doc