软件工程大二下学期结课总结与建议
软件工程大二下学期结课总结与建议
通过这门课程的学习,我总结了如下几条建议:1.适当降低作业量,着重作业的完成质量和精度,本学期做了大大小小不少的web开发和app开发,但大多数只是开发了最表层的内容,只有简单的 CRUD操作,其中的各种细节和逻辑后没完善,也没能从中收获知识,缺乏系统的总结与提升,因此我觉得学生需要更多的时间去精磨一套系统,彻底掌握明白其中的逻辑与知识结构;2.减少对亲戚之类的寻求评价的难度,家中的长辈文化程度低,对于这些系统项目完全不懂,他们大多能理解的只有最后的成绩,以及最终毕业后的发展状况,一定让亲戚提出建议,他们都是俩眼一黑,大多是给他们徒增烦恼,最后还是得自己编写一些话教他们拍视频读;3.建议多增加团队合作类的娱乐活动,从中引入课程需要教授的知识点,帮助同学们在实际活动中加深理解,同时也能在这个交流甚少的大学生活中促进同学之间的交流。
接下来是对这学期下来的感受和总结。
记得刚开学,当听到“Spring Boot”这个词的时候,我内心是懵的:“Spring?不是春天吗?Boot?靴子?春天穿靴子搞开发?” 后来才知道,这玩意儿是JavaWeb开发的“瑞士军刀”,能让你快速搭建一个后端应用,省去了很多繁琐的配置(传说中的“约定大于配置”)。一开始,跟着教程搭环境、建项目。用@SpringBootApplication这个神奇注解启动一个类,然后在Controller里写个@GetMapping("/hello"),返回个"Hello, Spring Boot!"。当在浏览器里看到这行字蹦出来的时候,那感觉,简直了!比第一次写C语言的"Hello World"还激动,因为这背后是一个真正的Web服务器在跑啊!兴奋劲没过多久,真正的挑战来了:连数据库。老师让我们操作各种“XX信息”,用户、商品、订单啥的。这时候,MyBatis(或JPA)闪亮登场。学写Mapper接口、XML映射文件(或者用注解),配置数据源。第一次成功从MySQL里查出一条数据,并在网页(或者Postman)上展示出来,那种“我掌控了数据”的感觉,太有成就感了!虽然可能只是一个简单的SELECT * FROM user。
增:写个表单页面,数据传到Controller,Service层处理业务逻辑,最后Mapper调用insert语句入库。难点:表单验证、数据绑定、处理异常(比如插入失败)。删:通常就是点个删除按钮,传个ID过来,后端根据ID去delete。学到的:要小心!删除操作很危险,得做好确认和权限控制(虽然我们课设可能没做那么细)。改:先根据ID查出旧数据,填充到编辑表单,用户改完提交,后端再更新。感觉像是Create和Read的结合体。容易出问题的地方:并发修改、数据一致性。查:分页查询是重点!从简单的查所有selectList,到带条件的查询,再到用PageHelper)实现分页。当看到数据一页页展示出来,页码跳转正常,那个舒坦!还学了点模糊查询LIKE %keyword%。
依赖地狱:Maven的pom.xml文件,加依赖一时爽,版本冲突火葬场!经常因为依赖版本不对,项目启动报一些奇奇怪怪的错,debug到怀疑人生。解决办法?查文档、搜Stack Overflow、问大佬同学。注解懵逼:@Autowired, @Service, @Repository, @RestController, @RequestMapping... 各种注解满天飞。开始时分不清谁是谁,用错了地方就报错。慢慢理解了分层架构(Controller -> Service -> Mapper/Repository)和依赖注入的思想,才觉得这些注解真香!调试困难:后端代码不像前端,点一下就能看到效果。报错了,日志在哪看?控制台一堆红字,怎么快速定位问题?学会了看异常堆栈信息、用System.out.println(简单粗暴但有效)、断点调试(IDEA神器)。Postman成了我最好的朋友,测API全靠它。RESTful API:老师提了这个概念,设计URL要规范。虽然一开始觉得麻烦,但理解了之后发现确实清晰、好用,前后端交互更明确了。Spring Boot让我第一次系统地接触到了“后端工程师”的世界。理解了Web请求怎么进来,数据怎么流转处理,结果怎么返回。虽然做的功能基础,但框架带来的结构化、模块化思想,以及解耦的重要性,是最大的收获。从面对问题手足无措,到能大致知道去哪里找解决方案,这种解决问题的能力提升,感觉特别值。不过也深刻体会到,后端要考虑的东西真多:性能、安全、并发、数据库优化... 我们只是摸了点皮毛。
搞定了后端“服务器”,接下来就是把功能搬到手机上了!Android Studio,这个“亲儿子”开发环境,安装包就挺大,第一次打开,看着满屏的选项和代码,又有点懵。Android开发第一步:画界面。学用XML写布局,LinearLayout, RelativeLayout, ConstraintLayout各种布局管理器,TextView, Button, EditText, RecyclerView 各种控件。感觉像是在搭积木,但XML的属性也太多了吧!layout_width, layout_height, margin, padding, gravity... 调个位置能调半天。Activity作为“界面控制器”,负责处理用户交互和生命周期,生命周期这个概念很重要,搞不好App就崩了或者内存泄漏。光有界面不行,数据得从我们辛辛苦苦写的Spring Boot后端来啊!这就涉及到网络请求。学了用HttpURLConnection(比较原始)或者更流行的第三方库,比如Retrofit或者Volley。核心步骤:定义接口):描述API地址和参数。创建请求对象。发起异步请求(不能在主线程搞网络!会卡死界面)。处理响应:成功拿到数据(JSON),用Gson/FastJson解析成Java对象;失败处理错误。当第一次在手机App上成功加载出后端返回的用户列表,并且能下拉刷新时,那个激动!感觉自己的前后端终于“血脉相连”了!有了网络请求的基础,App端的CRUD逻辑就和Web后端类似了,只是交互变成了手机操作:除了联网操作,老师也让我们体验了本地数据库SQLite。用SQLiteOpenHelper创建数据库和表,写SQL语句进行本地CRUD。虽然课设里可能用得不多(主要是配合网络数据做缓存或离线操作),但了解了移动端数据持久化的基本方式。感觉比后端操作数据库更“轻量级”一些。异步地狱与线程切换:网络请求、数据库操作都不能在主线程(UI线程)做!必须开子线程或者用AsyncTask(已过时但简单)、Handler、或者更现代的协程(Kotlin)或RxJava。处理完结果还要切回主线程更新UI(runOnUiThread或Handler发消息)。稍不注意就NetworkOnMainThreadException或者CalledFromWrongThreadException,App崩给你看!权限申请:访问网络、读写存储空间都需要在AndroidManifest.xml声明,并在运行时动态申请(Android 6.0+)。忘了申请或者用户拒绝了,功能就歇菜。权限管理这块也挺有学问。设备兼容性与模拟器卡顿:不同Android版本API有差异。Genymotion模拟器快但配置麻烦,原生模拟器... 有时候慢得想砸电脑。真机调试是最靠谱的,但来回插拔数据线也烦。ADB命令学了一丢丢。内存泄漏:Activity被销毁了,但里面的网络请求回调还在引用它... 这种问题一开始根本意识不到,直到App越来越卡。理解了为什么要注意生命周期和引用关系。Android开发让我真切感受到了移动互联网的魅力。把一个想法,通过代码变成能装在口袋里、随时可用的App,这个过程本身就充满吸引力(虽然做的是基础功能)。它更侧重用户体验和交互逻辑。与后端开发不同,你需要时刻关注界面流畅度(60fps!)、响应速度、设备多样性和资源限制(流量、电量、内存)。踩的坑比后端还多,尤其是线程和异步处理,简直是新手噩梦。但当App成功安装到手机,跑起来,并且能和后端顺畅交互时,那种亲手创造的满足感是无与伦比的!也让我对市面上那些流畅好用的App多了一份敬意,背后都是开发者们的心血(和掉的头发)。
这一学期,被Spring Boot和Android Studio轮番“折磨”,在“增删改查”的海洋里反复扑腾。说真的,累!查文档、调Bug、配环境、解决兼容性问题... 熬了不少夜,掉了不少头发。有时候一个报错卡半天,心态真的会崩,想砸键盘。但是!值!太值了!技能提升实实在在掌握了两个非常主流、非常实用的技术栈(Spring Boot后端 + Android客户端)的基础开发能力。从对Web/MVC框架、移动开发一无所知,到能独立完成一个具备基本数据管理功能的前后端分离小项目。简历上能写的东西多了!理解了分层架构(前后端分离、MVC/MVVM)、模块化、API设计(RESTful)、数据库操作、网络通信、异步编程、基础调试等核心软件工程思想和实践。不再是只会写单机小程序的萌新了。面对层出不穷的Bug和未知领域,从最初的恐慌无助,到逐渐学会利用搜索引擎(Google、Stack Overflow、CSDN、官方文档)、调试工具、请教同学老师来分析和解决问题。这种能力是终身受用的。看着自己写的代码真正跑起来,服务器响应请求,手机App展示数据,完成一个完整的操作闭环,这种创造的快乐和解决问题后的释然,是支撑我不断学习的最大动力。做一个能用的东西出来,感觉真的很酷!通过实践,我更清楚地认识到自己对哪方面更感兴趣(是更爱钻研后端逻辑和性能?还是更喜欢打磨移动端用户体验和交互?),也深刻体会到软件开发是一个需要持续学习、不断踩坑、积累经验的领域。大二结束,算是真正摸到了专业学习的门槛。当然,我也很清楚,现在掌握的只是最最基础的入门知识。真实的项目开发要复杂得多:
大二下这门课,像是一场硬仗,也是一次奇妙的旅程。从对着IDE发呆,到能捣鼓出点像模像样的东西,虽然过程充满了“血压飙升”时刻,但更多的是突破自我后的欣喜。它让我真正体会到了软件工程的实践魅力——不是纸上谈兵,而是真刀真枪地构建系统。感谢老师的指导,感谢一起讨论、互相“救命”的同学们!
“增删改查”只是起点,未来的路还很长,挑战会更大,但我感觉更有方向和底气了。带着这学期的收获和教训,继续冲吧!希望未来能做出更酷、更有用的软件!

浙公网安备 33010602011771号