When you think about software engineering in terms of a rail system, two major systems emerge:
- Facilities Management
- Reservations
Both are vitally important to the operation of a rail system, and involve sophisticated techniques to perform hundreds of critical tasks. The audience for each is different, as are the deployment issues.
Facilities Management System
The management of a rail system must oversee track, buildings and rolling stock. Track must be maintained on a regular schedule, and track switches must be reliable. The last thing you want is a failed switch resulting in a head-on collision of two locomotives. The rolling stock must be maintained and scheduled. Operationally, the rail system must know where each locomotive and train car is located, where moving trains are on their routes, potential delays and detours, staffing for each train run, and many more details. Of course, there are all the shops, roundhouses and maintenance facilities that have to be stocked, scheduled manned and managed. To perform such a wide array of tasks, the problem space must be engineered into an integrated set of object-oriented subsystems. The goal is to share information seamlessly and to avoid storing redundant data. The system may be web-based, or may work on a private network – in either case, the general public would not have access to it.
Reservations System
It took Indian Railways over eight years to roll out there reservation system. These types of systems are complex because they must integrated vast amounts of information quickly and present it on the Internet to the general public. The system itself must contain modules that understand all the available routes, seats, schedules and fares. Customers must be able to visit the reservation site online and buy tickets. The real-time inventory of seats must be maintained so that the same seat isn’t booked twice. The reservation system can also be used to gauge demand for certain routes, and perhaps configure train runs accordingly.
Often, public kiosks or similar facilities are set up at airports and bus stations to help train travelers who require connections from other modes of transport. For instance, a bus company may have an online reservation system set up at a bus terminal for use by the public in lieu of a ticket sales office. A good system would have backlinks to the railway system and the airports, so that travelers could work out an itinerary. A traveler would then check backlinks to plan, say, a trip involving bus rides on either side of a rail trip.
While both types of systems are hugely complicated, they both benefit from the principles of software engineering to ensure good reliability, security, and speed.