Qual é a diferença entre a Engenharia de Software e a Ciência da Computação?
A Engenharia de Software tem como objectivo implementar soluções para os problemas de gestão e processamento da informação. É uma perspectiva prática de resolução dos problemas que as pessoas sente, e fazê-lo de forma eficiente, que pode ser repetida e comprovada a sua eficácia para a resolução de problemas concretos.
A ciência da computação é uma disciplina com rigor matemático que tem como enfoque a máquina e o algoritmo e não as pessoas, como acontece na Engenharia de Software. As demonstrações matemáticas da ciência da computação continuarão a ser válidas daqui a 100 anos, enquanto que as boas práticas da Engenharia de Software vão seguramente evoluir muito nas próximas décadas e nunca serão uma ciência exacta.
Assim, de acordo com este artigo de Chuck Connel, podemos dizer que as áreas no âmbito da Engenharia do Software são:
- Análise e Especificação de Requisitos
- Usabilidade
- Capacidade de Manutenção do Software
- Capacidade de Alteração do Software
- Segurança
- Portabilidade
- Estimativas para desenvolvimento e manutenção
- Teste e depuração de erros
- Padrões
- Escalabilidade
- Programação em Equipa
- Estilos Arquitecturais
Na Engenharia de Software as preocupações são:
- O que é que este software deve fazer? (requisitos, usabilidade, segurança)
- Como é que o software deve ser “por dentro” de forma a que seja fácil de ser corrigido ou modificado? (arquitectura, design, escalabilidade, portabilidade, extensibilidade)
- Quando tempo demorará a ser criado? (Estimativas)
- Como deve ser criado? (programação, teste, medidas e configuração)
- Como devemos organizar as equipas para que funcione eficientemente? (gestão, processo, documentação)
Os temas que ficam no âmbito da Ciência da Computação são:
- Computabilidade (é possível fazer isto com um computador?)
- Teoria das Filas de Espera
- Algoritmos
- Especificação Formal de Programas
- Sintaxe e Semântica das Linguagens
- Criptografia
- Provas da correcção de algoritmos
- Programação automática
- Análise de Redes
- Aprendizagem por Máquinas
- Compiladores
- Medir a Complexidade de Códigos
- Paginação e Agendamento

Comentários Recentes