This article is about what I’ve learned and what thoughts come to my mind after two first lectures of course Web Services which is taught at BarcelonaTech University.
Disclaimer: This article was mandatory assignment. But since I find this topic interesting, I've decided to publish it here.
First lecture was rather intro. Lecturer talked besides other about what is specific on software engineering compared to other engineering disciplines. Well, there are two major differences:
- Software engineering is very young.
- When we do a mistake in software, usually nothing important really happens (contrary to for example civil engineering where building would collapse and people would die). Of course there are exceptions like developing software for aircrafts but for most of developers, this is true.
The second point allows us to build software in quite rapid way. We just release it and then we see what happens.
What comes to my mind is that these two points are related to each other. SW engineering is very young, therefore our engineering methods are not very mature and leads to software with mistakes. This doesn’t matter so much, because on most of the software don’t depend human lives. But as IT penetrates more and more into all areas of human life, this is slowly beginning to change. And more and more developers will be developing software influencing people lives in critical way and together with this fact, software engineering methods will have to “grow up”.
The second thing at first lecture, that caught my attention, is already more related to Web services itself. Lecturer said something like: “There are two major ways of building web services. RESTful APIs and SOA (which implies SOAP and WSDL). People say, that RESTful approach is not good enough for complex scenarios. I think that if company like Amazon can work only with REST, all companies can.”.
Honestly, It made me really happy that someone experienced in this field said this. Because it is a thought that came to me quite long time ago. Is this SOAP staff, which is for us, web developers, so difficult to tame (unlike to REST), really necessary? Yeah, sure, SOAP is widespread in enterprise systems, so it’s not going to disappear in next decades, but anyway, it’s nice to know.
With this thought on my mind always another one appears. Can XML be completely replaced by JSON (as an data interchange format)? Because as a web developer, I usually see XML just as an evil. Well, maybe we will get to this question later in the course.
The third thing that I’ve found interesting at first lecture, was brief insight to history of enterprise software systems integration:
- How SW vendors didn’t want to allow others to read their data, so the client companies and their suppliers would depend on the vendor.
- How shitty was an CORBA idea as an interchange technology.
- How it is and was (suprisingly) all about money
- How revolutionary was the idea to use plaintext for communication and data exchange (HTTP protocol, HTML and the internet).
The second lecture has been more about the topic (web services). Things like multi-tier architecture, distributed systems, middleware, horizontal and vertical integration were discussed.
What intrigued me, was the talk about how inconceivable for people in the seventies (or sixties or eighties, I’m not very good in these historical things) was something like distributed system.
Everybody thought that more powerful computer has to be just single really big computer. And how people imagined that computers will communicate - like humans, which is not in the end so far from reality, because from certain point of view, many aspects of web services communication are similar to human language. Lecturer demonstrated this way of thinking on famous sci-fi novels or TV series (Star trek).
Another interesting thought from this lecture that I just recalled was about technologies in general. We use technologies that were developed decades ago according to:
- Some requirements that were demanded in that time
- Possibilities and knowledge that people had in that time
But while requirements start to change with time (usually new ones occurs), we have to build things with the same old technology trying to incorporate new requirements in it. The Von-neumann architecture is a good example. It’s good to be aware of from which reason and with what requirements have been technology that we plan to use developed.