The Application Of Agile Software Development Processes To Large Scale Software Systems Development


Agile software development process is a group of software development methods based on iterative and incremental development, where requirements and solutions evolve through collaboration between self-organizing, cross-functional teams. It promotes adaptive planning, evolutionary development and delivery, a time-boxed iterative approach, and encourages rapid and flexible response to change. It is a conceptual framework that promotes foreseen interactions throughout the development cycle[1].

Agile software development is usually considered it situations where the large scale system to be developed is of low criticality, low to medium scale, there is higher skilled resource, the team to work on the software is a local one rather than outsourcing. This is opposed to cases where the system is of high-criticality e.g. military systems, NASA systems and aeronautic systems, development of the system is of massive scale where Rational Unified Process is normally used.

The need for Agile processes to be used in developing large scale systems arises from the systems needs such as: Responding to business competition quickly Trying to get to the market ahead of competitors Responding to globalization in regards to systems Reducing cost of equipment used in the development of the systems

As such Agile methods offer developing teams the opportunity to provide the solution to these needs unlike traditional Waterfall methods which are sequential and need a stage to be completed before moving unto the next stage. Obviously the drawbacks of the waterfall methods include inability to adapt to changing requirements easily, relying on the initial plan and estimates which are often unreliable, lack of customer involvement which leads to misunderstandings[2].

The most notable and popular Agile method is Extreme Programming. Its strong areas include simplicity, communication, feedback in order to improve speed of development, quality of code. It also partially eliminates the stages of requirements elicitation, design, and testing rather advocating that these stages be integrated at the same time in one or two weeks[2].

Regardless of the advantages Agile brings to large-scale system development, as the system grows, the problems of using Agile will grow. Usually these systems are distributed over different teams, equipment/infrastructure, geographical locations. Hence the problem of coordination increases as the system grows. These problems can be split into

a) Spatial problems With the systems distributed over large areas, communication becomes harder which can lead to loss of trust between the systems development team hence making ineffective the agile process. Despite the availability of technologogical tools used in communication such as digital video, audio, email etc, communication lacking the expression of emotion, facial gestures and the movement of hands cannot be compared to communciation obtained when working together in the same place.

b) Temporal Challenges Still due to the distances obtained as a result of large-scale distributed systems, there could be scenarios where the time-differences could be so large that the team at a location get to work only when the team at another location are having their sleeping hours. Hence there could be an inability of the customer to discuss with the development team at a location due to the time difference. In addition it does not make sense if the client has to be at every development site just to be able to communicate. To solve this, a member of the development team can act as a moderator betweent the team and the client thereby he liases with the client and gets back to the team. For this to be successful, he would also need to be able to be aware of all the stakeholders interest. Quite a difficult task.

c) Cultural Challenges Adding the scenario where language differences, cultural references and customs being an issue, it becomes harder to advocate for Agile methods as a development method to be used on massive/large-scale systems development.

Despite the advantages Agile development processes brings to large scale systems development, the issues raise will always play a key factor especially when the system to be developed is distributed over a large geographical zone.

A better option would be to use a hybrid-agile-waterfall approach whereby the best of both methods is applied in the development of the large-scale system. It could be decided that at the initial development of the system, the waterfall method is employed, while after deployment, any update processes are done using the Agile development process.

Another option would be taking out stages in one of the approaches which form a bottle-neck to the development process and replacing that stage with another stage from the other approach. For example in large-scale systems development, practices such as minimal documentation and code refactoring could be found to be unfeasible[2]. This could be exchanged for the more comprehensive and general documentation style of the waterfall approach.


On medium, I can be found at https://medium.com/@smicer66

References

[1] Agile software development. https://en.wikipedia.org/wiki/Agile_software_development

[2] Trenton Hafterson. Incorporating Agile Methods into the Development of Large-Scale Systems

要查看或添加评论,请登录

社区洞察

其他会员也浏览了