The discipline of specifying, designing, building, testing, releasing and maintaining software systems.