Software metrics provide quantitative measures to gain insight into software processes and projects. They are used to characterize, evaluate, predict, and improve software. There are challenges to defining effective metrics. Measurement principles include formulating appropriate metrics, collecting data, analyzing results, and providing feedback. Common software quality attributes defined by McCall and ISO standards include functionality, reliability, usability, efficiency, maintainability, and portability. Goal-oriented measurement identifies metrics to answer questions and achieve goals related to software processes and products.