第一次迭代开发有感
Posted qqzjyywx
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第一次迭代开发有感相关的知识,希望对你有一定的参考价值。
前言:时光飞逝!第一次迭代开发已经过去大概一周的时间了,有必要来个小结了。
下面我就参考老师给出的模板,来对我们组第一次迭代开发做一个小结。
设想和目标
1. 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述?
- 我们的项目是要做一个创新课程管理系统。根据指导老师的要求,就是做一个适用于本门(软件工程导论)课程的一个管理系统,web端应用程序。具体点来说,就是类似于我们大二上数据结构课使用的超星系统。(而在超星系统中,我们仅仅充当的是学生的角色,上传作业,接收老师发的通知等等。但是我们组要做的是一个完整的课程管理系统,参加课程的学生、助教、老师、学校和系统管理员都要使用的一个系统)
- 需求还是定义的比较清晰的。
- 典型用户:学生、助教、老师、学校管理员、系统管理员
- 典型场景:
- 课程初期学生选择队员组成结对编程和团队项目的团队、课程初期学生选择批改结对编程和团队项目作业的助教、组队完毕后团队项目的小组选择老师发布的项目、学生接收老师发送的通知、学生查看本门课程老师上传的资料、学生提交自己的个人编程、结对编程和团队编程(比如每周的周计划、周总结等等)的作业、学生查看作业的分数……
- 助教批改自己负责的学生的作业,并打分、助教接收老师发送的通知、助教查看未按时交作业的学生,并负责发送通知……
- 教师上传学生信息表和助教信息表向系统导入学生角色和助教角色的用户、教师发布作业、教师发送通知、教师发布团队项目供小组选择、教师查看系统推荐的资料、教师上传自己的课程资料并设置权限、教师查看助教批改作业的情况并可以修改分数……
- 学校管理员导入本校使用系统的教师信息、学校管理员发送通知……
- 系统管理员导入使用系统的学校和学校管理员的相应信息、系统管理员设置各种不同角色(如学生、助教和教师)的权限……
2. 我们达到目标了么(原计划的功能做到了几个? 按照原计划交付时间交付了么? 原计划达到的用户数量达到了么?)
- 整体上来说达到了第一次迭代版本的目标,但是过程十分狼狈,在此就不一一赘述了……
- 原计划:实现教师的课程资料和个人资料的增删改查以及上传功能,人员管理中助教和学生表的增删改查功能,以及每个角色的账号管理,服务器搭建等等。
- 已按照原计划时间上交检查。
- 由于是第一次迭代的alpha版本,所以目前还没有用户数量,只是开发人员在浏览器上测试。
3. 和上一个阶段相比,团队软件工程的质量提高了么? 在什么地方有提高,具体提高了多少,如何衡量的?
- 这是项目开发的第一次迭代,所以这个问题留待下次回答。
4. 用户量, 用户对重要功能的接受程度和我们事先的预想一致么? 我们离目标更近了么?
- 目前没有用户,所以这个问题留待下次回答。
有什么经验教训? 如果历史重来一遍, 我们会做什么改进?
- 开发工作不能拖延,一拖再拖的结果只能是最后不能完成任务。平时就要分出任务然后认真学习,尽量在规定时间内落实完成自己的任务。由于我们组开发用的是指导老师要求的guns框架,所以前期会有很多不懂的地方,比如springboot、maven、mybatis-plus等等很多知识。但是不能畏难,要大胆去开发,实现,实在遇到不懂的地方再有针对性地去学习,而不能像第一次迭代那样打着学习guns框架的幌子而停滞不前。总之开发的过程中遇到难以解决的bug是很常见的事情,我们不能过于畏惧而失去了对项目的热情。只有在错误中才能成长。
计划
1. 是否有充足的时间来做计划?
- 有很充足的时间做计划。我们组项目的功能很繁杂,所以前期在需求分析阶段花费了很多很多的时间,但是也导致了一个问题就是我们的开发时间更少了。然后到了后期,由于需求太多,有一些小的细节都有所遗忘。
2. 团队在计划阶段是如何解决同事们对于计划的不同意见的?
- 当有不同的意见时,我们会很认真地进行讨论,从复杂程度、将来开发的难易程度、对用户是否足够友好等很多方面进行讨论,最终选择一个更好的方案。
3. 你原计划的工作是否最后都做完了? 如果有没做完的,为什么?
- 并没有。原计划的上传文件以及批量读入数据工作本来也想写进alpha版本的,但是后期发现代码一直有bug,而且bug没有得到解决,最后就没有做出这个功能。是技术方面的原因,对guns框架的了解程度不够,然后写自己的业务代码时就会一直报错,试了很多办法也没有解决。
4. 有没有发现你做了一些事后看来没必要或没多大价值的事?
- 前期对项目原型的设计花费了不少时间。由于我们项目的功能比较多,原型方面要做的页面比较多也比较复杂,所以就花费了很大的精力来设计原型,后来我们决定用框架时,发现原型没有多大帮助,之前的精力都浪费掉了。
5. 是否每一项任务都有清楚定义和衡量的交付件?
- 是的。前期我们的任务是按角色划分,每个人负责一个角色,然后做响应角色的功能分析、页面设计等等。后期开发也是按功能点划分,比如文件的上传下载、Excel的导入、功能菜单的实现等等。
6. 是否项目的整个过程都按照计划进行,项目出了什么意外?有什么风险是当时没有估计到的,为什么没有估计到?
- 项目确实是按照老师规定的计划进行。但是在开发阶段,框架的难度和复杂度是我们没有料到的,因为它涉及很多我们没有学过的知识,比如springboot、maven、mybatis-plus、jquery、shiro等等很多知识,如果不了解这些知识,就读不懂它的代码。如果没有读懂它的一些代码,我们开发过程出现bug就很难解决了,另外,开发也有难度。
7. 在计划中有没有留下缓冲区,缓冲区有作用么?
- 没有。
8. 将来的计划会做什么修改?(例如:缓冲区的定义,加班)
我们学到了什么? 如果历史重来一遍, 我们会做什么改进?
资源
1. 我们有足够的资源来完成各项任务么?
2. 各项任务所需的时间和其他资源是如何估计的,精度如何?
3. 测试的时间,人力和软件/硬件资源是否足够? 对于那些不需要编程的资源 (美工设计/文案)是否低估难度?
4. 你有没有感到你做的事情可以让别人来做(更有效率)?
有什么经验教训? 如果历史重来一遍, 我们会做什么改进?
变更管理
1. 每个相关的员工都及时知道了变更的消息?
2. 我们采用了什么办法决定“推迟”和“必须实现”的功能?
3. 项目的出口条件(Exit Criteria – 什么叫“做好了”)有清晰的定义么?
4. 对于可能的变更是否能制定应急计划?
5. 员工是否能够有效地处理意料之外的工作请求?
我们学到了什么? 如果历史重来一遍, 我们会做什么改进?
设计/实现
1. 设计工作在什么时候,由谁来完成的?是合适的时间,合适的人么?
2. 设计工作有没有碰到模棱两可的情况,团队是如何解决的?
3. 团队是否运用单元测试(unit test),测试驱动的开发(TDD)、UML, 或者其他工具来帮助设计和实现?这些工具有效么? 比较项目开始的 UML 文档和现在的状态有什么区别?这些区别如何产生的?是否要更新 UML 文档?
4. 什么功能产生的Bug最多,为什么?在发布之后发现了什么重要的bug? 为什么我们在设计/开发的时候没有想到这些情况?
5. 代码复审(Code Review)是如何进行的,是否严格执行了代码规范?
我们学到了什么? 如果历史重来一遍, 我们会做什么改进?
测试/发布
1. 团队是否有一个测试计划?为什么没有?
2. 是否进行了正式的验收测试?
3. 团队是否有测试工具来帮助测试?
4. 团队是如何测量并跟踪软件的效能的?从软件实际运行的结果来看,这些测试工作有用么?应该有哪些改进?
5. 在发布的过程中发现了哪些意外问题?
我们学到了什么? 如果历史重来一遍, 我们会做什么改进?
团队的角色,管理,合作
1. 团队的每个角色是如何确定的,是不是人尽其才?
2. 团队成员之间有互相帮助么?
3. 当出现项目管理、合作方面的问题时,团队成员如何解决问题?
每个成员明确公开地表示对成员帮助的感谢 (并且写在各自的博客里):
我感谢 _______<姓名>______对我的帮助, 因为某个具体的事情: _____________________。
我们学到了什么? 如果历史重来一遍, 我们会做什么改进?
总结:
你觉得团队目前的状态属于 CMM/CMMI 中的哪个档次?
你觉得团队目前处于 萌芽/磨合/规范/创造 阶段的哪一个阶段?
你觉得团队在这个里程碑相比前一个里程碑有什么改进?
你觉得目前最需要改进的一个方面是什么?
对照敏捷开发的原则, 你觉得你们小组做得最好的是哪几个原则? 请列出具体的事例。
博客要附上全组讨论的照片。
以上是关于第一次迭代开发有感的主要内容,如果未能解决你的问题,请参考以下文章