软件工程实践总结

news2024/11/19 17:35:57

前言

这次我们学校花了很多心血在这次的课设上,真的是特别感动和感谢,当你遇到真心为你好对你好的老师的时候,真的是会觉得人间值得!
之前在学软件工程的时候我就会觉得这些理论的东西有什么用啊,什么UML,各种模型,还有各种图,感觉很无聊很抽象。所以我也在知乎搜索了这个问题,回答也很诚恳,就是必须要实践才能知道这个软件工程的重要性。其实我在开发一些课设项目的时候也发现了软件工程的重要性了,那就是当你没有做好需求分析,没有花清楚ER图等关键图,没有做好接口文档等等,你就会发现当你开发到后期的时候全是问题,甚至最后因为这些问题那就无法完成系统,所以软件工程的学习必须要实践,而且是一定要在项目中完成运用这些方法才能意识到重要性。
在这里插入图片描述
所以在学期结束时,我们老师请了花旗的老师和井星的团队来指导我们完成了这样的一次课设,真的是收获颇丰,也是完全没想到这次课设能有这么强大的阵容,更是直接上了springcloud,压力很大,但是收获更大,接下来主要讲讲收获吧。

项目

软件工程实践——基于spring cloud alibaba实现的试卷管理系统
这次我们是做试卷管理系统,是非常常见的一个系统,本质上逻辑并不复杂。
我们这次springcloud是基于ruoyi的springcloud封装而来,使用井星公司自己封装的开发框架开发,但是我仔细看下来,感觉和若依的没啥大区别,这里也要特别推荐ruoyi这个项目,我感觉对于一个java路线的人来说,吃透这样的一个项目对于个人的成长是十分有帮助的。
若依 / RuoYi-Vue
MirSpectator / exam 基于ruoyi的在线考试项目
思维跳跃科技 / 在线考试系统
由于我们的代码都在私服的gitlab上,所以就不给大家分享了,这里给几个参考的项目,基本上都差不多。

项目收获

这次我作为组长,压力真的是特别大,时间紧任务重,尤其是组内有很多同学基础并不扎实,所以也是遇到了很多问题,现在主要反思一下我在组内遇到的问题,也记录一下我们从这次开发中吸取到的经验

自己的问题

1.技术有欠缺。作为管理者,我自己首先是技术上不够好,自己也是第一次做,所以很多东西都不懂,也是有点懵的,如果第二次再来的话,肯定会更轻车熟路一点,所以经验很重要。

2.决断力不够。因为是第一次,很多问题不知道不清楚,所以在面临问题时,有各种各样的解决方案,组员也会提出不一样的意见,自己就会纠结犹豫,或者碍于其他的,没有坚持自己的想法和意见,有点和稀泥,但是作为组长,你是要把控全局的,所以要坚持对的,同时也要掌握沟通的方式方法,如何高效有效的沟通也是很重要的。此外,在做组长时要掌握沟通方法,不要讨好型人格,听意见,但也要坚持心中的答案,和组员沟通要掌握方式方法,在保证团结的前提下有效沟通。

3.合理规划安排,比自己埋头苦干更重要。因为我是前端路线的,所以我在本次项目中也是写前端,但是一共五个主要模块,我写了三个,真的挺累的,但是也是因为没有人用,只能自己顶上。但这也带来了一系列的问题,那就是我精力不够,项目管理上的很多问题我没有时间和精力去解决,后期我就一直在写界面了,整个项目都是组员自己在推动,没有及时了解沟通,没有掌握项目进度,以至于最后时间很赶,到答辩上午才完全完成,真的是很紧张!所以一定要清晰自己的角色,如果是组长,一定要明白自己最重要的任务是什么,是把控整个项目,推动项目进行,确保最后项目能够完成。这里面还有很多管理的问题,还需要自己多多下功夫。
(这里也有一个思考,那就是如何设立有效的激励机制,其实管理团队很重要的一点就是激发团队成员的积极性,自己努力干和拿着鞭子在后面赶着干肯定是自己干要更好,所以问题就在于如何激励团队,激发积极性,我觉得有效的激励机制是根本,让他们有目标,知道自己这样干能有什么激励,这样不就有积极性了)

4.把握工作和生活,不要太过紧张。自己在最后一晚的时候,由于项目还有很多不完备的地方,第二天就要答辩了,ppt也没有做好,一点上床休息后一直睡不着,脑子里全是今天各个组员给我的建议汇报,然后一直在想明天项目要怎么推进,怎么安排等等,后面就失眠了,一直到快四点才睡着,早上又七点多就醒了,然后就去教室继续。其实我能理解自己睡不着,是因为压力大,但是这样的情况不能再次出现了,其实好好生活好好睡觉好好吃饭是最重要的,只有这些都做好了,才能真正的投入到工作中去,所以要给你自己gap放空的时间,让自己得到充分的休息,要是你晚上十一点就提前结束,然后休息睡觉,早上早起再去,你的效率会大大提升,也不至于早上那么难受了。

团队的问题

1.接口文档没提前写好,接口规范未定义。由于没有提前定义好命名规范,前后端传值时的很多参数命名都不对,就包括传参时的code,成功是200,失败是500,但是前端需要的类型必须是int类型,后端给定义成string类型了,这就导致我们找问题花了很多时间。所以一定要在开始coding前,前后端负责人先开会,定义好前后端的接口规范,不要再后期再浪费时间。

2.git一定要使用好。由于我的组员很多都没怎么用过git,用的最多的就是clone,所以他们拉取推送都要学一学,然后我就写了文档,但是又遇到了最麻烦的问题,因为拉下来有冲突,nacos的微服务配置参数每个人电脑上多多少少有些差别,什么端口号之类的,按理说只要选择保留自己的就好,可是组员们还是每次冲突合并都解决不好,然后就会导致环境错误,项目启动不起来,我就得帮着一点点搞,甚至最后不得不回退。由于时间问题,我就只能放弃git,让他们各自在本地开发,最后手动合并,而又由于我们前期没有定义规范,接口的规范,命名的规范,还有数据库也一直在修改,导致我们最后出现了每个人的命名不一样,有耦合调用的地方就直接gg,然后数据库也不一样,大家要一点点手动合并,最后花了一整天在合并项目上,真的很痛苦。所以,不管再难,只要是团队合作项目必须用git,这个真的是大家找工作进公司后必备的技能啊,如果你这个都不会,真的很难快速上手项目。

3.站立会议一定要坚持开。站立会议我们是放在每天开发结束时大家花十五分钟汇报自己的今日工作,讲讲明日工作,遇到的问题,需要什么样的帮助,这个会真的很重要,尤其对于组长,我们中期因为赶进度就没开,结果导致我没有意识我们的进度已经慢了,后期疯狂赶进度,就很难!这个每日的站会可以有效的帮助组长把控项目进度,你可以知道你们进行到哪里了,慢了要催一催。而且站会是前后端之间沟通的最直接的桥梁,也是团队协作之间沟通和信息统一的最好方式

4.科学高效的开发模式很重要。在这次开发之中我们学习的是两个企业都在用的敏捷开发,一整套流程下来发现在开发中,科学高效的开发模式真的非常重要,能大大提高效率,解决很多问题。毕竟这些问题他们都已经遇到过了,设计出这样的开发模式就是为了解决这些遇到的问题。

总结

这次开发真的收获很多,对vue和element-ui的使用更加熟练,这也是我写的第一个完整的springboot+vue的项目,还有很多值得自己总结反思的地方,我也会继续努力,把这个项目总结好放到简历上,让自己在秋招的时候收获满意的offer

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/681016.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

冒泡排序、选择排序、插入排序

冒泡排序 思路: 每次循环比较相邻两个元素,如果左边元素>右边元素,则交换位置。结果:将最大值放到最右边;一次循环过后,左边无序区域减少一个数,右边有序取增加一个数;序列长度…

【C++】AVL树的插入实现

目录 AVL树的概念AVL树节点的定义AVL树的插入AVL树的旋转左单旋(parent->_bf 2 && cur->_bf 1)a,b,c当高度为0a,b,c当高度为1a,b,c当高度为2a,b,c当高度为...... 右单旋(parent->_bf -2 && cur->_bf -1)a,b,c当高度为0a,b,c当高度为1a,b,c当高…

【群智能算法】基于浣熊优化算法的工程应用问题优化【Matlab代码#43】

文章目录 【可更换其他算法,获取资源请见文章第5节:资源获取】1. 原始COA算法1.1 开发阶段1.2 探索阶段 2. 工程应用问题优化2.1 压力容器设计2.2 拉压弹簧设计 3. 部分代码展示4. 仿真结果展示5. 资源获取 【可更换其他算法,获取资源请见文章…

Spring事件机制让你的代码更优雅

今天为大家分享一下Spring的事件机制的使用,它是spring中一个非常好用也很实用的机制。 1. spring事件机制的概念 Spring的事件机制是基于观察者模式实现的,它可以在我们的实际应用程序中实现代码之间的解耦,提高代码的可维护性和可扩展性。…

ShardingSphere-Proxy 分库分表

安装ShardingSphere-Proxy 中间件封装 定位为透明化的数据库代理端,提供封装了数据库二进制协议的服务端版本,用于完成对异构语言的支持。 目前提供 MySQL 和 PostgreSQL版本,它可以使用任何兼容 MySQL/PostgreSQL 协议的访问客户端&#x…

面试必问:四种经典限流算法

今天给大家分享一下限流方面的,大家都知道,在分布式系统中,高并发场景下,为了防止系统因突然的流量激增而导致的崩溃,同时保证服务的高可用性和稳定性,限流是最常用的手段。希望能够给大家带来帮助&#xf…

STM32常见面试题

一、STM32F1和F4的区别? 内核不同:F1是Cortex-M3内核,F4是Cortex-M4内核; 主频不同:F1主频72MHz,F4主频168MHz; 浮点运算:F1无浮点运算单位,F4有; 功能性能&…

【无标题】vue中表单绑定v-model

表单绑定v-model 表单控件在实际开发中是非常常见的。特别是对于用户信息的提交,需要大量的表单。 Vue中使用v-model指令来实现表单元素和数据的双向绑定。 案例的解析: 当我们在输入框输入内容时 因为input中的v-model绑定了message,所以会…

Vue-搭建Vuex开发环境

1 安装Vuex 安装之前需要了解一个版本问题,在vue2中,要用vuex的3版本,在vue3中,要用vuex的4版本,要严格遵循这个版本要求,不然就会出现各种意想不到的问题,例如下方安装报错,就算因…

ubuntu修改应用图表|任务栏收藏|快捷方式|收藏夹

需要知道应用程序对应的.desktop文件的位置,然后使用sudo gedit打开。修改对应位置的信息就可以了。 参考:Linux下Desktop文件入门 1.desktop文件位置 一般存放在/usr/share/applications这个位置里面。 以vscode为例,使用sudo gedit code…

POJ - 2287 Tian Ji -- The Horse Racing

题目来源 2287 -- Tian Ji -- The Horse Racing (poj.org) 题目描述 田忌赛马是中国历史上一个著名的故事。 这个故事发生在2300年前,田忌是齐国的一个大官,他喜欢和齐王以及其他公子赛马。 田忌和齐王都有三类马,分别是下等马&#xff0…

1750_使用gcc对嵌入式代码控制逻辑进行测试

全部学习汇总: GreyZhang/c_basic: little bits of c. (github.com) 相信很多人的C语言学习是从printf开始的,为了验证我们的程序代码运行结果,我们通常会选择使用printf打印出我们计算的结果看一下是否与预期一致。到了嵌入式软件开发&#…

web前端工程师个人简历编写(附详细代码)

web前端工程师 h5css3完成简历编写,效果如下: 底部附有详细代码编写 编写Web前端工程师个人简历时,需要注意以下几点: 简洁明了:简历应该简洁明了,内容要点突出,避免冗长和废话。用简洁的语言…

Boost的介绍、安装与环境配置

文章目录 一、Boost库简介二、Boost的安装与编译(一)下载解压(二)编译静态库 三、配置VS环境四、其它环境的配置(vscode、DevC)(一)在DEVC中配置使用boost库的环境(二&am…

java: 程序包javax.servlet.http不存在

问题描述 当项目从2.7.x的springboot升级到3.0.x的时候,遇到一个问题“java: 程序包javax.servlet.http不存在” 。这可能是一些包的精简变化导致的。错误信息如下: 错误代码段 package com.softdev.system.generator.config;import com.softdev.system…

深度学习-ubuntu18.04+RTX3080+cuda11.2+cudnn8.1.0下安装polarstream全纪录

1、安装 创建一个python3.7的虚拟环境 conda create --name polarstream python3.7 激活虚拟环境 source activate polarstream以下操作均在虚拟环境中进行 安装与cuda和python版本对应的torch版本,参考https://blog.csdn.net/didadifish/article/details/12748…

【软件设计师暴击考点】操作系统知识高频考点暴击系列【二】

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:软件…

栈的应用——括号匹配、表达式求值、递归

目录 一、栈在括号匹配中的应用逻辑实现代码实现 二、栈在表达式求值中的应用手算实现代码实现 三、栈在递归中的应用逻辑实现代码实现 一、栈在括号匹配中的应用 括号匹配,顾名思义。若括号按照正确的格式嵌套,则可正确匹配,例如([])&#…

scratch lenet(12): LeNet-5输出层和损失函数的计算

文章目录 1. 目的2. 输出层结构2.1 Gaussian Connection2.2 Gaussian Connection 的 weight 可视化 3. Loss Function3.1 当前类别判断错误时,loss function 中的项(基本项)3.2 判断为其他类别时, loss function 中的项&#xff0…

Spring发展历程及其体系结构

⭐作者介绍:大二本科网络工程专业在读,持续学习Java,努力输出优质文章 ⭐作者主页:逐梦苍穹 ⭐所属专栏:Spring 目录 发展历程体系结构 发展历程 体系结构 Spring框架的体系结构的主要组成部分: 核心容器…