[I.3] 个人作业:结课总结

21373254-肖灿 2024-06-30 22:51:35
项目内容
这个作业属于那个课程软件工程
这个作业的要求在哪里第三次个人作业
我在这个课程的目标是获得软件工程方面的知识,提高自己的编程能力,团队协作能力。开发一款令自己满意的软件。
这个作业在哪个具体方面帮助我实现目标梳理一下自己整个软工课程学习过程中的收获,通过反思达到更好的学习效果

我的问题

之前的问题看到这一篇博客
下面是我现在对于这些问题的理解:

问题1:关于两人合作的一点疑问

结对编程与两人合作一文中,邹欣老师提到了许多两个人之间磨合的策略与路线。
但有一点没有覆盖到,我也很疑惑,关于两个人合作的时候,我时常会有一种心态,就是感觉我应该提一种要求,但是也提多了也会感觉有一种“负罪感”,这也属于是磨合的过程吗。有什么办法克服这种心理。

  • 现在大致没有这个疑惑了,因为轻身体会过后,我发现这种心态是确实是处于一种磨合的心态。但俩人有默契之后不会为提要求这种事情而烦恼,要把心态调整为"两个人一起解决问题,而不是一个人解决问题。"所以,就算是提出要求,也只需要把它当成是一种解决问题的提案,而不是一种指令,两个人合理的进行讨论,"负罪感"就不太会存在。
  • 还有一个亲身体会就是:结对编程的队友也是我之前数据库大作业的唯一一个队友,对比了一下两次的合作,我才发现上一次确实是在磨合,这一次就很顺利,因为我们之间的默契已经建立起来了。

问题2:对Scrum的灵活性的疑问

Scrum/Sprint一文中,提到了Scrum在实践中可能会遇上的问题,可能会流于形式。但想Scrum如果严格执行为每天的会议,很容易会导致这个问题,因为有的时候,这几天的任务可能就是很重需求就是很模糊,大家可能根本也就干不出来什么东西。这个时候每天的会议不仅仅会流于形式,而且会破坏士气。
我认为Scrum Meeting的开展周期可以分阶段开展,而不是按照时间开展。

  • 这个我在实际的开发过程中进行了一下探索,我认为Scrum Meeting有两种职能,一种是"催进度",另一种是"整理进度展望未来",所以我认为Scrum Meeting也完全可以分为两种:
    • 一种是集体赶工的集中开发,这种就不需要大家挨个汇报,而是大家分为了几个前后端对接的功能小组,每组集中开发(有点像结对编程),然后PM全程跟踪,这种情况下,进度得以保证。而且在大家都挺忙的大背景下,这种分组开发的方式也有利于增加灵活性。
    • 第二种是每到有一个新的点子或者功能被提出来的时候,或者取得了比较大的进展的时候,再召开一个Scrum Meeting,这个时候就是大家汇报一下自己的进度,然后大家一起讨论一下接下来的工作,这个时候就是"整理进度展望未来"的时候了。这种情况下,大家的士气也会得到保证,而且也能够保证项目的进度。

问题3:PM spec的具体实践看法

在邹欣老师的讲义设计阶段Spec中,提到了两个写spec的例子,一个是外星人系鞋带,一个是三峡的防水等级。两个例子都是非常具体的和有趣的。同时还提到了spec最大的两个问题是乏味和时间。但是文中并没有提到如何有效解决这两个问题。

  • 我认为,spec作为对接用户与实现者之间需求的桥梁,实践中很重要的一点是让用户和实现者参与到spec的编写中来。在后续更新spec时,好好设计实现过程中的选择问题与创造性问题,让用户来回答。可以有效克服时效性问题。在编写spec时,让程序员参与审计与编写,同时适当让他们看到用户的原始需求的数据,把spec从指令变成一种讨论,可以有效克服乏味问题。同时避免了PM或者是spec编写者的个人主观意识对spec的影响。
  • 这是我个人对于spec实践的一点看法,虽然会增加一些沟通成本,但是我认为这是值得的。对于这一点,也需要在实践中不断的调整。
    • 比方说我们团队的软工实践项目,其实在这一点上是吃亏的,设计的环节缺乏用户参与,也缺乏程序员的审计,导致了后续的开发过程中出现了很多问题。这也是我在这一点上的一个反思。

问题4:用户需求问卷设计的看法

我在其他活动中接触过社科类的同学怎么设计一个问卷,当时了解到的一个方法很有用处。
讲义中提到引导性倾向是一个很大的问题。问卷有一个很大的问题就是区分有效的问卷和无效的问卷,所以有的时候设计一些带有明显倾向的傻瓜题,可以有效的区分有效的问卷和无效的问卷。
问题定义不准确这也是文中提到的一个问题。但我认为这是一个需要折中的问题,太明确的是or不是问题,可能会导致用户的回答不准确,但加入一个没有关心过的选项,则能够有效的区分用户的需求。

  • 这个问题我在实际的开发过程中也有一些体会,我们最开始的问卷设计就遵循了这一原则,最大程度上的给予用户能够用最少的时间给出最大的信息量的原则。我觉的可能需要考虑如下几点:
    • 问卷的设计:第一得简洁,让用户扫两眼就知道该点哪;第二得有趣,让用户弄够做下去。
    • 问卷的宣发:第一得渠道广,第二得宣发得足够吸引人。
    • 问卷的分析:第一得关注傻瓜题筛选,第二得关注用户的回答是否有逻辑性。
  • 其实稍微一想,软件的设计发布和收集反馈的过程,和问卷设计的过程是有很多相似之处的。

问题5:关于典型用户和典型场景以及用户界面设计的一点想法

用户界面设计一文中,提到了你姥姥的遥控器的例子,在前面也讲到过典型用户和典型场景的概念。
我认为实际应用中,典型用户可能可以分为几类,这个时候,我们或许需要给前端界面做一些可选项(而且是很容易找到的可选项)。就比如姥姥的遥控器可能需要一个大字体的显示,但是对于年轻人来说,功能丰富一点可能更好。这个时候,我们可以在界面上加一个“老年模式”和“年轻模式”的切换按钮,这样可以有效的解决典型用户的问题。
当然,遥控器这么做会很麻烦,但是在软件界面上,这是一个很好的解决方案。

  • 这一点上我们确实也需要吸取教训,界面设计比较缺乏考虑,考虑到典型用户的问题,我们的界面应当让用户扫两眼就知道该点哪,在编辑器界面缺乏引导与提示,这一点可以做的更好。

我的收获

需求阶段

我们进行了详细的需求分析,使用NABCD的分析方法进行了相关工具的详细调研,我对于软件工程的“需求”来源,如何进行分析有了更加深入的认识。

设计阶段

根据需求,进行功能规格和技术规格的设计,这也是我第一次在进行开发前,进行如此详细的设计工作,设计的重要性还是体会到了的。另外还有一点比较重要的心得就是,设计的时候需要考虑优先级,以及在后续的开发过程中,需要灵活的调整设计。

实现阶段

我主要进行了代码的管理以及前端的美化工作,此前我从没有完整的学过一遍CSS,在学习完之后,感觉真的能够得心应手不少。另外,代码的管理也是一个很重要的环节,我对于git的操作等有了熟悉。另外,这也是第一次着手更改这么大一个Web项目,overleaf整个项目结构和设计思想都有很多值得我学习的地方。

测试阶段

在这一阶段,我主要学习到了如何进行科学全面的测试,功能测试,性能测试,安全测试这一整个完整的矩阵,我认为这是我在软件工程中最重要的一个环节,也是我的一次重要的收获。

发布阶段

发布阶段非常的重要,发布之后的问题收集这也是上面提到的问卷问题,或许现在最有效率的还是微信群直接对接开发人员,其实想来也是,符合直觉,没有程序上的障碍,没有什么比面对面交流更能传达信息了。(这对小项目确实有效,但细想,假如是大项目,这种方式就不太适用了)

维护阶段

维护阶段也是一个很重要的环节,但是软工课程似乎没有涉及到?最后一节课qsgg的发言也让我有很深的感触,这几乎是自己大学很多项目的写照,WeaveX可能要走向社团维护的开源项目道路,希望它能够继续长大,成为我们最开始梦想的那样。

心得体会

总体来讲,这门课程让我对于软件工程有了更加深入的认识,对于软件开发的整个流程有了更加清晰的认识,对于团队合作也有了更加深入的认识。这一次PM的经历也让我懂得了许多道理,总体来讲,团队内部上下还是一条心的,收获了很多宝贵的回忆。

...全文
207 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

73

社区成员

发帖
与我相关
我的任务
社区描述
2024年北航敏捷软件工程
软件工程团队开发结对编程 高校 北京·海淀区
社区管理员
  • clotho67
  • Yeyanhan
  • HJin_Gwok
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧