技术团队管理相关
团队类型
暂无 #### 团队目标 暂无
工作流程
- 工作目录
- 工作日志
- 问题追踪
- 耗时
- 解决方案
- bug跟进
- 数目
- 解决用时
- 问题追踪
- 相关文档
- 设计文档
- 需求文档
- 开发评估文档
- 软件大小
- 行数
- 文件数
- 第三方SDK名称大小
- 软件大小
- 第三方文档
- SDK
- 测试文档
- 测试环境
- 测试列表
- 测试结果
- 总结建议文档
- 开发本项目主要暴露的问题
- 可以改进的空间
- 工作日志
- 工作流程
编程规范
- 命名规范
- 编码规范
- 代码审核
- 目的
- 找出代码的错误
- 编码错误
- 规范错误
- 逻辑错误
- 算法错误
- 算法不够高效
- 边界没有处理
- 回归性错误
- 当前的修改导致的以前修复的bug重新出现
- 发现可能需要改进的地方
- 代码架构
- 互相教育开发人员
- 找出代码的错误
- 前提
- 代码成功编译
- 代码使用了漏洞分析工具,并且解决了相关问题
- 单元测试覆盖了所有代码
- 审查方式
- 面对面复审
- 在线复审
- 团队复审(2人及以上)
- 结对复审(1人)
- 审查后需要处理的
- 更正明显的错误
- 对于无法很快解决的错误,创建一个任务task 记录
- 错误汇集到错误日志中,方便统计
-
代码复审的核查表
类别 内容 概要部分 1.代码符合需求吗? 设计规范部分 1.是否硬编码
2.是否删除无用代码(注释掉的,或者没有用到的)
3.代码中是否存在与已有的Library职能一样的代码具体代码部分 1.对错误、异常是否都有处理,对于调用的外部函数是否检查了返回值
2.参数传递是否有误
3.循环是否可能出现死循环
4.是否存在内存泄漏,资源是否正常释放(文件、数据库、音频、图像
4. 是否存在无效资源文件
- 目的
软件测试
bug 又称小强,指的是导致程序不能正常运行的错误或者异常。
- Bug 描述
- 表现症状:
- 程序错误(从程序代码角度来看导致bug发生的原因)
- 根本原因(从流程或者个人习惯上面分析问题)
- 测试分类
- 按照测试设计的方法
- 黑箱
- 白箱
- 按照测试目的分类
- 功能测试
- 单元测试(unit test 最基本的功能方法、参数上面验证程序的准确性)
- 功能测试(functional test验证模块的功能)
- 集成测试(intergration test验证几个相互依赖关系的模块的功能)
- 场景测试(Scenario test验证几个模块能否完成一个用户场景)
- 系统测试(system test对于整个系统功能的测试)
- 外部软件测试(alpha/beta test)
- 非功能测试
- 压力测试(stress test 测试软件在负载情况下是否能够正常功能)
- 效能测试(performance test 耗电量、CPU占用率等其他指标)
- 本地化/全球化测试(Localization/Globalization Test)
- 兼容性测试(不同版本的硬件环境,不同的屏幕尺寸等)
- 配置测试(Configuration Test 在各种配置环境下是否能够正常工作)
- 功能测试
- 按照测试设计的方法
项目总结(Postmotem)
##### 设想和目标 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述?
是否有充足的时间来做计划?
团队在计划阶段是如何解决同事们对于计划的不同意见的?
用户量、用户对重要功能的接受程度和我们事先的预想一致么?我们离目标更近了么?有什么经验教训?如果历史重来一遍,我们会做什么改进?
计划
你原计划的工作是否最后都做完了?如果有没做完的,为什么?
有没有发现你做了一些事后看来没必要或没多大价值的事?
是否每一项任务都有清楚定义和衡量的交付条件?
是否项目的整个过程都按照计划进行?
在计划中有没有留下缓冲区,缓冲区有作用么?
将来的计划会做什么修改?
我们学到了什么?如果历史重来一遍,我们会做什么改进?
资源
我们有足够的资源来完成各项任务么?
各项任务所需的时间和其他资源是如何估计的,精度如何?
测试的时间、人力和软件/硬件资源是否足够?对于那些不需要编程的资源(美工设计/文案)是否低估难度?
你有没有感到你做的事情可以让别人来做(更有效率)?
有什么经验教训?如果历史重来一遍,我们会做什么改进?
需求变更管理
每个相关的员工都及时知道了变更的消息吗?
我们采用了什么办法决定“推迟”和“必须实现”的功能?
项目的出口条件(Exit Criteria——什么叫“做好了”)有清晰的定义么?
对于可能的变更是否能制定应急计划?
员工是否能够有效地处理意料之外的工作请求?
我们学到了什么?如果历史重来一遍,我们会做什么改进?
设计/实现
设计工作在什么时候,由谁来完成?是合适的时间,合适的人么?
设计工作有没有碰到模棱两可的情况,团队是如何解决的?
团队是否运用单元测试(Unit Test)、测试驱动的开发(TDD)、UML或者其他工具来帮助设计和实现?这些工具有效么?
什么功能产生的Bug最多,为什么?在发布之后发现了什么重要的Bug?为什么我们在设计/开发时没有想到这些情况?
代码复审(Code Review)是如何进行的,是否严格执行了代码规范?
我们学到了什么?如果历史重来一遍,我们会做什么改进?
测试/发布
团队有没有测试计划?为什么没有?
有没有做过正式的验收测试?
团队是否有测试工具来帮助测试?
团队是如何测量并跟踪软件的效能的?从软件实际运行的结果来看,这些测试工作有用么?应该有哪些改进?
在发布的过程中发现了哪些意外问题?
我们学到了什么?如果历史重来一遍,我们会做什么改进?
总结:
你觉得团队目前处于萌芽/磨合/规范/创造阶段的哪一个阶段?
你觉得团队在这个里程碑相比前一个里程碑有什么改进?
你觉得目前最需要改进的一个方面是什么?
现代软件工程 项目回顾(Postmortem)例子
设想和目标
我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 想做的事情还是太多,导致很长时间不能集中精力。
是否有充足的时间来做计划? 有时间,但是大部分人并不知道如何利用这一段时间来做计划。
团队在计划阶段是如何解决同事们对于计划的不同意见的? 主要通过喝酒聊天解决,另外阿超有某种“光环”,大家对他有些崇拜,这样他说的话别人都比较容易接受,也没有特别强烈的不同意见。
计划
你原计划的工作是否最后都做完了?如果有没做完的,为什么? 很多事情都没做完,大家认为最后没做完的事情,都是可有可无的。
有没有发现你做了一些事后看来没必要或没多大价值的事? 很多,但是大家认为与其不断地争论某些事情有没有必要,不如做了再说。
是否每一项任务都有清楚定义和衡量的交付件? 大部分都没有,因为我们大家都不知道做到多少才叫“好”。有些情况下,大家对细节过早地进行讨论,花了很多时间。不如等到后来再讨论。
是否项目的整个过程都按照计划进行? 基本上,因为阿超的“光环”,大家大部分情况下都听他的。
在计划中有没有留下缓冲区,缓冲区有作用么? 有缓冲区,原来认为没有必要,后来发现还是有用的。主要是各人进度不一,有些模块不断地有一些小问题,花了很长时间才能做好。
将来的计划会做什么修改?(例如:缓冲区的定义,加班。) 应该明确缓冲区的长度。
资源
我们有足够的资源来完成各项任务么? 很多情况下,花了不少时间来设置机器,以及设置用来测试的数据。
各项任务所需的时间和其他资源是如何估计的,精度如何? 开始精度很粗略,后来随着项目任务的加重,大家只顾得上干活,没时间考虑精度问题。
用户测试的时间,人力和软件/硬件资源是否足够?
你有没有感到你做的事情可以让别人来做(更有效率)? 比如网页的CSS设计,最好由美工设计来做,开发人员最后做实现即可。我们要有专职的设计,不要临时拉人来帮忙。因为临时帮忙的设计师对整个项目了解不多,事后也找不到他。
变更管理
每个相关的员工都及时知道了变更的消息吗? 由于大家都坐得比较近,小道消息传播得比较快。
我们采用了什么办法决定“推迟”和“必须实现”的功能? 用了“银弹”,除了导致一场短时间的斗殴之外,还可以。银弹的目的就是一种威慑。
项目的出口条件(Exit Criteria)是否得到清晰的定义? 大家都不太懂“出口条件”是什么,经过这一个项目之后,稍稍清楚了一些。但是说实在的,在这个项目里面我们没有用到太多。
对于可能的变更是否能制定应急计划? 基本没有,到时候随意抓人顶上。
员工是否能够有效地处理意料之外的工作请求? 规定所有请求都转到PM那里处理,这样减轻了开发人员的压力,让他们有大部分时间花在自己那一亩三分地上。
设计/实现
设计工作在什么时候,由谁来完成?是合适的时间,合适的人么? 有些界面的设计过早,大家为了字体的大小、按钮的尺寸争论,事实上这些事情不应该由开发人员在项目早期来做。
设计工作有没有碰到模棱两可的情况,团队是如何解决的? 很多,大家都不知道如何解决。就看具体执行的人是如何解决的,有的解决得好,大家并不知道出过问题;有的经常拿出来讨论,大家都知道问题在哪里,但是没法达成一致。
团队是否运用单元测试(Unit Test)、测试驱动的开发(TDD)、UML或者其他工具来帮助设计和实现?这些工具有效么? 运用了单元测试的员工,整体来看Bug不多,没有用单元测试的员工,后期比较忙。TDD要求PM要清楚地确定功能说明(Spec),我们目前还做不到这一点。一个好处是:大家都追着PM要Spec,弄得PM的压力很大,以前谁都不搭理PM的Spec。
什么功能产生的Bug最多,为什么? 交易功能由于牵涉的面太多,Bug也最多。
代码复审(Code Review)是如何进行的,是否严格执行了代码规范? 刚开始还像那么回事,后来就变成走走形式。往往是“小飞,我要提交代码了,审核人填你的名字,怎么样?”其实小飞后来也没看代码。
测试/发布
团队有没有测试计划?为什么没有? 我们有测试计划,而且因为有了计划,测试人员好像不再像无头苍蝇一样胡乱测试。
有没有做过正式的验收测试? 有些测试人员最后不敢说验收测试不成功,似乎是迫于某些开发人员的“淫威”。
团队是否有测试工具来帮助测试? 有。
团队是如何测量并跟踪软件的效能的?从软件实际运行的结果来看,这些测试工作有用么?应该有哪些改进? *TFS还是很有用的,至于改进,有这样一些建议:
输入Bug还是步骤比较多,有很多需要手动重复填写的字段。 不是所有的Bug或Task都记录在TFS中。* 在发布的过程中发现了哪些意外问题? 有些功能在新的机器上不能工作,因为很多设置没有明确的定义,也没有记录。软件发布时,这些设置没有能正确地拷贝到发布的机器上去。这说明很多关于这个系统的“知识”还没有形成文字,还是保留在某些人的脑袋中。
我们学到了什么?如果历史重来一遍,我们会做什么改进?
周报
- 目的:每周总结自己的工作情况,分享自己的经验教训。主要包括工作中遇到的问题(走过的弯路、)
- 内容
- 本周工作成果
- 本周未完成工作
- 原因:
- 解决方案:
- 本周工作中最有成就感的事情
- 本周感觉最失败的或者不如意的事情
- 本周的经验教训
- 下周的工作计划
- 工作内容:
- 计划完成时间:
- 可能需要配合的资源和人员
日报
- 目的: 自我严格要求使用,主要用于有上进心的人,就像日记一样,可以记录自己的学习历程。
- 内容:
- 今日完成
- 今日未完成
- 今日思考
分享会
- 目的:分享前沿技术、个人经验,相互学习,促进感情
- 内容:
- 每周五晚上7:30
- 提前发出邮件告知
- 邮件内容: 时间、地点、主讲人、主题
- 记入工作考核
This work is licensed under a CC A-S 4.0 International License.