结对编程小组成员:孙胜10061169 林璐10061142
一,两人结对编程情况:
结对编程队友的优缺点:
首先,我的队友是个很有责任感,很有思想的,对待作业态度十分认真,思路非常清楚开阔。
其次,她是个非常有耐心,肯吃苦耐劳,虽然软工作业很花费时间,但是她都一丝不苟的完成,激励着我不能投机取巧。
再者,她编程基础很好,对程序有总体的把握,统筹规划我们组的进度和程序的总体框架。
自己的缺点:
首先,编程能力不强,对程序编写没有整体的思路,做事没耐心。
其次,自己在遇到困难后选择等待队友,而不是积极进行探索,希望在今后的编程中改掉依赖他人的思想
再者,自己的编程思路不是很清晰,容易出现很多错误,要多加联系和思考
结对编程图片:

二,设计方法
通过学习参考书我了解到:
评价模块设计优劣的三个因素为:Information Hiding :信息隐藏,Interface design:接口设计,Loose couping:疏耦合。模块功能完善化,消除重复功能,降低模块接口的复杂性。每个模块都可以独立的开发,测试。
信息隐藏原则:将每个程序的成分隐藏在模块内,尽可能少的显露其内部的处理,可以提高软件的可修改性,可测试性和可移植性。
接口设计遵循的原则:简单原则,要求接口方法命名规范,接口相关参数的数据类型简单,减少模块间直接性的复杂数据的传递。封闭原则,模块内部的处理逻辑修改时,不会影响到其他模块的使用。完整性原则:可以方便的利用继承,重写,覆盖等技术手段来提高代码的复用率。可置换原则。接口隔离原则,使用多个专门的接口比使用单一的接口要好,在接口中尽少公布public方法。
耦合是模块之间依赖程度的度量,模块设计追求的是强内聚,疏耦合。耦合的强度依赖于以下几个因素:一个模块对另一个模块的调用,一个模块向另一个模块传递的数据量,一个模块施加到另一个模块控制的多少,模块之间接口的复杂程度。尽量减少两个模块之间的直接调用和控制,两个模块之间的联系最好全部通过主模块的控制和调用来实现。
在本次软工作业中,我深刻的体会到这三方面的重要性。
对一个程序而言,会有很多的模块,每个模块都有自己的功能,每个模块代表不同部件是如何运行的,比如说在本次作业电梯程序中,电梯类负责电梯的属性和电梯运行;乘客类负责发送请求,根据乘客的需求驱动电梯类运行;commons类用于存放接口,基类,结构等方法用于服务其他类的调用;Scheduler类用于存放电梯调度算法,使电梯按照算法运行搭载乘客;Program类是主模块,通过主模块的运行调动相应的模块,使电梯正常运行。
每个模块都有自己需要隐藏的信息,不能让别的类随意改动,并且每个模块都需要有自己的处理方法,不能随意调用其他的类,这样写会比较混乱。我们在设计接口或者方法的时候,命名的时候根据实意进行命名,方便他人阅读和理解,减少了模块之间直接的复杂数据的传递,基本上都是定义好的接口和方法。疏耦合是软件工程中设计追求的,尽量减少两个模块之间的联系,尽量通过主模块的调用来联系其他模块。
软件工程的优劣因素不仅是对我们编写的程序的使用情况的评测,更是提醒我们要养成较好的编程习惯,这样有利于程序的可移植性和可测试性,对我们今后有很大的帮助。
三,电梯调度算法:
1, 考虑到电梯的空置状态:
上班高峰期:两台电梯停在1层,两台电梯停在0层,这样可以减少乘客的等待时间。
下班高峰期:电梯全部停在中间层,这样可以满足不同楼层的人离开,减少等待时间。
平时情况:电梯停留在一层。
2, 电梯运行情况:
电梯环形运行,当发生外部请求时:
电梯向上运行,响应的顺序为:同向上方
逆向上方
逆向下方
同向下方
电梯向下运行,相应的顺序为:同向下方
逆向下方
逆向上方
同向上方
当发生内部请求时:
电梯向上运行,响应的顺序为:上方,下方
电梯向下运行,响应的顺序为:下方,上方
如果请求超出范围,则报错删除内部和外部请求。
3, 考虑高峰期优化方法:(但是因为时间关系没有实现,等待以后优化)
上班高峰:
电梯空置状态
运行情况:三部电梯只接受上行请求,一部正常运行
下班高峰:
电梯空置装填
运行情况:三部电梯只接受下行请求,一部正常运行
4, 电梯调度算法:
设置一个外部请求列表,设置一个内部请求列表,
设置方法,把每个外部请求都加入四个队列,按照时间先后来响应,有一部电梯响应之后则均删掉;把内部请求加入进入的电梯,等响应之后则删除请求。
根据乘客从第1层和第0层进入电梯的比例判断是否是上班高峰,是否启动上班电梯模式。
根据乘客从第1层和第0层出电梯的比例判断是否是下班高峰,是否启动下班电梯模式。
初始化之后,时钟开始计时
乘客:
如果当前时间和乘客请求的时间一致,乘客进入电梯并发送上行或下行请求。
如果电梯停在乘客所在楼层,并且开往方向与乘客去向一致,电梯停下,电梯开关门时间发生改变,乘客发出目的地请求,乘客的状态变为在里面。
如果乘客到达目的地,乘客的状态变为到达。
电梯:
根据时钟和电梯运行情况,对电梯的状态进行更新。
电梯停时,发送电梯停信号。
5,我们算法的特点:
首先,算法根据不同时间段的人员流动情况对四部电梯进行不同工作模式的分配,在上班高峰时多数电梯不接受下行请求,在下班高峰时多数电梯不接受上行请求,这样可以节省开关门和等待乘客进出电梯的时间,可以有效地节省乘客的乘坐电梯的时间。
再者,我们根据人员对电梯的请求分为内部请求队列和外部请求队列,根据不同的请求加入队列的顺序不同,对请求进行排序,可以很好的控制电梯开关门的顺序和时间。
其次,我们根据人员流动的比例判断高峰时间,这样可以很好的控制电梯运行模式何时开启,对电梯进行动态规划。
浙公网安备 33010602011771号