Journal #Nine [SYD701] - Software Development Methodology Trends
Software Development Methodology Trends
JOURNAL #NINE [SYD701]
Software Development Methodology Trends
The benefits of an agile approach to software development have not been lost on organisations, its ability to provide disciplined yet light-weight and adaptable processes while emphasising human effort and experience is central to the principles of good software. Engineering processes, rigours and best practices are maintained when deploying agile methods, allowing programmers to build, deploy and maintain complex software systems that meet the needs of organisations and the requirements of users and stakeholders. Consequently, agile has become the dominant software development discipline deployed in organisations worldwide.
Practicing Agile
In the 2018 State of Agile survey, it was reported that 97% of respondents stated that agile methods were being deployed in their organisation, an increase of 13% from 2007. However, it is important to note that respondents were more likely to be predisposed to the agile methodology. Conversely, 52% of the respondents stated that all, or more than 50% of their teams, practised agile.
The most popular method deployed was SCRUM at 56%, up 16% from 2007. The increasing prominence of SCRUM has led to several casualties, for instance, Extreme Programming (XP) lost its second-place position representing 23% of respondents and dropping to 6%. Another outcome of the survey was that a significant number (71%) of organisations were planning or investing in DevOps initiatives.
The survey found that 84% of respondents still considered themselves as maturing their agile practices, suggesting there were still opportunities for further research surrounding the adoption challenges and practices of the methodology. Adoption concerns are primarily centred on a lack of planning up-front, the production and availability of documentation, the level of predictability and a loss of control by management. Organisational resistance to change, the culture and a lack of management support were also identified as primary concerns.
The Success of Agile Methods
The popularity of agile methods has resulted from the synergies that exist between agile software development and established software engineering concepts. The sub-disciplines of these concepts are identified as follows:
- Usability
- Requirements Engineering
- Software Security
- Global Software Engineering
- Safety-critical Systems
- Software Architecture
The mid-2000s witnessed agile step outside its traditional comfort zone, deployed mainly by small teams emphasising early testing for frequent feedback on iterative delivery, to breaking out into large scale developments.
Agile evolved again in the 2010s to include operations that sat alongside development through DevOps and continuous delivery and continuous feedback. Perceived by some to be a natural fit, it created several technical, socio-technical and organisational challenges such as the best way to capture feedback and action changes, how to manage deployed software across organisations to users with different requirements and how to continuously deploy software when there are significant infrastructure changes.
Agile faces tensions with emerging microservices architectures. Microservices are having a disruptive impact on the design and deployment of software that raises questions for teams balancing their agile practices, particularly where there is design up-front.
Where is Agile Heading?
Despite some of the evolutionary problems, agile is expected to meet the needs of emerging technologies that include:
- The Internet-of-things (IoT)
- Big Data
- Augmented and Virtual Reality
- Intelligent Systems
- Augmented Reality (AI)
These new technologies will raise questions and create significant challenges such as:
- How will AI-based software engineering be enabled by agile methods?
- What role can it play to improve and leverage the data sciences and data analytics?
- How would the demands of IoT - hardware, embedded, creative, visual and interface design work effectively with agile development?
- How will agile adapt to increasing security concerns and zero-day threats and will extensive testing before deployment remain an effective solution?
- Is agile capable of supporting emerging safety-critical systems such as self-driving cars?
- Non-technical or end-user development of complex software is likely to increase, can agile support these types of experts to effectively and efficiently improve and deploy software components and functionality?
- How can agile be successfully leveraged across a multitude of emerging domains for both researchers and practitioners?
Conclusion
Over the last 20 years of practice, evolution and research, agile has come to dominate the software development landscape, but despite all this progress, organisations still consider them as ‘maturing’ in the implementation of the methodology through the various available methods. Researchers continue to study the practice of the methodology and assist practitioners to comprehend fundamental issues such as the ability to manage change in a process that actively promotes change. Ultimately, however, the result is that software engineers are perceived to be the experts in the methodology from disciplines outside of software development. The principles of agile are now being extended to support transformations in other contexts for which software engineers can assist, suggestions include human resources, sales and marketing, project management and research and development.
Hoda, Rashina & Salleh, Norsaremah & Grundy, John. (2018). The Rise and Evolution of Agile Software Development. IEEE Software. PP. 1-1. 10.1109/MS.2018.290111318.