Agile Software Development
- Hits: 19196
Each year in the U.S, the total cost of software development projects is around $275 billion. Seventy per cent of these projects fail to honor their contractual arrangements. The most common factors that compromise software development are imprecise client specifications, insufficient planning and analysis, poor project management, continually moving goalposts, unrealistically short timescales, weak quality assurance, underestimated resources, and unfit schedule and scope commitments. These factors highlight two sources of complexity in software development projects: social and technical complexities.
Indeed, a software development project is a complex socio-technical activity. The social aspects of such a project, which are linked to the complexity of the development activities, include how the developers and their clients interact, behave, and organize. For example, developers create and modify the software with the necessary coordination to avoid conflicts and improve the team's performance and effectiveness. By contrast, technical aspects and their inherent complexity include appropriate design and use of algorithms, architecture, development techniques, and computing technologies.
Various software development methodologies have been created to guide the software development process and reduce these complexities. Some of these approaches are agile methods, iterative processes, Waterfall processes, and formal methods. Each of these models provides to software developers (a) methods and tools to understand, interpret, and manipulate the software artifact, and (b) computer-support cooperative methods and tools such as configuration software management and other process-based software development systems. The objectives of these socio-technical systems is to meet the requirements of standards like ISO 9000, SPICE, and BOOTSTRAP, SEPRM, Capability maturity model, Personal software process, and Total quality management.
Agile methodologies originated during the mid 1990s, partly as a reaction against “heavyweight” methods and partly in response to the challenges of the Internet era. The popularity of the Agile methodologies is undoubtedly established by Kent Beck’s Extreme Programming (XP).
Extreme Programming (XP) is the most well-known agile software development approaches compared to the other methods such as Adaptive software development, Lean development, Crystal, Dynamic systems development method, Feature driven development, and SCRUM. This methodology was developed by Beck in 1996 to solve many of the major issues that lead to software project complications. The XP lifecycle consists of six phases including exploration, productionizing, planning, first release iterations, maintenance, and death.
As a rigorous approach for group software development support, XP is characterized by a tight customer-developer loop that ensures that any misunderstandings between the developer and the customer are corrected early in the development lifecycle. XP is also characterized by pair programming, one of its 12 core practices. The other practices are pair programming, planning game, small releases, metaphor, continuous integration, refactoring, collective ownership, simple design, testing, onsite customer, coding standards, and 40-hr week.
XP shares the same values (communication, courage, feedback, and simplicity) describes in the Agile Manifesto that places the highest priority of the interactions on the development team and between developers and their customers. From the group software development perspective, XP’s lack of practices to facilitate the communication and discussion of abstractions, the separation of analysis and development roles, and the provision of components interfaces and design patterns. These functionalities are available with Unified modeling language (UML).
- Impacts of Software Process Models on Group Software Development: A Comparative Study of RUP, UML, and XP.
- Understanding The Cameroonian Electoral System with UML.
- ERPs and CRMs: SAP, ORACLE, PeopleSoft, or Apache?