设想和目标html
1. 咱们的软件要解决什么问题?是否认义得很清楚?是否对典型用户和典型场景有清晰的描述?前端
2. 咱们达到目标了么(原计划的功能作到了几个? 按照原计划交付时间交付了么? 原计划达到的用户数量达到了么?)算法
从项目完成状况来讲,确实达到了预期的目标,本次迭代主要完成了基本CNN网络的构建,微信小程序前端界面的设计以及交互呈现,先后端交互以及服务器部署,为第二次迭代开发做为软件基础,主要实现了如下功能块:数据库
前端页面设计与页面交互,数据互通,服务器搭建及环境配置,实现手写体识别功能及服务器部署编程
前端页面除与数据库交互页面外均设计并完成,页面间逻辑关系通顺并具备良好的用户体验,可是数据连通性目前较差,数据库未创建。小程序
服务器搭建已经成功实现,而且已经成功将代码部署在服务器上,实现了对服务器的应用。后端
可以成功实现手写体识别,而且实现了数据预处理,使得后台应用能够适应图像的大小,形状变化,对于特征明显的图片识别精度能够达到95%。微信小程序
3. 用户量, 用户对重要功能的接受程度和咱们事先的预想一致么? 咱们离目标更近了么?服务器
4.有什么经验教训? 若是历史重来一遍, 咱们会作什么改进?微信
首先,因为课程须要,咱们不可能单独分出人员专门进行ENAS的算法实现,这势必会致使人员分工的不平衡。故在本次迭代内不可能将人员排除在外以专门进行研究类学习。其次,本项目中对于平台的创建涉及到框架搭建与环境配置,计算机网络基础,前端,后台,学习成本较高。α迭代中没有彻底的实现先后端人员分离,大部分精力主要用在粘合性解决与框架学习上。若是从新进行一次迭代,首先要作的是先后端分离,同时对于β版本中涉及的算法应当组织五人一块儿进行讨论,最终由后端设计进行实现。前端负责数据库与页面的设计,保留接口文档。这都是咱们须要作却没有作好的地方。
计划
1. 是否有充足的时间来作计划?
时间相对来讲仍是较为充足,平台搭建自己较为简单,主要时间花费在于填补知识盲区与实践。可是由于指导老师并无给咱们明确需求的缘由,整个项目的计划并无十分的明确,直到α迭代结束时,需求分析也并无彻底打磨结束,仍然呈现较为粗糙状态,具体的需求不少须要在项目跟进的过程当中摸索。所以,咱们将日程进行了大幅度推动,迅速进入开发状态,在不断的摸索过程当中进行深度的动态需求分析。
2. 团队在计划阶段是如何解决同事们对于计划的不一样意见的?
团队实际上分工是由PM来决定,可是因为项目的算法性质,以及团队内有部分红员具备必定的深度学习基础,故项目时间主要依托我与另外一位算法设计人员决定,对于设计与交互逻辑,主要由你们协商解决,根据不一样方案所产生的后续开发利弊进行权衡。
3. 你原计划的工做是否最后都作完了? 若是有没作完的,为何?
团队的工做除数据库的部署和设计放在了第二次迭代计划中外,均所有完成。
4. 有没有发现你作了一些过后看来不必或没多大价值的事?
首先对于服务的配置,在没有彻底进行需求分析的状况下盲目选取技术栈,致使我和另外一位组员长时间纠结于使用哪种后端框架,以及如何解决https请求的问题,在实验之初对于官方文档并无很仔细的探查,致使数据类型出现不匹配或传输数据失败的情况,这些都是因为初期对于文档不够熟悉。对于基础知识不足而盲目进行探查,致使大量时间浪费,出现了Apache和Nginx同时安装的情况,项目进度停滞。
5. 是否每一项任务都有清楚定义和衡量的交付件?
对于项目的检查基本处在动态平衡的状态,当某些功能块出现没法知足的需求时,会当即与开发负责者进行沟通,对模块进行动态的调整,保证标准的统一。
这是较为不规范的一点,但愿在β迭代中可以以作好为标准,而不是可用。(引觉得戒)
6. 是否项目的整个过程都按照计划进行,项目出了什么意外?有什么风险是当时没有估计到的,为何没有估计到?
7. 在计划中有没有留下缓冲区,缓冲区有做用么?
有留下缓冲区,在α阶段验收前一周项目进入冷却期,留出了充足的时间进行测试与修正。
8. 未来的计划会作什么修改?(例如:缓冲区的定义,加班)
因为接下来的项目难度较大,因此可能会须要较长时间专一于项目,而且要着重实现完成项目,可能会减小缓冲区的设置,多加班。
咱们学到了什么? 若是历史重来一遍, 咱们会作什么改进?
项目的完成过程当中,首先我理解最深的应该是团队合做。即使一我的能够作到再多事情,它的精力也是有限的,而这时,团队合做的重要性便显得尤其重要。其次,在项目开发过程当中,对沟通表达能力,基本的技术能力有了进一步提高,更加了解了项目的开发过程与基本框架的使用。若是再来一次,我必定会尝试将分工与计划落实到位,避免出现计划不如变化快的状况。
资源
1. 咱们有足够的资源来完成各项任务么?
时间资源上,咱们的时间仍是比较充分的,完成任务的过程当中也没有时间紧张感。但相应的,形成了β阶段迭代任务过为艰巨。软件资源上,咱们在项目开始之初就选择了购买服务器资源进行部署尝试。对于算法自己,经过对于ENAS的论文以及对于其引述论文的分析,基本了解了实现,但细节上须要其余资源进行丰富。
2. 各项任务所需的时间和其余资源是如何估计的,精度如何?
3. 测试的时间,人力和软件/硬件资源是否足够? 对于那些不须要编程的资源 (美工设计/文案)是否低估难度?
4. 你有没有感到你作的事情可让别人来作(更有效率)?
我认为咱们的分工较为合理,每一个人各司其职,效率已经处于一种临近饱和的状态,故不存在相似情况。
有什么经验教训? 若是历史重来一遍, 咱们会作什么改进?
并无认真进行资源 - 目标 -进度的负反馈调节,若是再来一遍咱们会从三个方面入手,提升开发效率。
变动管理
1. 每一个相关的员工都及时知道了变动的消息?
天天都会在群里讨论,确保全部人的信息透明,准确,可达。
2. 咱们采用了什么办法决定“推迟”和“必须实现”的功能?
首先咱们保证了用户的基本使用路线的联通,在此基础上添加其余功能模块,故其余功能模块为推迟,必须实现是用户的关键路径模块。
3. 项目的出口条件(Exit Criteria – 什么叫“作好了”)有清晰的定义么?
完成CNN对图片的预处理,简单分析辨识后将结果经过微信小程序反馈给用户。
4. 对于可能的变动是否能制定应急计划?
并无制定应急计划,因为未碰到紧急变动情况,这部分弊端没有暴露出来,可能也是需求较为模糊致使的。
5. 员工是否可以有效地处理意料以外的工做请求?
对于忽然须要的数据集,咱们能够作到紧急集合而且在三十分钟内完成了数据集的制做与预处理过程。
咱们学到了什么? 若是历史重来一遍, 咱们会作什么改进?
首先对于可能遇到的突发情况应该有必定的处置措施,而不是遇到紧急需求时手忙脚乱的紧急集合。同时,咱们应当区分紧急需求与可推迟需求,以便发生紧急情况时能够有预留时间进行处置。再来一遍咱们必定会指定应急处理预案,保证项目进度有序
设计/实现
1. 设计工做在何时,由谁来完成的?是合适的时间,合适的人么?
整个模式的设计是在项目初期,进行需求分析时,由pm和老师沟通商定的。实际上在前八周设计开发过程当中都有设计工做,需求在动态的调整。由PM与老师进行沟通磨合我认为是较为合适的,同时咱们积极与老师沟通了时间,确保了每一位成员都能准确的了解需求,第一时间提出本身的疑问。
2. 设计工做有没有碰到模棱两可的状况,团队是如何解决的?
没有,每个设计都须要详细的讨论是否可行,每个作出的决定都带有很强的目的性和可行性,不存在模棱两可的状况。
3. 团队是否运用单元测试(unit test),测试驱动的开发(TDD)、UML, 或者其余工具来帮助设计和实现?这些工具备效么?
咱们的每个模块都是进行单元测试后严格对照接口来进行使用的,但因为接口与接口之间的适配问题,致使对于集成测试的处置遇到了困难。
小组使用UML图进行详细的项目分析管理,经过活动图、用例图等分析项目的需求和对象。下面是小组设计的整个信息流与UML图:
用例图:
泳道图:
时序图:
从这几个图例能够获得咱们软件的使用流程,功能的划分,进而获得α迭代的任务。
4.比较项目开始的 UML 文档和如今的状态有什么区别?这些区别如何产生的?是否要更新 UML 文档?
5. 代码复审(Code Review)是如何进行的,是否严格执行了代码规范?
经过组与组之间代码互审进行的。咱们的代码的代码规范有些缺失。
咱们学到了什么? 若是历史重来一遍, 咱们会作什么改进?
首先咱们学会了使用UML图来指导项目设计,同时对于整个项目各个部件间的沟通也主要依据UML图来进行。其次须要对代码的规范性进行复查和严格审核,代码的规范性尚有待提升。我认为咱们主要须要规范代码,同时严格按照UML图中的走向进行程序开发。
测试/发布
1. 团队是否有一个测试计划?为何没有?
有针对验收标准进行商议和参考,可是没有针对具体的计划。对于初期开发,整个团队并无创建很强的自信心,整个项目从无到有咱们很难说本身有一个能够拿出来进行测试的成品。固然第一次迭代以后会对项目设计测试计划,对ENAS的性能进行系统测试。
2. 是否进行了正式的验收测试?
是
3. 团队是否有测试工具来帮助测试?
没有
4. 团队是如何测量并跟踪软件的效能的?从软件实际运行的结果来看,这些测试工做有用么?应该有哪些改进?
暂未考虑
5. 在发布的过程当中发现了哪些意外问题?
小程序的发布须要备案审核等,不考虑进行发布。
咱们学到了什么? 若是重来一遍, 咱们会作什么改进?
程序的完成与测试仍是重点,同时要合理安排时间,留下确切的冷却期。在单元模块的开发过程当中进行单元测试,同时对于集成测试应当留有测试样例与接口文档,必要时能够安排专人进行测试样例设计。
团队的角色,管理,合做
1. 团队的每一个角色是如何肯定的,是否是人尽其才?
团队角色肯定,以尊重我的意愿为首要因素,再根据实际状况协商肯定角色。参照自身的学生身份,现阶段我认为仍是以开阔眼界,寻找本身感兴趣的方向为主,尽量保证普遍涉猎,从而选择适合本身的方向。
2. 团队成员之间有互相帮助么?
有,诸如宋朝都同窗与我积极探讨了关于ENAS的算法实现,以及颜岑同窗曾与我探讨的对于图片的预处理的一些见解,都是难得的帮助。
3. 当出现项目管理、合做方面的问题时,团队成员如何解决问题?
你们共同商量,综合每个人的意见,尽量达到让每一个人以为公平,平衡。
总结:
你以为团队目前的状态属于 CMM/CMMI 中的哪一个档次?
属于CMMI一级,完成级
你以为团队目前处于 萌芽/磨合/规范/创造 阶段的哪个阶段?
磨合基本完成,接下来是规范
你以为团队在这个里程碑相比前一个里程碑有什么改进?
你们彼此更加熟悉,互相的配合会比以前更有效率,同时渐渐有了明确的分工和侧重点,好比咱们这边PM侧重前端开发,而其余人员多侧重于先后端链接与数据通路设计,我主要侧重算法分析与后端的建设。
你以为目前最须要改进的一个方面是什么?
提升效率,划分分工界限。
对照敏捷开发的原则, 你以为大家小组作得最好的是哪几个原则? 请列出具体的事例。
在团队内部,最具备效果而且富有效率的传递信息的方法,就是面对面的交谈。咱们小组每周都有交流,也每周都会开会讨论,无论线上线下(虽然有的时候没有写会议记录)。你们相互之间的交流也有助于咱们进步。并且你们相互帮助,在面对问题时互相助力,共同解决。如对于数据通路的联通问题,咱们曾专门留出一个下午进行集中开发,衡量了迭代的优先级,最终迅速的解决了问题。