The Trends in the software testing and maintenance will be different than what is today. Testing needs to be more effective and efficient so that it keeps in pace with or support the changing trends in software development .Software development is a muddled process, recognized by a phrase "code and fix". There is no predetermined plan while writing a software code and the design of the system is paved together from many short term decisions. It works well if the system is small but become difficult to add new features when the system grows. It is difficult to fix the bugs as they become increasingly Bugs become increasingly common .Such systems have long test which leads to chaotic schedules as testing and debugging is impossible to schedule.
Agile methodologies were developed as a reaction to these methodologies. The new methodology is combination of no process and too much process, providing just enough process to gain a reasonable payoff thus agile methods have some significant changes in emphasis from engineering methods. A major difference is that they are emphasizing a smaller amount of documentation for a given task. Agile methods are code oriented and follow a route that the key part of documentations is source code . Usually software development life cycle methodologies are either iterative (as the waterfall model does) and become more complex and cannot easily adapt to the continuous and number of changes that occur. Agile methodology was developed to respond to changes quickly and smoothly. The iterative methodologies tend to remove the disadvantage of sequential models; they still are based on the traditional waterfall approach. Agile methodology is a collection of values, principles, and practices that incorporates iterative development, test, and feedback into a new style of development. Agile methods are adaptive rather than predictive. The agile methods are open to change. They try to be processes that adapt and thrive on change, even to the point of changing themselves. Agile methods are people-oriented rather than process-oriented. Agile methods believe that the skill of the development team is most important, so the role of a process is to support the development team in their work. The major reason for the failure in the application of traditional software development methodologies was associated with the waterfall model.
Background
The term was coined in the year 2001 when Agile Manifesto was formulated. Edmunds introduced an adaptive software development process in (1974). Agile Software development is defined as easily moved, light, nimble, and active software processes. Agile processes are not only present in the software development but also in the mainstream business literature in 1991 in the form of agile manufacturing.
Potential benefits
Agile methodology has an adaptive team which is able to respond to the changing requirements.
The team does not have to invest time and effort and finally find that by the time they delivered the product, the requirement of the customer has changed.
Face to face communication and continuous inputs from customer representative leaves no space for guesswork.
The documentation is crisp and to the point to save time.
The end result is the high quality software in least possible time duration and satisfied customer.
In short development started fast, but with the requirement that the project scope statement is "flexible" and not fully defined. Hence this can be one of the major causes of scope creep if not managed properly.
Disadvantages of Agile Methodology
In case of some software deliverables, especially the large ones, it is difficult to assess the effort required at the beginning of the software development life cycle.
There is lack of emphasis on necessary designing and documentation.
The project can easily get taken off track if the customer representative is not clear what final outcome that they want.
Only senior programmers are capable of taking the kind of decisions required during the development process. Hence it has no place for newbie programmers, unless combined with experienced resources.
Flavors of Agile Development
Under this broad umbrella sits many approaches such as Extreme Programming, Scrum, Lean Development, etc. Each of these more particular approaches has its own ideas, communities and leaders. Extreme Programming is one of the most widely used approaches.
XP (Extreme Programming)
In Extreme Programming, rather than designing whole of the system at the start of the project, the preliminary design work is reduced to solving the simple tasks that have already been identified. The developers communicate directly with customers and other developers to understand the initial requirements. They start with a very simple task and then get feedback by testing their software as soon as it is developed. The system is delivered to the customers as soon as possible, and the requirements are refined or added based on customer feedback. In this way, requirements evolve over a period of time, and developers are able to respond quickly to changes. The real design effort occurs when the developers write the code to fulfill the specific engineering task. The engineering task is a part of a greater user story . The user story concerns itself with how the overall system solves a particular problem. It represents a part of the functionality of the overall system. A group of user stories is capable of describing the system as a whole. The developer's refractor the previous code iteration to establish the design needed to implement the functionality. During the Extreme Programming development life cycle, developers usually work in pairs. One developer writes the code for a particular feature, and the second developer reviews the code to ensure that it uses simple solutions and adheres to best design principles and coding practices. XP is a software discipline that addresses risk at all levels of the development process. Risks include schedule slips, cancellation of the project, high number of defects, misunderstood requirements makes agile methodologies an interesting alternative for decision makers.
Scrum
Scrum is an agile process that can be used to manage and control complex software and product development using iterative, incremental practices. Scrum has been used from simple projects to changing the way entire enterprises do their business. Scrum significantly increases productivity and reduces time to benefits while facilitating adaptive, empirical systems development.
Crystal
Crystal introduces the importance of people and communications, and adjusting the techniques used in a project to the characteristics of that particular project. While other software development methods, particularly other agile methods, do stress the importance of people, the Crystal family uses a focus on people and communications as its organizing principle, and most of the properties and techniques are based on strengthening that process. This technique brief focuses primarily on Crystal Clear, which is intended for small teams working on low criticality projects.
Context Driven Testing
Context-driven testing is a paradigm for developing and debugging computer software that takes into account the ways in which the programs will be used or are expected to be used in the real world. In order to successfully conduct this type of testing, software developers must identify the intended market and evaluate the environments in which people are likely to employ the product. Advantages of context-driven testing include enhanced user-friendliness of the end product, optimized functionality for intended users and adaptability of the product to changing markets and social values. The context-driven methodology does not necessarily work well in all situations. Other approaches might prove better for developers who are under the direct supervision and control of an autocratic "boss" who takes responsibility for the results of work done. Context-driven testing would likely prove superfluous in stable environments where conditions rarely or never change.
Lean Development
Lean development is change tolerant software. The purpose of LD is to build software with one-third the human effort, one-third the development hours and one-third the investment as compared to what SEI CMM Level 3 organization could do.
The principles of Lean Development are as follows:
The highest priority of the customer is to satisfy the customer.
Provide the best value for money.
If the customer is active development is successful.
Every Lean Development project is a team effort.
Everything can be changed
Domain, not point, solutions.
Complete, don't construct.
An 80 percent solution today instead of 100 percent solution tomorrow.
Minimalism is essential.
Needs determine technology.
Product growth is most important
Lean development should never be pushed beyond limits.
Unified Process
Rational Unified Process (RUP) is an object-oriented and Web-enabled program development methodology. According to Rational (developers of Rational Rose and the Unified Modeling Language), RUP is like an online mentor that provides guidelines, templates, and examples for all aspects and stages of program development. RUP and similar products -- such as Object-Oriented Software Process (OOSP), and the OPEN Process -- are comprehensive software engineering tools that combine the procedural aspects of development (such as defined stages, techniques, and practices) with other components of development such as documents, models, manuals and code within a unifying framework.
RUP establishes four phases of development, each of which is organized into a number of separate iterations that must satisfy defined criteria before the next phase is undertaken: in the inception phase, developers define the scope of the project and its business case; in the elaboration phase, developers analyze the project's needs in greater detail and define its architectural foundation; in the construction phase, developers create the application design and source code; and in the transition phase, developers deliver the system to users. RUP provides a prototype at the completion of each iteration.
Conclusion
In the present global venture solution there are complications because of the rapid changes in the business needs. The so-called agile methodologies which are adaptable to change, people-oriented, speedy and responsive are well suit to the software development projects. However, company needs to consider which agile methods are beneficial for the company or some specific projects. The company can select different agile methods for different projects or just customize any features that match the condition of the company and the projects. There are number of things to bear in mind before using agile methods. Agile methods need more discipline and the light weight of agile methods is added advantage. Agile methods are basically people-oriented, it's important that a team is started ready to work in an agile way. Many organizations realized the noteworthy benefits from implementing agile methods and their trivial development processes. Significant reductions in application development costs and improvements in application quality have been revealed.