A typical understanding is that a software team would consists of only those who do the coding or programming. However there are various skilled teams involved in a software project to make it ready and working for the client. Below gives a high level basic view of a software project.
A typical software development project would go through following phases. These software phases can be managed through various software methodologies like Waterfall, Iterative, Agile etc.
- Requirements Phase
- Analysis and design
- Coding
- Testing
- Documentation
- Ready to Deploy
Requirement phase deals with capturing and documenting the requirements of the software and passing on to technical team to create functional and technical design. This person is known as a Product Manager. This person will be an expert in product, industry, competitors, market analysis of what are the new product trends in the market. This person will also help the management with analysis on any new product or market to be trapped
Analysis and design includes various components. Software architect play a major role in this phase. In this phase, the requirements written down by the product manager is further analysed to create functional and technical design of the software. Functional design would include screen designs, navigation, workflows etc. And technical design would include security framework, database architecture, system architecture etc. This is one of the most important aspect of software development. If the architecture is not robust and scalable, it would be come a nightmare for programmers to maintain and enhance the product.
Coding is where the actual development of the software begins. Programmers play a key role here. They work with software architects and the Product managers to understand the requirements and the design and start coding. The software takes its shape in this phase. Programmers creates UI, creates database scheme, writes business logic etc. all to make the product functional.
As the product is being coded, there needs someone who will test the stability, performance and functionality of the product. This is called testing of the product and department responsible for this is typically known as Quality Assurance. This group ensures that every corner of the software is verified so that the product works flawless at the client end. QA will report a defect as found and programmers will keep fixing it till the time all the defects are found and fixed.
Once this is completed, the product is ready to be deployed.