23 March 2014

Smart Software Development

In the current times, software development still requires the intervention of a developer in order to provide the input for requirements, design, implementation, testing, build and deployment. This is all part of the software development life cycle. Although, with the cloud we have seen much in way of build and deployment automation. There is however, much that could be improved in the other phases. Requirements for one can utilize statistical natural language processing models. Also, there is the UML approach which could be incorporated further using artificial intelligence to automate the process of design, implementation, and even testing of the code base and even for data modelling. The artificial intelligence would also be a lot faster in learning the syntax and semantics of a language compared to a developer. In that respect, the development of a model would really only be the necessary role of a human developer or engineer. Using a model-driven approach is key towards further automation. These approaches would require knowledge representation techniques of model checking and automated reasoning which are used extensively for circuit designs. Genetic algorithms provide much in way of code generation and refactoring by their simple approaches of mutation and crossover techniques towards a global optimization over the search space. It is a lot more effective these days to attain a computer science degree than a software engineering degree. As the role, of a computer scientist will become key in the evolution of software development in the years and decades to come. Already, artificial intelligence is playing a key role in data mining, medical applications, and testing. It is only in time when large scale development work will also start to witness significant automation in abstractions within the key areas of software development life cycle.