An Agile Methodology Based Model for Change- Oriented Software Engineering

Changes are common to software development models today and hence change-oriented software engineering is in the picture, in the area of research. Agile development is invented for handling change. In this paper an agile methodology based model for change-oriented software engineering is presented and various model execution environments are also discussed. The key benefit of agile methodology is used to simplify the change- oriented software engineering process. I. INTRODUCTION AND RELATED WORK In typical software development process it is assumed that all the requirements are complete and can be implemented directly in order to develop the application, but this is not the case for most of the projects today. In modern competitive era changes are frequent to any software product or module which is under development, due to the market competitions priority of requirements changes frequently and only specific development is done which is urgently required and then later on changes and improvements comes into the picture for the rest developed modules. So requirement engineering is done in parallel to software development and requirement changes often happen to survive in the competitive market. Whenever a new requirement comes into the picture it takes lot of effort in terms of time and cost for analysis and implementation. Theoretically change requirements takes less time than typical development requirements but practically it takes almost the same or even more time as development for complex change requirements. Since changes of any type whether simple or complex needs a complete software development lifecycle, because after analyzing the requirement it is implemented and integrated with the existing code and then implemented requirement is verified against the test cases and also verified against the functionality required. Once implementation is done and verified, lot of refactoring related work is required for making sure that the implemented code is written in standard format and integrated with the system as per the development standards. Refactoring is also an important type of change requirement which sticks the development policies with the developed code and which comes into the picture once the development task in bulk is over. Refactoring improves code, usually increasing the function while reducing code bulk. However, such refactoring or restructuring often forces the application to undergo a complete development cycle, including unit, acceptance, and regression testing, followed by subsequent redeployment. In a large IT or engineering production system, this can be time consuming and error prone. Agile programming is design for change, without refactoring and rebuilding. Its objective is to design programs that are receptive to change. Ideally, agile programming lets changes be applied in a simple, localized way to avoid or substantially reduce major refactoring, retesting, and system builds. In this section work related to change oriented software engineering is discussed in brief, and in the subsequent sections various most common agile techniques, various model execution environment and proposed model is elaborated. A change model for Change-Oriented Software Engineering (COSE) is proposed in (1). Based on an evolution scenario, a lack of support in current Interactive Development Environments (IDEs) is identified to apply COSE. A set of extensions to an existing model of first-class changes and describe the desired behavior of change-oriented IDEs to support COSE is introduced. Model development information as change operations is proposed that is retrieve directly from the programming environment the developer is using, while developer is effecting changes to the system. This accurate and incremental information opens new ways for both developers and researchers to explore and evolve complex systems. (2)