软件工程 | https://edu.cnblogs.com/campus/fzu/SE2024 |
---|---|
作业要求 | https://edu.cnblogs.com/campus/fzu/SE2024/homework/13315 |
作业目标 | 总结这个学期在软件工程实践中的收获 |
学号 | 102201138 |
一、学期回顾
1.1 我对软件工程的想象
在勤勤恳恳地为软件工程奋斗了一个学期之后,这门课程终于接近尾声。现在我坐在电脑前面编写个人总结博客,确实有一种“轻舟已过万重山”的释然感,这么牛马的时期都撑过去了,真是牛逼。
这个学期,迷茫过,痛苦过,不爽过,愤怒过,也常常有想要放弃的时候,但是最后都凭借一股奇妙的信念坚持了下来,回顾往昔,看着自己完成的成果,编写的博客,还是颇有成就感的。
在这门课开学之前,我对软件工程的理解仅限于编写代码和解决技术问题。然而,通过本学期的学习,我逐渐认识到,软件工程不仅仅是技术的堆砌,更是团队协作、需求分析、项目管理等多方面能力的综合体现。我期待自己能在项目管理和团队协作方面有所提升,但最初的实践让我意识到,自己在沟通、协调和时间管理上的能力仍然存在较大的提升空间。
1.2 产出与投入
- 代码量
在《软件工程实践》课程中,我总共编写了大约6000行代码。
- 参与的项目
在第二次个人作业中我完成了类“羊了个羊”三消小游戏,“Merry Christmas”的设计与开发,代码量有800行左右。在结对作业中,我和队友完成了校园项目招聘网站“Project Partner”的设计与开发,在其中我负责前后端和接口的实现,大约有2000多行代码。在团队项目中,我们开发了一个基于大语言模型的辅助笔记网站“EZnote”,我担任了前端开发的角色,负责用户界面和交互逻辑的实现,也负责部分接口的对接,大概完成了3000行左右代码。每一项作业和项目都让我深刻感受到了软件工程中技术与人文的结合,尤其是在团队合作和协同开发时的挑战与收获。
- 软工实践的各次作业分别花费的时间:
作业 | 花费时间 |
---|---|
第一次个人作业 | 6小时 |
第二次个人作业 | 30小时 |
第一次结对作业 | 20小时 |
第二次结对作业 | 80小时 |
第一次团队作业 | 10小时 |
第二次团队作业 | 15小时 |
现场编程作业 | 6小时 |
团队作业beta冲刺 | 100小时 |
- 在软件工程课程上花费的时间
累计时间 | 实际周均时间 | 预计周均时间 |
---|---|---|
267h | 15h | 14h |
1.3 难忘的β冲刺答辩
令我印象最深刻的是β冲刺的答辩环节。那时我们团队经历了很多磨合与调整,尤其是在如何统一接口规范、调整UI界面、功能的完善时,团队成员间展开了激烈的讨论。最终,大家通过集体讨论和妥协,确定了最合适的方案。在答辩时,虽然紧张,但我们能够清晰地展示自己的部分,同时我也感受到自己在技术和表达上的双重进步。这次展示,大家的项目都各有千秋,虽然因为时间有限,我们小组的许多功能还是不够完美,甚至到展示前一天还在调试,但是好在最后还是顺利完成了项目的展示,并且取得了很好的成绩,获得了老师的肯定,这是让我没有预料到的,有一种“峰回路转”的快乐。
二、总结与收获
2.1 和软工的故事
这学期,我不仅学到了很多编程技巧,也深刻体验了结对编程和团队合作的挑战与乐趣。在编程的过程中,我与队友一同面对bug,解决问题。最难的一次是在项目展示的前一晚,那个时候接口对接困难,我们几乎花了一整晚的时间调试,最终艰难地解决了这个问题。这个过程让我学会了如何在团队中分担责任,如何调动资源解决问题,也让我对软件开发的流程有了更深刻的理解,也锻炼了我的意志,不要轻易放弃。
- 个人编程
个人编程是我最初在这门课程中的主要任务之一,我学会了要善于运用ai辅助自己编程。起初,我单纯依赖个人力量进行代码编写,独立完成了部分功能模块,但在编写这些代码时,我意识到个人的效率还是有点低。记得在开发小游戏的时候,我遇到了一个棘手的问题:如何判断多个图层卡片的遮盖。我思考了很长时间,最终在gpt的帮助下解决了这个问题。这让我意识到ai在编程的重要作用,要把ai变成自己的工具。
- 结对编程
随着课程的深入,我们开始接触结对编程。结对编程最大的优势在于它能有效避免个人编程中的盲点和bug,同时也能提高代码质量。我与队友一同面对bug,解决问题。最难的一次是在实现模块整合和接口对接时,遇到一系列错误和问题。又正是国庆假期,我们只能线上通过腾讯会议共享屏幕交流,我们花了整整两天时间调试,最终顺利解决了问题。这个过程让我学会了如何在团队中分担责任,如何调动资源解决问题,也让我对软件开发的流程有了更深刻的理解。
- 团队项目实践
团队项目实践是本学期最重要的部分之一,整个过程从需求分析、功能设计到开发和测试,涵盖了软件工程的各个方面。在这个过程中,我不仅编写了大量代码,还参与了需求分析、接口设计、项目进度管理等工作。
我的主要任务是负责前端开发,具体包括笔记功能模块的实现。最开始的几次开发中,我遇到了不少问题。比如,在实现笔记创建和保存功能时,我们需要与后端进行数据交互,获取笔记的最新数据。然而,由于接口设计不清晰,导致前后端之间的数据同步存在问题。这个问题给我们团队带来了不小的困扰。
在问题发生后,我和后端开发人员进行了深入讨论,重新审视了接口设计,最终确定了一个合理的数据结构,使得前后端的数据能够准确无误地传递。通过这一过程,我不仅学到了如何进行前后端协作,也深刻理解了需求文档、接口设计和团队沟通的重要性。
- 经验总结
-
沟通与协作:通过结对编程和团队项目,我认识到沟通在软件开发中的重要性。团队成员之间要及时沟通和协调,确保每个模块能够顺利对接。无论是需求讨论还是技术实施,沟通都能帮助我们发现潜在问题,避免不必要的错误。
-
灵活应变:在现场编程和团队开发中,我深刻体会到面对问题时要保持灵活性。每当遇到技术难题时,我们都能迅速做出决策,尝试新的解决方案,并不断优化现有实现。
-
团队合作:每个人在团队中都有自己独特的优势和技能,通过结对编程和团队协作,我们能够充分发挥各自的特长,共同攻克技术难关。团队合作不仅提升了我的技术能力,也让我学会了如何与不同背景的人合作。
2.2 新技术与生产工具
- Git与GitHub:在这门课程中,我学会了如何使用Git和GitHub来存储和管理代码,尤其是在团队项目中,如何合理地进行分支管理和代码合并。通过实践,我深刻认识到版本控制在多人协作中的重要性。Git不仅帮助我们避免了代码冲突,还能有效跟踪每个功能模块的开发进度,确保团队成员之间的代码同步,并能快速回滚到先前的版本,避免了代码丢失和混乱。
- 墨刀:在原型设计阶段,我学习了使用墨刀(Moqups)进行界面设计和原型图的制作。墨刀是一款直观且功能强大的在线原型设计工具,它支持拖拽式的组件设计,使得我们能够快速构建可交互的原型。这大大提高了我们团队在需求讨论阶段的效率,帮助我们与客户和团队成员更清晰地沟通设计思路,确保产品界面的友好性与易用性。
- Apifox: 为了高效地进行接口设计和调试,我们团队使用了Apifox,这是一款非常适合开发人员的API管理工具。Apifox不仅支持接口的设计与文档生成,还集成了API调试和测试功能,极大提升了我们在开发过程中与后端接口对接的效率。通过Apifox,我们能够方便地模拟接口请求,查看返回数据,并及时调整前端代码,使得前后端的配合更加顺畅。
2.3 软工给我带来了什么
-
团队协作能力
通过与团队成员的合作,我更加深刻地理解了团队协作的重要性。在团队项目中,每个成员都有不同的专长,如何有效沟通、分配任务以及协调进度,是确保项目顺利进行的关键。我学会了如何发挥团队的集体智慧,确保每个人都能贡献自己的力量,同时避免任务重叠和资源浪费。 -
沟通与表达能力
在团队合作中,清晰和高效的沟通是成功的基础。通过这门课程,我学会了如何将自己的想法准确地表达给团队成员,如何倾听他人的意见,并根据讨论结果做出调整。在需求分析、技术讨论和代码评审的过程中,我的沟通能力得到了很大的提升,尤其是如何向非技术人员解释技术问题。 -
时间管理与压力管理
软件工程实践课程的任务紧张且富有挑战,尤其是在面对多次的现场编程、项目交付和答辩时,时间管理成为了必备技能。我学会了如何在有限的时间内优先处理最重要的任务,如何在高压力下保持冷静、专注并按时完成任务。这不仅帮助我提升了工作效率,还锻炼了我面对压力时的应变能力。
2.4 一些碎碎念
软件工程这门课,带给我最大的感受就是:团队的力量非常强大。原本非常巨大,不可能完成的任务,在合理分配的分配和安排之后,就变得清晰可行起来。以前,在我一个人做作业的时候,总是会想要摸鱼、偷工减料,但是身处团队环境中,这种念头就会被我压制下去,想到自己身上的任务就觉得要努力干,至少不能拖队友后腿。和队友一起工作也确实很有意思,互相沟通,彼此合作。每个队友都不一样,都有不一样的想法和灵感,有时候总是能从队友的奇思妙想里收获很多有用的思想和技能。
给未来Z班学弟学妹的鼓励:对于即将进入这门课程的学弟学妹们,我有几句话想要说。
- 这门课程虽然有不少挑战,但它也给了我们许多宝贵的机会去尝试新技术、解决实际问题。不要担心做错事,每一次失败其实都是一次宝贵的学习机会。
- 单打独斗很难走远。在团队项目中,不同的想法碰撞能够产生出最好的解决方案。记住,团队协作远比个人英雄主义更为重要。
- 课程任务较多,尤其是在项目开发阶段,时间管理变得尤为重要。学会分配时间,合理安排任务,避免拖延,这样能够有效减轻最后的压力。
2.5 照片和截图分享
最后,想通过一些照片和截图来记录下这段旅程的点滴。虽然照片里没有记录每一个代码的成功和失败,但每一张截图都代表了我们团队共同努力的成果。
团队会议:我们在每次讨论和协作时的合影,总能让我记起那些共同奋斗的时刻。大家认真讨论、提出意见,不时地开怀大笑,团队氛围特别好。
紧张刺激的现场汇报:
三、致谢
一个学期的《软件工程实践》课程已经结束,回顾这一段旅程,心中充满了感激。在这段充实而充满挑战的学习过程中,有很多人给了我无私的帮助和支持,特别是我的团队成员和授课老师。我想借此机会,表达我最诚挚的感谢。
-
感谢我的团队成员:
首先,我要感谢我的团队成员。在整个团队项目中,你们的协作与支持让我深刻体会到了团队合作的力量。尤其是在项目的后期阶段,我们面临时间紧、任务重的情况,大家依然能够不抛弃、不放弃,通力合作,确保项目按时交付。感谢你们在整个项目中的耐心与努力。在未来的日子里,能与你们共事是我的荣幸,希望我们在未来能继续保持联系,一起面对更多的挑战。 -
感谢我们的老师和助教:
此外,我还要特别感谢我们的老师和助教。感谢你们这一学期的辛勤付出与无私帮助,你们的耐心教导不仅让我学到了技术,还让我学会了如何应对项目中的复杂问题。你们给予我们的不仅是知识的传授,更是对我们思考方式的引导。在此,我衷心感谢老师和助教的教导与支持,未来的路上希望能继续受到你们的指点和帮助。