照片:
一、结队编程优点:
(1)在开发层次,结对编程能提供更好的设计质量和代码质量,两人合作能有更强的解决问题的能力。
(2)对开发人员自身来说,结对工作能带来更多的信心,高质量的产出能带来更高的满足感。
(3)在心理上, 当有另一个人在你身边和你紧密配合, 做同样一件事情的时候, 你不好意思开小差, 也不好意思糊弄。
(4)在企业管理层次上,结对能更有效地交流,相互学习和传递经验,能更好地处理人员流动。因为一个人的知识已经被其他人共享。
结队编程缺点:
(1)处于探索阶段的项目,需要深入地研究,在这种情况下,一个人长时间的独立钻研是有必要的,结队编程反而降低效率。
(2)在做后期维护的时候,如果维护的技术含量不高,只需要做有效的复审即可,不必拘泥于形式,硬拉一个人来结对唱二人转。
(3)如果验证测试需要运行很长时间,那么两个人在那里等待结果是有点浪费时间。
(4)如果团队的人员要在多个项目中工作,不能充分保证足够的结对编程时间,那么成员要经常处于等待的状态,反而影响效率。
(5)关键是如何最大限度地发挥“领航员”的作用,如果用处不大,也就无需结对。
二、个人相关优点:
1、王皓南:(1)逻辑思维较强。(2)读代码能力较强。(3)编写代码能力较强。
2、彭佟:(1)善于发现问题。(2)考虑事件因素很细致。(3)创新思维较强。
个人相关缺点:
1、王皓南:对事件细节掌握能力不够。
2、彭佟:读写代码能力较弱。
三、设计方法的利用:
(1)关于信息隐蔽的利用:将各模块中私有类进行封装,使其对外部所有模块隐蔽自己的设计决策,独立的模块可以得到更有效的模块化,使独立模块之间只交流一些市县软件功能所必须的信息。抽象有助于定义构成软件的过程的实体。隐蔽定义并加强了对模块内过程细节的访问约束和对模块所使用的任何局部数据结构的访问约束。所以一个好的程序在修改过程中不小心引入错误不太可能传播到软件的其他地方。
(2)关于接口设计的利用:这次电梯调度主要利用内外部接口设计。附加题中会用到UI设计。外部接口用来发送和接受信息的实体和确定信息。内部接口和构建级设计紧密相关。分析类的设计实现表示了所有操作和消息传递模式,是的不同类的操作之间能够进行通信和协作。在程序中内部接口用法类似父类定义。提供类的方法读取设定。更方便程序编写及必要信息之间的传递,执行。节省代码量。
(3)关于松散耦合的利用:保持松散耦合,即不让各个独立的模块太过于相互依赖,不过保持一定程度的相关性是必要的。尽可能使程序低耦合使得对程序修改,调试的时候因为一个小改动而造成的影响过大的可能性最大限度降低。在运行时一小部分的错误或者延迟对整个程序运行的影响降到最低。个各类的独立性强大保证了对程序实现,测试和维护的困难尽可能减少。
四、关于契约式设计及契约代码
1、契约式设计的提出,主要基于软件可靠性方面的考虑。可靠性包括正确性和健壮性,正确性指软件按照需求规格执行的能力,健壮性指软件对需求规格中未声明状况的处理能力。健壮性主要与异常处理机制相关 。正确性一方面包括对象元素内部运行的正确性,另一个重要方面是与其它对象元素交互时的正确性。契约式设计就是要求提供一套机制,在客户程序与提供者之间明确的声明双方的职责与权利,即契约,并能够对这些契约进行验证。他保证了一方能够按需求提供正确可调用参数,另一方保证程序的可运行正确性。
2、契约代码优势在于编译前执行检查(如若设置异常类型使用EnsuresOnThrow<Exception>则会在编译时抛出异常),这样比较编译后检查有明显的优势。
3、在我的程序作业之中,我将一些必要且需更新变量置于更新函数中,确保元素数据处理正确性,并且保证接口调用正确性。
五、覆盖率
六、
七、实现我的算法:
我的算法中考虑了上班高峰期对电梯的特殊处理以及平时根据电梯当前状态以及内外乘客需求对电梯进行优化调度。当电梯中有人时优先处理电梯内乘客需求。其次上班高峰期时因为后两个电梯承重较大,对搬运底层向上需求乘客效率较高使此两个电梯在向上搬运过后忽略其他层因素直接回到底层接拥堵乘客。另外两个电梯则正常运行处理琐碎零星的需求。非高峰期时。获取电梯当前楼层,遍历所有电梯外乘客请求对乘客对于电梯高低与需求运行放向统计。当单项需求达到一定程度电梯直接处理单项需求。如果单项需求未到相应程度计算方向性需求大小。优先处理需求大的方向及适合首达楼层。在电梯运行过程中我添加了允许顺路乘客搭载的函数。并且在电梯剩余载重不足任何一个人的时候停止需求获取。减少无效停留。