121
社区成员




这个作业属于哪个课程 | 2302软件工程 |
---|---|
这个作业要求在哪里 | 团队作业—bate 冲刺+事后诸葛亮 |
这个作业的目标 | Alpha 阶段问题总结 |
团队置顶随笔 | 啊对对队——Beta阶段置顶集合随笔 |
其他参考文献 | 现代软件工程讲义 11 项目管理 - 事后诸葛亮会议 |
1. 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述?
1.本产品的定位是提供一个便捷、多样化和个性化的在线购买零食产品的平台。
2.典型用户:零食爱好者,办公室白领,家庭主妇等。
3.典型场景:
1.下午茶时间:一个上班族在办公室内,感到疲惫和饥饿时,通过零食商城系统,在手机上浏览并订购了一些口味独特的零食,满足了自己的口腹之欲。
2.家庭聚会:一个家庭主妇为即将来访的客人准备一些零食,通过零食商城系统,在电脑上选择并购买了一些适合不同口味的零食,为聚会增添了一份美味。
3.礼物选择:一个年轻人要送给朋友生日礼物,知道对方喜欢吃零食,通过零食商城系统,在平台上找到了一款限量版的特色零食,作为独特的礼物送给朋友。
2.我们达到目标了么(原计划的功能做到了几个?按照原计划交付时间交付了么?)
1.原计划的功能在大体上已经全部完成,详见 Alpha 总结随笔。
2.Alpha 冲刺已按原计划结束并通过答辩,项目也按照原计划交付时间交付了。
3.和上一个阶段相比,团队软件工程的质量提高了么? 在什么地方有提高,具体提高了多少,如何衡量的?
1.与上一阶段相比,团队软件工程的质量提高了。具体如下:
在本次Alpha冲刺中,我们首先采取了明确的工作分工策略,详细说明每个人的具体任务和对接对象,这有助于加强团队内部的协作与交流。此外,我们还引入了站立式会议的方式,使管理人员能够更好地了解团队的开发进度,从而更有效地进行项目管理。此外,在alpha冲刺后期,我们团队开发与测试同步进行(TTD),这样可以更早地发现问题,减少后期发现并修复bug所需的时间成本,从而加快团队整体的开发速度,避免出现重大错误而无法在规定时间内修复的情况。
2.提高的主要方面在于工作效率和团队合作的改进,相较于之前来说,约提高了35%。Alpha结束,我们成功地完成了任务,团队成员也反馈说这是一次愉快的合作经历。相较于过去,这次开发过程更加顺利,大家在任务中分工明确,避免了最后时刻的抢修,这对于项目的质量和时间节点都是一种重要的进步。
4.用户量, 用户对重要功能的接受程度和我们事先的预想一致么? 我们离目标更近了么?
1.很显然,大体上和我们事先预想一致。
2.在用户主要功能上,我们的大体方面已经完成,将会针对用户进行广泛的调查,不过从 Alpha 环节的项目演示上来看,用户接受程度与我们事先的预想较为接近,我们认为我们离目标已经比较接近了。
5.有什么经验教训? 如果历史重来一遍, 我们会做什么改进?
1.需求分析阶段非常重要,在项目开始之前,确保进行充分的需求分析,这将有助于确保项目在正确的轨道上,以及减少后期的修正和调整。
2.规划和时间管理至关重要。良好的项目规划和严格的时间管理可以确保项目按时交付。详细制定计划并严格执行将有助于减少延误的风险。
3.团队合作和沟通也很重要。项目的成功离不开团队成员之间的协作和有效的沟通,建立良好的沟通机制,并确保每个人清楚自己的任务和责任,以及随时可以交流意见和想法。
4.在开发过程中需要边开发边测试,这样可以尽早地发现并报告问题,开发人员也可以快速地修复问题。这样可以尽早地发现和解决软件缺陷,减少后期修复成本。
1.是否有充足的时间来做计划?
1.磨刀不误砍柴工,在 Alpha 开始前的计划虽有些仓促,但却不乏细致和合理。
1.团队在计划阶段是如何解决同事们对于计划的不同意见的?
1.尝试找到不同意见之间的共同点,并寻求达成共识。
2.原计划的工作是否最后都做完了? 如果有没做完的,为什么?
1.基本完成。
3.有没有发现你做了一些事后看来没必要或没多大价值的事?
1.无。合理的计划使我们的时间精力花在刀刃上。
4.是否每一项任务都有清楚定义和衡量的交付件?
1.前端Vue_router写得有纰漏,导致界面整合时,有些个页面跳转错误或者失败。
2.事先没有仔细商量导致后端数据接口没有与前端定义一致,导致多次数据与前端交互失败。
5.是否项目的整个过程都按照计划进行,项目出了什么意外?有什么风险是当时没有估计到的,为什么没有估计到?
1.项目开发到一半,云服务器到期了,不想花钱租,只能换个新号。。。
2.部署在云服务器上多次失败,当时可能是心态问题,越到后期越如履薄冰,担心意外发生。
7.在计划中有没有留下缓冲区,缓冲区有作用么?
1.当然是有的。
2.在计划中留出缓冲区是一种明智的做法,因为它可以帮助团队应对不可预见的情况和风险,从而避免项目进度受到严重影响。例如我们就留了额外时间在测试上,以免出现问题,从而导致无法在计划时间内维修完毕。
8.将来的计划会做什么修改?(例如:缓冲区的定义,加班)
1. 团队可以重新评估缓冲区的定义和大小。如果发现某些任务的风险较高或不确定性较大,可以增加相应的缓冲区,以应对潜在的延迟或问题。
2.减少线下会议时间和次数,相应增加线上会议的交流频率,提高团队成员的自由度,增加效率。
9.我们学到了什么? 如果历史重来一遍, 我们会做什么改进?
1.遇到困难先别摆,多和团队成员商量,沟通,求助,都会迎刃而解啦。
2.还是那句话,磨刀不误砍柴工,在动手前要制定好计划,不一定要非常细致,能把握团队项目大致动向即可。
3.如果重来,我们应该对各个成员的技术水平和方向做更深入的了解,以便更加合理,有针对性地布置任务,提高整体效率。
1.每个相关的员工都及时知道了变更的消息?
1.是的。
2.我们采用了什么办法决定“推迟”和“必须实现”的功能?
1.开会讨论一下。
3.项目的出口条件(Exit Criteria – 什么叫“做好了”)有清晰的定义么?
1.外观界面上匹配原型设计。
2.功能上完成系统设计说明书的定义。
4.对于可能的变更是否能制定应急计划?
1.能。遇到变更后,我们能及时通知团队成员,并及时商定好策略。
5.员工是否能够有效地处理意料之外的工作请求?
1.我们团队并没有森严的上下级关系,而是相处融洽,大家都愿意互相帮助,共同学习,进步。良好的氛围使我们能够有效地处理意料之外的工作请求。
6.我们学到了什么? 如果历史重来一遍, 我们会做什么改进?
1.遇到问题摆正心态,遇到需求变更更要摆正心态。
2.团队成员之间多沟通,多交流,工作才能有条不紊进行下去。
1.团队的每个角色是如何确定的,是不是人尽其才?
1.开会讨论,摸底技术,确定每个人的职责。
2.目前来看,基本上算是人尽其才,但许多成员仍有巨大潜力,beta冲刺阶段好好发掘。
2.团队成员之间有互相帮助么?
1.如上所述,氛围良好,都愿意互相帮助。
3.当出现项目管理、合作方面的问题时,团队成员如何解决问题?
1.开会商讨,争取多方意见。
2.最终由组长决定。
1.设计工作在什么时候,由谁来完成的?是合适的时间,合适的人么?
1.设计工作在需求分析、系统设计与概要设计阶段由小组成员共同完成。由于每一项任务都有一周的时间来进行,且离 Alpha 冲刺比较远,有足够的时间,且为团队内部成员开发,人员合适。
2.设计工作有没有碰到模棱两可的情况,团队是如何解决的?
1.有问题就开会讨论,集思广益。
3.团队是否运用单元测试(unit test),测试驱动的开发(TDD)、UML, 或者其他工具来帮助设计和实现?这些工具有效么?
1.团队中使用了微信开发者工具的云测、Xmind、墨刀来帮助设计与实现。
2.云测用于自动化测试,进行回归测试与页面覆盖测试。Xmind用于思维导图绘制。墨刀用于原型设计,明确前台界面样式与展示效果。
4.什么功能产生的 Bug 最多,为什么?在发布之后发现了什么重要的 bug? 为什么我们在设计/开发的时候没有想到这些情况?
1.购物车与结算模块产生的bug最多,用户可以对商品进行增删改查操作,涉及到库存管理、价格计算、促销规则应用等逻辑,这些逻辑的复杂性容易引入Bug。
2.发布后发现兼容性问题导致功能缺失,在某些设备上,部分页面切换功能无法正常使用。
3.经验不足,对某些技术或最佳实践不够熟悉,导致未能预见某些问题以及测试覆盖不全,测试计划可能没有充分考虑所有极端场景。
5.代码复审(Code Review)是如何进行的,是否严格执行了代码规范?
1.明确Code Review的目标和标准,分配审查者,通常会指定至少一位团队成员作为主要审查者,他们负责仔细检查代码的逻辑、结构、风格等是否符合规范。审查者可以是具有更多经验的成员,也可以是负责相关模块的同学。
2.在Alpha冲刺这样紧张的开发周期中,严格执行代码规范可能面临时间压力的挑战,但通过有效的规划、自动化工具的利用以及团队成员间的良好沟通,可以最大程度地确保代码质量和规范遵守。
6.我们学到了什么? 如果历史重来一遍, 我们会做什么改进?
1.项目管理的重要性:明确目标、合理分配任务、跟踪进度和有效协调资源对于按时交付高质量产品至关重要。
2.加强前期规划:投入更多时间在项目启动阶段做详尽的需求分析和规划,明确项目范围,减少中途变更。
1.团队是否有一个测试计划?为什么没有?
1.有制定测试计划,见测试随笔。
2.是否进行了正式的验收测试?
1.是,团队成员进行了多轮黑盒测试验收结果。
3.团队是否有测试工具来帮助测试?
1.使用了微信开发者工具的云测进行自动化测试来辅助测试。
4.团队是如何测量并跟踪软件的效能的?从软件实际运行的结果来看,这些测试工作有用么?应该有哪些改进?
1.定义性能指标,首先,团队需要明确衡量性能的关键指标,例如启动时间、页面加载速度、内存占用、CPU使用率等。并且微信开发者工具提供了性能监测功能,如性能面板,可以用来实时监控小程序运行时的各项性能指标。
2.这些测试工作有助于提前发现问题,性能测试能够提前发现并定位性能瓶颈,避免在用户端出现卡顿、闪退等严重影响用户体验的问题。
3.改进空间:增加自动化性能测试的比例,减少人工干预,提高测试效率和频率,确保每次代码提交都能自动触发性能检查。
5.在发布的过程中发现了哪些意外问题?
1.兼容性问题,在不同类型的移动设备上,小程序可能表现出不同的行为,如界面错乱,这些问题在测试阶段可能未完全暴露。
6.我们学到了什么? 如果历史重来一遍, 我们会做什么改进?
1.细致的测试计划至关重要,全面的测试覆盖,包括单元测试、集成测试、性能测试、兼容性测试以及用户验收测试,是发现并修复问题的前提。没有周密的测试计划,可能导致发布后出现大量未预见的错误。
2.优化测试自动化,投入更多资源开发自动化测试工具和脚本,特别是针对回归测试和兼容性测试,提高测试效率和覆盖率。