Header

组长博客

Postmortem

设想和目标

  1. 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述?
    要解决的是喜欢记录分享旅游生活的人群的行迹记录和分享问题,提供一个方便的平台,供这些用户记录和分享、交流。
    相关定义,典型用户和典型场景已在需求分析报告有清晰的描述。
  2. 我们达到目标了么(原计划的功能做到了几个? 按照原计划交付时间交付了么? 原计划达到的用户数量达到了么?)?
    • 原计划功能实现情况

      • 核心功能基本实现
      • 非核心功能一点没做
      • 界面较为简陋
    • 是否按原计划交付时间交付
      • 是的,在答辩当天我们展示了我们的成果
    • 原计划预期的用户数量是否达到
      • 没有计划有用户使用
  3. 用户量, 用户对重要功能的接受程度和我们事先的预想一致么? 我们离目标更近了么?
    • 用户量与预期一致
    • 接受程度与设想一致,确实离目标更近了
  4. 有什么经验教训? 如果历史重来一遍, 我们会做什么改进?
    • 遇到的困难真的是不计其数,甚至可以单独写成一篇报告
    • 如果历史重来一遍
      • 尽早明确分工
      • 技术选型要谨慎,事先踩坑很重要
      • 合理安排时间,尽量不要摸鱼

计划

  1. 是否有充足的时间来做计划?

    • 我们很早就开始了计划,时间上是很充足的,但是我们没有足够重视这个环节,并没有投入过多的时间在这个方面,这也是算是个教训。
  2. 团队在计划阶段是如何解决同事们对于计划的不同意见的?
    • 由于团队成员开发经验不足,基本没提出什么不同意见
  3. 你原计划的工作是否最后都做完了? 如果有没做完的,为什么?
    • Alpha计划的核心工作基本完成,但扩展工作没有完成,时间不够
  4. 有没有发现你做了一些事后看来没必要或没多大价值的事?
    • 复杂的Git工作流和对代码质量的保证,这个目前看起来没多大价值,但后面说不定
    • 踩坑,别人不会知道我们踩了什么坑,有什么意义,但是长期来看这个意义也说不定
  5. 是否每一项任务都有清楚定义和衡量的交付件?
    • 每一项任务都有很清楚的定义,但未必都有清楚的衡量标准
  6. 是否项目的整个过程都按照计划进行,项目出了什么意外?有什么风险是当时没有估计到的,为什么没有估计到?
    • 并没有严格按照计划。因为踩了一些坑,导致进度缓慢。
    • 对于风险估计,经验不足
  7. 在计划中有没有留下缓冲区,缓冲区有作用么?
    • 没有,故没有作用
  8. 将来的计划会做什么修改?(例如:缓冲区的定义,加班)
    • 将来会将任务集中在一段时间完成,而不是平摊到整个任务周期。
  9. 我们学到了什么? 如果历史重来一遍, 我们会做什么改进?
    • 学到了长痛不如短痛,慢慢肝不如爆肝,集中在一起完成任务效率比较高。

资源

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

    • 除了钱和经验都有
  2. 各项任务所需的时间和其他资源是如何估计的,精度如何?
    • 根据经验和前辈历史随缘估计,十分粗糙
  3. 测试的时间,人力和软件/硬件资源是否足够?
    • 足够,开发兼职测试,并且测试量不是很大
  4. 对于那些不需要编程的资源 (美工设计/文案)是否低估难度?
    • 是,成果不够美观
  5. 你有没有感到你做的事情可以让别人来做(更有效率)?
    • 没有去考虑过,很多事情不一定是别人会与不会的问题,也不是时间够与不够的问题。
  6. 有什么经验教训? 如果历史重来一遍, 我们会做什么改进?
    • 开发人员工作量过大,大家都应该学点开发

变更管理

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

    • 在我们的分组内的成员都知道了变更的消息。主要通过交流和自动化通知
  2. 我们采用了什么办法决定“推迟”和“必须实现”的功能?
    • 组长根据实际情况调整,但核心功能必须实现
  3. 项目的出口条件(Exit Criteria – 什么叫“做好了”)有清晰的定义么?
    • 计划的功能实现,测试通过
  4. 对于可能的变更是否能制定应急计划?
    • 没有,没考虑这一点
  5. 员工是否能够有效地处理意料之外的工作请求?
    • 目前看来这方面并不是很好
  6. 我们学到了什么? 如果历史重来一遍, 我们会做什么改进?
    • 计划赶不上变化,无论如何都会出现意外情况。在计划的时候要设置缓冲区以应对未知的变更。

设计/实现

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

    • 设计工作在Alpha开始之际完成,主要由组长完成,时间和人未必都合适
  2. 设计工作有没有碰到模棱两可的情况,团队是如何解决的?
    • 有,比如说可实现性存疑,一般通过踩坑解决。
  3. 团队是否运用单元测试(unit test),测试驱动的开发(TDD)、UML, 或者其他工具来帮助设计和实现?这些工具有效么?
    • 没有。根据我以往的经验,在非专业团队里推行这些工具和机制,可以起到提高相关人员经验和拖慢进度的效果。
  4. 比较项目开始的 UML 文档和现在的状态有什么区别?这些区别如何产生的?是否要更新 UML 文档?
    • 有一些差别,主要是实现细节导致的差异,文档需要更新
  5. 什么功能产生的Bug最多,为什么?在发布之后发现了什么重要的bug? 为什么我们在设计/开发的时候没有想到这些情况?
    • 地图展示的Bug最多,因为Android生命周期的复杂性。还没发布
  6. 代码复审(Code Review)是如何进行的,是否严格执行了代码规范?
    • 由组长复审,使用了强制措施(Git分支保护)执行代码规范
  7. 我们学到了什么? 如果历史重来一遍, 我们会做什么改进?
    • 设计应具有前瞻性
    • 充分考虑每个人的能力

测试/发布

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

    • 功能完成合并前自测
  2. 是否进行了正式的验收测试?
  3. 团队是否有测试工具来帮助测试?
    • Postman和Swagger UI
  4. 团队是如何测量并跟踪软件的效能的?从软件实际运行的结果来看,这些测试工作有用么?应该有哪些改进?
    • 未进行相关工作
  5. 在发布的过程中发现了哪些意外问题?
    • 未发布
  6. 我们学到了什么? 如果历史重来一遍, 我们会做什么改进?
    • 预先定义测试细则和条件
    • 测试应紧随开发进行
    • 使用持续集成

团队的角色,管理,合作

  1. 团队的每个角色是如何确定的,是不是人尽其才?

    • 由组长根据每个人的能力分配;否,因为考虑不是很这周全
  2. 团队成员之间有互相帮助么?
  3. 当出现项目管理、合作方面的问题时,团队成员如何解决问题?
    • 讨论撕逼解决
  4. 我们学到了什么? 如果历史重来一遍, 我们会做什么改进?
    • 及时沟通

我感谢永福对我的帮助,其实主要是在接触一些多元的开发要求带来的学习成本,在接触不擅长的领域的时候,永福本身涉猎面的广泛解决了很多学习困难的问题,好兄弟!

总结

  1. 你觉得团队目前的状态属于 CMM/CMMI 中的哪个档次?

    • 处于初始级。我们的开发过程基本符合下面的定义。尤其是 “成功依靠的是个人的才能和经验” 而不是成熟的软件工程管理制度。

      软件工程管理制度缺乏,过程缺乏定义、混乱无序。成功依靠的是个人的才能和经验,经常由于缺乏管理和计划导致时间、费用超支。管理方式属于反应式,主要用来应付危机。过程不可预测,难以重复。

PS:我觉得反应式管理挺好的,挺刺激的

  1. 你觉得团队目前处于 萌芽/磨合/规范/创造 阶段的哪一个阶段?

    • 处于磨合的阶段,我们没有一个规范的制度或者说相关开发文档,在接下来的开发中,我们会注意改进。
  2. 你觉得团队在这个里程碑相比前一个里程碑有什么改进?
    • 开发经验和合作经验有较大提升
  3. 你觉得目前最需要改进的一个方面是什么?
    • 规范的制度
  4. 对照敏捷开发的原则, 你觉得你们小组做得最好的是哪几个原则? 请列出具体的事例。
    • 递增,而不是连续的:先完成核心功能,再往外扩展
    • 拥抱变化:我们对变化不排斥,并随时准备着
    • 避免不必要的开销:不必要的文档都没写

照片

由于答辩后部分成员存在伤残情况和其他不可抗力,未能出席本次会议
这再次说明了软件工程实践是一门不吉利的课程

答辩总结

贡献比例

成员 分工 贡献度
王永福 主要代码开发,派任务、催进度、代码规范 42%
孙承恺 美术监督、现场评审、评分表整理 7%
邱畅杰 分享图生成相关实现 8%
丁枢桐 分享图生成相关实现 8%
徐祖豪 评审表设计 4%
余琳玲 答辩PPT 7%
林星培 答辩PPT 7%
林青霞 答辩PPT 7%
张凌昕 Alpha大部分博客 10%

得分

组号 分值
1 57
2 54.6
3
4 54
5
6 58.2
7 54.6
8 53
9 56.4
10
11
12 50.4
平均 54.9

截至本博客撰写时(2019-11-24T17:00),空白小组尚未评分

Q&A

1

  • Q:创建新点时是否只能手动选点定点?会否导致选的点不够准确或难以定点的问题?
  • A:创建时自动定位,可以手动调整

2

  • Q:选点频率可以频繁一些,定位都会准确吗
  • A:定位精度依赖于设备和环境

3

  • Q:在路线上是否能体现地点先后问题?
  • A:Alpha版本比较简陋,没有体现这个,后续我们会使用有向纹理体现

4

  • Q:旅游时进入了信号不佳的地点会不会对软件运行结果造成影响?
  • A:这个是会的,但是我们目前暂不考虑这个问题

5

  • Q: 是否有自动填补足迹的功能?如果有,打算怎么实现?
  • A:目前没有。打算做,可以通过历史数据和地图高程数据进行猜测

你们这么嫖柯老板的问题真的好吗

6

截至本博客撰写时(2019-11-24T17:00),尚未提问

7

  • Q:能不能手画路径,让我即使没去旅游也能装个b
  • A:不能

8

  • Q:旅游的时候手机电量有限,而定位耗电比较多,这个问题你们是如何解决的呢?
  • A:我们目前采用被动位置更新,比较温和,耗电量不会比主动位置更新大

9

  • Q:周边人怎么看到你们的分享,答辩的时候你们好像没有提到。
  • A:在地图上可以直接看到其他人发布的点分享,轨迹分享暂时还没实现

10

  • Q:怎么解决手动选点不准确问题?是否考虑增加输入地址定点功能?
  • A:我们不需要手动选点,但是可以手动调整。至于第二个问题,我们不考虑,因为地理编码存在精度和二义性问题,但我们考虑逆地理编码

11

  • Q:建议前端加大力度
  • A:谢谢建议

个人

PSP表格

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 5 5
Estimate 估计这个任务需要多少时间 5 5
Development 开发 90 120
Analysis 需求分析(包括学习新技术) 30 40
Design Spec 生成设计文档 0 0
Design Review 设计复审 0 0
Coding Standard 代码规范(为开发制定合适的规范) 0 0
Design 具体设计 30 50
Coding 具体编码 30 30
Code Review 代码复审 0 0
Test 测试(自我测试,修改,提交修改) 0 0
Reporting 报告 30 30
Test Report 测试报告 0 0
Size Measurement 计算工作量 0 0
Postmortem & Process Improvement Plan 事后总结并提出过程改进计划 30 30
合计 125 155

学习进度条(时间线有点紊乱,后面三项都是周内)

第N周 新增代码(行) 累计代码(行) 本周学习耗时(小时) 累计学习耗时(小时) 重要成长
1 407 407 15 15 学到了十三水的玩法,了解了原型设计工具的使用方法
2 230 637 14 29 制定了基本实现思想和前端窗体框架
3 1200 1837 20 49 实现基本交互逻辑
4 1045 2882 20 69 实现接口对接和后端处理
5 0 2882 5 74 对原型设计更加熟练以及学习了uml图的绘制
6 210 3092 8 82 重新复习了下爬虫
7 210 3302 10 92 学习了下安卓开发基本
8 110 3412 8 92 学习了下安卓开发基本
9 490 3902 4 96 学习了地图,图片处理

第12组 Alpha事后诸葛亮的更多相关文章

  1. 第11组 Alpha事后诸葛亮

    第11组 Alpha事后诸葛亮   组长博客链接 https://www.cnblogs.com/xxylac/p/11924846.html 设想和目标 我们的软件要解决什么问题?是否定义得很清楚? ...

  2. 第01组 Alpha事后诸葛亮

    目录 一.总结思考 1.设想和目标 ①我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? ②我们达到目标了么(原计划的功能做到了几个? 按照原计划交付时间交付了么? 原 ...

  3. 第02组 Alpha事后诸葛亮

    目录 1. 组长博客(2分) 2. 总结思考(27分) 2.1. 设想和目标(2分) 2.2. 计划(5分) 2.3. 资源(3分) 2.4. 变更管理(4分) 2.5. 设计/实现(4分) 2.6. ...

  4. 第10组 Alpha事后诸葛亮

    一.组长博客链接 组长博客 二.总结思考 设想和目标 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 我们的APP主要解决大学生闲置物品处理问题,定义的很清楚,用户 ...

  5. 第09组 Alpha事后诸葛亮

    组长博客链接 组长博客 参考邹欣老师的问题模板进行总结思考 设想和目标(2分) 1.我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 解决的问题 我们软件初期旨在解决 ...

  6. 第08组 Alpha事后诸葛亮

    组长博客 点这里! 总结思考 设想和目标 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 弥补Powerpoint中模板转换存在的缺陷,完善PPT模板一键转换的功能 ...

  7. 第07组 Alpha事后诸葛亮

    1.请在博客开头给出组长博客链接(3.1 2分) 团队:摇光 队长:杨明哲 组长博客:这里 2.参考邹欣老师的问题模板进行总结思考(3.2 27分) 设想和目标(2分) 1.我们的软件要解决什么问题? ...

  8. 第06组 Alpha事后诸葛亮

    一.组长博客: https://www.cnblogs.com/mhq-mhq/p/11923194.html 二.Postmortem模板 设想和目标 1.我们的软件要解决什么问题?是否定义得很清楚 ...

  9. 第12组 Alpha冲刺(3/6)

    Header 队名:To Be Done 组长博客 作业博客 团队项目进行情况 燃尽图(组内共享) 展示Git当日代码/文档签入记录(组内共享) 注: 由于GitHub的免费范围内对多人开发存在较多限 ...

随机推荐

  1. C#关键字:访问修饰符

    一.访问修饰符 访问修饰符有public.private.protected.internal和protected internal.它们是修饰在类型(类.接口.委托.结构和枚举)和类型成员(字段.属 ...

  2. js调用浏览器下载

    $scope.Download = function (url) { var save_link = document.createElementNS("http://www.w3.org/ ...

  3. 【vue】vue生命周期---精简易懂-----【XUEBIG】

    主要的生命周期函数分类:    - 创建期间的生命周期函数:(只会调用一次)       + beforeCreate:实例刚在内存中被创建出来,此时,还没有初始化好 data 和 methods 属 ...

  4. webpack+vue-cil跨域配置接口地址代理

    在vue项目开发的时候,接口联调的时候一般都是同域名下,且不存在跨域的情况下进行接口联调,但是当我们现在使用vue-cli进行项目打包的时候,我们在本地启动服务器后,比如本地开发服务下是 http:/ ...

  5. ar 解压一个.a文件报错: xxx.a is a fat file (use libtool(1) or lipo(1) and ar(1) on it)

    Linux  使用终端指令 ar x /Users/apple/Desktop/libWC_LIB_SDKT.a解压一个文件 报错如图所示: 是因为该.a文件包含了多个cpu架构,比如armv7,ar ...

  6. 搭建helm私服ChartMuseum

    介绍 ChartMuseum是一个用Go(Golang)编写的开源Helm Chart Repository服务器 ChartMuseum是一个用Go(Golang)编写的开源Helm Chart R ...

  7. 【Audiophobia UVA - 10048 】【Floyd算法】

    题目大意:从a城市到b城市的路径中,尽可能让一路上的最大噪音最小. 题目思路:设d [ i ][ j ]表示 i 到 j 的最大噪音的最小值. 那么d [ i ][ j ] = min( d[ i ] ...

  8. Python爬取mn52网站美女图片以及图片防盗链的解决方法

    防盗链原理 http标准协议中有专门的字段记录referer 一来可以追溯上一个入站地址是什么 二来对于资源文件,可以跟踪到包含显示他的网页地址是什么 因此所有防盗链方法都是基于这个Referer字段 ...

  9. django--学习笔记 一

    django--学习笔记 一 简介 本次笔记来源于对django官方教程的学习总结,点击进入官方教程. 要点 1.django框架简单介绍: 2.如何创建项目,创建项目介绍: 3.如何在项目在创建应用 ...

  10. drf框架总结复习(1)

    Serializers 序列化组件 为什么要用序列化组件 当我们做前后端分离的项目~~我们前后端交互一般都选择JSON数据格式,JSON是一个轻量级的数据交互格式. 那么我们给前端数据的时候都要转成j ...