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

OK,下面进入正文

关于结对编程

如何利用结对编程解决问题

我以为,结对编程的精髓在于沟通和监督。所谓沟通,就是结对的两个人能够对所遇到的问题提出想法,并和另一个人去讨论,从而达到一个取其精华,取其糟粕的效果,程序也就会比一个人在写会更好。所谓监督,其实可以说是一种长时间的相互勉励以及警醒,可以让一些在一个人编程时容易出现的问题,比如错字、分心等,几率降低,保证代码的质量,也会让人能够保持一种高昂的精神状态。

我和我的partner在一起编程时,是可以比较明显的感觉出结对编程和两个人分别编程的差别的。最明显的就是,结对编程时,有人在旁监督,错误率要下降好多,对自己的代码的要求也更加严格。同时,通过对一些细节问题的探讨,也让程序更棒。

下面是我在这次结对编程体验中的一些总结

对于结对编程

好处是:
1,两个人商量,更容易想到好的算法
2,两个人轮换编程,可以减少编程带来的疲劳感
3,分工合作,编码者专注于编码,导航者专注于分析与设计,保证代码的高质量

缺点是:两个人观点不一时,需要时间去相互说服,而且又是还不一定能说服,这就需要各自去证明自己的观点的正确性,可能造成两人之间的冲突(当然,如果没有冲突,这一点可以算作是优点。。)。而且若两个人不熟悉,沟通相对来说比较困难。

结对编程中,对两个人的评价

呃,这个评价是自己在结对编程的过程中,亲身得出的体验,以及两个人对自己的评价综合了一下。。

我自己:
优点
  1,有一定的编码能力
  2,容易沟通,易于相处
  3,能够提出经过自己思考的想法,并充分交流
缺点:有时过于固执,敲代码是经常敲错,不善于和

闫生辉:

优点
  1,勤学好问
  2,容易沟通,易于相处(呃,其实感觉在学校里,同学之间都没问题。就是不知道公司里,还是不是所有人都是容易沟通,易于相处)
  3,能够独立思考(这一点是相当重要的一点,一个好的程序,必然需要经过程序员自己的独立思考)
缺点:编码能力相对欠缺(在校大学生的编码能立存在普遍问题,这不仅仅是学生个人的问题,也是教育本身的问题)

关于电梯调度算法

模仿现实的电梯调度算法,“请求”驱动

具体来说,对于请求队列,依次处理每一个请求。对于一个请求,如果是电梯外的请求(Direction Request)计算出可以响应该请求的并且能够最快到达该请求发起的楼层的那部电梯,将楼层号加入到电梯的处理队列。请求队列处理之后,遍历所有电梯,若电梯已经完成所有的请求,根据是否为上班高峰期,调度电梯至1层。

一些算法细节

判断是否为上班高峰期

if countReq / (double) courntReqFrom01 > CUT_LINE:peek()
else:not_peek()

寻找最佳电梯

在为每个请求寻找最佳电梯时,需要满足如下条件

(elev.HistoryDirection == Dirction.No || req.UpDown == elev.HistoryDirection && req.UpDown == elev.CurrentStatus.CurrentDirection) &&
elev.FreeCapacity >= MAX_WEIGHT

才有资格成为该请求的最佳电梯的候选电梯,之后再判断哪部电梯能够最快到达请求发起楼层

一些参数的设定

在算法整体写出来之后,还需要设定一些参数,以优化电梯的调度速度。下面是两个重要的参数

CUT_LINE = 0.5; // 是够为高峰期的判断界限
MAX_WEIGHT = 120; // 这个名字起得不好。。当电梯剩余空间小于MAX_WEIGHT时,电梯不响应DirectioReq
FLOOR_TO = 1; // 这个是电梯在没有请求时,自动返回的楼层。取1时,性能优于取0时大约60%。。

关于电梯调度框架

下面为UML类图,由VS2012自动生成,去掉了不重要的部分,以便容易的看出主要操作的类之间的关系

对于这个框架,其实我是相当的不爽的。。哪个家伙写的代码,连注释都没有!!!还弄了那么多的接口!不过,写完之后发现,其实这个框架写的还是有许多地方值得我去学习的。。以我现在的水平看来,它的某些地方封装的确实不错,很有OO的感觉,不过,还有一些地方就感觉那么的不舒服,那么的匪夷所思,也不知道是自己的水平不行还是怎么的。。还有就是,代码的副作用,这个应该是这类语言特色吧,没有文档和注释,就得小心这个坑了。。还有就是,没有注释没有文档的代码,shit!

转载于:https://www.cnblogs.com/iEverX/archive/2012/10/22/pair-project-elevator-scheduler.html

电梯调度算法 软工 Pair Project相关推荐

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

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

  2. 「BUAA SE Pair Programming Work」软工结对编程博客

    「BUAA SE Pair Programming Work」软工结对编程博客 Part 1 前言 项目 内容 这个作业属于哪个课程 2023年北航敏捷软件工程 这个作业的要求在哪里 结对项目-最长英 ...

  3. G4Sui老师的pair project(197)

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

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

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

  5. 软工课程之我思我收获

    <软件工程>这门课像我们的诤友,不断督促我们前进,又不断指引我们收获.时间飞逝,我一个个完成了课程中的所有任务,一步步走到了期末年末.走的远了,也该回头看看.回顾于此: 一个学期的软件工程 ...

  6. 福大软工1816 · 第一次作业 - 准备

    福大软工1816 · 第一次作业 - 准备 期待→迷茫→恐惧→振作or放弃? 前言:个人情况概述 虽然长辈都说我是个聪明的孩子,但我觉得也许那只是客套话-- 还记得从小学时我的成绩仅处于中游偏下,初中 ...

  7. 2018软工实践第二次作业

    Github项目地址:https://github.com/Professorchen/personal-project 1. 写在前面 刚看到作业的时候我的心情如图,十分后悔没有退了这门实践选修课. ...

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

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

  9. [北航软工]第二次团队作业

    [BUAA软工]第二次团队作业 Part 1 项目说明 1. 简介 项目名称:语音coding助手(暂定) 说明: 实现一个android app, 通过语音输入来写python代码,和android ...

最新文章

  1. 成功人士不用睡觉吗?
  2. 1. nginx扩展——ngx_lua 模块简介、安装
  3. 搭建微服务器:express+https+api代理
  4. openMP 并行编程 基础
  5. ASP.NET MVC雕虫小技 1-2
  6. 18、INSERT:插入数据(添加数据)
  7. C语言在计算机专业的功能,C语言程序设计在高职院校计算机专业教学中重要作用.pdf...
  8. vgc机器人编程1到13题_工业机器人编程与实操-期末试题
  9. centos7配置IP地址CentOS7 修改hostname,ip地址以及hosts(永久生效)
  10. 【堆】这是要搞事情啊——取出
  11. flink的operator state简单理解
  12. AJAX with JSP and Servlet(代码)
  13. Docker学习总结之docker入门(转自:Vikings翻译)
  14. [PHP] PHP源码中的条件编译定义
  15. java输入法中手写文字的识别_在线手写识别
  16. 单片机 取模软件:字模提取v2.1、PCtoLCD下载
  17. down mark 打钩_Markdown 基本语法
  18. 01_测试基础知识---微信公众号测试点
  19. 查询局域网内在线电脑IP地址
  20. 6种电脑录屏工具,免费在线,桌面端Windows和Mac均适用

热门文章

  1. 初面蚂蚁金服,java微积分第三方计算包
  2. 全网最经典26道Spring面试题总结,终获offer
  3. 不同层级的Java开发者的不同行为
  4. 【Java Web开发指南】Mybatis 中的延迟加载
  5. python【力扣LeetCode算法题库】18-四数之和
  6. matlab zeros(12 1),Matlab中  函数zeroS(1,8) 代表什么意思??
  7. eix安装_Windwos U盘PE制作与系统安装
  8. 电脑服务器信息,电脑服务器怎么看模块信息
  9. LINUX下UDP实现消息镜像通信,linux环境下基于udp socket简单聊天通信
  10. # 对象json互相转换_推荐一款 Java 对象映射神器