which methodology provides a framework for breaking down the development of software into four gates?