Key Takeaways from Software Engineering

I found Software Engineering to be a meaningful course. It blended theory with practical applications and gave me insight into modern software development methods and tools. Below are the 5 more important things I believe I’ve learned in this course.           

Agile and Plan-Driven Development

Early in the course we were introduced to the Agile development method. Agile focuses on adaptability and iterative progress. It proves developers with flexibility. On the other hand Plan-Driven development relies on detailed upfront planning and a fixed process. Agile works well in projects where requirements are likely to change. It allows for quick adjustments and continuous delivery of value. Plan-Driven, on the other hand, is better suited for projects with well-defined requirements and a clear roadmap from the start. It was great to work with both methods so that I’m able to compare both. I personally liked Agile more, because too much documentation complicates things. I feel as though PD is This better suited for mega projects within the tech behemoths.

Unit Testing and System Testing

I also learned about unit testing and how it focuses on verifying small, isolated parts of the code, like individual methods or classes, to ensure they behave correctly under various conditions. Writing these tests early in development helps catch bugs before they become bigger problems, saving time in the long run. System testing, in contrast, evaluates the application as a whole to ensure all components work together as intended. This type of testing simulates real-world use. It ensures that each of the different parts of the application integrate properly. In our coursework, combining both testing approaches demonstrated how important it is to validate functionality at both micro and macro levels before releasing a product.

Learning Git for Version Control

Our group project via the Agile method really helped us get some experience with git, particularly when working with groups. I learned how much of a powerful too Git is. It helps track code changes over time and allows developers to review the code history and even revert changes. I got to practice using branches to work on new features for new iterations without affecting the main codebase. Of course, working with came with merging conflicts that we eventually had to figure out on our own. But by working through these conflicts, I gained confidence in resolving issues and keeping the repository clean and organized.

Service-Oriented Architecture (SOA)

Learning SOA was a bit eye opening for me. I learned how breaking a system into smaller services allows teams to develop and maintain each service separately. This reduces dependencies and makes it easier to scale or replace individual components without affecting the entire application. In the course, we applied SOA principles to our project via the gradebook, registrar, and frontend services. We didn’t break these services up between team members, but instead we all worked on each service. That allowed us to understand the importance of designing services with high cohesion and loose coupling for flexibility and maintainability.

REST API

We built REST APIs in Spring Boot, focusing on endpoints. I learned how REST APIs allows applications to communicate using a set of rules that makes it easier for different systems to interact. Integrating APIs into our project showed me how powerful this approach is for connecting services and enabling data sharing between them. This skill will be useful in future projects that require multi-service communication.

Comments

Popular posts from this blog

The End of the Byte Trail

Reflections on Algorithms

Refining Documentation and Planning Final Deliverables