que é Engenharia de Software? Definição, noções básicas, características

O que é Engenharia de Software?

A engenharia de software é definida como um processo de análise dos requisitos do usuário e, em seguida, projetar, construir e testar o aplicativo de software que atenderá a esses requisitos.

Vejamos as várias definições de engenharia de software:

  • O IEEE, em seu padrão 610.12-1990, define a engenharia de software como a aplicação de uma abordagem sistemática, disciplinada, que é computável para o desenvolvimento, operação e manutenção de software.
  • Fritz Bauer o definiu como 'o estabelecimento e uso de princípios de engenharia padrão. Ajuda a obter, de forma econômica, um software confiável e que funcione de maneira eficiente nas máquinas reais '.
  • Boehm define engenharia de software, que envolve 'a aplicação prática do conhecimento científico ao design criativo e à construção de programas de computador. Também inclui a documentação associada necessária para desenvolver, operar e mantê-los. '

Neste tutorial de engenharia de software, você aprenderá:

Por que Engenharia de Software? Crise de software e sua solução:

Qual foi a crise do software?

  • Foi no final dos anos 1960 quando muitos projetos de software falharam.
  • Muitos softwares ultrapassaram o orçamento. A saída era um software não confiável e de manutenção cara.
  • Softwares maiores eram difíceis e muito caros de manter.
  • Muito software não é capaz de satisfazer os requisitos crescentes do cliente.
  • A complexidade dos projetos de software aumentava sempre que sua capacidade de hardware aumentava.
  • A demanda por novos softwares aumentou mais rapidamente em comparação com a capacidade de gerar novos softwares.

Todos os problemas acima levam à 'crise de software'.

A solução

A solução para o problema era transformar o esforço desorganizado de codificação em uma disciplina de engenharia de software. Esses modelos de engenharia ajudaram as empresas a otimizar as operações e fornecer software que atendia aos requisitos do cliente.

  • O final da década de 1970 viu o uso generalizado dos princípios da engenharia de software.
  • Na década de 1980, ocorreu a automação do processo de engenharia de software e o crescimento da (CASE) Computer-Aided Software Engineering.
  • A década de 1990 viu uma maior ênfase nos aspectos de 'gerenciamento' de padrões de qualidade e processos de projetos, assim como ISO 9001

Por que a engenharia de software é popular?

Aqui estão as razões importantes por trás da popularidade da engenharia de software:

  • Software grande - Na nossa vida real, é muito mais confortável construir uma parede do que uma casa ou edifício. Da mesma maneira, conforme o tamanho do software se torna grande, a engenharia de software ajuda você a construí-lo.
  • Escalabilidade- Se o processo de desenvolvimento de software foram baseados em conceitos científicos e de engenharia, é mais fácil recriar um novo software para dimensionar um existente.
  • Adaptabilidade : Sempre que o processo de software foi baseado em ciência e engenharia, é fácil recriar um novo software com a ajuda da engenharia de software.
  • Custo- A indústria de hardware mostrou suas habilidades e a grande fabricação reduziu o custo do computador e do hardware eletrônico.
  • Natureza Dinâmica - Sempre crescendo e adaptando a natureza do software. Depende do ambiente em que o usuário trabalha.
  • Gestão da Qualidade : Oferece melhor método de desenvolvimento de software para fornecer produtos de software de qualidade.

Relação da Engenharia de Software com Outras Disciplinas

Aqui, como a engenharia de software se relaciona com outras disciplinas:

  • Ciência da Computação: Dá a base científica para o software, já que a engenharia elétrica depende principalmente da física.
  • Ciência de Gestão: A engenharia de software é um trabalho que exige muita mão-de-obra e exige controle técnico e gerencial. Portanto, é amplamente utilizado na ciência da gestão.
  • Economia: Neste setor, a engenharia de software auxilia na estimativa de recursos e controle de custos. O sistema de computação deve ser desenvolvido e os dados devem ser mantidos regularmente dentro de um determinado orçamento.
  • Engenharia de Sistemas: A maioria dos softwares é um componente de um sistema muito maior. Por exemplo, o software em um sistema de monitoramento da indústria ou o software de voo em um avião. Métodos de engenharia de software devem ser aplicados ao estudo deste tipo de sistemas.

Desafios da Engenharia de Software

Aqui estão alguns desafios críticos enfrentados pelos engenheiros de software:

  • Em áreas críticas de segurança, como espaço, aviação, usinas nucleares, etc., o custo da falha de software pode ser enorme porque há vidas em risco.
  • Aumento da demanda do mercado por um tempo de resposta rápido.
  • Lidar com o aumento da complexidade da necessidade de software para novos aplicativos.
  • A diversidade de sistemas de software deve se comunicar uns com os outros.

Atributos para produtos de software

As características de qualquer produto de software incluem recursos que são exibidos pelo produto quando é instalado e colocado em uso.

Eles não são os serviços fornecidos pelo produto. Em vez disso, eles se relacionam com o comportamento dinâmico dos produtos e o uso que eles fazem.

Exemplos desses atributos são:

Efficiency, reliability, robustness, maintainability, etc. 

No entanto, a importância relativa dessas características varia de um sistema de software para outro.

Características do produto Descrição
Capacidade de ManutençãoO software deve evoluir para atender às novas demandas dos clientes.
ConfiabilidadeA confiabilidade inclui várias características. O software confiável nunca deve causar nenhum dano físico ou econômico no momento da falha do sistema.
EficiênciaO aplicativo de software deve usar excessivamente os recursos do sistema, como memória e ciclo do processador.
UsabilidadeO aplicativo de software deve ter interface do usuário e documentação específicas.

Otimizar o atributo acima é muito desafiador. Por exemplo, oferecer uma IU melhor pode reduzir a eficiência do sistema.

Características de um bom software

Qualquer software deve ser julgado pelo que oferece e quais são os métodos que o ajudam a usá-lo.

Todo software deve satisfazer os seguintes atributos:

  • Operacional
  • Transitório
  • Manutenção

Aqui estão algumas características importantes de um bom software desenvolvido por profissionais de software

Operacional

Esta característica permite-nos saber quão bem o software funciona nas operações que podem ser medidas em:

  • Despesas
  • Eficiência
  • Usabilidade
  • Confiabilidade
  • Exatidão
  • Funcionalidade
  • Segurança
  • Segurança

Transitório

Este é um aspecto essencial quando o software é movido de uma plataforma para outra:

  • Interoperabilidade
  • Reutilização
  • Portabilidade
  • Adaptabilidade

Manutenção

Este aspecto fala sobre o quão bem o software tem os recursos para se adaptar no ambiente em rápida mudança:

  • Flexibilidade
  • Capacidade de Manutenção
  • Modularidade
  • Escalabilidade

Resumo

  • Engenharia de software é um processo de análise dos requisitos do usuário e, em seguida, projetar, construir e testar o aplicativo de software que irá satisfazer esses requisitos
  • Razões importantes para usar a engenharia de software são: 1) Software grande, 2) Escalabilidade 3) Adaptabilidade 4) Custo e 5) Natureza dinâmica.
  • No final da década de 1960, muitos softwares ultrapassaram o orçamento. Portanto, oferece software não confiável e de manutenção cara.
  • O final da década de 1970 viu o uso generalizado dos princípios da engenharia de software.
  • Conceito de engenharia de software 1) Ciência da computação 2) Ciência da gestão 3) Engenharia de sistemas e 4) Economia
  • O aumento da demanda do mercado por um tempo de resposta rápido é o maior desafio da área de engenharia de software.
  • 1) Manutenção, 2) Confiabilidade, 3) Eficiência e, 4) Usabilidade são os atributos mais importantes dos produtos de software.
  • As três características mais importantes de um bom software são 1) Operacional 2) Transicional 3) Manutenção.