Sunday, July 11, 2021

Software Engineering

 

How old should you be when you study software engineering? This question came up in an on-the-web event today, 10-July-2021. The event was the book release function for “Overview and Trends in Software Design Architecture and Engineering” by Prof PCP Bhatt.

I do not know who originated this question, but I heard Mr H R Mohan raising the question. Prof CR Muthukrishnan asked me if I would answer it. I did respond, but  would expand my answer here because it is an interesting question. My answer is a point of view that comes out of my personal experience.

I taught a course on software engineering a few times over thirty years ago, as a part of the NCST”s Post-Graduate Diploma in Software Technology program. Exciting things were happening in the creation of systems which could serve a large number of users simultaneously. There was a phase involving client server architecture, in which the clients were front end programs running on user machines. The back-end was a computer serving all the clients through some network. Local area networks (LANS) and wide area networks (WANs) could both be used. The technology has now evolved to the level in which your browser is the user-end interface. Any user-end processing is done by code that is automatically downloaded by the browser. The network is a LAN or more often the Internet.

I would start my software engineering course by noting that, in real life, software developers usually worked as a part of a team and built software that was several times larger than anything one person could build. It was the difference comparable to that between building a model airplane that a hobbyist builds and the 747-like aircraft that companies build. 


So, I would say let us live through an experience that teaches us to think as a part of a team within a bigger team and build something big. One year, we chose to build a demo passenger-reservation system for airline passengers. We had a big class. I don’t remember the exact size – it must have been about 80! NCST colleagues helped me run the course: specially, Anil Garg and Sreekumar.

We divided the class in two: one to handle the front-end which would run on the user PC and one for the server that would run on NCST’s big computer. Each part of the software was then divided into modules that could be built by separate teams of four or five “students”. Very often, nasty troubles surface only during integration. We were aware of this, and emphasized well-defined interfaces and careful unit-testing of each module. I think we had a committee of team leaders to be responsible for integration.

The first job was to structure the organization. In the class, I asked for volunteers. These were relatively early days of software activity in India, and as our course aimed at working professionals, the average “student” was 30 to 40 years old. While choosing two project managers, one for the front-end team and one for the server side, I said I was looking for people with management experience. Their job was to get their teams to achieve rather than focus on one’s own individual contribution. A few people raised their hands. I asked them to introduce themselves one by one. The first speaker mentioned his name and said that in his day-job, 4000[1] people reported to him! He was an Income Tax Commissioner! We also had a very senior railway engineer.

So, I do think that software engineering is quite a different subject as compared to the stuff they teach in programming classes. It requires concerns for reliability, modifiability, documentation, maintenance, budget, time schedules, and expectation management in regard to owners of the project.

I am looking forward to reading PCP Bhatt’s book and relive this all over again!

Srinivasan Ramani

 



[1] I don’t guarantee this number, but my thirty year-old memory says it was something like 4000.

No comments: