This document provides an overview of how human-computer interaction (HCI) affects the software development process. It discusses how usability engineering promotes interactive system design and the software life cycle. The software life cycle involves requirements specification, design, implementation, testing, and maintenance. Iterative design and prototyping are important to overcome the limitations of traditional software development models. Usability metrics and standards help specify and test usability requirements. While iterative design has benefits, initial design decisions and a lack of understanding problems can limit its effectiveness.