I am currently working as an intern in a Software farm in India. To me the software development process is somewhat bizarre here.
The steps followed in developing a software are as follows:
(1) A system analyst go to the clients and listens their problem statements. In this case the system analyst is a senior person (holding a post of director or something) with little programming experience, or, is away from coding for quite a while.
(2) The System Analyst identifies the UI modules of the software, draws the block diagram and writes down the description of business processes.
(3) The System Analyst forms a team having a lead programmer and 3/4 junior programmers.
(4) The System Analyst gives away the printed version of his identified modules, block-diagram and description of business process to the team members and discusses about the them.
(5) The team understands the business process and prepares a dummy application.
(6) The dummy application is shown to the client. And the client gives his remarks.
(7) The UI is then modified as per the client-remarks.
(8) Then the programmers (including the lead programmer) design Classes, tables, etc.
(9) The System Analyst observes the ongoing project as the deadline approaches.
(10) Mid-term demo is shown to the client. Their remarks are reflected.
(11) Programmers performs unit-testing.
(12) The QCs test the software.
(13) Programmers corrects additional bugs.
(14) Final product is delivered to the client.
(15) After sales support is given as the time goes by.
Can anyone tell me what is done in countries in Europe and America? How a software team is formed, what kinds of roles do the members play?
Who prepares the UML, who conducts CRC session with whom, who does OOAD, who codes, who designs database?
In my farm, no UML, CRC is done. Classes and tables are designed by programmers.