软工实践个人总结

一、基本情况📕

1.1 请回望第一次作业,你对于软件工程课程的想象

怎么说呢

在第一次作业的时候,期望自己能够积累经验增加技能

个人编程作业的时候期望下一次作业能够简单一点

结对编程作业的时候期望自己能够活到这次作业结束(熬夜 + 精神压力,开始珍惜以前无聊且平淡的生活了...)

Alpha冲刺的时候期望能够在这一阶段就把项目给拼完,给后面的期末考试多争取一点复习时间

Beta冲刺的时候期望能够顺利地通过答辩

最终答辩的前一天,才刚刚结束了数据库考试,又花了一整个晚上的时间把数据分析给完成了。

整个过程心态的变化就是:期待 → 开始害怕 → 崩溃 → 状态回暖 → 紧张 → 麻木。今天再去回头看第一次作业的博客,确实如自己当初期待的那样,在实践中获取了不少项目经验,也掌握了简单游戏制作、爬虫、数据处理与分析等技能,但是中间所经历的事情,却是自己当初怎么也想不到的吧。

不足之处的话我觉得主要还是在心态团队合作

软工让我发现了自己的一个坏毛病——爱担心:结对编程还有两周时间,就开始疯狂纠结会不会来得及;确定项目选题时一直忧虑淘宝的反爬;Alpha冲刺的开始阶段怀疑我们小组似乎很难完成这样的一个小程序;现场团队编程的准备期担心会不会到时候什么都没做出来......这个坏毛病让我很容易心态崩溃,老是担心未来的一些事情,而且把它们想复杂了。事实证明,所有困难都会有解决办法的,船到桥头自然直嘛。

在结对编程之前很少与别人合作,仅有的几次团队作业也是自己完成了大部分的工作(不是逞能啊,只是老实人的无奈...),所以可能缺乏对队友的信任吧。在结对编程与后面的团队项目中,我开始意识到很多事情靠一个人是完成不了的。在这里也要感谢一下我的结对编程队友蔡震泽和项目小组的成员,你们的帮助真的很重要。

1.2 总结这门课程的实践总结和给你带来的提升:

  • 在软工实践课程当中我编写了1847行代码。

  • 软工实践的各次作业分别花费的时间:

    # 作业 花费时间(分钟)
    2 个人编程作业 1970
    3 结对编程作业 5500
    4 团队介绍与选题报告 180
    5 团队需求分析报告 120
    6 团队项目之现场编程 420
    7~13 Alpha冲刺(含总结) 2460
    14~19 Beta冲刺(含总结) 960
    20~22 每周小结 990
  • 讲述令你印象最深刻一次作业?为什么这次作业令你影响深刻?

    从上面的花费时间已经可以看出来,当然是结对编程作业了!!!

    虽然印象深刻,但是我实在不想去回忆......当时正值国庆嘛,本来应该回去好好放松一下的,结果我回家和在学校的区别就是换了个地方打代码,连出去玩的时间都没有(不过还是有收获的,把游戏原型给基本实现了)......回来之后就开始肝算法了,图片的匹配还是挺成功的,花了几天时间就完成了,但是改进后的华容道规则实在是太难为人了,我和队友折腾了一周还是没理出个头绪来。最后AI大比拼的时间将至,我不得已熬夜三天肝了个能基本实现的算法出来(这里想吐槽一下,在原定日期那天又延迟了比拼时间,我的感受就emmm...)。不过结局还是挺让人欣慰的,原型实现得了满分,AI大比拼的名次也在20左右。

  • 在软件工程课程上花费的时间(预计花费时间参考:开篇博客“你打算平均每周拿出多少个小时用在这门课上”的回答)

    累计时间 实际周均时间 预计周均时间
    210h 9.5h 7h
  • 介绍学习到的新技术或生产力工具以及它们给你带来了哪方面的作用?

    Typora:可以像编写word文档那样编辑markdown文档,排版、生成表格什么的都很方便,从第一次编程作业后,剩下的博客作业都是用它编辑的。

    Processon:我们小组做UML图思维导图都是用这个在线绘图平台,功能很全,关键是免费呀(这里点名批评一下MindMaster,没会员导图有水印,害得我又重新画了一份)。

    八爪鱼采集器:适合小白用的爬虫软件,大佬也建议使用呀,优点就是稳定,我们自己写的爬虫很容易就中间报错了。大学生有教育优惠,认证完可以免费使用一年的专业版

    Python的pandas模块:自从学会了pandas以后,我开始觉得用Excel手动处理数据真的很low了......

    Auto.js:虽然一笔画没能实现出来,但是还是可以用它做些简单好玩的事情的,比如今日校园自动填报(只是一键填报,因为每次进今日校园还要点好几个button)。

  • 其他方面的提升

    经历过K班的洗礼后,发现自己心理承受能力真的变强了好多,遇到一些棘手的困难也很淡定了哈哈。不过淡定归淡定,自从那三天熬夜以后,我开始意识到了任务一定得提前做,不然临近deadline是真的压力巨大呀。所以后面的数据库实践作业和Java实验作业我都是提前一个星期前完成的,提交的前一天只需要去印个报告的感觉是真滴轻松呀。

二、总结与收获💪

经验总结

  • 编写程序的时候要注意一下代码的可重用性,前面可以花点心思为后面的扩展做准备,要不后面有些相似功能的代码还得重写,就挺难看的。
  • 熬夜打代码效率太低了,每次熬夜脑子里都是昏昏沉沉的,很难集中精神思考,还是好好利用白天的时间吧。
  • 代码文件的命名整理挺重要的,如果你打算用完就删的话当我没说,但是想要保存下来的话每次的命名还是规范一点,或者commit到GitHub上面会更好些。
  • 相信自己,也要相信队友。
  • 当这门课程结束以后,你能带走的,不只是所学的知识和获得的经验,还有与队友建立起的友谊呀。

实例分析

就针对上面的第一条经验来分析一下我在实现原型的时候犯的错误:

class startButton():

	def __init__(self, ai_settings, screen, msg, loc, size):
		self.screen = screen
		self.screen_rect = screen.get_rect()
		self.width, self.height = 140, 40
		self.text_color = (0, 0, 0)
		self.highlight_color = (220, 220, 220)
		self.font = pygame.font.SysFont('simHei', size)
		self.rect = pygame.Rect(0, 0, self.width, self.height)
		self.rect.centerx = self.screen_rect.centerx + 15
		self.rect.top = loc
		self.prep_msg(msg)
		self.prep_highlight_msg(msg)

	def prep_msg(self, msg):
        self.msg_image = self.font.render(msg, True, self.text_color, None)
        self.msg_image_rect = self.msg_image.get_rect()
        self.msg_image_rect.center = self.rect.center

	def draw_button(self):
		self.screen.blit(self.msg_image, self.msg_image_rect) 

    def prep_highlight_msg(self, msg):
        self.highlight_msg = self.font.render(msg, True, self.highlight_color, None)
        self.highlight_msg_rect = self.highlight_msg.get_rect()
        self.highlight_msg_rect.center = self.rect.center

    def highlight_button(self):
        self.screen.blit(self.highlight_msg, self.highlight_msg_rect)
class loginButton():

    def __init__(self, msg, screen, x, y):
        self.screen = screen
        self.screen_rect = screen.get_rect()
        self.width, self.height = 100, 30
        self.button_color = (0, 191, 255)
        self.highlight_color = (30, 144, 255)
        self.text_color = (255, 255, 255)
        self.font = pygame.font.SysFont('simHei', 20)
        self.rect = pygame.Rect(x, y, self.width, self.height)
        self.prep_msg(msg)

    def prep_msg(self, msg):
        self.msg_image = self.font.render(msg, True, self.text_color)
        self.msg_image_rect = self.msg_image.get_rect()
        self.msg_image_rect.center = self.rect.center

    def draw_button(self):
        self.screen.fill(self.button_color, self.rect)
        self.screen.blit(self.msg_image, self.msg_image_rect)

    def highlight_button(self):
        self.screen.fill(self.highlight_color, self.rect)
        self.screen.blit(self.msg_image, self.msg_image_rect)

上面的两段代码分别实现的是“开始”按钮和“登录”按钮,看出什么区别了没有

其实

从实现的功能来说完全没有区别,是可以合并为一个类的!

但为什么我写了两个类呢,其实是我在设计页面的时候没有统一布局,导致传位置参数的时候没办法统一,但是这个时候再去改页面又太麻烦了,所以我就整了两个几乎一模一样的类。

看来还真不能用代码量来衡量工作量呢,原型实现我一共写了880行代码,上面的示例就有25行其实是不该出现的,认真修改一下应该500行代码左右就能搞定的。

三、这学期下来,你最感谢的人是谁?有什么话想要对TA说呢?🎤

要感谢的人还挺多的

感谢我的结对编程队友蔡震泽,你是我第一个真正意义上并肩作战的队友,震泽哥真的很强👍

感谢组长林锦龙,谢谢你让我来到了第四组,并在项目过程中给了我许多帮助

感谢算法组的小伙伴沈明镇和曾杰楷,谢谢你们为我分担了不少麻烦工作,在接近一个月的时间里,每天都及时将爬虫数据交付给我

感谢小组的每一个人,自始至终大家都很团结,一起从无到有完成了“校易购”,让我认识到了团队的力量

最后

感谢我们的柯老板,虽然你布置的任务真的真的真的很棘手又麻烦,但是确确实实地让我学到了很多知识,心态也稳重多了

posted @ 2021-01-02 20:36  幸村家的橙子  阅读(162)  评论(1编辑  收藏  举报