A spiral model of software development and enhancement