Before you design a project, you might find it useful to review common development pitfalls and software engineering lifecycle models.