Put-Me-Down项目Postmortem2

  • 一.设想和目标
  • 二.计划
  • 三.资源
  • 四.变更管理
  • 五.设计/实现
  • 六.测试/发布
  • 总结

一.设想和目标

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

  • 我们的软件要帮助低头族控制使用手机时间。功能很明确,对典型用户和典型场景有清晰的描述,在需求规格说明书中。

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

  • 有,但是因为对开发不熟悉,计划是一步一步摸索出来的。

3. 团队在计划阶段是如何解决成员对于计划的不同意见的?

  • 成员脾气好,商讨接纳合理的意见。

有什么经验教训? 如果历史重来一遍, 我们会做什么改进?

  • 首先应明确整个开发过程大体要做哪些事,将较大的模块落实到个人负责,如文档由某成员专门负责。

二.计划

1. 你原计划的工作是否最后都做完了? 如果有没做完的,为什么?

  • 没有,大部分做完了,我们原本想将数据备份到数据库,后来因为申请的原因、我们的APP在Alpha阶段实现功能可以不需要服务器、安卓方面功能较多、服务器方面不熟悉,所以程序重心放在安卓;

2. 有没有发现你做了一些事后看来没必要或没多大价值的事?

  • 基本没有。美工有时候越用心会适得其反,走到极端。

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

  • 没有每项,代码提交是明显的可衡量交付件。但是成员在学习过程中没有设定交付件,导致学习效率不高。

4. 是否项目的整个过程都按照计划进行,项目出了什么意外?有什么风险是当时没有估计到的,为什么没有估计到?

  • 没有完全按原计划,计划在整个过程中有变动,项目有计划地进行。初始计划我们是想将程序方面分为安卓和后台,主要是程序方面的工作。我们对项目的认识是模糊的。经过alpha阶段前2天的摸索,基本上知道整个完成这个APP要做什么。将程序重心放在安卓;后来意识到界面的重要,以及原本负责服务器后台的人员会PS,所以我们在界面设计方面加入了自己制作的符合我们APP主题的图标;
    博客的内容有助于每个成员把握自己的时间,清楚整个项目,把握到整个项目的过程,以及记录每个人在这一阶段的成长(困难、总结),所以博客内容的收集、整理是很重要,我们有2个人可以负责文档。一开始对博客的内容提纲不清楚,摸清提纲后一个人负责就可以了,另一个人可以负责其他事务。

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

  • 有考虑到缓冲区,缓冲区有作用,可以应付紧急情况,如bug修复。

6. 将来的计划会做什么修改?

  • 会留出更多缓冲区,不将时间按事务排满。

我们学到了什么? 如果历史重来一遍, 我们会做什么改进?

  • 应该明确整个项目的事务,清楚定义每个任务,包括学习任务,设定衡量的交付件,提高学习效率。写出代码框架,大家坐在一起打代码。

三.资源

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

  • 有资源,但没有足够的资源,我们最好的资源是有一位开发安卓经验的组长,他写了整个代码的结构;拥有PS技能的人员;文档编写人员;缺少的资源是测试经验、界面设计知识;但我们有学习资源,却没有安排好学习任务以及学习衡量交付件。

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

  • 我们将任务切分,基本是一天完成几个任务,没有具体到小时,精度不高。

3. 测试的时间,人力和软件/硬件资源是否足够? 对于那些不需要编程的资源 (美工设计/文案)是否低估难度?

  • 测试是薄弱的一块,我们是手动测试,用例测试,测试方面花的时间少。对于美工设计和文案我们有重视,也认识到美工是一大重点以及弱项。

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

  • 有,我们有2个人可以写文档,后来让一个人做,另一个人做其他事,充分利用人力,提高效率。

有什么经验教训? 如果历史重来一遍, 我们会做什么改进?

  • 我们会多面对面交流,坐在一起学习,制定学习验收计划,提高效率。

四.变更管理

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

  • 知道,通过博客的任务安排知道。

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

  • 主体功能实现,如将服务器推迟到下个版本,计时以及记录、结束时强制手动停止必须实现。

3. 项目的出口条件(Exit Criteria – 什么叫“做好了”)有清晰的定义么?

  • 有,组长很注重细节,结合用户场景来考量项目是否做好了。

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

  • 项目变更可能性小,没有考虑到变更,如果有变更都是积极地想办法解决。

5. 成员是否能够有效地处理意料之外的任务请求?

  • 能。有时候临时出现新的事物,如界面整合需要修改,大家都积极配合。

我们学到了什么? 如果历史重来一遍, 我们会做什么改进?

  • 原本对项目的认识不够,所以出现了变更。组长都是根据每个人意愿让大家自主选择,大家不知道自己想做什么,具体角色是做什么,如果重来一次让组长明确每个角色要做什么,再结合成员志愿及组长考量,将角色及责任落实到个人。

五.设计/实现

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

  • 项目的整体结构则由李坤隆先僧完成,李先僧之前有参与过开发,相比其他成员更熟悉开发的套路,所以由他来完成项目的架构是合适的。

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

  • 因为其他小组成员刚开始学习开发,不懂套路,所以代码结构的设计是由李先僧一人完成的。小组项目最终采用mvp模式,根据李先僧的描述,这也是他第一次使用这个模式,对这个模式并不熟悉,和其他成员一样也是摸着石头过河。一开始对代码的分包是像传统的‘activities’,‘adapter’这样根据每个文件的所属类别分包,还是像google官方的mvp例子那样根据模块分包犹豫不决。最终看了一篇博文按照应用功能来封装,而非所属类别决定按模块分包。(只是把文件按模块分了下包,实际分工的时候是按m-v-p来分的,并不是某个人把某个功能模块的mvp三层全包了。mvp三层间依赖于接口而非具体的实现类,只要接口在一开始的时候商定好,三个层之间完全可以异步并行开发,不是很懂栋哥评测那天说的“伪按层分工”是什么意思)

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

  • 团队没有单元测试,由于项目开始的比较晚,预留的时间比较少,大家都不懂得测试代码怎么写。有尝试着学习怎么写android的单元测试,但是由于最终时间太紧没有完成测试(这是个教训,以后要预留好足够的时间,在做中学)有使用uml工具画项目的用例图和类图。

4. 什么功能产生的Bug最多,为什么?在发布之后发现了什么重要的bug? 为什么我们在设计/开发的时候没有想到这些情况?

  • 暂时没发现产生很多bug的功能,在发布前发现多用户登入的情况下,还是保有之前用户的数据,发布后发现如果在零点的时候使用计时功能可能会导致每日计时统计结果又偏差。都是逻辑上的错误

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

  • 李先僧没有让大家重写代码,而是自己把代码修改了一下(命名并没有改:(),我认为这是不利于初学者成长的,如果李先僧个大家指出不规范的地方,并说明该怎么写,这样学习效果会更好!

我们学到了什么? 如果历史重来一遍, 我们会做什么改进?

  • 如果重来一次,让李先僧更多地给其他组员加油打气写代码,指出代码不规范的地方,并说明该怎么写。一开始就重视测试工作,就像对界面一样。

六.测试/发布

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

  • 有测试计划

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

  • 是的,针对各项功能都进行了测试

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

  • 没有用到测试工具,因为第一次进行测试,所以就先采用了人工测试

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

  • 在alpha版本完成后,将各个模块的测试进行分配,每个组员进行用例测试。最后的运行结果证明了测试工作还是有用的,发现了很多之前没发现的潜在问题,下次要再细心点

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

  • 意外问题倒是没有,和原本设想的差不了太多

我们学到了什么? 如果历史重来一遍, 我们会做什么改进?

  • 人工测试可能还是会有些缺陷,用测试工具测试可运行更多、更繁琐的测试,且快速高效,可执行一些人工测试执行相当困难或者做不到的测试,如大量的用户并发、更好的利用资源,具有一致性和可重复性的特点。所以下次可能更倾向于工具和人工结合。

总结:

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

  • 二级

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

  • 萌芽,还要多学习,每个成员都要增强实力。

你觉得目前最需要改进的一个方面是什么?

  • 回首总结了整个过程,发现有许多bug,这些bug从另一个角度看是别样的收获,如果能修复了这些bug、漏洞,收获更多。最需要改进的地方:团队应多面对面交流,提高效率,不拖延。

转载于:https://www.cnblogs.com/linjin/p/6098937.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/394568.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大数据实验报告总结体会_建设大数据中台架构思考与总结

简介本文介绍完善的大数据中台架构了解这些架构里每个部分的位置,功能和含义及背后原理及应用场景。帮助技术与产品经理对大数据技术体系有个全面的了解。数据中台定义:集成离线数仓与实时数仓,并以多数据源统一整合采集到kafka,再通过kafka进…

半数集问题

给定一个自然数n,由n开始可以依次产生半数集set(n)中的数如下: (1) n ∈set(n); (2) 在n的左边加上一个自然数,但该自然数不能超过最近添加的数的一半; (3) 按此规则进行处理,直到不能再添加自然数为止。…

微型计算机控制理论基础答案,微型计算机控制技术试卷c

微型计算机控制技术试卷a潘新民 微型计算机控制技术实用教程微型计算机控制技术试卷C一、选择题(本题共10小题,每小题 1.5分,共15分)1. DAC0832的VREF接-5V,IOUT1接运算放大器异名端,输入为1000000B ,输出为( )。A. 5V…

aws lambda_四处奔走:初学者遇到AWS Lambda

aws lambdaby Janaka Bandara通过Janaka Bandara 四处奔走:初学者遇到AWS Lambda (Running around the block: a beginner meets AWS Lambda) Computing! It sure has a very long, vivid (and sometimes awkward) history. Some key milestones include:计算&…

python打开快捷方式_Python创建启动目录的快捷方式,python,到

# -*- coding:utf-8 -*-# author:lizonezhiimport osimport sysimport pythoncomimport win32com.client as clientdef createShortCut(filename): # 目前创建的无起始位置"""filename should be abspath, or there will be some strange errors&quo…

二叉树的基本操作及应用(三)

#include <stdio.h> #include <stdlib.h> #include <malloc.h> #include <string.h> typedef char DataType; int depth0; int h11; int nlayer1; char ch2; typedef struct node {DataType data;//节点数据元素struct node *lchild;//指向左孩子struc…

maven的profile详解

详细内容请见&#xff1a;https://www.cnblogs.com/wxgblogs/p/6696229.html Profile能让你为一个特殊的环境自定义一个特殊的构建&#xff1b;profile使得不同环境间构建的可移植性成为可能。Maven中的profile是一组可选的配置&#xff0c;可以用来设置或者覆盖配置默认值。有…

夏至未至计算机版音乐,夏至未至有哪些插曲背景音乐 夏至未至所有bgm歌曲汇总...

夏至未至有哪些插曲背景音乐 夏至未至所有bgm歌曲汇总夏至未至第一集插曲是什么?夏至未至插曲曝光。夏至未至是由陈学冬、郑爽、白敬亭等联袂主演的青春偶像剧,昨晚已经开播了&#xff0c;那么第一集的插曲是什么呢?和小编一起去看看吧!夏至未至第一集插曲《那些花儿》那片笑…

了解如何在20分钟内创建您的第一个Angular应用

Angular is a JavaScript framework, created my Misko Hevery and maintained by Google. It’s an MVC (Model View Vontroller). You can visit the official page to learn more about it.Angular是一个JavaScript框架&#xff0c;创建了我的Misko Hevery&#xff0c;并由G…

js闭包使用

闭包就是在一个函数内定义一个内部函数 并返回内部函数 function f1(){var a1; addfunction(){aa1;} function f1Sub(){ console.log(a); } return f1Sub; } var ff1();f();add();f();var f2f1();add();f(); 输出为 1 2 2 可以看到输出结果 定义f2后执行add 这时 f2的add函数已…

BIO,NIO,AIO总结(二)

这里重点介绍NIO 待定 http://www.apigo.cn/2018/11/09/javacore5/ https://juejin.im/entry/598da7d16fb9a03c42431ed3 https://mp.weixin.qq.com/s/c9tkrokcDQR375kiwCeV9w?转载于:https://www.cnblogs.com/smallJunJun/p/10607078.html

思科配置计算机ip地址子网掩码,计算机系统与网络技术IP地址 子网掩码 主机号等计算复习...

IP地址 子网掩码 主机号等计算复习IP地址、子网掩码、网络号、主机号、网络地址、主机地址复习 IP地址&#xff1a;4段十进制&#xff0c;共32位二进制&#xff0c;如&#xff1a;192.168.1.1 二进制就是&#xff1a;11000000&#xff5c;10101000&#xff5c;00000001&#xf…

nmap常用参数详解

nmap常用参数详解 作者&#xff1a;尹正杰 版权声明&#xff1a;原创作品&#xff0c;谢绝转载&#xff01;否则将追究法律责任。 借用英雄联盟的一个英雄赵信的一句话&#xff1a;“即使敌众我寡,末将亦能万军丛中取敌将首级!”。三国关羽&#xff0c;万军丛中斩了颜良&#x…

r语言r-shiny_使用Shiny和R构建您的第一个Web应用程序仪表板

r语言r-shinyby AMR通过AMR 使用Shiny和R构建您的第一个Web应用程序仪表板 (Build your first web app dashboard using Shiny and R) One of the beautiful gifts that R has (that Python missed,until dash) is Shiny. Shiny is an R package that makes it easy to build …

RHEL5.8配置开机自动挂载磁盘

Linux环境中可以通过fstab来设置自动挂载磁盘或者共享存储&#xff0c;操作如下&#xff1a; fstab配置文件路径&#xff1a;/etc/fstab 每行代表一个存储位置。 [rootappsrv01 ~]# cat /etc/fstab LABEL/ / ext3 defaults 1…

909计算机基础大纲,《计算机应用基础》(专科)考试大纲

《计算机应用基础》(专科)考试大纲《计算机应用基础》考试大纲考试对象&#xff1a;《计算机应用基础》考试大纲适用于网络教育所有专业的高中起点专科学生。 考试教材&#xff1a;《全国计算机等级考试一级MS Office教程》(2004版)&#xff0c;南开大学出版社 课程学时&#x…

模板变量,过滤器和静态文件引用

模板变量&#xff0c;过滤器和静态文件引用 模板路径 Djiango先到settings里面找templates下的DIRS查看是否有路径&#xff0c;也是从上往下依次寻找&#xff0c;找到就返回。如果DIRS没有&#xff0c;就到APP_DIRS里面寻找。但是APP要先在INSTALLED_APPS里面进行注册然后根据I…

antd option宽度自适应_WordPress文章中添加自适应宽度的表格——墨涩网

WordPress文章中添加自适应表格&#xff0c;前面写文章的时候需要用到表格来表达阵列信息&#xff0c;但是在WordPress添加表格不想是在office中那样方便&#xff0c;需要借助插件或者代码才可以实现&#xff0c;今天分享一个不需要安装插件纯代码实现WordPress文章中添加自适应…

Go语言程序记录日志

许多软件系统运行中需要日志文件。Go语言程序中&#xff0c;输出日志需要使用包"log"&#xff0c;编写程序十分简单。 像Java语言程序&#xff0c;输出日志时&#xff0c;往往需要使用开源的软件包来实现&#xff0c;编写程序稍微复杂一些。 Go语言的包"log&quo…

如何让代码更易于维护_如何轻松地使您的网站更易于访问

如何让代码更易于维护by Jaroslav Vaňkt通过JaroslavVaňkt 如何轻松地使您的网站更易于访问 (How you can easily make your website more accessible) As a designer, developer, or even product manager, you have thousands of responsibilities. Every project require…