Wednesday, November 27, 2019

A Survey of Agile Software Methodologies Based Upon Published Research Papers Essay Example

A Survey of Agile Software Methodologies: Based Upon Published Research Papers Essay A Survey of Agile Software Methodologies: based upon published research papers The ‘New Economy’ of the 90s made businesses more dynamic. The Information technology needs of these dynamic businesses were no longer static. Developers found traditional software methodologies less effective as they now faced frequently changing requirements. This increased their interest in agile methods, which were effective at managing changing requirements. Furthermore, agile methods could improve quality and reduce time simultaneously. Developers now not only have to make a choice between traditional and agile methodologies, they also need to select which agile methodology is best suited to address their requirements. This paper will help solve this problem by providing a survey of agile methodologies. This survey will help readers to decide which agile methodology can best serve their needs. The paper conducted the survey using a literature review of existing research. The survey found philosophical similarities amongst agile methods. It concludes that the combination of agile-methodologies and traditional-methodologies will continue to grow. INTRODUCTIONTHE purpose of software development methodologies is to effectively reuse the existing knowledge of software development [1],[2]. Traditional software development methodologies use process driven models. Developers followed specific procedures and plans to develop software. Traditional methodologies like the ‘water fall methodology’ assumed that requirements could be determined accurately before development of the software. These milestone-based approaches increased the time required to develop software. In the ‘new economy’ of 90s, time-to-market was a significant competitive advantage [3],[4],[5]. We will write a custom essay sample on A Survey of Agile Software Methodologies: Based Upon Published Research Papers specifically for you for only $16.38 $13.9/page Order now We will write a custom essay sample on A Survey of Agile Software Methodologies: Based Upon Published Research Papers specifically for you FOR ONLY $16.38 $13.9/page Hire Writer We will write a custom essay sample on A Survey of Agile Software Methodologies: Based Upon Published Research Papers specifically for you FOR ONLY $16.38 $13.9/page Hire Writer Developers were asked to produce quality software in less time and had to work without clearly defined requirements. These new challenges caused developers to look towards agile software methodologies. Agile methodologies can reduce the time required to develop software and improve the software quality at the same time. Agile methods focus on people, their communication and working software. Agile methodologies focus less on processes and documentation. Agile methodologies have their own set of challenges [6]. The first challenge is to select the agile methodology best suited for a particular project. The wide range of choices offers developers flexibility however the developer needs good understanding of these methodologies to make a well informed decision. This paper provides a survey of agile software development methodologies to assist developers in making the correct decision. Some comparisons are already available in the literature [7], this paper additionally includes background knowledge and history of agile methodology. Instead of focusing on process details this paper explains the philosophy behind the processes. Section II of this paper explains the history of agile methodologies. Section III provides descriptions of various agile development methodologies. Based on the survey section IV draws various conclusions. Section V relates employability skills with agile methodologies. HistorySignificance of its HistoryThere is no universally acceptable definition of agile software methodologies. Understanding the evolution of agile software development methodologies can help understand the nature of agile development methods. History of software methodologiesThe success rate in software development was low in 1960s. The lessons learned from one project were hard to use in other projects. Developers felt the need to create a systematic approach to develop software to replicate the successes in software development. These systematic approaches for software development were called software development methodologies. System Development life cycle is the oldest software methodology which was developed in 1960. The waterfall methodology was first formally described in 1970. These methodologies described formal processes, which can help in the development of large information systems. History of Agile methodologiesThe history of agile methods can be traced back to 1974 [8] but at that time these methodologies were not considered mainstream. In the 90s, the world economy started to shift from a manufacturing based economy to a service based economy. Business requirements were hard to define and time-to-market was reduced. Time taken by software development using traditional approach meant loss of competitive advantage in areas where time-to-market was short. Agile methodologies reduced the time required to develop the software while improving the quality [9]. Several modern agile methods were developed in mid 90s. These methods included Scrum, Extreme Programming, Feature Driven Development, Adaptive and Dynamic Systems Development Method. It is expected that more agile methods will be developed in response to future requirement. Agile ManifestoDevelopers observed the similarities between modern software development methodologies like extreme programming, scrum and feature driven but there was no agreement over how to articulate these similarities. In 2001 a group of developers gather in Utah to discuss these new methodologies. They listed their four preferences which differentiated their approach from traditional software development approach. These preferences were [10]: Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan These preferences do not imply complete absence of items mentioned in the later part of the dot points above. For example if documentation is completely absent in a project it can no longer be considered agile [11]. Based on the above mentioned preferences, participants of the meeting listed 12 principles of agile methodologies. These principles were [10]: Our highest priority is to satisfy the customer through early and continuous delivery of valuable software. Welcome changing requirements, even late in development. Agile processes harness change for the customers competitive advantage Deliver working software frequently, from a couple of weeks to a couple of months, with a preference for the shorter timescale. Business people and developers work together daily throughout the project. Build projects around motivated individuals, give them the environment and support they need and trust them to get the job done. The most efficient and effective method of conveying information with and within a development team is face-to-face conversation. Working software is the primary measure of progress. Agile processes promote sustainable development. The sponsors, developers and users should be able to maintain a constant pace indefinitely. Continuous attention to technical excellence and good design enhances agility Simplicity-the art of maximizing the amount of work not done is essential. The best architectures, requirements and designs emerge from self-organizing teams At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behaviour accordingly. Agile software methodologies were described by principles instead of processes or framework. Recently some authors have attempted to describe a conceptual framework to describe agile methodologies [12] . Agile methodologies focus on quickly delivering working software versions to the customer. The customer provides feedback to developers based upon this working software. Developers modify the software based upon this feedback. Developers continuously show the working software to the customer after making the required changes. Iterations are continued until customer is satisfied. This is achieved through flexibility, improved and increased communication amongst the team member and with clients and superior but simple technical design of the software [10]. Agile methods It is not possible to compile a comprehensive list of agile methods in the absence of a clear definition. This section discuses philosophy, processes, advantages and disadvantages of different agile methods. This paper provides various recommendations based on these discussions. Agile Modeling Agile Modeling is not an independent software development methodology but it is used for supplementing other methodologies. Agile Modeling shares the philosophy of face-to-face meetings, less documentations, simplicity and feedback with other agile methodologies. The build-first approach of agile software development negatively impacts the quality of the software-architecture and documentation. Agile Modeling can improve the quality of architecture and documentation by applying proven software engineering principles in an agile manner [13]. Instead of creating a comprehensive set of models and documentation Agile Modeling focuses on producing ‘sufficiently’ detailed models and documents[13]. In other words agile Modeling advocates for creating working models for software. The level of detail in a model is dictated by the context in which a model is being developed [14]. Agile Modeling is commonly used in combination with Extreme Programming, agile unified process or scrum[7]. Client feedback is sought as frequently as possible. The model and documents are updated in an incremental fashion. This incremental approach offers same philosophy as other agile software development methods, thus Agile Modeling can be integrated with other agile software development methods. This paper recommends using Agile Modeling in traditional software development methods where business requirements are stable but are hard to communicate. Agile Modeling techniques will help developers and clients to remain on the same page. Dynamic Systems Development Method IT projects share triple-constraint with other project management areas. Triple constraint implies that developers need a balance between time, resources and scope of a project. If developers want to change one, they need to adjust the other two. In DSDM (Dynamic Systems Development Method ) instead of fixing the features and varying time and resources, time and resources are fixed and features are changed [7]. DSDM was created by a consortium of organisations in 1995 [15]. They suggested developing software in five phases. The first two phases are non-iterative while the last three phases are iterative. The first two non-iterative phases are feasibility study and business study. The last three iterative phases are functional model iteration, design and build iteration and implementation [7]. DSDM implements ideas similar to other agile methodologies, these ideas include user involvement, frequent delivery, iteration and face-to-face communication. This paper recommends implementing the idea of changing the scope of a project in any software development methodology where time-to-market is a significant competitive advantage. Extreme ProgrammingIt is claimed that the extreme programming is the most commonly used agile methodology[16]. Extreme Programming like other agile methods is iterative in nature. In extreme programming, each iteration produces working and tested software. Each iteration focuses on one functional aspect of the client requirement. Extreme Programming starts with Exploration. The client explains requirements in the form of ‘stories’. The team starts developing the code. Development in the first phase is accompanied by the exploration of technologies which they will use in the system. During this time the client keeps on writing the ‘stories’. After completion of the first phase developers plan which ‘stories’ should be given priority. A schedule is developed based on these priorities. This phase is called the planning phase. After completion of the planning phase, working software is produced regularly. Software is produced using pair programming. After implementing a reasonable number of stories, the ‘production phase’ starts. In the ‘production phase’ extra testing is done. After the production phase, the maintenance phase starts. In this phase the existing system is maintained and simultaneously new developments are completed. Completion of all the computer stories is called the death phase. The death phase can also occur if software is not considered feasible at any stage. Some organisations have customized extreme programming techniques to meet specific requirements of their organisations [4]. Extreme Programming philosophy views the release phases from a client’s point of view. The releases are mapped with the client’s view of functionality by using the concept of a story. The client, who has little understanding of the software-architecture, finds this approach more natural to his/her world-view. This approach also helps in prioritization of functionality. So the development process produces software which contains high-value features. Extreme programming achieves productivity and quality by using concept of shared ownership of the code. Pair Programming technique is used to enable shared ownership. The code review is immediate. This also facilitates communication of knowledge amongst the team members [16]. This paper suggests that the concept of iteration based on customer stories and the concept of shared ownership of code might be treated independently of each other. Although extreme programming integrates these two approaches, these concepts can be used separately. Scrum Scrum provides a mechanism for interaction between team members instead of focusing on development techniques. It takes a middle ground between well-defined requirements and constantly changing requirements. Scrum freezes the requirements during a sprint lasting two to four weeks. Requirements are re-evaluated after the end of a sprint. This approach is useful when customer requirements are not clearly defined [17]. Scrum development is divided into three phases pre-game, development and post-game [18]. Planning and design is completed in the pre-game phase. A back-log created during this phase lists the incomplete tasks and assigns each task a priority. The development phase is completed using iterations. Each iteration is called a sprint and is two to three weeks long. Clients can not change back-log during a sprint. Short meetings are held daily before the start of the day. At the end of each sprint the back-log is examined. After clearing the back-log, the post-game phase starts. This phase includes testing, documentation, integration and deployment [7]. This paper recommends using pair programming in conjunction with scrum. This will improve the quality of the produced code and encourage shared responsibility amongst the team members. Feature Driven DevelopmentIt is claimed that the Feature Driven Development is suitable for development of critical systems [7]. Unlike other agile methodologies it builds a complete software architecture / model early in the development. It uses agility and iteration in its feature building phase. The use of comprehensive analysis and design allows it to use multiple teams working on different features simultaneously. This enables developers to use FDD in large teams developing critical systems. FDD starts with domain experts providing a walk through to the development team. The development team develops models for each area and simultaneously develops a model for the entire system. The development team uses these models and domain knowledge to build a comprehensive feature list and discusses the list with the client. After discussion and prioritization, the development team starts an iteration of planning and building features. FDD is useful for organisations which use waterfall methodology and want to adopt a more agile approach. The migration to FDD will pose less challenges compared to challenges associated with migrating to other agile methods [19]. If the FDD approach is adopted by small teams, this paper recommends using Agile Modeling as a supplement. Agile Modeling will help reduce the overheads generated by the FDD modelling phase, making it useful for small teams. It is further suggested that for large projects traditional requirement engineering should be used with some added agility [19]. ConclusionAgile methods are effective when teams are small, time-to-market is a significant competitive advantage and the requirements cannot be clearly defined at the start. The ‘New economy’ of 90s had all these elements. This led to an increase in the adoption of agile methods. The development of agile methodologies is part of a wider evolution of software development methodologies, with agile methodologies being the result of a continuous and distributed evolution which will remain hard to define. The focus of agile methodologies is on principles instead of precise processes. This will make it easier to integrate agile principles in traditional software development approaches. Communication methods which utilize tacit knowledge can be used in traditional software development approaches, where precisely defining requirements is time consuming. Early development of high priority features can also be integrated in traditional approaches. Agile methodologies like ‘Feature Driven Development’ will help increase the acceptance of agile methodologies in areas which require large teams and high quality. Many large organisations will customize specific agile methods to tailor these methodologies to meet their requirements. This means that the adoption of pure agile methods and use of agile principles in traditional software development methodologies will continue to grow. Employability skills Developers who use agile methods can improve their employability chances in multiple ways. Adoption of agile methodologies is increasing which means that developers experienced in agile methodologies are in short supply compared to the demand. Development using agile methodologies requires developers to have better then average skills [9]. Therefore developers who have experience in agile methods are considered better then average developers. In addition to these advantages developers using agile methods improve their generic employability skills. This section explains how agile methodologies are related to employability skills Communication skills Agile methodologies make up for the lack of comprehensive documentation by using intensive communication. Developers using agile methodologies improve their communication skills by interacting with clients and team members. Teamwork Agile methods lack detailed processes and the absence of detailed processes means that developers need to coordinate and work as a team. Detailed processes encourage bureaucratic working which discourages coordination. In agile methods developers need to coordinate their efforts on a regular basis in order to develop the software. Some agile methods like Extreme Programming use pair programming which requires extensive teamwork. Agile methods like scrum need daily meetings. Teamwork learned during agile development can be used at other careers. Problem SolvingAgile methods encourage creativity amongst team members. Developers are not bound by a certain process. They have the liberty to come up with the solution to both technical and decision making issues. Agile methodologies can be customized by developers. This further encourages creative thinking and problem solving. Self ManagementAgile methodologies encourage replacing central decision making with distributed decision making. This encourages developers to articulate their own ideas and vision. In software methodology like FDD developers take responsibility of their own class which encourages developers to use self management. Planning and organisingLack of detailed planning in agile methods does not imply absence of planning. Planning is an essential part of agile methods and agile methodologies help developers adopt pragmatic approaches towards planning. Agile methodologies prioritize software features and invest efforts in those features which bring more value to the client. This practice helps developers focus on high priority issues at their career. TechnologyFrequent release of working software encourages unit testing. Unit testing is usually done using automated methods. This encourages developers to develop and use technology for the development process. Agile methods like Feature Driven Development define a special role of toolsmith. The toolsmith’s responsibility is to use technology to develop tools for team members. Developers using agile methods understand the value of using technology in their careers. LearningThere is an opinion that learning is a core component of agile methodologies framework [12]. This opinion views agility as a continuous process. In each iteration, the developers’ learning is based on the results of the iteration and they use this learning in the next iteration. This learning activity enables developers to continuously improve the agile process. Learning activities associated with agile programming improve developer’s ability to learn at other jobs. Initiative and enterpriseAdapting to changing requirements is an integral part of agile methodologies. In the absence of a rigid process, developers are encouraged to take initiative and come up with solutions. A Survey of Agile Software Methodologies Based Upon Published Research Papers Essay Example A Survey of Agile Software Methodologies: Based Upon Published Research Papers Essay A Survey of Agile Software Methodologies: based upon published research papers The ‘New Economy’ of the 90s made businesses more dynamic. The Information technology needs of these dynamic businesses were no longer static. Developers found traditional software methodologies less effective as they now faced frequently changing requirements. This increased their interest in agile methods, which were effective at managing changing requirements. Furthermore, agile methods could improve quality and reduce time simultaneously. Developers now not only have to make a choice between traditional and agile methodologies, they also need to select which agile methodology is best suited to address their requirements. This paper will help solve this problem by providing a survey of agile methodologies. This survey will help readers to decide which agile methodology can best serve their needs. The paper conducted the survey using a literature review of existing research. The survey found philosophical similarities amongst agile methods. It concludes that the combination of agile-methodologies and traditional-methodologies will continue to grow. INTRODUCTIONTHE purpose of software development methodologies is to effectively reuse the existing knowledge of software development [1],[2]. Traditional software development methodologies use process driven models. Developers followed specific procedures and plans to develop software. Traditional methodologies like the ‘water fall methodology’ assumed that requirements could be determined accurately before development of the software. These milestone-based approaches increased the time required to develop software. In the ‘new economy’ of 90s, time-to-market was a significant competitive advantage [3],[4],[5]. We will write a custom essay sample on A Survey of Agile Software Methodologies: Based Upon Published Research Papers specifically for you for only $16.38 $13.9/page Order now We will write a custom essay sample on A Survey of Agile Software Methodologies: Based Upon Published Research Papers specifically for you FOR ONLY $16.38 $13.9/page Hire Writer We will write a custom essay sample on A Survey of Agile Software Methodologies: Based Upon Published Research Papers specifically for you FOR ONLY $16.38 $13.9/page Hire Writer Developers were asked to produce quality software in less time and had to work without clearly defined requirements. These new challenges caused developers to look towards agile software methodologies. Agile methodologies can reduce the time required to develop software and improve the software quality at the same time. Agile methods focus on people, their communication and working software. Agile methodologies focus less on processes and documentation. Agile methodologies have their own set of challenges [6]. The first challenge is to select the agile methodology best suited for a particular project. The wide range of choices offers developers flexibility however the developer needs good understanding of these methodologies to make a well informed decision. This paper provides a survey of agile software development methodologies to assist developers in making the correct decision. Some comparisons are already available in the literature [7], this paper additionally includes background knowledge and history of agile methodology. Instead of focusing on process details this paper explains the philosophy behind the processes. Section II of this paper explains the history of agile methodologies. Section III provides descriptions of various agile development methodologies. Based on the survey section IV draws various conclusions. Section V relates employability skills with agile methodologies. HistorySignificance of its HistoryThere is no universally acceptable definition of agile software methodologies. Understanding the evolution of agile software development methodologies can help understand the nature of agile development methods. History of software methodologiesThe success rate in software development was low in 1960s. The lessons learned from one project were hard to use in other projects. Developers felt the need to create a systematic approach to develop software to replicate the successes in software development. These systematic approaches for software development were called software development methodologies. System Development life cycle is the oldest software methodology which was developed in 1960. The waterfall methodology was first formally described in 1970. These methodologies described formal processes, which can help in the development of large information systems. History of Agile methodologiesThe history of agile methods can be traced back to 1974 [8] but at that time these methodologies were not considered mainstream. In the 90s, the world economy started to shift from a manufacturing based economy to a service based economy. Business requirements were hard to define and time-to-market was reduced. Time taken by software development using traditional approach meant loss of competitive advantage in areas where time-to-market was short. Agile methodologies reduced the time required to develop the software while improving the quality [9]. Several modern agile methods were developed in mid 90s. These methods included Scrum, Extreme Programming, Feature Driven Development, Adaptive and Dynamic Systems Development Method. It is expected that more agile methods will be developed in response to future requirement. Agile ManifestoDevelopers observed the similarities between modern software development methodologies like extreme programming, scrum and feature driven but there was no agreement over how to articulate these similarities. In 2001 a group of developers gather in Utah to discuss these new methodologies. They listed their four preferences which differentiated their approach from traditional software development approach. These preferences were [10]: Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan These preferences do not imply complete absence of items mentioned in the later part of the dot points above. For example if documentation is completely absent in a project it can no longer be considered agile [11]. Based on the above mentioned preferences, participants of the meeting listed 12 principles of agile methodologies. These principles were [10]: Our highest priority is to satisfy the customer through early and continuous delivery of valuable software. Welcome changing requirements, even late in development. Agile processes harness change for the customers competitive advantage Deliver working software frequently, from a couple of weeks to a couple of months, with a preference for the shorter timescale. Business people and developers work together daily throughout the project. Build projects around motivated individuals, give them the environment and support they need and trust them to get the job done. The most efficient and effective method of conveying information with and within a development team is face-to-face conversation. Working software is the primary measure of progress. Agile processes promote sustainable development. The sponsors, developers and users should be able to maintain a constant pace indefinitely. Continuous attention to technical excellence and good design enhances agility Simplicity-the art of maximizing the amount of work not done is essential. The best architectures, requirements and designs emerge from self-organizing teams At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behaviour accordingly. Agile software methodologies were described by principles instead of processes or framework. Recently some authors have attempted to describe a conceptual framework to describe agile methodologies [12] . Agile methodologies focus on quickly delivering working software versions to the customer. The customer provides feedback to developers based upon this working software. Developers modify the software based upon this feedback. Developers continuously show the working software to the customer after making the required changes. Iterations are continued until customer is satisfied. This is achieved through flexibility, improved and increased communication amongst the team member and with clients and superior but simple technical design of the software [10]. Agile methods It is not possible to compile a comprehensive list of agile methods in the absence of a clear definition. This section discuses philosophy, processes, advantages and disadvantages of different agile methods. This paper provides various recommendations based on these discussions. Agile Modeling Agile Modeling is not an independent software development methodology but it is used for supplementing other methodologies. Agile Modeling shares the philosophy of face-to-face meetings, less documentations, simplicity and feedback with other agile methodologies. The build-first approach of agile software development negatively impacts the quality of the software-architecture and documentation. Agile Modeling can improve the quality of architecture and documentation by applying proven software engineering principles in an agile manner [13]. Instead of creating a comprehensive set of models and documentation Agile Modeling focuses on producing ‘sufficiently’ detailed models and documents[13]. In other words agile Modeling advocates for creating working models for software. The level of detail in a model is dictated by the context in which a model is being developed [14]. Agile Modeling is commonly used in combination with Extreme Programming, agile unified process or scrum[7]. Client feedback is sought as frequently as possible. The model and documents are updated in an incremental fashion. This incremental approach offers same philosophy as other agile software development methods, thus Agile Modeling can be integrated with other agile software development methods. This paper recommends using Agile Modeling in traditional software development methods where business requirements are stable but are hard to communicate. Agile Modeling techniques will help developers and clients to remain on the same page. Dynamic Systems Development Method IT projects share triple-constraint with other project management areas. Triple constraint implies that developers need a balance between time, resources and scope of a project. If developers want to change one, they need to adjust the other two. In DSDM (Dynamic Systems Development Method ) instead of fixing the features and varying time and resources, time and resources are fixed and features are changed [7]. DSDM was created by a consortium of organisations in 1995 [15]. They suggested developing software in five phases. The first two phases are non-iterative while the last three phases are iterative. The first two non-iterative phases are feasibility study and business study. The last three iterative phases are functional model iteration, design and build iteration and implementation [7]. DSDM implements ideas similar to other agile methodologies, these ideas include user involvement, frequent delivery, iteration and face-to-face communication. This paper recommends implementing the idea of changing the scope of a project in any software development methodology where time-to-market is a significant competitive advantage. Extreme ProgrammingIt is claimed that the extreme programming is the most commonly used agile methodology[16]. Extreme Programming like other agile methods is iterative in nature. In extreme programming, each iteration produces working and tested software. Each iteration focuses on one functional aspect of the client requirement. Extreme Programming starts with Exploration. The client explains requirements in the form of ‘stories’. The team starts developing the code. Development in the first phase is accompanied by the exploration of technologies which they will use in the system. During this time the client keeps on writing the ‘stories’. After completion of the first phase developers plan which ‘stories’ should be given priority. A schedule is developed based on these priorities. This phase is called the planning phase. After completion of the planning phase, working software is produced regularly. Software is produced using pair programming. After implementing a reasonable number of stories, the ‘production phase’ starts. In the ‘production phase’ extra testing is done. After the production phase, the maintenance phase starts. In this phase the existing system is maintained and simultaneously new developments are completed. Completion of all the computer stories is called the death phase. The death phase can also occur if software is not considered feasible at any stage. Some organisations have customized extreme programming techniques to meet specific requirements of their organisations [4]. Extreme Programming philosophy views the release phases from a client’s point of view. The releases are mapped with the client’s view of functionality by using the concept of a story. The client, who has little understanding of the software-architecture, finds this approach more natural to his/her world-view. This approach also helps in prioritization of functionality. So the development process produces software which contains high-value features. Extreme programming achieves productivity and quality by using concept of shared ownership of the code. Pair Programming technique is used to enable shared ownership. The code review is immediate. This also facilitates communication of knowledge amongst the team members [16]. This paper suggests that the concept of iteration based on customer stories and the concept of shared ownership of code might be treated independently of each other. Although extreme programming integrates these two approaches, these concepts can be used separately. Scrum Scrum provides a mechanism for interaction between team members instead of focusing on development techniques. It takes a middle ground between well-defined requirements and constantly changing requirements. Scrum freezes the requirements during a sprint lasting two to four weeks. Requirements are re-evaluated after the end of a sprint. This approach is useful when customer requirements are not clearly defined [17]. Scrum development is divided into three phases pre-game, development and post-game [18]. Planning and design is completed in the pre-game phase. A back-log created during this phase lists the incomplete tasks and assigns each task a priority. The development phase is completed using iterations. Each iteration is called a sprint and is two to three weeks long. Clients can not change back-log during a sprint. Short meetings are held daily before the start of the day. At the end of each sprint the back-log is examined. After clearing the back-log, the post-game phase starts. This phase includes testing, documentation, integration and deployment [7]. This paper recommends using pair programming in conjunction with scrum. This will improve the quality of the produced code and encourage shared responsibility amongst the team members. Feature Driven DevelopmentIt is claimed that the Feature Driven Development is suitable for development of critical systems [7]. Unlike other agile methodologies it builds a complete software architecture / model early in the development. It uses agility and iteration in its feature building phase. The use of comprehensive analysis and design allows it to use multiple teams working on different features simultaneously. This enables developers to use FDD in large teams developing critical systems. FDD starts with domain experts providing a walk through to the development team. The development team develops models for each area and simultaneously develops a model for the entire system. The development team uses these models and domain knowledge to build a comprehensive feature list and discusses the list with the client. After discussion and prioritization, the development team starts an iteration of planning and building features. FDD is useful for organisations which use waterfall methodology and want to adopt a more agile approach. The migration to FDD will pose less challenges compared to challenges associated with migrating to other agile methods [19]. If the FDD approach is adopted by small teams, this paper recommends using Agile Modeling as a supplement. Agile Modeling will help reduce the overheads generated by the FDD modelling phase, making it useful for small teams. It is further suggested that for large projects traditional requirement engineering should be used with some added agility [19]. ConclusionAgile methods are effective when teams are small, time-to-market is a significant competitive advantage and the requirements cannot be clearly defined at the start. The ‘New economy’ of 90s had all these elements. This led to an increase in the adoption of agile methods. The development of agile methodologies is part of a wider evolution of software development methodologies, with agile methodologies being the result of a continuous and distributed evolution which will remain hard to define. The focus of agile methodologies is on principles instead of precise processes. This will make it easier to integrate agile principles in traditional software development approaches. Communication methods which utilize tacit knowledge can be used in traditional software development approaches, where precisely defining requirements is time consuming. Early development of high priority features can also be integrated in traditional approaches. Agile methodologies like ‘Feature Driven Development’ will help increase the acceptance of agile methodologies in areas which require large teams and high quality. Many large organisations will customize specific agile methods to tailor these methodologies to meet their requirements. This means that the adoption of pure agile methods and use of agile principles in traditional software development methodologies will continue to grow. Employability skills Developers who use agile methods can improve their employability chances in multiple ways. Adoption of agile methodologies is increasing which means that developers experienced in agile methodologies are in short supply compared to the demand. Development using agile methodologies requires developers to have better then average skills [9]. Therefore developers who have experience in agile methods are considered better then average developers. In addition to these advantages developers using agile methods improve their generic employability skills. This section explains how agile methodologies are related to employability skills Communication skills Agile methodologies make up for the lack of comprehensive documentation by using intensive communication. Developers using agile methodologies improve their communication skills by interacting with clients and team members. Teamwork Agile methods lack detailed processes and the absence of detailed processes means that developers need to coordinate and work as a team. Detailed processes encourage bureaucratic working which discourages coordination. In agile methods developers need to coordinate their efforts on a regular basis in order to develop the software. Some agile methods like Extreme Programming use pair programming which requires extensive teamwork. Agile methods like scrum need daily meetings. Teamwork learned during agile development can be used at other careers. Problem SolvingAgile methods encourage creativity amongst team members. Developers are not bound by a certain process. They have the liberty to come up with the solution to both technical and decision making issues. Agile methodologies can be customized by developers. This further encourages creative thinking and problem solving. Self ManagementAgile methodologies encourage replacing central decision making with distributed decision making. This encourages developers to articulate their own ideas and vision. In software methodology like FDD developers take responsibility of their own class which encourages developers to use self management. Planning and organisingLack of detailed planning in agile methods does not imply absence of planning. Planning is an essential part of agile methods and agile methodologies help developers adopt pragmatic approaches towards planning. Agile methodologies prioritize software features and invest efforts in those features which bring more value to the client. This practice helps developers focus on high priority issues at their career. TechnologyFrequent release of working software encourages unit testing. Unit testing is usually done using automated methods. This encourages developers to develop and use technology for the development process. Agile methods like Feature Driven Development define a special role of toolsmith. The toolsmith’s responsibility is to use technology to develop tools for team members. Developers using agile methods understand the value of using technology in their careers. LearningThere is an opinion that learning is a core component of agile methodologies framework [12]. This opinion views agility as a continuous process. In each iteration, the developers’ learning is based on the results of the iteration and they use this learning in the next iteration. This learning activity enables developers to continuously improve the agile process. Learning activities associated with agile programming improve developer’s ability to learn at other jobs. Initiative and enterpriseAdapting to changing requirements is an integral part of agile methodologies. In the absence of a rigid process, developers are encouraged to take initiative and come up with solutions.

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.