Tuesday, June 8, 2010

Is there any software to automate the software development process?

I ran through this thought few days back. In most of the software development scenario, the processes to be followed, the compliance to be adhered is either absent or left to individual imagination. Such cases lead to inconsistent rather faulty development process.
The solution is simple - develop a process and ask everyone to follow it. Now the later part is the difficult one. While I am writing this, I admit that I have also made mistakes in my past software development experience. When I look back to those mistakes, I realize these things went wrong due to lack of supporting processes and the clarity to follow it.
Since putting processes in place is easy but following them is difficult, why cant we develop software to do that? Meaning??
Meaning - develop a software which would act as your development environment and will basically take care of all intermediate subtasks like -
  • requirement gathering
  • mutual consents
  • producing documentation, seeking feedback, incorporating comments
  • designing project plans, identifying resources, identifying tasks
  • Implementation
  • Quality Assurance and bug fixing cycles
  • Code reviews
  • Issue tracking systems
  • Source Code Repositories
  • Rolling out releases
  • Customer Interaction
  • Product Road map
This software is not intelligent enough to write the design doc but it will definitely help to speed up writing the doc. When development teams are geographically distributed, it gets difficult to grab the next person's views/thoughts. This software can help you to identify the right person and seek a proper sign off so that there are no surprises in the requirements.
This software will help streamline the process so that there is no way one can violate the process. The process could be decided by the authority and can be put in to the software.
Right now, I am trying to find out such products and a proper name for products that fit into such categories.

Update: I found one. FogBugz from FogCreek Software seems to be built on the same lines but I dont think it is the complete solution I am thinking of.




Wednesday, June 2, 2010

Traffic Jams in Pune

Yesterday, there was a heavy rainfall and it poured like anything for an hour and half. As an obvious result, power lines were busted, trees fell in many places. And ultimately, all the arterial roads were jammed.
My daily commute from Office to my home usually takes 15 minutes. And yesterday, I spent close to an hour on the road. The rains had stopped but the traffic was moving with baby steps - few meters every 5 minutes. While on the road, I was thinking about why such situation occurred in first place. A plain Jane answers was fallen trees and the out of order traffic signals. Given more thought, I found out the exact reason why the roads get jammed whenever there is a moderate to heavy rainfall.
The reason was - the traffic signals do not work in sync with each other. Take a simple example. Suppose there are 2 cross roads in close succession. There is a traffic signal at each crossroad. Distance between these 2 crossroads is lets say 2 km. Now as soon as rain starts pouring down, due to open nature of power transmission, there are probably short circuits in the power system and lots of areas suffer from power loss. As a result, traffic signals stop working. In addition, due to fallen trees, there are more stumbling blocks for the moving traffic. Now during peak hours, the arterial roads are clogged due to heavy inbound/outbound traffic. And since traffic signals are not in sync with each other or with the nearest ones, lets says, I get a green signal at the first crossroad. Now I am moving to the next crossroad which is 2km away. Now here, due to power loss, the signal at second crossroad had stopped working. As a result of this situation, while one gets a free route at first crossroad, he/she gets stuck at the second crossroad. And this whole mess ultimately leads to chaos on the road.
Key points to be noted...
  • Adjacent traffic signals do not work in co operation.
  • Fallen trees create new choking points.
Let us keep apart the fallen trees aside for a while. A simple solution would be to make adjacent traffic signals co operate with each other. If the adjacent signal is not working, the next signals should know about this situation and they can take corrective measures. The next signals can stop working after knowing that earlier signal is not working.
Well, we need a multi pronged approach to remedy this problem. Roads bearing most of the traffic can be identified. All roads leading to / forking from these roads should be identified and all signals on these roads can be made to work in close co operation with each other.
Such a system will greatly reduce the burden of traffic management from traffic police and it will help to neutralize the surge in incoming/outgoing traffic. This system can be further evolved by mapping all the roads in the city and formulating proper procedures for them in case of disaster.
Few things that puzzle me like - traffic signals are one of the most important things that run on state provided power supply system. Further traffic signals are tuned to work at second level granularity. Manual intervention by traffic police can not be a substitute for automated traffic signals. In my opinion, the first thing to do - is to give a backup power line to all traffic signals and try not to cut power to this backup line.
I am still thinking about this problem. May be, I will come up with a more sophisticated version of my solution in near future.
Update: Got to know about a traffic regulation system by BMW and Audi. But these solutions aer way to sophisticated and need dedicated hardware to contact the traffic signals nearby. Check out this link - http://www.thecarconnection.com/marty-blog/1045774_bmw-and-audi-congestion-strategies-look-to-smart-signals