Software Engineering vs. Engenharia de Software

Olá Pessoal, vocês sabem porque aqui no brasil quando falamos sobre “Engenharia de Software” englobamos vários assuntos de construção de software, modelos de desenvolvimento, qualidade, etc… e para o estudo dessa matéria o livro do pressman ou do sommerville são como “biblias” do assunto, mas quando pesquisamos “Software Engineering” no estados unidos/internacional o foco é basicamente programação (como se fosse um sinonimo) ignorando as outras ‘materias’ e principalmente os livros do pressman e sommerville?

Tenho enorme dificuldade de achar materiais e aulas fora do brasil sobre “Engenharia de Software” porque tratam como apenas programação, sendo assim tenho procurar as matérias (modelos de desenvolvimento, qualidade, etc…) separadas, o que é bem frustante , porque eu pelo menos não achei algo que ‘engloba’ tudo isso.

Sinceramente não entendi as suas dificuldades , entendo que lá fora como aqui , a engenharia de software , assim como em outras engenharias , abordam um conjunto de disciplinas que irão compor a engenharia em questão , em relação a Pressman e Sommerville ambos são pesquisadores e tidos como referência no que tange a engenharia de software , mas não são os únicos , há outros autores com certeza , é que aqui no Brasil se eu não me engano os livros deles são revisados por doutores das grandes universidades brasileiras e fazem parte , além da referência dos ensinamentos das disciplinas pelas faculdades do nosso país, mas estas disciplinas aqui e lá fora são iguais , conforme lista abaixo:

[list]Software requirements[/list]
[list]Software design[/list]
[list]Software construction[/list]
[list]Software testing[/list]
[list]Software maintenance[/list]
[list]Software configuration management[/list]
[list]Software engineering management[/list]
[list]Software engineering process[/list]
[list]Software engineering tools and methods[/list]
[list]Software quality[/list]

Abs.

Pois agora que você falou eu me dei conta desse fato…

Aqui o termo Engenharia de Software engloba muito mais metodologias, padrões e procedimentos. Tem uma leve tendência para a gestão.

Em textos estrangeiros realmente o software engineer é sempre citado no contexto de desenvolvimento, programação de fato. É comum ouvir que o produto yyyy foi desenvolvido por uma equipe de engineers, ou que o fulano criou tal solução quando era engineer naquela empresa, etc.

Olá Aleksandro e gomesrod, primeiro de tudo, existe uma lista de ‘matérias’ que englobam a Engenharia de Software, que o Aleksandro listou, ou seja é um ‘padrão’:

SWEBOK: http://pt.wikipedia.org/wiki/Software_engineering_body_of_knowledge

A minha dúvida é a seguinte, porque nos eua/internacional eles não “entendem” que engenharia de software são esses itens e se focam basicamente em programação? como se engenharia de software = boa programação

A dúvida secundária é como eu acho materiais, aulas, etc… fora do brasil de um assunto que engloba os items do SWEBOK, porque aulas que inclusive como faculdades conceituadas como MIT e Havard diz que da aula de engenharia de software, mas nada fala de modelos de desenvolvimento… e se concentram só em programação. Alias, nem acho q um engenheiro de software precisa saber programar, mas uma vaga de emprego de “software engineering” fora do brasil parece ser vaga de programador.

Se vocês verem nesse link, aonde um rapaz pede sugestões de livros de Software Engineering:
http://stackoverflow.com/questions/131571/recommended-books-for-software-engineering

… a maioria das pessoas citam livros de programação!! só tem um post citando os livros de pressman e sommerville e passa desapercebido, btw, esses livros na amazon recebem uma nota horrivel, de 2 de 5 estrelas, sendo que no brasil são endeusados.

Resumindo de novo a minha duvida é, pq eles tratam Software Engineering assim, e como eu pesquiso materiais dos items do SWEBOK fora do brasil? tenho que procurar tudo separado? isso que frusta, pois não há aulas (ou pelo menos nao encontrei) sobre os itens do SWEBOK

tumeni, estava discutindo isso com a minha professora de Engenharia de Software esses dias. O que vejo lá fora é que, graças às metodologias ágeis bem difundidas, os desenvolvedores fazem cada vez mais parte do ciclo de vida do software. O desenvolvedor não é mais apenas um programador, ele faz análise, modelagem, codifica, testa, implementa… ele é responsável pelo ciclo de vida do software, ou seja, um engenheiro de software.

Outra tendência lá é de valorizar o bom código. Não há como menosprezar a fase de desenvolvimento, o código é o corpo do software! Por isso a insistência em Design Patterns, Arquitetura de Software, Refactoring. Se você olhar nos anúncios de vagas americanas, verá sempre que o maior requisito é sempre o pleno domínio dos fundamentos da Ciência da Computação, e não o mar de frameworks que nós tanto valorizamos aqui.

É isso mesmo Vina, só complementando também… e sendo como um feedback para quem se interessou no tópico, eu fiz essa mesma pergunta em foruns gringos também, e vou resumir as respostas deles:

1. Existem SIM uma (enorme) diferença do que é um profissional Software Engineering dos EUA , para o que é um Engenheiro de Software aqui e em outros lugares. A mentalidade do Software Engineering é usada sim como um sinônimo de desenvolvedor. Ai temos 2 alternativas:

(A) O desenvolvedor tem que saber as matérias de Engenharia de Software (Requisitos, Gerencia, Projeto, etc…)
(B) As matérias de Engenharia de Software são desnecessárias

Bom, a MINHA conclusão com as respostas que obtive é que é um Software Engineering é exatamente um meio termo entre as 2 alternativas, isso vai ficar mais explicito no item abaixo.

2. Para quem ainda não conhece o seguinte manifesto, super importante ler: http://agilemanifesto.org/iso/ptbr/ e http://agilemanifesto.org/iso/ptbr/. Como o Vina falou, já é bem difundido metodologias ágeis para eles, sendo que as 600 páginas dos livros de Pressman e Sommerville que aprendemos como Engenharia de Software aqui tem sim seu valor, mas é desnecessário. Assim como em um desenvolvimento de software real, é desnecessário muito blablablás e documentação, o importante é o código. O foco do software engineering não é tão gerencial como é o engenheiro de software aqui.

3. Agora vem a POLÊMICA: Antes de começar a ‘polemica’ , quero deixar explicito que não é polemico porque um grupo de pessoas são radicais ao que já é difundido, e sim porque é difundido por muitas pessoas fora mas é contrario o que se aprende no Brasil, polemica para nós, vamos lá. Muita gente, inclusive professores e autores americanos dizem que o Engenheiro de Software é algo desnecessário na construção de um software. Programmer/Developer é equivalente (sinonimo) de Software Engineering, ou sendo um pouco mais direto, Software Engineering não existe! Nos EUA é só um nome ‘bonitinho’ para um bom programador, ou um cargo alto de programador.

Uma coisa que verdade é que no Brasil há um enorme prestigio por titulos, seja um grau na faculdade ou uma posição hierarquica em uma empresa, e damos respeito e crédito inicial por eles, creio que isso é chamado de hierarquia vertical, e fora daqui, principalmente em paises europeus, cito como experiencia a Holanda, a hierarquia é horizontal: não importa NENHUM pouco se você é pHd ou um garçon, o importante é o que você sabe. Simples assim.

Quem nunca ouviu a frase “Você sabe com quem está falando?” ? Pois é, no Brasil é assim, infelizmente, um titulo vale mais do que a pessoa. Desse modo fica mais fácil entender o que é Engenharia de Software fora daqui. Pra mim foi sinceramente um baque, de que como se especializar em Engenharia de Software aqui é inutíl ,não que não tenha utilidade alguma, mas visto o tempo de dedicação a esse estudo, sendo que poderia usa-lo para coisas mais importantes. O que adianta perder um ano ou mais me especializando nisso, para ficar visto como um “bom programador”? porque eu creio que quem dita esse ritimo é os EUA.

Eu concordo com isso? NÃO, e fico feliz que alguns próprios americanos não concordam e discutem exatamente isso, mas são minorias e formados em Software Engineering HAHA :D. Eu acho que criar manutenibilidade e levantar requisitos antes de codar, e sempre verificar com a equipe o que esta sendo feito e COMO é essencial pra mim, mas pode ser que eu que sou meio burro e precise fazer isso, e eles são espertos e fazem isso sem nenhuma dificuldade e conseguem fazer software com a mesma, ou inclusive com mais qualidade sem o nosso conhecimento de engenharia de software.

Será que entendi bem?

tumeni

Este assunto é repleto de “teorias” , vejo que o EUA desenvolve software desde dos anos 40 e com o passar dos tempos esta tecnologia foi evoluindo , os programas melhorando, aperfeiçoamento continuo por parte deles, tecnologia de ponta no final dos anos 70 , devido principalmente ao desejo de dominar militarmente o mundo e tal além é claro de o EUA assim como a URSS antiga tinha uma visão do tipo se eu fizer primeiro serei detentor da tecnologia e depois eu vendo o meu serviço para outros países … e isto hoje em dia é muito evidente … (o que o EUA fez e faz é semelhante a revolução industrial no inicio do século passado).
Nós aqui do Brasil começamos a programar e entender um pouco de como isto funciona no final dos anos 80(tinha coisa antes disto mas era muito pequeno) e toda a literatura que temos na sua grande maioria surge de onde ? ou seja, muitos autores criam suas modas tecnológicas , vendem isto como se fosse “bala de prata” , ficam milionários fazendo palestras, evangelizando o que eles defendem e por ai vai …
O profissional daqui do Brasil é muito bem visto lá fora , no sentido de sermos polifórmicos (trazendo o termo para o java), ou seja, somos baseado em muitas formas e neste contexto você deve ser preparar de acordo com o que você precisa ou sonha em ser … se no seu caso você pensa em ir trabalhar no EUA então com certeza você terá que se enquadrar nos skills que eles pedem, se for na Europa com certeza serão outros skills, se for na Ásia outro e assim sucessivamente … portanto no meu caso penso assim: sou formado em Sistemas de informação , depois me especializei em engenharia de software … consigo ser um analista, programador, um gestor , um gp , um líder técnico, um programador , desta forma cabe a mim identificar quais destas funções me identifico e claro qual desta me trás satisfação pessoal (onde sou mais feliz) , descoberto isto , basta você ir se aperfeiçoando , aperfeiçoando , aperfeiçoando, tenho certeza que se você descobrir realmente o que te faz feliz , você será um baita profissional, exatamente porque você faz o que você gosta , acho que é isto … esta é minha opinião pessoal sobre este assunto … abs a todos e bom fds !!!