结对编程人员

  12061153  刘丽萍

  12061154  冯飘飘

说明结对编程的优点和缺点。

  结对编程的优点:

  以前都是自己一个人编程,对于相互结对或者团队编程都没有接触过。而自己在写代码时不可避免的会出现小错误,有时是打字错误,有时候是算法并没有完全用代码展现完整,而结对编程刚好实现了这种“两个程序员并排坐在一台电脑前,面对同一个显示器,使用同一个键盘,同一个鼠标一起工作。他们一起分析,一起设计,一起写测试用例,一起编码,一起单元测试,一起集成测试,一起写文档等”的环境,使我们的代码处在不断的复审当中,如果一个写代码的人边思考边写出来的有些许bug,结对的另一个人可以随时提醒他,这样避免了以后查找bug时的繁琐。再者,两个人相互交流自己的想法可以使工程的算法更完善,以一个更好更简便的方式实现,同时两个人在交流过程中得到学习,发现对方思维中的闪光点,可以更好的促进自身的进步。

  结对编程的缺点:

  由于每个人对于代码的理解不一样会造成复审效果的降低,并且两个人的交流也不是编程时时时刻刻都存在,有时会两人不在一块,导致一方不了解另一方的进度,而又要花时间去熟悉。

结对的每一个人的优点和缺点在哪里 (要列出至少三个优点和一个缺点)。

刘丽萍同学的优点:认真负责、思维独特、查bug有一套

      缺点:不太会写代码

冯飘飘同学的优点:能写代码、

      缺点:没耐心,不喜欢查bug

看教科书和其它资料中关于 Information Hiding, interface design, loose coupling 的章节,说明怎样利用这些好的设计方法。

Information Hiding : 类与类之间要相互利用私有变量时用定义的方法去调用获取私有变量,如get和set,可以很方便的访问变量。如这次的电梯调度,类与类之间用接口相互连接,很多信息只能通过接口类访问。

Interface Design : 接口设计是功能的封装,在写程序之前想好接口要实现的全部功能,如果后来用户需求改变了,则可以直接改变实现接口的类。

Loose Coupling : 松耦合,防止两个类之间交互性太强,改动一个会使另一个也有改动,可用接口连接两个类,使改动一个类的代码时不用担心会影响到另一个类。

描述Design by Contract, Code Contract这些做法的优缺点, 说明你是如何把它们融入你的作业中的。

  Contract契约是对Object对象行为的描述表达,也就是说:一个对象的行为方法做到什么样为合适?通过契约来约定是一种主要的设计方法。

  DBC分三种:  
    1.Post-conditions 后置条件postcondition 表示调用一个方法一定会得到的结果。类似断言Assertion,如果语言不支持断言,那么我们就必须自己写断言,也就是测试驱动了。    

    2.Pre-conditions 前置条件precondition ,预先保证后置条件必须满足前置条件。前置条件必须满足,后置条件必须实现,通过契约的前置嗯哼后置条件的结合,就不会出现有隐藏功能的obligations,这样,事情清清楚楚的摆出来,这样设计才能落实为代码。

    3.类不变量class invariant 表示对象状态的断言,执行完任何操作后都都应该被满足,不变量还是对聚合体进行完整性严格定义。

    引用自: http://www.jdon.com/36303

  有点是明确函数功能,充分保证函数实现时的正确性,也保证了代码的正确性和质量。

  缺点是对于程序语言有一定的要求,契约式编程需要一种机制来验证契约的成立与否。而断言显然是最好的选择,但是并不是所有的程序语言都有断言机制。那么强行使用语言进行模仿就势必造成代码的冗余和不可读性的提高。比如.NET4.0以前就没有assert的概念,在4.0后全面引入了契约式编程的概念,使得契约式编程的可用性大大提高了。此外,契约式编程并未被标准化,因此项目之间的定义和修改各不一样,给代码造成很大混乱,这正是很少在实际中看到契约式编程应用的原因。

  写代码时明确函数的功能,确保它传进去的参数需要满足什么条件,执行这个函数后又该满足什么条件,其中的不变式又是怎么写的保证执行完任何操作后都应该被满足,上个学期学习面向对象时吴际老师让我们学习并练习了这方面的内容。

通过截屏显示你是如何用VS 的unit test 来保证你写的类的质量的。显示unit test 对你的写的类(class) 的覆盖率

画出UML 图显示各个实体之间的关系 (画一个图即可)

说明你的算法的关键 (不必列出源代码), 以及独到之处。

  其实算法并没有什么……也没有独到之处。因为刚开始准备写一种比较智能的电梯,好容易写好代码以后,熬夜调了几天给的样例都不能全部跑通,最后实在没有办法了,第二天就是deadline,觉得这种智能型的实在不是我们能够驾驭的了的了。然后就采取了最普通的一种方法:只是在BUS的基础上判断每层是否有人可以进入或者出电梯然后再决定开不开门,给电梯加了一个是否开关门的信号,电梯来回从最高最低楼层之间运行,相较于BUS节约了开门的时间,但是觉得在高峰期这个完全不会有多大影响,但是结果竟然快了不少,也是很令我和我的小伙伴诧异的了……

  BUS

我们的算法

passenger1.xml  217.05             137.55           
passenger2.xml 949.133 447.023
passenger3.xml 1426.373 642.043

Pair Project —— Elevator Scheduler的更多相关文章

  1. 软件工程 --- Pair Project: Elevator Scheduler [电梯调度算法的实现和测试] [附加题]

    软件工程 --- Pair Project: Elevator Scheduler [电梯调度算法的实现和测试] [附加题] 首先,在分组之前,我和室友薛亚杰已经详细阅读了往届学长的博客,认为电梯调度 ...

  2. 软件工程 --- Pair Project: Elevator Scheduler [电梯调度算法的实现和测试]

    软件工程  ---   Pair Project: Elevator Scheduler [电梯调度算法的实现和测试] 说明结对编程的优点和缺点. 结对编程的优点如下: 在独立设计.实现代码的过程中不 ...

  3. Pair Project: Elevator Scheduler [电梯调度算法的实现和测试]

    作业提交时间:10月9日上课前. Design and implement an Elevator Scheduler to aim for both correctness and performa ...

  4. Pair Project: Elevator Scheduler [电梯调度算法的实现和测试]:谢勤政-11061197,吴润凡-11061185

    一,关于结对编程 结对编程的优点: 1)在开发层次,结对编程能提供更好的设计质量和代码质量,两人合作能有更强的解决问题的能力. 2)对开发人员自身来说,结对工作能带来更多的信心,高质量的产出能带来更高 ...

  5. Pair Project: Elevator Scheduler [电梯调度算法的实现和测试]:刘耀先-11061183,罗凡-11061174

    本次为我们两个人的第一次结对编程.从总体而言,我们对结对编程比单人编程略显不适应.但是经过一段时间的磨合,我们逐渐的习惯了这种编程方式. 1.  结对编程的优缺点 结对编程的优点: (1)       ...

  6. Pair Project: Elevator Scheduler [电梯调度算法的实现和测试] --11061188刘强

    结对编程总结 队员:刘强(11061188) 林谋武(11061169) 结对编程: 结对编程的优点: 1.  两个人合作,相比于一个人自己奋斗而言,更能激发自己的潜能:我们在合作过程中,互相学习,互 ...

  7. Pair Project: Elevator Scheduler [电梯调度算法的实现和测试]:思考题——谢勤政11061197

    第一题: 大楼里面的电梯一般分区域,或考虑思考题第四题的情况,运行楼层不一样的电梯属于不同的区域.然后在接口IRequest和IPassenger还有IElevator里面都加上int area这个属 ...

  8. Pair Project: Elevator Scheduler [电梯调度算法的实现和测试][关于电梯调度算法的附加思考]:刘耀先-11061183,罗凡-11061174

    本文为对于电梯调度算法的三个附加题思考 1.改进电梯调度的interface 设计, 让它更好地反映现实, 更能让学生练习算法, 更好地实现信息隐藏和信息共享. <1>进一步提高API定义 ...

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

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

随机推荐

  1. Django电商项目---完成登录验证和用户中心(个人信息)day3

    登录验证的实现 背景说明: 用户在商品界面选择商品后,在点击购物车或者结算订单之前 需要完成用户的登录验证,这里用装饰器来完成   创建装饰器类: df_user/user_decorator.py ...

  2. 【PAT】B1051 复数乘法(15 分)

    要会使用math函数, 还要注意到用四舍五入的方法判断是否应该输出0.00 #include <math.h> #include<stdio.h> int main() { d ...

  3. kuangbin fire搜索bfs

    Joe works in a maze. Unfortunately, portions of the maze have caught on fire, and the owner of the ma ...

  4. 用requests爬取一个招聘网站

    import requestsimport re session = requests.session()第一步:访问登陆页,拿到X_Anti_Forge_Token,X_Anti_Forge_Cod ...

  5. ERROR 1045 (28000): Access denied for user 'ODBC'@'localhost' (using password: NO) ERROR 1045 (28000): Access denied for user 'ODBC'@'localhost' (using password: YES)

    windows下,以上两个错误的解决方法 工具/原料   windows 8 MySql 方法/步骤     找到配置文件my.ini  ,然后将其打开,可以选择用记事本打开   打开后,搜索mysq ...

  6. lamp环境安装

    每天学习一点点 编程PDF电子书免费下载: http://www.shitanlife.com/code lamp环境安装 1.查看mysql是否安装 service mysql status 2.查 ...

  7. (一) 天猫精灵接入Home Assistant- hass对接天猫精灵

    1如何利用论坛的认证服务器对接天猫精灵 说起天猫精灵的接入,最早是由c1pher(25989406)大神通过开发自定义技能接入,后面qebabe大神进行了改进,可以直接通过HASS API读取hass ...

  8. day04--流程控制之if

    编程的目的是让计算机像人脑一样工作,因此就需要让计算机具备人脑一样的逻辑思维,这里就需要用到计算机语言的流程控制: 流程控制之if......else 语法1: if 条件: 代码块 # 一组代码块的 ...

  9. win10下乌龟git安装和使用(转)

    文章转自http://blog.csdn.net/jdsjlzx/article/details/51098588 一.安装git for windows 首先下载Git for windows客户端 ...

  10. sd错误---2

    一道水题 绊了我,居然 愿意很简单 我多打了一遍int main 阴错阳差的 自定义的函数上面 出现了int main 所以 以后想想好思路(是那种很全很全的思路) 再写代码 一定要避免sd错误!!! ...