1.5 O estudo da Engenharia de Software
“Engenharia de Software é uma disciplina de engenharia cujo foco está em todos os aspectos da produção de software, desde os estágios iniciais da especificação do sistema até sua manutenção, quando o sistema já está sendo usado.” (SOMMERVILLE, 2011)
De acordo com Sommerville (2011), a Engenharia de Software se relaciona tanto com ciência da computação quanto com engenharia de sistemas.
A Ciência da Computaçã, concentra-se nos fundamentos teóricos da computação, como algoritmos e estruturas de dados. A Engenharia de Software aplica esses princípios para projetar, construir e manter sistemas de software de forma estruturada e confiável. A Engenharia de Sistemas, por outro lado, adota uma perspectiva mais ampla, focando na integração de software, hardware e processos para entregar sistemas completos e complexos.
Sommerville (2011) afirma que existem fundamentos de Engenharia de Software que se aplicam a todos os tipos de sistemas de software:
- Os softwares devem ser desenvolvidos com planejamento, compreensão clara do que deverá ser desenvolvido e estimativa de tempo;
- Confiança e desempenho são importantes para todos os tipos de sistema, um software deve executar suas funções de forma eficiente e não deve desperdiçar recursos;
- É importante entender e gerenciar a especificação e os requisitos de software, para entregar aos clientes e usuários um sistema que atenda suas expectativas e que possa ser entregue dentro do orçamento e do cronograma;
- Você deve fazer o melhor uso possível dos recursos existentes, incluindo reusar o software já desenvolvido em vez de escrever um novo, quando for apropriado.
O SWEBOK (Guide to the Software Engineering Body of Knowledge) é um guia que foi criado pela IEEE Computer Society e organiza a Engenharia de Software em 15 áreas de conhecimento:
- Engenharia de requisitos (levantamento de requisitos, análise, especificação, validação)
- Projeto de Software (arquitetura, design de componentes, padrões)
- Construção de Software (codificação, boas práticas, integração)
- Testes de Software (testes unitários, integração, validação)
- Manutenção de Software (correções, melhorias, evolução)
- Gerência de configuração (planejamento, monitoramento, controle)
- Processos de Software (modelos de processos, definição de workflows)
- Modelos de Software (abstrações, modelagem, UML)
- Qualidade de Software (métricas, garantia de qualidade, melhoria contínua)
- Prática Profissional (ética, trabalho em equipe, comuicação)
- Aspectos Econômicos (custos, estimativas, viabilidade)
- Fundamentos da Computação (algoritmos, estrutura de dados)
- Fundamentos Matemáticos (lógica, estatística)
- Fundamentos de Engenharia (princípios gerais de engenharia)
Bibliografia:
Marco Tulio Valente. Engenharia de Software Moderna: Princípios e Práticas para Desenvolvimento de Software com Produtividade, Editora: Independente, 2020.
SOMMERVILLE, Ian. Engenharia de software. 9. ed. São Paulo: Pearson Prentice Hall, 2011.