São programas que auxiliam no ciclo de desenvolvimento de um sistema, incluindo as fases de análise, testes e desenvolvimento e apoiam os processos de software. Oferecem um conjunto de serviços para apoiar uma ou mais atividades do processo de desenvolvimento de software. Podem ser divididas em tipos que: apoiam da análise até a geração do código; automatizam uma fase do desenvolvimento ou auxiliam numa etapa do projeto, como modelagem de dados e testes; e seguem uma metodologia específica como os métodos ágeis. Esta definição se refere à ferramenta