Afinal, o que é Engenharia de Software?

A Engenharia de Software é uma área da computação voltada à especificação, desenvolvimento e manutenção de sistemas de software, em relação a todos os aspectos da produção de software. É ela que irá dar os caminhos necessários para o engenheiro de sistemas trilhar, seguindo especificações vindas do cliente, e também as normas e bons costumes que a mesma emprega como modelos de sistemas.

Os fundamentos da Engenharia de Software envolvem o uso de modelos abstratos e precisos que permitem ao engenheiro especificar, projetar, implementar e manter o sistema de software, avaliando e dando garantia de sua qualidade.

Em resumo, a Engenharia de Software é uma matéria que serve de base para o começo da criação de um sistema, sendo este qualquer que seja, para qualquer tipo de cliente. Mais a frente veremos os exemplos de modelos de software e como cada um deles ajuda na iniciação de um projeto de software.

Processo de Software e seus Modelos

Um processo de software é, basicamente, um conjunto de atividades cuja meta é o desenvolvimento ou evolução de software, ou seja, uma sequência coerente de práticas que objetiva o desenvolvimento ou evolução de sistemas de software. As atividades genéricas que devem ser seguidas em todos os processos inicias de “fabricação” de um software são:

  • Especificação: o que o sistema deve fazer e suas restrições de desenvolvimento.
  • Desenvolvimento: produção do sistema de software.
  • Validação: verificação de que o software é o que o cliente deseja.
  • Evolução: mudança do software em resposta às demandas de mudança.

Já os modelos de processo de desenvolvimento de software, que são vistos como representações ou abstrações dos objetos e atividades envolvidas no processo de software, possuem os respectivos tipos:

  • Sequencial ou Cascata: é o modelo que gerencia as fases de produção do software distintamente separadas (especificação dos requisitos, levantamento do projeto e desenvolvimento do sistema).
  • Evolucional ou Prototipação: é o modelo específico que trabalha com a especificação de requisitos, levantamento do projeto e desenvolvimento do sistema baseado em protótipos do sistema.
  • Espiral: modelo que é representado como uma espiral, com as fases de desenvolvimento do software sendo independentes uma das outras, sem ter uma sequência correta de etapas a serem seguidas.

Exemplo de modelo de processo de software utilizando o modelo Espiral:

 Processo de Engenharia de Requisitos

Figura 1: Processo de Engenharia de Requisitos

Resumidamente, o processo de engenharia de requisitos é um processo que engloba todas as atividades que contribuem para a produção de um documento de requisitos e sua manutenção ao longo do tempo. Este processo de engenharia de requisitos é composto por quatro atividades de alto nível e essenciais em um processo de produção de software, são elas:

  • Estudo de Viabilidade - processo no qual o engenheiro de software estuda se é viável para a empresa ou para seu objetivo próprio a produção do sistema proposto pelo cliente.
  • Elicitação e Análise dos Requisitos - é a parte em que o engenheiro de software levanta os requisitos do sistema de acordo com a solicitação do cliente. Nesta etapa podem ser usadas várias formas de levantamentos de requisitos, como entrevistas abertas ou fechadas, questionários (caso seja um grupo de clientes requisitando o software), etc. Em seguida é feita a análise desses requisitos levantados anteriormente, para poder começar a se ter uma ideia de como o sistema será, o que irá fazer, seu principal objetivo e suas restrições.
  • Especificação de Requisitos - nesta fase é que se dá a produção propriamente dita da documentação de especificação dos requisitos. Em todos os tipos de especificações, há 2 tipos de requisitos a se considerar: os requisitos funcionais e os requisitos não funcionais. Os requisitos funcionais descrevem a funcionalidade que o sistema deverá disponibilizar aos usuário, de uma forma completa e consistente. Os requisitos não funcionais referem-se aos aspectos não funcionais do sistema, como restrições na qual o sistema deve operar ou propriedades emergentes do sistema.
  • Validação dos Requisitos - fase onde os requisitos levantados inicialmente são validados junto ao cliente, isto é, são apresentados ao cliente em forma de protótipo de telas do sistema feitas em papel, também pode-se utilizar diagramas de caso de uso para melhor compreensão do que o sistema irá fazer e apresenta-lo junto ao cliente. Etapa onde o cliente determina se aquilo que o engenheiro pensou do sistema é o que o cliente estava desejando.

Podemos concluir com este breve artigo que a Engenharia de Software é essencial e praticamente obrigatória na construção de um sistema de software, pois ela guia o engenheiro desde as primeiras entrevistas feitas com o cliente até a entrega do sistema e a manutenção do mesmo. Ainda existem vários outros assuntos que existem dentro deste tópico da Engenharia de Software, mais eu quis trazer neste artigo o básico da Engenharia, e mostrar que ela é parte essencial quando se vai começar um projeto de software.

Fontes: