Sunday, April 21, 2013

TCP/UDP Client/Server

This last assignment reinforced some of my beliefs that I have about software development.

The Importance of Standardization
While studying the Winsockets API, I was excited and relieved. Since the API follows the BSD standard, it is likely to be very easy to port to other platforms with no or minor changes. This is really good for me, as I intend to a lot of Linux development in the future.

The Importance of Good Documentation
I have the admit, although I was happy that the API followed a standard, it wasn't the most elegant API I've seen. In fact, it's not elegant at all, and in some cases not very readable. What really helped me here was the good documentation, provided on MSDNA and on the book. Without that I would have never been able to complete the assignment.

The Software Engineer is the Architect
The assignment had some particular requirements. How those requirements are achieved was a design decision. For example, I was free to pick the format of some special packets, like the header packet or the acknowledgement packet. Software engineers encounter this situation all the time, and I think it's Ok to make these design decisions as long as they're for internal things that are not supposed to inter-operate with the outside world to worry about standards.

The Beauty of Abstraction
The OS abstracted those layers of the TCP/IP model other than the application layer. All I had to worry about is the design and implementation of the client/server applications using the abstractions provided by the OS. Other than that, magic happens.

No comments:

Post a Comment