173
社区成员
作业所属课程 | fzusdn |
---|---|
作业要求 | 团队作业beta冲刺 |
作业的目标 | 完成并改进项目,在实践中检验软工理论课所学 |
团队名称 | 抽象主义 |
其他参考文献 | 菜鸟教程 CSDN Bilibili |
基本实现以下预期计划:
用户注册登录:
校友交流区
院庆资讯
院庆活动
校友推荐
时光长廊
以往的校庆,校友参加以后除了逛逛校园就没有更多的收获,甚至对于部分校友来说就是“形式”。因此,我们试图将校庆的作用拓展,设计了校友推荐的功能模块。校友填写完个人信息后,我们利用机器学习算法对这些信息进行运算,推荐相似度高的校友,如果该用户对推荐到的校友信息感兴趣,便可进一步联系他,拓宽人际。 (当35岁失业后或许可以相约去乡下种田)当然,为了避免不必要的信息泄露,我们设置了认证方式,通过选择自己当年的舍友认证。
如何使院庆变得丰富,我们引入了“交流论坛”。这是一个类似于论坛贴吧的模块,有各个主题的帖子。在交流区的首页,展示了一些主题的帖子,用户也可以筛选或搜索相关主题的帖子,更具目的性的找到自己想要的帖子。在浏览完所有主题后,若没有您想要的主题,您也可以创建属于你自己的帖子。
每一个帖子内有帖子楼主的主题内容和各层评论回复,同时也可以发表自己的评论。
当岁月的脚步走过,同一块地方,另一般模样。时光长廊模块旨在勾起校友尘封的记忆。该模块的第一级以地图形式呈现,用户在地图上点击想要了解的地点位置,进入相应的第二级模块。第二级模块包括时光长廊、岁月史书、热聊话题三个部分。时光长廊展示了新老照片,岁月史书是一段针对该地点的介绍信息,热聊话题是一个关于这个地点的讨论交流区。
这个项目到这里应该就算完结了,感谢我们组的几位同学,天天陪我加班加点肝报告,再改一改API什么的。因为项目的大致框架已经在上次冲刺的时候完成的差不多了,这次的贝塔冲刺主要是完善一些细节,没有什么太大的改动。本次软工实践也算是让我体验了一下团队协作的感觉,以前写东西都是自己一个人包办所有模块,面向的对象基本都是自己。这次团队作业有人一起合作,算是一次很不错的体验,虽然因为我自身沟通能力不强,老是导致实现的时候出现分歧,花了挺多时间来校正API(DEBUG难度不高但是很多很麻烦)。也因为这个作业,导致我很多烂活没时间整,大部分时间都拿来写一些业务代码,还是有点不甘的(也有可能是因为写CRUD写太多有点烦)。技术上的进步不算太多,估计也就:对docker compose这一套更熟悉一点,对前端工具链更多了解一点这样(虽然本次任务中的后端代码大部分是我写的,前端倒是只有很小一部分)。也算是有一些提升吧,不得不说gorm确实不太适合我,我还是喜欢squeryl这样的orm多一点。
偏题了...总之,和一起合作的伙伴顺利的完成项目,真的很开心,谢谢大伙。
但是作为一名小组组长,我并不是很称职,后续被分到我们小组的成员,我还是比较缺少沟通,有的人摆烂,我也没有过多的干预,有的人中途放弃,我也没能成功的把他劝回来。这就导致大部分的活都积压到少数几个一直在干活的成员身上,超负荷工作的同学真是对不起啊,虽然讲这话于事无补就是了,但是,只要能到达那个地方,道路,就会不断延伸。
假如后续的其他课程还有机会,我会努力的磨练自己的沟通能力,合理的分配任务。以上
在β冲刺期间,随着项目不断的完善,不仅技术上变得更加得心应手,更对很多软件工程的理念有了更透彻的理解。比如《人月神话》提到的"祸起萧墙"章节中提到的项目过程要有不容模糊的里程碑、"巴比伦塔的失败"章节中提到的有效沟通手段的必要性,这些重要理念我都在β冲刺中有更好的认识。尤其,在人员安排方面我向组长学习到了很多,我们需要预估到一些风险,将一些因素列入考虑范围,比如成员的学习进度和项目积极性。这又令我想到敏捷原则中所期望的自组织团队,成员需要有相同的愿景和目标。随着项目内容的扩充,一些问题也随之浮现,比如基础知识的不充足和沟通效率的降低,也同样印证了《人月神话》的一些理念。敏捷原则中提到的"简单"的必要性,也在前端的开发过程中得到了充分的体现,比如组件的可复用性和css规范的统一,都是在过程中提高开发效率的有力手段。这些收获或许才是我们真正应该在β冲刺中学习到的,因为这不仅仅是web开发实践,而是软件工程实践。
上《软件工程导论》这门课,我的收获如下:我们为什么需要软件工程呢?专业点讲,软件工程最终是为了实现“软件制造业”的社会化,工业化大生产,提高其劳动生产效率。只有如此,软件业才能实现社会化,工业化大生产,才能“做大做强”。没有管理的设计是失败和混乱的设计,没有设计指导的编程是无序的忙碌的。根据开发的软件的规模,应该适当程度的运用软件工程化的思想,需要灵活,毕竟我们开发的软件大多数是中小型的,大型的并不多见(我是这么认为的)。但只要涉及人员间的交流和沟通,或多或少都要需要
其实开发软件,就像是解决一个逻辑问题。想想自己平时是怎样写程序的。首先是要有一个想法,即我写的这个程序是要干什么的;然后就是对要实现的核心功能大概构思一种或多种实现方法,并从中选出一种自认为是较好的;接下来就是将涉及的各种主要或次要功能分成各个模块;最后就是分模块来编码和DEBUG。在我看来,除了第一步外,其余的步骤应该是一个循环的过程。在编码的过程中,你总是需要不断地回过头来修改原先的模块设计,甚至最初选定的实现算法。具体到每一步的工作要怎样完成,是非常灵活的,只要把握住大体的方向就行。在进行分析,设计,编码,调试,维护这几部分的工作的时候,最核心的就是文档的编写。
这令人难舍难分的软件工程实践居然都要结束了,真是very不舍。回首两个月的团队你编程,时间过得很快,忙碌的阶段一眨眼一周就过去了,空闲的时候摆着摆着也过去了。关于团队,我有很多次的思考,一个软件开发团队要多少人才合适?每个部门一个人负责,在企业中或许可行,只需要从所需职能的人员中选取一个就好,但是在学校里显然不可以,毕竟每个人不是都能够完全掌握其需要的技能,万一哪一环节掉链子了,整个项目的努力全都白费。然而,10个人的分配也不是特别合理,当然可以,但不是全都可以。这样想想,为自己找一套说辞的前提下,弹性的人员分配或许更好。
通过这次beta冲刺,我作为运维,主要是构建了一个后端的自动化的部署脚本。即在使用github进行代码提交之后,会通过webhook服务通知服务器,让服务器自己执行相关脚本,完成项目构建。这也算是在服务器配置无法跟上的时候进行的一种别样的CI/CD选择。
作为运维的日子有开心也有痛苦。开心是当你折腾好一切环境之后,你就可以比较安心的退居二线。而痛苦的自然是这折腾环境的日子。当然最重要的,是我从中收获了许多,成长了许多。我会永远记得这段和队友们不懈奋斗的美好时光。
在十天的冲刺过程中,主要编写了一部分后端的代码,帮助组长写了几个小功能,包括敏感词过滤器,人员身份认证以及密码的加密对照。在这个过程中熟悉了很多go语言的语法以及一些语言规范,在和队员合作的过程中也学到了很多有用的开发技巧,是很宝贵的经历。相比以前自己一个人打代码做题目,团队编程给我的感觉是完全不一样的,与其说是代码能力的考验,不如说是协调沟通的磨练,这些如果不在《软件工程》这门课上学会,以后步入职场或许会吃很大的亏。
这次的软工实践,我获得的最大的收获是关于团队协作。大家开会的时候各抒己见,讨论出很多有趣的功能以及对功能如何实现,分工以及合作都非常高效。我在这次实践中负责的是前端方面,以及一些其他的工作。对于前端的学习我是通过上手去学习,面对错误尝试自己去解决。我不仅学习了前端三件套,还接触了vue3,虽然还是不太熟练。除此之外我还觉醒了一些奇怪的技能,设计图标,讲演,剪视频等等,这些对于将来的工作也有不少好处。
在本次作业之前对于开源以及对于软件的测试工作都处于一知半解的状态。通过查找百度,CSDN上的各种资料。学习了软件测试的大概流程和步骤,学会了选择合适的测施工具以及如何使用测试工具。在测试工作之前,我也不断地熟悉了后端所写的代码,了解了大概的开发框架。尽管在理论课的内容中也学习了测试,但是真正运用到实践课中才感受到了其中的差异和区别。在这次的工作中,我也还有很多不足和没有做好的地方,没有足够及时地开始测试工作,没能为开发人员提供更多的帮助,在测试的工作中,与开发人员地沟通也不够紧密,这都是没能做好的地方。
这次软件工程实践中,我学到了很多平时学不到的东西,明白了平时很多不明白的道理,学到前端的语法,学到后端的语言类型,学到了如何拍摄vlog,学到了如何和大家团队协作,学到了如何使用前端三件套,学到了如何和大家沟通,学到了如何用CSS优化界面,学到了如何和大家一起开会,学到了如何察言观色,学到了如何理解大家心情,学到了如何一点一点学习前端,希望下次还有。
这次任务我几乎没有贡献,完全依赖于队友的努力。在此次任务时间里,组长按照我的意愿将我分配到前端小组中去。但我在我们小组这个项目的前端使用的工具上就出现了问题,没有掌握项目工具的使用。以及自己在任务中偷懒,最终自己没有完成自己该做的工作。给队友增加了不少负担。哎呀,仍就是我没有发挥作用的一轮冲刺。我们小组的项目已经进入尾声了,我好像还是有点添乱的存在。