软件工程实践总结

前言

这次我们学校花了很多心血在这次的课设上,真的是特别感动和感谢,当你遇到真心为你好对你好的老师的时候,真的是会觉得人间值得!
之前在学软件工程的时候我就会觉得这些理论的东西有什么用啊,什么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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Scrapy框架之下载中间件(详解)

目录 Scrapy中下载中间件 概念 方法 process_request(self, request, spider) 参数: process_response(self, request, response, spider) 参数 基本步骤 示例代码 注意 Scrapy 中 Downloader 设置UA 开发UserAgent下载中间件 代码 三方模块 配置模块到Settin…

【js30天挑战】第四天:数组操作

总结 filter(筛选条件为true的项) map(你想要输出的东西),进来多少个 出去多少个 sort(),默认可排字母顺序。sort(compareFn(a, b))其中compareFn(a, b)返回的值若大于0则a在b的后面。 reduce(),最复杂。reduce(func(){上一轮计算出的结果…

Flink-SQL 写入PostgreSQL 问题汇总

​ 1.主键字段为空问题 错误信息 org.apache.flink.table.api.TableException: Column bus_no is NOT NULL, however, a null value is being written into it. You can set job configuration table.exec.sink.not-null-enforcerDROP to suppress this exception and drop …

罗技k380键盘教程

在智能手机和平板电脑上享受台式电脑般舒适便捷的输入体验。罗技蓝牙™ 多设备键盘 K380 是一款小巧独特的键盘,让您在家中任何地方都能使用个人设备进行沟通和创作。 借助便捷的易于切换™ 按钮,可以通过蓝牙™ 无线技术同时连接最多三台设备&#xff…

【实用技巧】使用USB数据线向亚马逊kindle导入电子书

一、内容简介 本文主要介绍如何使用USB数据线向亚马逊kindle阅读器导入电子书。 二、所需原料 笔记本电脑、Kindle阅读器、Kindle适配的USB-a数据线。 三、导入方法 1、使用USB-a数据线将Kindle阅读器与电脑连接。 2、找到Kindle文件夹-documents-Downloads-Items1目录。…

Django框架实现简单的接口开发

前提创建一个Django项目&#xff0c;目录如下&#xff1a; Django框架上进行GET请求接口开发示例: 1.在上面项目结构目录Template下&#xff0c;新建一个login.html页面&#xff0c;定义表单提交请求的方式为post&#xff0c;具体代码如下。 <!DOCTYPE HTML> <html …

freemarker 使用word模板赋值

1. 引包<dependency><groupId>org.freemarker</groupId><artifactId>freemarker</artifactId><version>2.3.28</version></dependency>word文档工具类import freemarker.template.Configuration; import freemarker.template.…

快来看看Java在编程语言中的优势与特性吧

作者主页&#xff1a;paper jie的博客_CSDN博客-C语言,算法详解领域博主 本文作者&#xff1a;大家好&#xff0c;我是paper jie&#xff0c;感谢你阅读本文&#xff0c;欢迎一建三连哦。 其他专栏&#xff1a;《系统解析C语言》《C语言》《C语言-语法篇》 内容分享&#xff1a…

CentOS 7.9 安装 Jenkins

CentOS 7.9 安装 Jenkins 文章目录 CentOS 7.9 安装 Jenkins一、概述二、安装1、安装 OpenJDK2、安装 Jenkins3、启动 Jenkins4、给 Jenkins 放行端口 三、初始化 Jenkins 配置1、访问2、解锁 Jenkins3、配置清华大学的源地址4、安装插件5、创建管理员用户6、完成安装 四、功能…

【C++】C++关于异常的学习

文章目录 C语言传统的处理错误的方式一、异常的概念及用法二、自定义异常体系总结 C语言传统的处理错误的方式 传统的错误处理机制&#xff1a; 1. 终止程序&#xff0c;如 assert &#xff0c;缺陷&#xff1a;用户难以接受。如发生内存错误&#xff0c;除 0 错误时就会终止…

三相一次重合闸程序逻辑原理(二)

在手动合闸至故障线路或手动分闸及保护或自动装置要求不允许重合闸&#xff08;如母线、变压器保护及低频减载动作&#xff09;等情况下&#xff0c;闭锁重合闸的输入开关量触点接通&#xff0c;H4输出“1”&#xff0c;非门Z4输出“0”&#xff0c;计数器清零&#xff08;CD0&…

基于Java+SpringBoot+Vue前后端分离网课在线学习观看系统

博主介绍&#xff1a;✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

Spring Boot banner详解

Spring Boot 3.x系列文章 Spring Boot 2.7.8 中文参考指南(一)Spring Boot 2.7.8 中文参考指南(二)-WebSpring Boot 源码阅读初始化环境搭建Spring Boot 框架整体启动流程详解Spring Boot 系统初始化器详解Spring Boot 监听器详解Spring Boot banner详解 自定义banner Spring …

Kubernetes API Server源码学习(二):OpenAPI、API Resource的装载、HTTP Server具体是怎么跑起来的?

本文基于Kubernetes v1.22.4版本进行源码学习 6、OpenAPI 1&#xff09;、OpenAPI的作用 OpenAPI是由Swagger发展而来的一个规范&#xff0c;一种形式化描述Restful Service的语言&#xff0c;便于使用者理解和使用一个Service。通过OpenAPI规范可以描述一个服务&#xff1a;…

2024考研408-计算机组成原理第四章-指令系统学习笔记

文章目录 前言一、指令系统现代计算机的结构1.1、指令格式1.1.1、指令的定义1.1.2、指令格式1.1.3、指令—按照地址码数量分类①零地址指令②一地址指令&#xff08;1个操作数、2个操作数情况&#xff09;③二地址指令④三地址指令⑤四地址指令 1.1.4、指令-按照指令长度分类1.…

基于Java高校教师科研信息展示网站设计实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

[Hadoop] 期末答辩问题准备

0.相关概念 1.什么是NameNode&#xff1f; NameNode是整个文件系统的管理节点&#xff0c;它维护着整个文件系统的文件目录树&#xff0c;文件/目录的元信息和每个文件对应的数据块列表。并接收用户的操作请求。 2.SecondaryNameNode的主要作用&#xff1f; SecondaryNameN…

学习Angular的编程之旅

目录 1、简介 2、特点 2.1 横跨多种平台 2.2 速度与性能 2.3 美妙的工具 3、Angular 应用&#xff1a;知识要点 3.1 组件 3.2 模板 3.3 依赖注入 4、与其他框架的对比 1、简介 Angular 是一个应用设计框架与开发平台&#xff0c;旨在创建高效而精致的单页面应用。 A…

别再用查询count,判断数据是否存在了

目录 一、目前多数人的写法 二、优化方案 三、总结 大家在实际的开发过程中&#xff0c;会根据某些条件&#xff0c;从数据库表中查询出是否存在符合该条件的数据。无论是刚入行的程序员小白&#xff0c;还是久经沙场多年的程序员老白&#xff0c;都是一如既往的SELECT count(*…

【探索 Kubernetes|作业管理篇 系列 11】控制器的核心功能

前言 大家好&#xff0c;我是秋意零。 上一篇结束了 Pod 对象的内容。 今天要探讨的内容是 “控制器”&#xff0c;它是 Kubernetes 编排最核心的功能。理解了 “控制器”&#xff0c;你就能理解 Deployment、StatefulSet、DaemontSet、Job、CroJob 控制器对象。 最近搞了一…