Adaptive Software Development: A Collaborative Approach to Managing Complex Systems