Smart City 项目总结 Postmortem(转)

 

原贴地址:http://pku-group3.spaces.live.com/php

 

设想和目标面试

1. 咱们的软件要解决什么问题?是否认义得很清楚?是否对典型用户和典型场景有清晰的描述?算法

随着城市化的加速发展,城市交通问题也显得越来 越突出,咱们提出要作一个智能交 通疏导系统和模拟系统。这个系统能够经过地图编辑来绘制不一样的道路、路口,能够 经过设定车辆数目来实现不一样的路况,能够用来测试不一样的调度算法。从严格的意义上来讲,它应该是一个带有地图编辑功能的调度算法模拟平台。它支持用户经过 编程方式来实现不一样的调度算法,可 觉得交通控制理论的研究工做人员提供交通模型模拟和实验数据,也能够检验各类交通控制和调度算法的实际效果。编程

2. 是否有充足的时间来作计划?  项目原来预计有多少用户,实际有多少用户为何有如此落差?编辑器

3. 计划的时间比较充足,预计的用户不会不少,由于使用本软件须要有必定的编程基础和交通领域的相关知识,或是相关领域的研究工做者。他们使用本 软件主要就是为了测试实现的算法是否“智能”,固然,若是从长期效应来说,本软件为交通智能调度和算法研究提供了良好的工具。本软件的预计下载量在30,实际下载量在40左右。工具

4. 团队在计划阶段如何解决同事们对于计划的不一样意见的?  单元测试

主要经过开会讨论来统一不一样意见,开会后会得出一个你们都 一致接受的结论。学习

计划测试

1. 你原计划的工做是否最后都作完了若是有没作完的,为何?google

计划的工做并无彻底作完,咱们定义了4scope而且预计实现其中的23个,最终实际完成了第一和第二个scope。没有彻底完成的主要缘由仍是由于项目的时间吃紧,尤为是到项目进行的后期。另一个缘由就是咱们缺乏熟悉交通领域知识的人来支持我 们完成系统的开发,不少交通领域的专业知识是咱们发现不足后临时学习的,这也很大程度的拖慢了项目的进度。

2. 有没有发现你作了一些过后看来不必,没多大价值的事?

没有。

3. 每一项任务都有清楚定义的和衡量的交付件?

大的任务咱们有清楚的定义和衡量,但并非具体到每个任 务都有定义,开发过程当中弹性很大。

4. 在项目的整个过程都按照计划进行?

大致上是按照计划来进行。在全组人员的共同努力下,项目按照原定计划在623日发布Beta版本, 并开始收集该版本的用户反馈信息。在发布Alpha版本以后的两个星期,咱们陆续收到了用户反馈信息。项目的进行基本按照计划,在不影响版本发布的前提下,对进度和任务作了一些必要的 调整。

5. 在计划中有没有留下缓冲区,缓冲区有做用么?

留下了缓冲区,缓冲区主要是用来处理项目后期系统临近发布 时浮现出来的各类Bug

6. 未来的计划会什么修改? (例如: 缓冲区的定义,加班)?

应该不会有什么修改。

资源

1. 咱们有足够的资源来完成各项任务么?

没有,在项目过程当中,因为组员本学期课业任务比较重,能投入项目的 时间并很少,因此项目时间比较紧张。

2. 各项任务所需的时间和其余资源是如何估计的,精度如何?

项目中的各项任务都基本按照经验来估计,放宽必定的缓冲 区,采用保守估计,如今看来,这个方法虽然估计精度不是很高,可是从结果来看仍是保证项目按照计划如期交付。

3. 用户测试的时间,人力和软件/硬件资源是否足够?

Alpha版本的测试时 间是2周,有点短,收集的用户反馈深度不是很 够;并且项目人力也存在问题软硬资源获得了 保障。

4. 你有没有感到你作的事情可让别人来作(更有效率)?

主要是关于交通领域的专业知识咱们小组仍是有所欠缺,若是 有一个有这方面背景的人可以给予支持效果确定会好不少,至少能够节约大量的时间。系统也能更加专业和贴近用户的使用习惯。

变动管理

1. 每一个相关的员工都及时知道了变动的消息?

咱们经过SVN来管理代码,每一个员 工都会受到变动消息。另外咱们还有QQ群等辅 助手段来进行沟通。

2. 咱们采用了什么办法决定“推迟”和“必须实现”的功能?

咱们采用了划分优先级的方式肯定了哪些功能必须实现,哪些 功能推迟实现。调度算法是推迟的功能,由于项目必须实现的是一个算法模拟的平台,即平台自己,而算法是能够由用户自行实现的。固然,咱们也致力于找到很好 的调度算法,目前,只实现了几种简单的调度供用户参考使用。

3. 项目的出口条件 (Exit Criteria)是否获得清晰的定义到底什么叫 作 好了

咱们经过验收测试来测试系统是否“作好了”,出口条件就是 开发出这个系统而且完成需求阶段定义的90%以上的功能。

4. 对于可能的变动是否能制定应急计划?

没有应急计划,项目变动时经过开会讨论的方式来控制和处理 变动。

5. 员工是否可以有效地处理意料以外的工做请求?

员工基本能在完成本职工做的同时,完成意料以外的工做请 求,例如,文档、BUG修复等等。团队比较团结,组员积极性 较好。

设计/实现

1. 设计工做在何时,由谁来完成的?是合适的时间,合适的人么?

第一周头脑风暴肯定要作的系统为:城市交通智能管理模拟系统,肯定主要的功能模块为:地图编辑器和 路况监视器,并肯定每一个模块要实现的具体功能,如地图编辑器模块的地图保存功能,路况监视器中的局部查看功能,全局查看功能,局部放大功能,打印实时信息 功能等,头脑风暴由全组人员参加。第二周讨论具体的实现,由PM(沈阳),一个DEV(何 建杉),一个TEST(万成铖)参加。

2. 设计工做有没有碰到模棱两可的状况,团队如何解决的?

没有。

3. 团队是否运用单元测试(unit test), 测试驱动的开发(TDD, UML, 或者其余工具来帮助设计和实现?这些工具备效么? 

在开发的过程当中进行了单元测试,可是是经过直接编写测试代码进行的,没有用到专门的工具。

4. 什么功能产生的bug 最多,为何? 

汽车自主控制功能,包括当前的车道,当前所处的路口,前方是否有车辆阻挡,前方是否为路口,相位是 否已打开等等。由于汽车所处的状态是一直变化的,不一样车道的行为时不一样的,并且有随机行为,因此比较容易出现问题。

5. 代码复审 (Code Review)是如何 进行的,是否严格执行了代码规范? 

因为时间限制,对关键模块的代码由测试人员进行了人工走查。

测试/发布

1. 团队是否有一个测试计划?为何没有?

测试工做开始的初期就制定了测试计划,测试计划就肯定了软 件的特性和测试范围而且决定进行如下测试

Code Reviews

Blackbox Testing

Fault Injection

Stability Testing

在开发过程当中由开发人员完成了基本的单元测试和白盒测试。

2. 是否进行了正式的验收测试?

在需求阶段咱们定义了4scope,目前咱们实现到第二个scope而且发布了相应的Beta版。根据需求阶段定义的系统特性咱们进行了验收测试来确保系统实 现了预期的功能。咱们找不到最终用户来帮助咱们进行验收测试,因此是由软件测试人员完成。

3. 团队是否有测试工具来帮助测试?

系统开发主要使用MFC技术,咱们没有找到 比较适合的针对MFC程序的开源或者免费的测 试工具,更没有时间来开发钻用的测试工具,因此全部的测试代码都是由开发人员和测试人员手动编写。系统的特殊性决定了咱们很难找到合适的测试工具。

4. 团队是如何测量并跟踪软件的效能的?从软件实际运行的结果来看,这些测试工做有用么?应该有哪些改进?

对软件效能的测试主要是经过运行系统而且观察结果来完成 的,软件运行之后效能必须在用户能够接受的范围之内,从软件实际运行的结果来看这些测试工做仍是颇有效的,咱们前后争对效能进行过两次改进,每次改进都有 明显提升运行效率。

5. 在发布的过程当中发现了哪些意外问题?

在发布过程当中遇到的意外问题就是上传的资源意外CSDN删除,或者是因为CSDN资源站不稳定致使用户下载资源是出现“当前资源不存在”的提 示。咱们发现后又从新上传了对应版本。

6月23日

Smart City 用户使用说明

    用户下载Smart City 任意版本之后能够直接运行 Release目录下的 SmartCity.exe来运行程序。源文件咱们也会随release一块儿发布,在目录SmartCity下。
    功能介绍以及使用说明
地图编辑器编辑程序
    1,点击鼠标左键而且拖动鼠标进行画图,
    2,点击鼠标右键切换贴图
    3,按住shift和鼠标左键进行组合直线绘图
    4,按住ctrl并点击鼠标右键选取上一幅贴图
    5,按住ctrl+shift+点击鼠标左键或者拖动删除当前的贴图
导入已经建立的地图
    1,点击“操做”=》“导入地图”
    2,系统默认建立了3张地图分别为大(Large.map 16个路口)、中(Medium.map 8个路口)、小(Small.map 4个路口)。
    3,选择相应的map文件之后系统会自动初始化车辆而且运行
观察车辆运行状况(可使用鼠标滚轮控制局部放大倍数)
VIP车辆的设置:
    在输入框输入VIP车辆的编号便可
系统显示当前全部路口的相位信息
选择调度算法,目前为相位轮转法和一个简单的相位动态调整算法
设置 车辆的数目
设置车辆数目
设置相关属性在configure文件中设置,参考属性以下:
    CAR_NUM = 800; //地图中车辆的总数
    TIMER_TIME = 40;//定时器触发时间间隔,单位为毫秒,数值越大每一个时间周期越长,车行走得越慢
    INTERSECTION_CYCLE = 5000;//路口的时间周期,单位为毫秒
    调度算法在CIntersection::manipulateIntersection()中设置
程序运行截图

Smart City - Intelligent Traffic System (Beta) 发布

项目简介:
这是一个使用VC++编 写的城市交通疏导系统模拟平台,用户能够在这个平台的基础上开发本身的路口调度算法,很是适合交通相关专业学者发表论文,或作毕业设计时进行实验模拟。
该 资源为北京大学软件实现技术课程(微软精品课程)的研究项目,上传的是release运行版本,未附加代码。
若是您下载下来并运行程序,给出意见 或建议,便可免费得到源码。
同时请您保证该源码只用于学术研究,不用于任何商业用途。
您能够直接在资源评论中发表意见或建议并留下您的 email地址,也能够发送意见或建议到如下邮箱索要实现代码:
pku_smartcity@163.com
北京大学SmartCity团队感谢您的关注!
 
距Alpha版本发布已经将近两个星期了,在这两个星期的时间里,咱们不断地从组内和用户那里获得针对产品的改进意见和建议,在这里,咱们要感 谢那些给过咱们批评和鼓励的人们。正是有了这些意见和建议,咱们对Alpha版本进行了一系列改进,今天,Beta版本终于发布了...
 
Beta版中的改进有:
 
1 VIP车辆:针对实际状况中警车、救护车、消防车的让道问题
 
2 改进了车辆碰撞检测算法,流畅运行3000辆
 
3 实现了简单的调度算法
   a 按照相位轮询
   b 按照相位权重分配时间
   c 按照相位车辆分配时间
 
Beta版本发布方式
新闻投递 CnBeta 等待审核

延伸阅读: