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
Post a Comment