Adaptive Software Development – Evolution ”; Previous Next The earlier SDLC models are more oriented to the practices of stability, predictability and decreasing returns. The industry, such as the Internet Platforms has been moving to increase return environments, unpredictable, nonlinear, and fast approaches. Adaptive Software Development (ASD) has evolved to address these issues. It focuses on emergence as the most important factor from the management’s perspective, to enhance the ability to manage product development. In Jim Highsmith’s words, “Adaptive Software Development framework is based on years of experience with traditional Software Development methodologies, consulting on, practicing, and writing about Rapid Application Development (RAD) techniques and working with high-technology software companies on managing their product development practices”. Waterfall model is found to be characterized by linearity and predictability, with meagre feedback. It can be viewed as a sequence of Plan → Build → Implement. The Evolutionary Lifecycle models such as the Spiral model moved the Deterministic approach to the Adaptive one, with Plan → Build → Revise Cycles. However, the practitioners’ mindset remained Deterministic with long-term predictability turning to short-term predictability. The practices of Evolutionary Lifecycle models such as RAD are found to be less Deterministic. The Adaptive Life Cycle The Adaptive model is built from a different point of view. Though cyclical like the Evolutionary model, the names of the phase reflect the unpredictable nature of increasingly complex systems. Adaptive Development goes further than its evolutionary heritage in two key ways − It explicitly replaces Determinism with Emergence. It goes beyond a change in life cycle to a deeper change in management style. The three phases in Adaptive Software Development Lifecycle are − Speculate − Speculate replaces the deterministic word planning, planning of product specifications or planning of project management tasks. Collaborate − Collaborate represents drawing a balance between Managing in the traditional project management sense, and Creating and maintaining the collaborative environment needed for emergence. Collaborative Activities build products, keeping up the pace of changes in the environment. Learn − Learn aims both, the developers and the customers, to use the results of each development cycle to learn the direction of the next. Print Page Previous Next Advertisements ”;
Category: Adaptive Software Development
Concepts
Adaptive Software Development – Concepts ”; Previous Next In this chapter, we will understand the various concepts of Adaptive Software Development. Complex Adaptive Systems (CAS) Theory Brian Arthur and his colleagues, at the Santa Fe institute, used the Complex Adaptive Systems (CAS) theory to revolutionize the understanding of Physics, Biology, Evolution, and Economics. Brian Arthur culminated his more than two decades of trying to convince mainstream economists that their view, dominated by fundamental assumptions of decreasing returns, equilibrium, and deterministic dynamics, was no longer sufficient to understand reality. The new world is one of increasing returns, instability, and inability to determine cause and effect. The two worlds differ in behavior, style, and culture. They call for − Different Management Techniques Different Strategies Different Understanding Complex Software Development With the scope of Software Applications being exploded, even the software development organizations are accruing similar contradictions as mentioned above. One World is represented by the Deterministic development, derived from management practices that are rooted with the basics of stability and predictability (which in Arthur”s terms means decreasing returns) Second World is represented by the industries moving from decreasing to increasing return environments that are unpredictable, nonlinear and fast. To address the issues of this second world, Jig Highsmith offered a framework, Adaptive Software Development that is different from the Deterministic Software Development. The Adaptive Software Development focuses on addressing the complex systems − Adaptive Software Development for the development life cycle. Adaptive Management Techniques calling for a different mindset from that of traditional project management practices. In this tutorial, you can understand both these implementations. Adaptive Software Development (ASD) is based on two perspectives − Conceptual perspective based on the Complex Adaptive Systems (CAS) theory, as given in the first section of this chapter. Practical Perspective based on Years of experience with Deterministic software development methodologies. Consulting, practicing, and writing about Rapid Application Development (RAD) techniques; and working with high-technology software companies on managing their product development. In this chapter, you will understand the conceptual perspective of Adaptive Software Development. Complex Adaptive Systems (CAS) Concepts Complex Adaptive Systems (CAS) theory has many concepts. Adaptive Software Development is based on two of these concepts − Emergence Complexity Emergence In complex software product-development projects, the outcomes are inherently unpredictable. However, successful products emerge from such environments all the time. This can happen by Emergence, as illustrated in the Complex Adaptive Systems (CAS) theory. It can be understood by a simple example, flocking behavior of birds. When you observe a flock of birds, you notice that − Each bird tries to Maintain a minimum distance from other objects in the environment, including other birds. Match velocities with birds in its neighborhood. Move towards the perceived center of mass of birds in its neighborhood. There are no rules of behavior for the group. The only rules are about the behavior of individual birds. However, there exists an emergent behavior, the flocking of birds. When errant birds rush to catch up, the flock splits around obstacles and reforms on the other side. This shows the requirement of the most difficult mental model changes in Adaptive Development − From ways of managing and organizing that individual freedom to the notion that a creative new order emerges unpredictably from spontaneous selforganization. In addition to the development, emergence is the most important concept from the management perspective also. Complexity In the Software Development context, Complexity is about − The individuals of a team such as the developers, customers, vendors, competitors, and stockholders, their numbers and their speed. Size and technological complexity. Adaptive Software Development Practices Adaptive Software Development offers a different perspective on software management practices. In the sections below, you can understand the two important practices − Quality and RAD, both of which have ramifications for gathering requirements. You can find the details of all the practices in the chapter, Adaptive Software Development Practices in this tutorial. Quality In a complex environment, the age-old practice of “Do it right the first time” does not work as you cannot predict what is right at the beginning. You need to have an aim to produce the right value. However, in complex environment, the combinations and permutations of value components like scope (features, performance, defect levels), schedule, and resources is so vast that there can never be an optimum value. Hence, the focus is to shift to deliver the best value in the competitive market. RAD Practices RAD Practices generally involve a combination of the following − Evolutionary Lifecycle Customer Focus Groups, JAD Sessions, Technical Reviews Time-boxed Project Management Continuous Software Engineering Dedicated Teams with war rooms The RAD projects have an inherent adaptive, emergent flavor. Many IT organizations are against RAD. However, Microsoft and others have produced incredibly large and complex software using techniques comparable to RAD because it raises questions about their fundamental world view. RAD practices and Microsoft process are both examples of Adaptive Development in action. Giving them a label (i.e., Adaptive Development) and realizing that there is a growing body of scientific knowledge (i.e., CAS theory) explains why they work. This should provide a basis for more extensive use of these practices. Print Page Previous Next Advertisements ”;
Discussion
Discuss Adaptive Software Development ”; Previous Next Adaptive Software Development is a move towards adaptive practices, leaving the deterministic practices in the context of complex systems and complex environments. Adaptive Software Development focuses on collaboration and learning as a technique to build complex systems. It is evolved from the best practices of Rapid Application Development (RAD) and Evolutionary Life Cycles. Print Page Previous Next Advertisements ”;
Useful Resources
Adaptive S/W Development – Resources ”; Previous Next The following resources contain additional information on Adaptive Software Development. Please use them to get more in-depth knowledge on this. Useful Links on Adaptive Software Development Adaptive Software Development Wiki − Wikipedia Reference for Adaptive Software Development. Useful Books on Adaptive Software Development To enlist your site on this page, please drop an email to [email protected] Print Page Previous Next Advertisements ”;
Introduction
Adaptive S/W Development – Introduction ”; Previous Next What is Agile? In literary terms, the word “agile” means someone who can move quickly and easily or someone who can think and act quickly and clearly. In business, “agile” is used for describing ways of planning and doing work wherein it is understood that making changes as needed is an important part of the job. Business “agility” means that a company is always in a position to take account of the market changes. In software development, the term “agile” is adapted to mean “the ability to respond to changes − changes from Requirements, Technology and People.” Agile Manifesto The Agile Manifesto was published by a team of software developers in 2001, highlighting the importance of the development team, accommodating changing requirements and customer involvement. The Agile Manifesto is − We are uncovering better ways of developing software by doing it and helping others do it. Through this work, we have come to value − Individuals and interactions over processes and tools. Working software over comprehensive documentation. Customer collaboration over contract negotiation. Responding to change over following a plan. That is, while there is value in the items on the right, we value the items on the left more. Characteristics of Agility Following are the characteristics of Agility − Agility in Agile Software Development focuses on the culture of the whole team with multi-discipline, cross-functional teams that are empowered and selforganizing. It fosters shared responsibility and accountability. Facilitates effective communication and continuous collaboration. The whole-team approach avoids delays and wait times. Frequent and continuous deliveries ensure quick feedback that in in turn enable the team align to the requirements. Collaboration facilitates combining different perspectives timely in implementation, defect fixes and accommodating changes. Progress is constant, sustainable, and predictable emphasizing transparency. Agile Methodologies Early implementations of Agile methods include Rational Unified Process, Scrum, Crystal Clear, Extreme Programming, Adaptive Software Development, Feature Driven Development, and Dynamic Systems Development Method (DSDM). These are now collectively referred to as the Agile methodologies, after the Agile manifesto was published in 2001. In this tutorial, we will learn the Agile Methodology − Adaptive Software Development. What is Adaptive Software Development? Adaptive Software Development is a move towards adaptive practices, leaving the deterministic practices in the context of complex systems and complex environments. Adaptive Software Development focuses on collaboration and learning as a technique to build complex systems. It is evolved from the best practices of Rapid Application Development (RAD) and Evolutionary Life Cycles. Adaptive Software Development was then extended to include adaptive approaches for the management, with speculation replacing Planning. Jim Highsmith published a book on Adaptive Software Development in 2000. In Highsmith’s words − “Adaptive Software Development is cyclical like the evolutionary model, with the phase names Speculate, collaborate, learn reflecting the unpredictable realm of increasingly complex systems. Adaptive development goes further than its evolutionary heritage in two key ways. First, it explicitly replaces determinism with emergence. Second, it goes beyond a change in Life Cycle to a deeper change in management style.” Print Page Previous Next Advertisements ”;
SDLC – Agile Methods
SDLC – Agile Methods ”; Previous Next Agile Methods are based on the Agile manifesto and are adaptive in nature. Agile methods ensure − Team collaboration. Customer collaboration. Constant and continuous communication. Response to changes. Readiness of a working product. Several Agile methods came into existence, promoting iterative and incremental development with time-boxed iterations. Though the Agile methods are adaptive, rules of the specific method cannot be by-passed and hence requires disciplined implementation. Agile Methods – Strengths The advantages or strengths of Agile method are − Early and frequent releases. Accommodation of changing requirements. Daily communication among the customer and developers. Projects built around motivated individuals. Self-organizing teams. Simplicity, focusing on what is immediately required. No building for future or overburdening the code. Regular reflection to adjust behavior to improve effectiveness. Agile Methods – Weaknesses The disadvantages or weaknesses of Spiral method are − Customer availability may not be possible. Teams should be experienced to follow the rules of the method. Appropriate planning is required to quickly decide on the functionality that needs to be delivered in an iteration. Team is expected to have estimation skills and negotiation skills. Team should have effective communication skills. New teams may not be able to organize themselves. Requires discipline to develop and deliver in time-boxed iterations. Design needs to be kept simple and maintainable, thus requiring effective design skills. When to Use Agile methods? The Agile methods can be used when − Application is time-critical. The scope is limited and less formal (scaling agile methods to larger projects is underway, with certain extensions to some of the agile methods). Organization employs disciplined methods. Print Page Previous Next Advertisements ”;
SDLC – Rapid Application Development Model ”; Previous Next Rapid Application Development (RAD) model has the following phases − Requirements Planning phase − In the requirements planning phase, aworkshop needs to be conducted to discuss business problems in a structured manner. User Description phase − In the User Description phase, automated tools are used to capture information from users. Construction phase − In the Construction phase, productivity tools, such as code generators, screen generators, etc. are used inside a time-box, with a “Do until Done” approach. Cut Over phase − In the Cut over phase, installation of the system, user acceptance testing and user training are performed. Rapid Application Development Model – Strengths The advantages or strengths of the Rapid Application Development model are as follows − Reduced cycle time and improved productivity with fewer team members would mean lower costs. Customer’s involvement throughout the complete cycle minimizes the risk of not achieving customer satisfaction and business value. Focus moves to the code in a what-you-see-is-what-you-get mode (WYSIWYG). This brings clarity on what is being built is the right thing. Uses modelling concepts to capture information about business, data, and processes. Rapid Application Development Model – Weaknesses The disadvantages or strengths of Rapid Application Development model are as follows − Accelerated development process must give quick responses to the user. Risk of never achieving closure. Hard to use with legacy systems. Developers and customers must be committed to rapid-fire activities in an abbreviated time frame. When to Use Rapid Application Development Model? Rapid Application Development model can be used when − User can be involved throughout the life cycle. Project can be time-boxed. Functionality can be delivered in increments. Though the strengths of Rapid Application Development model are appreciated, it is sparingly used in the industry. Print Page Previous Next Advertisements ”;