团队成员: 226 高雅智 164刘浩然;

一 结对编程

辛辛苦苦搞了好久的时间,就是没有人家的快,明明算法都差不多,哎~~~

结对的优势,在于双方互相督促,对于代码能贡献自己的能力,人多力量大,优缺点互补吧。

结对的劣势,在有些时候双方的进度不是很统一,而沟通上又出现了很大问题,导致一度我帮不上忙(不知道帮那里T0T),高哥执行力又强,想到啥就写啥,苦苦追了两三天啊,才拉齐进度。在此我要强调沟通的问题,这个事效率提升的最大问题,人和人间想法经常差的很多。

 

二 团队成员简评:

高雅智:非常有动力,非常积极主动,很早就开始催促着我做项目,我们断断续续做了一周吧,就是遇到困难的时候容易暴躁(我想是因为电梯折磨我们过久的原因)。非常的实干,做出了各种尝试,前中期代码都是他写的,我只是在旁边动嘴皮子。

刘浩然:由于我对C#并不是很熟悉,在开始的时候没有跟上进度,在中后期才渐渐帮上忙,提出了一些优化。我想我在逻辑方面稍微强一些,在将算法实际写成代码的时候有所帮助,在后期的bug更改中也贡献了自己的力量。

三 结对编程照片

 

四 关于Information Hiding, interface design, loose coupling和Design by Contract, Code Contract

  1. 信息隐藏

    这个地方是通过类的封装来实现的,使类有自己的独立的"灵魂",就是模块内部的信息及信息处理,不应该被不需要他们的地方访问到。

  2. 接口设计

    网上关于这个地方的说法很多,本次作业中可以看出,接口一定要清晰明确,我的理解是接口算是程序的骨架吧,清晰定义程序的各个部分,各个成员中的方法和属性等,对我起到了很大帮助。

     

  3. 低耦合

    出错误好维护,减少类之间的牵连关系,通过消息来实现类之间的通讯,不是直接调用其他类中的函数。

  4. 契约编程

    契约是减少大型项目成本的突破性技术。契约由先验条件、后验条件、错误和不变量等概念组成。这个东西怎么都感觉是上学期面向对象中,吴际老师讲的规格一类的东西,上学期已经有了体验,不过就我们本次作业来说,最开始对整个代码的全局并没有深入了解,之后了解的差不多了,边解读边写,东西也都弄得差不多了,并没有利用这个方法。

 

五.代码类图


 

这长的图总让我感觉屏幕不够大!!!!!!!!

 

加上点单元测试的图

由于多数函数都没有返回值….覆盖不是很充分….

 

六.程序理解和算法简析

 

读代码消耗了大量的精力,怎么也不给写个注释和文档呢?!!!说好的养成好习惯呢??!!特别是委托和事件机制的地方,我这种不懂C#的人真的是看的很艰难,希望助教能在明年的课程中给点代码文档和注释,惠及学弟学妹。

好吧,程序的执行过程是这个样子的:

  1. 载入电梯和乘客的配置文件并初始化。
  2. 初始化完毕后,是每秒种执行3至6步,当所有人都到达目标后结束程序,打印统计
  3. 时间和乘客请求时间相同时生成一个外请求。
  4. 请求入列分配电梯
  5. 更新电梯状态:上下电梯,更新当前请求
  6. 将电梯开往目标

我们的算法,是体现在电梯的分配和运行中。在分配方面,会经过计算,选择一个相应时间最快的电梯。在运行过程中,主要体现顺路,会尽量在一个方向上运动,并完成该方向上可完成的所有请求,之后掉头继续。

发现这样做高峰时期非常的慢,我就加上了转电梯的调度,二十个人的测试还是成功了,但1000个人就会非常的慢,可能是我的分配算法有些问题,可是死线在即,来不及好好改了。在此我仅仅说一下转梯的实现,当一个人进入电梯的时候,会看能不能到达他想去的那一层,如果到不了电梯会走到转接层,一般是十层,下电梯的时候会重新生成一个楼层请求,根据这个请求的方向,就可以实现电梯的调度。原理在十层向上只能用0 2 3,向下只能用1 3,而转梯是为了缓解3号压力的,3号人特多的时候转梯才能体现出效率,比如三号到十层的时候负载过大,可以讲人流分解向0 1 2号电梯,减少经停时间,我这里的调度就没有实现好导致跑p2 p3的时候会卡死,bug还没有调出来,作业就要交了。

七.编程过程及结果

    我们先实现了电梯的单独调度,就是讲指令分配给正确的电梯,用到了一个最快相应算法。

    之后我们实现了电梯的顺路,会先执行同方向上所有请求结束后 才会转向,完成另一方向上的请求。

    最后我们实现了被拒绝请求的重新分配,但是不知为何效果非常不理想,总是堆到三号电梯上,导致结果变慢,后来有所优化,但也没快哪去。

20个人跑大概平均每人110个单位时间,Passenger2平均每人大概1000 个单位时间,Passenger3慢很多,大概是1200多单位时间,不知道为啥这么慢….

八.总结

电梯已经折磨了我很久了,特别感谢上学期新主楼的吴际老师,锤炼了我们的意志,锻炼了我们开挖掘机,(⊙o⊙)…不对,是升降机的能力,特别在此次的作业中,去年连续一个月的各种电梯体验给了我们很大帮助。

结对编程的的确确带来了效率上的提升,我是一个很懒的人,但是有队友的催促,我们很早就开始弄,可能因为经验并不充足,最后却没有一个好的结果,本来最开始的雄心勃勃,到后来心灰意冷,怎么都调试都调都很慢的时候,心情真的很不好。到交的前一天晚上我还在写优化,并没有跑通,心情可想而知。回想这一周多的结对编程,虽然提升了代码能力并体会到结对编程的好处,但是我和队友的精神饱受摧残,说多了都是眼泪,就这样吧。

 

 
 

  

结对编程 学习手记ver1.2的更多相关文章

  1. 结对编程学习fault、error、failure三种状态

    点滴成就 学习时间 新编写代码行数 博客量(篇) 学习知识点 第一周 10小时 0 0 了解软件工程 第二周 10小时 0 1 项目开题 第三周 15小时 0 1 开通博客.开展项目调查 第四周 20 ...

  2. 结对编程项目复盘:带UI的小初高数学学习软件

    实现个人项目时,由于我当时的Java GUI编程基础还比较薄弱,所以我选择通过命令行实现,并将编程开发的重点放到了算法效率上去.没能设计出用户体验更佳的UI成为了我在个人项目阶段最大的遗憾. 在这次结 ...

  3. 结对编程——带UI的小初高数学学习软件

    一.简介 本次项目要求: 1.所有功能通过图形化界面操作,可以是桌面应用,可以是网站(编程语言和技术不限): 2.用户注册功能.用户提供手机号码,点击注册将收到一个注册码,用户可使用该注册码完成注册: ...

  4. 结对编程--基于android平台的黄金点游戏

    游戏内容: 阿超的课都是下午两点钟,这时班上不少的同学都昏昏欲睡,为了让大家兴奋起来,阿超让同学玩一个叫“黄金点”的游戏: N个同学(N通常大于10),每人写一个0~100之间的有理数 (不包括0或1 ...

  5. 关于软件工程结对编程作业 PairProject : Elevator Scheduler(电梯调度算法的实现与测试)的总结

    1)结对编程队友 1106xxxx 张扬 1106xxxx 杨军 其中,此项目的编程实现主要由前者完成. 2)关于结对编程 结对编程的优点: 最直接的一点:在结对编程中,由于有另一个人在你身边和你配合 ...

  6. 结对编程—黄金点游戏WinForm单机版

    本小游戏场景来自邹欣老师的<移山之道>一书: "阿超的课都是下午两点钟,这时班上不少的同学都昏昏欲睡,为了让大家兴奋起来,阿超让同学玩一个叫"黄金点"的游戏: ...

  7. 结对编程——关于Fault、Error、Failure程序设计

    一.问题描述:         构造程序,分别是:         •不能触发Fault         •触发Fault,但是不能触发Error         •触发Error,但是不能产生Fai ...

  8. GUI、模块化与结对编程(homework-03)

    摘要: 在本次作业博客里,我将主要阐述作业3的收获.作业3表面是将之前的程序转换为图形界面(之前程序见http://www.cnblogs.com/shone/p/3348372.html),然而本质 ...

  9. 11061160_11061151_Pair Project: Elevator Scheduler软件工程结对编程作业总结

    软件工程结对编程作业总结 11061160  顾泽鹏 11061151  庞梦劼 一.关于结对编程 这次的软工任务既不是单打独斗的个人任务,也不是集思广益的团队项目,而是人数为两人的结对编程.两个人合 ...

随机推荐

  1. 【PAT】B1037 在霍格沃茨找零钱(20 分)

    #include<stdio.h> #include<string.h> #include<algorithm> using namespace std; int ...

  2. Linux系统将http转为https

    想把网站由http访问转变为https访问并没有想象中那么难,网上查了一些资料,想要转为https需要SSL安全证书,这里推荐一款景安网络的证书,可以免费试用一年时间,自己拿来实践还是很不错的选择. ...

  3. ASP.NET WebForm 检测页面刷新(Refresh)

    本文是翻译贴, 原文参见Detecting browser 'Refresh' from Code behind in C# 浏览器的"刷新"常会导致问题, 特别是当页面和数据库有 ...

  4. 解决 Mac 突然没有声音

    前言 偶尔早上上班时发现Mac突然没有声音了,不明所以.虽然重启也可以,但是也不免太麻烦了.也许是人品不太好,遇到过多次这种情况,就在快要砸了的自己mac的时候,脑中灵光一闪,难道这是因为核心音频守护 ...

  5. JVM的新生代、老年代、MinorGC、MajorGC

    参考资料: http://blog.csdn.net/flamezyg/article/details/44673951 http://www.blogjava.net/ldwblog/archive ...

  6. luogu P5151 HKE与他的小朋友

    嘟嘟嘟 看到\(i\)变成了\(A_i\),我突然想起了置换这个东西.于是马上到网上学了一遍轮换乘法. 手模后发现轮换乘法满足结合律,但不满足交换律. 于是就可以快速幂啦. 需要注意的是每一次相乘是\ ...

  7. WIN10安装时msxml4.0提示2502、2503解决办法

    原文地址:https://jingyan.baidu.com/album/b87fe19e54535552183568f5.html?picindex=1 在Win10中,在安装msi安装包的时候常常 ...

  8. mysql 创建 mb4 字符集数据库

    create database sina default character set utf8mb4 collate utf8mb4_unicode_ci; show variables like ' ...

  9. 双目SLAM(1) 总配置

    kitti 数据集   图像+相机参数 sgbm gpu     算深度 cuda sifi       算匹配点 rabsac         随机筛选 1)CUDA配置(自己配置)8.0 参考网页 ...

  10. shell编程之测试和判断

    一.测试 程序运行中经常需要根据实际情况来运行特定的命令或代码段.比如判断某个文件或目录是否存在,如果文件或目录不存在,可能首先创建文件或目录.举例说,要判断文件/var/log/mlocate文件是 ...