Cabrillo | Cal Poly SLO | CSUMB
ILP
CST 231 | CST 237 | CST 238 | CST 300 | CST 311 | CST 328 | CST 329 | CST 334 | CST 336 | CST 338 | CST 363 | CST 370 | CST 383 | CST 438 | CST 462s | CST 499 | General Ed | Math 130 | Math 150 | Math 151 | Math 170
CST 438
CST 438 - Software Engineering with Spring Boot with Java and React and MySQL database.
Prepares students for large-scale software development using software engineering principles and techniques. Coverage includes software process, requirements analysis and specification, software design, implementation, testing, and project management. Students are expected to work in teams to carry out a realistic software project.
Prerequisite(s)/Corequisite(s): [(Prereq: ( CST 338 with a C- or better)]
Typically Offered: Fall, Spring
Units: 4
My Experience in CST-438 - Software Engineering with Spring Boot with Java and React and MySQL database
My experience in Software Engineering with Spring Boot with Java and React and MySQL database was really amazing. There is this tool we learned called postman. I could have used this years ago. Postman is your website-end in a simple web page request interface. It might be hard to explain to non-web developers but websites aren't always just one computer program, lots of times they're lots of programs working together. When one breaks - for any number of reasons - they break - it can be tricky to figure out what broke. Postman is a tool you can use to stand in for the part that you think is not broken to talk to the part you think is broken - because without Postman you might need the broken part to even use the non-broken part to test the broken part to see what it wrong with it. Anyways Postman we learned can stand in for any part of that program that's sending messages around to any other part of the program.
It obviously is maintained by whoever makes it so it's not broken, and what it does is tells you what messages are being exchanged, exactly. The same messages your website communicates with itself with, minus all the interface components you built into it that might be broken you're trying to work around. Anyways it's an invaluable tool I'm super glad to know about, and I could have used it years ago. It's a huge missing tool for me I didn't know was out there until this class, and it's super easy to use. Since the class ended I've used it for helping me with troubleshooting building my final project. It's already coming in handy. And I found out with my latest use that there's a web interface to it available, you don't even need to install anything. Just google for postman online interface and it comes up as just a web page you can use to send requests to the website you're building to test it as you build it.
There were other really big things I learned in this class. Spring boot with Java with React front end and MySQL database is really fast to develop in. You can make a feature rich database driven web program as complex as you want with this paradigm, and fast. The object oriented database interface even automates a lot of the database interaction, automating queries that would otherwise be something in the program that could break at any time with incompatible site updates.
I found React to be super simple to use and very versatile, easy to install, and easy to figure out. It's a huge resource in the industry right now, I see it on nearly every web development position available. And now I see why, it's a pretty good paradigm to develop in. I'm not sure I agree with wrapping the HTML into the JavaScript when JavaScript has JSON that could do the same thing but with less redundancy, but the system works so well I can easily see why it is so popular. It is built on Node so it's not without it's flaws but I think it's a really great tool to have now and I'm really excited about it. I could almost see myself using it in my own projects except I've kind of built WebBlaster to do something similar using JSON as a stand-in for HTML.
A huge lesson during this class for me was going from not understanding test-driven-development as it is called to being a full proponent. The reason is that the material in this class made the side benefits of testing more clear to me: that they give you built-in documentation and running example code to build off and help understand the code it's testing any time that functionality needs to be revisited or built-off of.
The first week of class was a huge barrage of information on how to set up the Spring boot framework and start creating a REST response system for it. This is exactly how working for a real company was for me when we were told to learn an unknown framework (which was much less fun than Spring) in a very short time. So I really appreciated the class's realism and level of being challenging as well as giving us extremely useful and applicable information for our tools for the future.
Here are links to my journals:
Links:
I put explanations in my journals as I came across them.
We did not publish our work this class as the website we were creating, but the programs we wrote to create it are all up on git hub for inspection, future learning and reminders:
- https://github.com/arlon76/cst438-registration-frontend-arlon
- https://github.com/arlon76/cst438-registration-backend-arlon
The class was a lot of fun and I really appreciated learning such a robust and fast system of web development. One focus of the class was that one of the main purposes of software development is for intent to bring high long term maintainability. I already instinctively knew this, because, being a programmer for a really long time, you start to see things breaking from dependencies you didn't realize would break and it can really catch you off guard. Maintainability in the long term is a really helpful feature.
MySQL
React
Spring Boot with Java server REST backend
Rabbit MQ message queueing service for communication between site micro-services with a message queue
Postman request tool, POST and other request types
JSON request data
Test driven development
Team work through code review
Git! I'd needed to learn git. Now I know git because of this class! So awesome!
Aiming at large scale web system development with an easily available set of robust tools focused on long term maintenance and team collaboration
Best practices with software engineering, development, team work and maintenance oriented test driven programming.
- And lots more
CST-438 Software Engineering with Spring Boot with Java and React and MySQL database ended in the fall of 2022. Thank you CSUMB for the amazing and very applicable class! The tools we learned were truly invaluable, and several of them I didn't know about until this class. I knew a lot about large scale development and about web programming, but this class really helped me gain a lot more of these skills, especially skill oriented toward team programming, and test driven programming!
Here is a link to the CST-328 Graphic Design class we took: CST-328 Graphics Design CST-328 Here is a link to the extra exciting CST-336 Internet Programming class we took: CST-336 Internet Programming with JavaScript and CSS CST-336