Software House: Definição, Tipos e Características