Quando falamos de software, temos em mente uma grande variedades deles que utilizamos no nosso cotidiano como aplicativos para smartphones e tablets, e até mesmo sistemas corporativos de grande porte. O fato é que eles se tornaram indispensáveis nas áreas de engenharia, saúde, gestão e em muitas outras. Softwares são capazes de gerar o produto mais valioso, a informação, pois ela permite impulsionar o surgimento de novas tecnologias, auxiliar nas tomadas de decisão e automatização de tarefas de uma organização.
Por consequência, o maior desafio da área de desenvolvimento de software, se tornou desenvolvê-los de forma rápida, com qualidade e baixo custo. A Engenharia de Software é uma área de atuação e de estudo que visa, através de conjuntos de processos, técnicas e métodos, atingir esses objetivos.
Além dos citados acima, o maior desafio do processo de desenvolvimento de software é a mudança. Desenvolver novas funcionalidades ou alterar funcionalidades já existentes em qualquer software podem ser feitos devido a uma ou mais razões abaixo:
-
Novos ambientes de execução, como em rede
-
Novas tecnologias computacionais
-
Novas necessidades a nível de negócio
-
Necessidade de operar com outros bancos de dados ou em outros sistemas operacionais
Adições e alterações em funcionalidades fazem com que o software se torne mais sucetível a falhas e por consequência, menos confiável. Como softwares passaram a serem indispensáveis para as organizações, é necessário desenvolver projetos de software de qualidade para minimizar os impactos negativos para as organizações. Para isso, existem dois modelos de gestão de projetos de software: Modelo em Cascata e Modelo Ágil. Em ambos, as etapas de desenvolvimento são semelhantes, porém aplicadas de forma diferente.
A primeira etapa de desenvolvimento é o Levantamento e Análise de Requisitos, onde é definido o que o software deve fazer ou resolver, o quanto será gasto para desenvolvê-lo e quanto tempo será necessário para desenvolvê-lo.
Após isso, na etapa de Definição do Projeto, é escolhido as tecnologias de software e hardware que serão utilizadas no desenvolvimento do projeto, como linguagens de programação, bancos de dados, frameworks, design visual, processador, memória, e outros.
Após isso, nas etapas de Codificação e de Testes, o software é desenvolvido, utilizando as tecnologias escolhidas, e testado, visando encontrar falhas de desenvolvimento (bugs).
Por fim, na etapa de Implantação, o software é implantado no hardware escolhido, caso existente, e entregue para o cliente.
Após isso, caso o software precise de alterações ou de novas funcionalidades, é feito um novo projeto com as mesmas etapas, porém com novos requisitos.