ti-enxame.com

A Engenharia de Software e a Ciência da Computação deveriam ser especializações separadas?

Por décadas, o diploma aceito para se tornar um desenvolvedor de software era "Ciência Compter".
Já tivemos algumasperguntas se esse diploma realmente prepara os alunos para desenvolver software.

Algumas escolas, nos últimos 8 anos ou mais, começaram a oferecer vários cursos distintos em programação. Usando o currículo da minha escola:

  • Ciência da Computação , que começa com alguns cursos de introdução à programação no primeiro ano e, em seguida, se concentra em ciência da computação teórica, algoritmos e um pouco de sistema operacional . A maioria das aulas envolve vários projetos menores e trabalhos de casa, feitos sozinho ou em pares.
  • Engenharia de Software , que começa com os mesmos cursos de introdução à programação, faz algumas aulas de teoria e depois vai para as práticas de desenvolvimento de software (testes, metodologias de processo , métricas de software, coleta de requisitos) e design de software (design de sistema distribuído, design de sistema de informação, design em tempo real/integrado, design de subsistema, etc)

Escolas diferentes fazem isso de maneira diferente, então o exemplo acima é apenas um exemplo do mundo real com o qual estou familiarizado. O que eu pergunto é: há necessidade de especializações distintas em programação?

19
Fishtoaster

Sim, eles deveriam ser.

A relação entre ciência da computação e engenharia de software é a mesma que relação entre física e engenharia mecânica. Um fornece a base teórica, enquanto o outro pega essas teorias, junto com bons princípios de engenharia, e os aplica ao projeto e implementação de software.

Você precisa de ambos para produzir um software novo e melhor. Uma boa educação em ciência da computação treina pessoas para produzir novos e melhores algoritmos, estruturas de dados, linguagens de programação e paradigmas, compiladores e uma série de outras coisas que podem ser usadas para aprimorar sistemas de software. Uma boa educação em engenharia de software, por outro lado, treina você a usar essas ferramentas e conhecimentos obtidos por meio de um estudo científico de computação, junto com um conhecimento do ciclo de vida de desenvolvimento de software e modelos de processo para realmente construir o sistema que um cliente deseja e precisa .

28
Thomas Owens

É bem sabido que um currículo típico de ciência da computação não o prepara para a indústria, não tanto quanto deseja que você esteja preparado de qualquer maneira. Portanto, sim, é necessário um curso de engenharia de software, e os dois devem ser distintos, embora definitivamente estejam no mesmo corpo docente.

3
EpsilonVector

Devem ser disciplinas diferentes, mas não no nível de graduação. Simplesmente não vejo como eles podem restringir tudo o que é necessário para a Engenharia de Software em um curso de graduação. Da mesma forma que não vemos cursos de graduação em Engenharia de Sistemas (onde as pessoas obtêm um MS depois de se formarem em EE, CE, Engenharia Mecânica ou CS), é um caso semelhante com Engenharia de Software.

É uma abordagem multidisciplinar baseada fortemente na ciência da computação e/ou MIS. As pessoas realmente se tornam engenheiros de software na prática (e não apenas no título) depois de buscar um curso avançado e/ou experiência de trabalho na área, desde que o último seja feito em ambientes condutores de engenharia de software.

A maioria das pessoas tem títulos de engenharia de software, mas não avançou realmente além da codificação. Isso não é uma doença para eles, mas uma observação - eles não foram suficientemente expostos ao tipo de trabalho que os ajudaria a acumular experiência de trabalho além da codificação. Pior ainda, a maioria dos empregos e organizações são administrados de forma atroz e não conduzem à engenharia de software adequada.

Além disso, sem algum trabalho ou maturidade acadêmica, o material de engenharia de software simplesmente passará despercebido pela maioria dos alunos de graduação.

1
luis.espinal