小怪兽日记(一)

3月11日一个历经千辛万苦,经历九九八十一难的小怪兽诞生了,在这样一个欢腾的日子里,小怪兽决定做一个项目来犒劳下自己的诞生。

这个项目就是一个在线的结对编程的平台,因为小怪兽觉得他需要另一半来协同编程。

 

一、结对编程

 

首先我们来看一下定义:

“结对编程技术是指两位程序员肩并肩地坐在同一台电脑前合作完成同一个设计、同一个算法、同一段代码或同一组测试。”这个编程的方式,恩,不错一个人写一个人指手画脚么???

事实上,所谓的“指手画脚”并不是添乱,这种方式我们在多次大作业中已经多次使用了。我们在两个人同时写一段代码时,特别容易发现程序出现的小BUG,以及对系统数据结构认识的混淆之处,能够使得代码结构更加清晰,有效,又能够使其可读性大大加强。

结对编程要考虑的问题主要还是来源于两位程序员之间的问题,他们关系是否融洽,性格是否合得来,coding水平是否一样,工作时间能否一致?这些问题都在考虑的范围之内,这些问题解决得好与坏,直接关系到最后结对编程的效率问题。

所以说,结对编程是一把双刃剑,用好了事半功倍,用不好事倍功半。我们的平台需要做的就是尽可能的让用户体验舒适,便捷,双方和谐沟通,创造和谐社会。

二、对现有产品的分析

我们分析了codeinterview协作编程平台,在这个平台上,用户被授予不同的权限。权限分两种:读和写。拥有“读”权限的用户可以实时看到“写”用户对白板的操作结果。

主要有以下几点:

1.      我们发现,系统并不是每时每刻都在对“读”用户的界面进行更新,而是在白板被修改一部分后间歇性地更新,结合代码的特性,我们认为在产品中以行为单位进行更新是一个可用的选择。

2.      系统延迟是一个很重要的问题。Codeinterview有时的延迟会花费大量的时间。这也会使我们面临的难题。

3.      在多个“写”用户同时在对白板进行编辑时,这个协作平台并没有对多个版本进行更新,而是将不同的版本原封不动地发给“读”用户。这样的结果很letus down. 我们认为没有整合代码的功能会给协作编程大打折扣。所以我们将把重点放在整合代码上,具体内容将在随后阐述。

实际上,这个平台让我们感觉到,他是一个结对编程的工具,他能够提供一个人编写一个人阅读的功能,但是他不支持两个人同时编辑,也就是说他不需要解决冲突的问题。

三、需求分析

首先这个平台的想法,应该是为了拉近程序员的距离,使得结对编程的地理限制变得可以忽略,我们的系统需要以下几个方面的需求:

1、  网页模式,提供一个codingarea。支持多人编辑,处理好同步与冲突的问题。

2、  Codingarea的美观性,友好性。

3、  Codingarea的在线编译功能

4、  用户管理模块,好友,邀请等

5、  多人聊天,及语音聊天区域

难点:

服务器推送模式!!!

语音聊天问题!!!

编译器!!!

 

四、系统架构选择

 

我们的语言选择很早就定下来,使用java作为最基本的开发语言。

数据库的选择sqlserver和mysql都行 。

我们分析了很多完成网页服务器推送的机制:

这里最主要的就是ajax与rmi+applet这两种机制

Ajax:

据我们现在的了解,就是一个网页轮询的机制,网页定时的向服务器请求一个数据,服务器实际上是被动的给网页刷新,这样的机制也是我们最容易理解的。

百度一下,遍地都是解释,我们就不赘述了。反正这样的结构,服务器太累了。

粗略的ajax方案:采用js的window.setInterval()或者setTimeout()+XMLHttpRequest应该可以实现定时从服务期端取一定的数据!

Rmi+applet:

我们最终决定选择这样一个模式来完成我们的作品,因为这个java包中封装了通信的协议,能够在网页上完成动态的消息推送,利用applet的小程序使得网页中的codingarea更像是一个软件在电脑上跑。

这个我们小组还在学习当中,越看一些文章越发的觉得每个人的理解都不一样了,所以需要下一次会议。

其他的框架结构,例如python、JS、ruby、.net我们就不描述了,网上到处都是

同时还有一种服务器长连接的方案,这个也就不考虑了,服务器受不了的。

我们需要考虑的问题:

1、  究竟如何具体实现,我们需要先使用小程序来验证

2、  服务器的承受能力

五、团队管理

我们已经在trello中注册了我们的小组,使用svn进行代码的管理,据组内人员表示,要常常备份,有svn被用坏的血淋淋的教训,我们小组的目标就是要打倒奥特曼,我们小组的英文名:Tiny—Monster,具体的团队分工还需要开会细分。

六、目前具体任务

目前是学习阶段:

Java网页制作的学习,applet的学习,rmi的学习

下一次会议的时候,每两个人一组分享自己的资料与体会,让全组的小怪兽们了解我们要做什么,实现的具体的思路。

Svn的建立,trello上多多交流,组内聚餐!

开始对方案的可行性进行检验,写一点小程序来验证性能,以及功能。

分工:这个不能写得太具体,本组根据我们做的项目的理念,全部采用结对编程的思想,1个人的任务也会有其他人在旁边观看。

数据库的构造设计 1人

语音聊天 2人实现

Coding area  3-4人设计编写

        全组进行思考完善

界面设计 1人

用户管理系统 1人

七、想法

结对编程是否需要两边同时可编辑,还是加锁只允许一个人编辑,这个要求明显有违常理,就像如果我们两个人同时按键盘编程,很明显会混乱,也没有意义。

(当然忽略某些秀恩爱的,喜欢一人敲一个字母组成一句话的)

代码逐个字看是没有意义的,为何不能逐行提交,一行一行的看明显很合理,所以关于我们的冲突机制,我们还在寻求一个更好的解决方案。

所以敬请关注,小怪兽日记(二)。

因为现在小怪兽要睡觉了。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值