An empirical study of selecting software development life cycle models