Focuses on designing, building, testing, and maintaining large-scale software systems using engineering principles