结对项目——电梯调度(5)
by 潘
Part 0 进度概述
目前为止,整个项目已经完成,底层逻辑、UI界面、软件测试都已完成,对底层逻辑:对调度算法进行了模块化,使得每种调度算法存在一个专门的函数,但某个电梯学院需要采用某种调度算法时只需要调用该算法即可,目前已经完成的调度算法有:Bus、LOOK、FD-SCAN。UI界面:我们为电梯设计了内部按钮以及外部按钮,并通过按钮的颜色变化观察电梯所处楼层以及信号。对软件测试:我们利用了visual studio附加的功能,进行了分支覆盖率测试、单元测试、系统测试等。这些我将在下面详细叙述。
Part 1 PSP
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 30 | 30 |
· Estimate | · 估计这个任务需要多少时间 | 20 | 10 |
Development | 开发 | 7200 | 6000 |
· Analysis | · 需求分析 (包括学习新技术) | 400 | 180 |
· Design Spec | · 生成设计文档 | 30 | 60 |
· Design Review | · 设计复审 (和同事审核设计文档) | 20 | 10 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 10 | 10 |
· Design | · 具体设计 | 60 | 40 |
· Coding | · 具体编码 | 600 | 500 |
· Code Review | · 代码复审 | 1920 | 1200 |
· Test | · 测试(自我测试,修改代码,提交修改) | 600 | 600 |
Reporting | 报告 | 145 | 380 |
· Test Report | · 测试报告 | 100 | 300 |
· Size Measurement | · 计算工作量 | 15 | 20 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 30 | 60 |
合计 | 11180 | 9400 |
Part 2 小队分工
这一阶段我们依旧按照以前的分工,我主要负责程序的实现和UI界面的设计,曹主要负责软件测试,包括单元测试、分支覆盖率等。但曹也会参与到代码实现的过程,我也会负责一部分软件测试的工作。
Part 3 实现内容
3.1 调度算法模块化
在项目进行之初,我们常以电梯1作为设计的实验点,在在电梯1处写好调度算法,然后复制到其他的电梯处并稍加修改,但这样有一个巨大的缺点,就是一旦设计调度算法之后便很难修改,且要设计新的调度算法时需要对代码进行一个较大规模的变化,使得整个项目的可复用性、灵活性都不高,但我们一开始却没用反应过来,后来,在查看后续的需求是,无意中想到我们可以通过对函数对调度算法进行模块化设计,这样我们在修改代码时只需要修改该函数,修改的灵活性、简易性得到大幅度的提升,我们在需要变化电梯的调度算法时也只需要变化更改调用的算法即可。示例如下:
//电梯1的驱动函数
void runElevator1(){
BUS(ele1); //bus算法