0、结对人员

  Hu(155) Tan(189)

1、关于结对编程

  优点:coder的大部分错误可以在第一时间被reviewer发现,这省下了很多本应当在项目测试阶段花费的时间;

       结对编程写出的每一个程序都体现了两个组员中的较高水平;

两个人轮流交换角色开发项目,加快项目进展速度;

两个人结对开发的过程就是两个人互相学习进步的过程。

  缺点:有时候reviewer会整段时间处于无事可做的状态;

增加了意见统一成本。

  Tan的优缺点:(优)接受新事物的能力强,在很短时间内理解了项目的基本框架;(优)算法设计水平高;(优)有追求卓越的精神,最终定下的版本是在最初版本的基础上进行了N次修改得到的,最后的平均花费时间仅仅是第一个版本的1/5;(缺)编程风格还是继续延续面向程序的。

  Hu的优缺点:(优)算法水平还算过得去;(优)思维严谨,查错能力还算过得去;(优)和Tan大神的影响下追求卓越的精神还算过得去;(缺)开发大项目的经验不足,框架看了很久没。

(附上结对照片)

2、ASE的设计方法

  信息隐蔽:类的成员变量的可见性统一成private,并设计相应的属性。

  接口设计:设计接口是尽量细化,功能追去单一,不要设计功能臃肿的接口方法。

  松散耦合:在一个系统中使各组件在最小的可行范围内彼此依赖,尽量限制类和类之间互相连接。

  契约式设计:在调用方法前保证初始条件的正确性。

3、单元测试

4、UML类图

5、电梯调度的算法  

  先描述一下bus的算法,无视需求,每层依次停。

  首先,我们分析了一下这个算法,这个算法很显然可以保证将每个人送到,但效率很低。

  bus算法效率低的原因在于停了很多不需要停的楼层。

  按照我们平常乘坐电梯的思想,很容易想到是哪一层按了电梯,电梯就去哪层,并不停中间层的。

  这样,我们只需要记录电梯需要去哪层,把电梯派过去就可以了。

  考虑两个变量,电梯、楼层。可以说这是一个二维的模型。由于二维模型处理比较麻烦。退化为两个一维。

(1)每个elev查找最适合的req

  (2)每个req查找最适合的elev(离它最近的一个elev)

  由于总感觉(2)有点问题,并结合编码,我们选择的方案(1)

  对于方案(1),何为最适合的req呢

  如果电梯处于运行状态,则查找电梯当时位置与要去的位置时,是否有人要进电梯,如果有,顺路把那人带上

如果电梯处于停止状态,则按如下顺序查找(在楼下往下走的,在楼下往上走的,在楼上往上走的,在楼上往下走的)

  至于为什么是这个顺序,多次实践得到的结果

  最后,有个小优化,即电梯空闲体重小于100,就视为超重,不停了

  至于为什么是这个数,也是多次实践得到的结果

  对于如何实现这个算法,我们存储了两个信息

  _wait记录还没有进去电梯的req

  elevStop[]记录该电梯将要去的楼层

  当电梯处于停止状态时,若elevStop[]不为空,找到elevStop[]中最近的那个楼层去,若elevStop[]为空的时候,在_wait中找到最合适的楼层去

  当电梯处于运行状态时,在_wait中寻找是否可以中途带人,可以的话将该楼层加入elevStop[]中,并将目标改为该楼层

胡仁君 2012/10/22

转载于:https://www.cnblogs.com/hurj/archive/2012/10/22/2733189.html

Pair Project: Elevator Scheduler Report By Hu Renjun相关推荐

  1. Pair Project: API设计 by Xiao Li and Yishi Xing

    Pair Project API设计 本次 Pair Project 的内容是设计一个电梯调度系统. 我们认为一套完整的电梯调度系统应该包括以下三个类: (1)      乘客类 (2)      电 ...

  2. Pair project(刘昊岩11061156 黄明源11061186)

    Pair project members:刘昊岩11061156,黄明源11061186 两周时间,工程下午刚刚结束,现做一些总结. 在现有工程基础上修改schedule 包下方法,主要思想是,也就是 ...

  3. G4Sui老师的pair project(197)

    在做的云里雾里的individual project之后,这次的pair project让我开始找到了一下软件工程的感觉!其中原因除了C#能稍微捯饬明白了,还有就是合作的力量. 本次结对编程进程: 1 ...

  4. Pair Project:电梯控制程序 编写心得 最新版

    (之前不知道这个博客两个人都要写完整的,所以现在补全) 小组:王安然:10061210 李斌:10061150 在这两个星期之中,我与李斌二人组成了一个小组,完成了Pair Project--电梯控制 ...

  5. PAIR PROJECT 总结 PART1 --韦昀

    本次结对编程由我和王熹完成,先发图片 结对编程我们之前从没接触过,关于优缺点书上是这样写的: (1)在开发层次,结对编程能提供更好的设计质量和代码质量,两人合作能有更强的解决问题的能力. (2)对于开 ...

  6. 【转自lzplzp】pair project总结

    pairproject总结和结果 自从1.2后还有几次修改代码的历程 修改的2.0版本: 主要是针对状态机的优化 Idle 遍历当前请求楼层,如果有楼层,则跑过去. 如果该楼层的请求是destinat ...

  7. VS 2005 WEB PROJECT包括Crystal Report水晶报表的发布

    VS 2003的WEB 项目发布没有什么难度,但在VS2003水晶报表的发布却很麻烦,如果你到现在为止还不知道的话,你大可在网上去找下帮助,如果你实在很懒,那你可以联络我,我可以发个安装包给你.注意邮 ...

  8. 电梯调度算法 软工 Pair Project

    软工要求的结对编程,随机分组,然后,我(郭立轩)和六班的闫生辉分在了同一组.之前并不认识,虽然如此,这次结对编程的经历还是相当愉快的,也学到了不少东西. OK,下面进入正文 关于结对编程 如何利用结对 ...

  9. Pair Project

    第二次作业的结对编程项目:电梯调度系统 结对编程小组成员:吴煜10061149    全风楠10061186 这次的作业与个人项目不同,不是从头写一个新的程序,而是在一个已有的程序之上做修改然后实现新 ...

最新文章

  1. Jackson的简单用法
  2. 仿iOS中图标的抖动
  3. JSONProxy - 获取跨域json数据工具
  4. Linux软件安装的几种常见方式介绍
  5. python时间函数报错_Python Day11-LEGB-global-时间函数
  6. Spring和石英:多作业计划服务
  7. 以太坊智能合约 编译脚本
  8. Windows 下OpenGL的基本安装与配置(基于Visual Studio 2019 与 MinGW)
  9. mysql 1698 错误
  10. MFC建立简单绘图板
  11. 2个鸡蛋100层楼--动态规划
  12. 为什么一些linux基础静态库(如libc.a)里面包含那么多目标文件.o呢? 为什么不将这些.o文件进行提前糅合呢?
  13. GITHUB无法打开与下载失败解决方法总结
  14. IWDG和WWDG分析
  15. 美狐美颜SDK动态贴纸代码浅析
  16. 如何将Nginx的版本号隐藏
  17. 局域网中资源共享(FTP)
  18. h5新增标签属性以及api
  19. 一篇学完:王道考研408数据结构(全)
  20. 海投简历无回应?是不是你写简历的方式错了?

热门文章

  1. 【Python学习系列十九】基于scikit-learn库进行特征选择
  2. centos下排查vsftpd出现put零字节问题的记录
  3. 线程的调度、优先级和亲缘性——Windows核心编程学习手札系列之七
  4. Pandas简明教程:一、Pandas简介与安装
  5. Hystrix 熔断器02 —— hystrix 案例之构建
  6. 数组树/fenwicktree/Binary Indexed Tree
  7. [YTU ]_2736指针练习--输出最大值
  8. Kth Largest Element in an Array
  9. 注视点估计(二维法)
  10. java菜单栏的功能怎么被关闭_【求助帖】 菜单栏的监听问题