Introduction
Software engineering is the activity aimed at developing software programmes and applications appropriate for those programmes with regard to compatibility and usability of programmes by different audience including software developers and ordinary customers/users that purchase and upload these applications for personal use only. Every time a specific programme should be developed, a specific approach should be used for that purpose. In other words, the team of developers can analyse the situation and apply the most effective agile software programme development methodology to the process of development divided into a number of stages such as designing and testing. It is necessary to take into account the cycle and other features of the agile method as well as three perspective of software engineering such as technological, organizational, and human. Every time programmers use Extreme Planning (XP), Dynamic system Development Method (DSDM), or Scrum, they can properly plan the development of software considering the principles of every agile methodology.
Agile Methods: General Overview
Software Engineering
Software engineering is the area of human activity that enables people to facilitate certain operations through implementation of programmes and approaches that are aimed at optimising the management of resources, planning, and other integral stages of organizational management. For instance, it is possible to focus of software engineering as suggested by Hazzan and Dubinsky (2008, pp. 3-4), with regard to three perspectives such as human resources, organisation of the company and hierarchy of it, and technological advancement.
The Agile software development can be referred to as a method of solving problems that may potentially occur and usually do occur in practice. In other words, optimisation of the approach that should be implemented while coping with certain tasks in application of software programs and development of software for practical use is the primary concerns for developers of the Agile software development system. Though the problems may be different, there is a Manifesto which outlines the main areas of concern and emphases put in terms of cooperation, planning, and human resources management. In this respect, software engineering contributes to the development and improvement of software programmes that are applied to different areas of business, services, and manufacturing.
What Are Agile Methods?
Agile methods include approaches and schemes that are aimed at facilitating the management, control, and improvement of software system development by professionals. In other words, programmers managed to optimise the process of detecting gaps and problems and introducing changes into this area. User/customer involvement and cooperation as well as delivery of demo versions of the product are integral parts of the Agile methods operation. This means that every method has its specific features and its use can be beneficial for different stages of the product development with regard to the approach and perspective used. Production and delivery of solutions is as important as development of software programmes. In this case, Agile methods include Scrum, Feature Driven Development (FDD), Extreme Programming (XP), Dynamic system Development Method (DSDM), and other approaches invented and implied in different periods of time. So, popularity and suitability of different methods predetermined their use by programmers and other people that are involved into the process of software development. The goals that are planned to be achieved shape the whole process of development including the methodologies to be used with regard to their benefits and drawbacks and ways of implementation.
Principles of Agile Methods
The principles of Agile methods include suitability and effectiveness because the main concerns of programmers is to produce and analyse the product in a definite period of time with regard to the difficulties that may occur and benchmarks to be taken into account. For instance, the Extreme Programming method operates in accordance with the principles based on customer/user perspective because it is aimed at analysing the needs and expectations of customers/users and adjust the software in general and different minor elements to the changing requirements to the system.
As different programmes are designed for different audience, they might have different principles of operation. In other words, some software programmes are designed for organizations that deal with trading and delivery issues while others are more appropriate for analysis of effectiveness implemented by programmers who are supposed to help monitor and evaluate the performance of organisations. The principles of Agile methods in software development concern the perspective taken as a starting point and changes that occur in the process of development that are taken into account because planning is recessed while meeting occurring changes is more important. User involvement, testing, cycles, and other principles are of major importance for most Agile methods in software development.
Examples of Agile Methodologies
Extreme Programming (XP)
Sometimes, programmers use a more technological approach to make sure that the software program is tested properly and would not have essential drawbacks in the process of implementation. However the Extreme Programming method also referred to as XP has the main focus on customer perspective and is aimed at responding to customers’/users’ requirements, expectations, and changing needs. This is why this method is mostly used by contemporary software developing companies for improvements if software programmes. Besides, as reported in the study by Highsmith and Highsmith (2002, p. xxxiii), “XP preaches the values of community, simplicity, feedback, and courage”. Moreover, this agile method “focuses primarily on the programming side of software development” (Schuh 2004, p. 19). Every stage of the development process applied by this method is intended to serve on the basis of customers’/users/ feedback in order to achieve the most significant results in this area.
Scrum
The main purpose of using the Scrum agile methodology is to divide the overall plan into several stages each resulting in the delivery of certain features. In other words, there is a cycle of thirty days divided into specific periods whereas each period is supposed to end with the delivery of definite features of the product. Overall, the “core practice in Scrum is the use of daily 15-minute team meeting for coordination and integration” (Highsmith and Highsmith 2002, p. xxxii). In this respect, the team that works on the development of software programmes and related products should meet every day to discuss the benchmarks and difficulties that have occurred or may potentially occur with regard to the work of other team members and features planned for the final product that is usually produced in the form of demo version that should be tested and implemented into operation.
Dynamic System Development Method (DSDM)
Every time a programmer faces some difficulties with development and implementation of certain software programmes, he/she can use the experience of those who have already implemented effective agile methodologies into operation. The Dynamic System Development Method (DSDM) is one of the most effective agile methods used by programmers for software development. The main benefit of this methodology includes the principles of its operation and implementation such as “user involvement, frequent delivery, team decision making, integrated testing throughout the project life cycle, and reversible changes in development” (Highsmith and Highsmith 2002, p. xxxii). Moreover, this methodology can be applied to any stage of the software development process including planning and testing. In this respect, the principles of this method can be considered the ones echoing the Manifesto mentioned in the study by Hazzan and Dubinsky (2008, p. 4).
Analysis of Agile Effectiveness
Benefits of Agile Methods
The benefits of agile methods include a proper planning which facilitates the operation of the demo version and of the final version. As a rule, the final version is note delivered to the customers/users if it was not tested. In this respect, such stages as testing, changes introduction, and final demonstration of the features of the software programme are integral parts of the software programme development process. As all agile methods have their benefits and drawbacks, it is necessary to remember that every process of software development has the main focus which can be irrelevant to other agile methods used in software engineering. However, most agile methods include customer perspective or simply human perspective realised in the form of team work, customer involvement, or user’s feedback for integration of changes with regard to the customers’ requirements. In other words, every method should emphasise the role of people in the development and integration of software products.
Drawbacks of Agile Methods
The main drawbacks of agile methodologies includes the problems reported in the study by Eckstein and Baumeister (2004, p. 319) who analysed the agile methodologies and identified that the main problem occurs when it comes to implementation because “Agile methodologies [are] not well accepted in the IT industry” (Eckstein and Baumeister 2004, p. 319). In other words, the information technology industry should apply the principles used in the process of software development for optimisation of processes of management and evaluation that would contribute positively to the operation of the industry. However, it is possible that the agile methods are inappropriate and inapplicable to the IT industry due to a number of programmes and applications used in this industry to maximise the effect produced by people and operational systems.
Conclusion
To conclude, it is necessary to state that software engineering deals with development and implementation of software programmes used in various areas and industries including resource planning and delivery. Agile methodologies used in software development contribute positively to the optimisation of work and effectiveness of performance. However, agile methods are proven to be ineffective and inappropriate for the IT industry whereas a framework for presentation of these methods could be used to help improve the compatibility and usability of agile methods. Though there are some drawbacks in agile methods, there are many benefits that mostly include human perspective realised though active involvement of customers as main users, team work as in Scrum where daily meetings are aimed at better coordination and integration of all team members, and others. In this respect, the integration of agile methods can be effective for software engineering and can be presented into IT industry through a more appropriate presentation framework.
References
Hazzan, O. and Dubinsky, Y. (2008) Agile Software Engineering, London: Springer.
Eckstein, J. and Baumeister, H., eds. (2004) Extreme Programming and Agile Processes in Software Engineering: 5th International Conference, XP 2004, Garmisch-Partenkirchen, Germany, 2004: Proceedings, New York: Springer.
Highsmith, J. and Highsmith, J. A., eds. (2002) Agile Software Development Ecosystems, Indianapolis: Addison-Wesley.
Schuh, P. (2004) Integrating Agile Development in the Real World, Mingham: Cengage Learning.
Sillitti, A. (2010) Agile Processes in Software Engineering and Extreme Programming:11th International Conference, XP 2010, Trondheim, Norway, 2010, Proceedings, New York: Springer.
Sommerville, I. (2010). Software Engineering, 9th ed., Harlow: Addison-Wesley.