Software processes are complex and, like all intellectual and creative processes, rely on people making decisions and judgements. Because of the need for judgement and creativity, attempts to automate software processes have met with limited success.
Computer-aided software engineering (CASE) tools can support some process activities. However, there is no possibility, at least in the next few years, of more extensive automation where software takes over creative design from the engineers involved in the software process.
Although there are many software processes, some fundamental activities are common to all software processes:
1. Software Specification
The functionality of the software and constraints on its operation must be defined.
2. Software Design And Implementation
The software to meet the specification must be produced.
3. Software Validation
The software must be validated to ensure that it does what the customer wants.
4. Software Evolution
The software must evolve to meet changing customer needs.
We at Odyssey a software development company based in Delhi and professional programming website feels that one reason the effectiveness of CASE tools is limited is because of the immense diversity of software processes.
There is no ideal process, and many organisations have developed their own approach to software development. Processes have evolved to exploit the capabilities of the people in an organisation and the specific characteristics of the systems that are being developed. For some systems, such as critical systems, a very structured development process is required. For business systems, with rapidly changing requirements, a flexible, agile process is likely to be more effective.