Engenharia de Software e Ciência da Computação devem ser áreas distintas? [fechadas]

19

Por décadas, o grau aceito para se tornar um desenvolvedor de software foi "Compter Science".
Já temos algumas perguntas sobre se esse diploma realmente prepara os alunos para o desenvolvimento de software.

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

  • Ciência da Computação , que começa com alguns cursos de programação introdutória no primeiro ano e depois se concentra na ciência da computação teórica, algoritmos e um pouco de coisas do sistema operacional. A maioria das aulas envolve vários projetos menores e trabalhos de casa, feitos sozinhos ou em pares.
  • A Engenharia de Software , que começa com os mesmos cursos de programação introdutória, faz algumas aulas teóricas e depois pratica 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 / incorporado, design de subsistema etc.)

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

Fishtoaster
fonte
1
Na verdade não. A maneira de aprender essas habilidades não é ensinar um curso sobre eles, mas para dar-lhes o trabalho real do projeto
Casebash
O que faz você pensar que eles não são? O RIT oferece ambos como graus.
219 Andy
Andy: Eu sei, eu fui para o RIT e me formei em Direito. Eu estava perguntando se eles deveriam ser separados, não se atualmente são. :)
Fishtoaster

Respostas:

28

Sim, deveriam ser.

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

Você precisa dos dois para produzir um software novo e melhor. Uma boa educação em ciência da computação treina as pessoas a produzir novos e melhores algoritmos, estruturas de dados, linguagens e paradigmas de programação, compiladores e várias outras coisas que podem ser usadas para aprimorar os sistemas de software. Por outro lado, uma boa educação em engenharia de software o treina para levar essas ferramentas e conhecimentos obtidos através de um estudo científico da computação, juntamente com o conhecimento do ciclo de vida de desenvolvimento de software e modelos de processos para realmente construir o sistema que um cliente deseja e precisa .

Thomas Owens
fonte
2
A analogia da física / engenharia é uma que eu uso muito. Não contratamos físicos para projetar e construir pontes, por que contratamos cientistas da computação para projetar e construir programas?
HerbN
1
Como os programas de ciência da computação ensinar um pouco mais sobre como construir programas do que o seu programa de física típico;)
Wayne Werner
2
@WayneWerner: Não, eles realmente, realmente não.
precisa saber é
3

É sabido que um currículo típico de CS não prepara um para a indústria, nem tanto quanto deseja que você esteja preparado de qualquer maneira. Então, sim, há uma necessidade de um especialista em engenharia de software, e os dois devem ser distintos, embora definitivamente na mesma faculdade.

EpsilonVector
fonte
1

Eles devem ser disciplinas diferentes, mas não no nível de graduação. Eu simplesmente não vejo como eles podem reduzir tudo o que é necessário para a Engenharia de Software em um curso de graduação. Da mesma forma que não vemos os cursos de graduação em Engenharia de Sistemas (onde as pessoas obtêm um MS depois de se formar em EE, CE, Eng. Mecânica ou CS), é o caso da Engenharia de Software.

É uma abordagem multidisciplinar baseada fortemente em 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 seguirem o curso avançado e / ou a experiência de trabalho no campo, desde que o posterior seja feito em ambientes condutores da engenharia de software.

A maioria das pessoas tem títulos de engenharia de software, mas realmente não avançou além da codificação. Isso não é um problema 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 trabalhos e organizações é atrozmente executada e não conduz a engenharia de software adequada.

Além disso, sem algum trabalho ou maturidade escolar, o material de engenharia de software simplesmente sobrevoará a cabeça da maioria dos estudantes de graduação.

luis.espinal
fonte
Se você quiser saber como eles "reprimem tudo o que é necessário para a Engenharia de Software em um curso de graduação", dê uma olhada no primeiro programa de graduação nos EUA: se.rit.edu
Thomas Owens
A menos que eu esteja perdendo alguma coisa, eles não a apertam. Eles simplesmente criaram um currículo estendido de 192 créditos. Isso está além do currículo típico de 60 a 80 créditos de graduação que você encontra no CS e no MIS - há muito mais cursos em andamento aqui, o suficiente para torná-lo comparável a fazer cursos duplos (ou obter uma graduação e um diploma). Eu gosto do fluxo e da integração de outras disciplinas de engenharia no último ano. É um currículo perfeito que se pode seguir. Mas isso simplesmente prova meu argumento de que você não pode obter SE apenas com a carga horária típica de graduação.
Luis.espinal
E uma ressalva que eu veria aqui é que você gasta tanto esforço e simplesmente obtém um diploma não degradado (em vez de concluir um curso similar para obter diploma de graduação ou pós-graduação). Infelizmente, a pele de carneiro é importante. Talvez essa preocupação tenha importância menos uma vez que esses graus SE se tornem mais difundidos.
Luis.espinal
É um sistema trimestral, o que significa que é exatamente a mesma carga de trabalho que um diploma de CS (ou qualquer outro diploma de graduação) da mesma universidade. No final, são 4 anos de aulas (10 semanas de aulas, 1 semana de exames por trimestre, 3 trimestres por ano), 1 ano de cooperação.
Thomas Owens
Na verdade não. Não é equivalente quando se trata de carga de trabalho. Atualmente, estou buscando um segundo mestrado (CE + EE) na WPI, que segue um formato semelhante (3 trimestres, 10 semanas de aulas + 1 semana para os exames). Por experiência, programas como esses são mais rigorosos e cobrem mais do que o típico curso de graduação de 60 a 80 anos. Não é uma crítica ao programa, veja bem . Eu acho que é necessário realmente cobrir a engenharia de software no nível de graduação. E uma abordagem semelhante também deve ser necessário para CS (desde CS típica já não cobre o suficiente hands-on, estágio multidisciplinar hoje em dia.)
luis.espinal