Unifying the Software Development Life-cycle