terça-feira, 2 de abril de 2013

Engenheiro de Software ou Arquiteto de Software?

Há alguns dias me perguntaram a diferença entre um Arquiteto de Software e um Engenheiro de Software.

Após uma definição do papel de cada um, para quem é do ramo, pode até não ser difícil entender, mas para quem não é, pode parecer que são apenas duas formas de descrever a mesma função.

À época pedi um tempo para pensar numa forma simples de explicar, e minha resposta veio através de uma analogia com um jogo bem conhecido, um quebra-cabeças, daqueles de encaixar peças para formar uma imagem.



Nessa analogia dizemos que o Engenheiro de Software é aquele que desenha a imagem a ser montada, o que será visto quando o jogo for concluído, enquanto o Arquiteto de Software é aquele que divide a imagem em peças pequenas e encaixáveis, que juntas formam a imagem desejada.

Um Engenheiro de Software tem como objetivo transformar um conjunto de processos de negócio em software; modelar o domínio do negócio de modo que um software possa ser produzido.

Já o Arquiteto de Software tem como objetivo organizar os artefatos modelados pelo Engenheiro de Software de modo a conseguir o melhor encaixe possível entre eles, dados os objetivos do negócio.

E ai? Será que consegui explicar? Ou complicar ainda mais? rs

6 comentários:

  1. Rafael muito boa a explicação.

    Então o Arquiteto de Software é o mesmo que o Analista de Software?

    ResponderExcluir
  2. Matusmts, apesar de hoje eu ocupar o cargo de Analista de Software, este termo não é algo bem definido pra mim. Aqui onde trabalho todo desenvolvedor é designado Analista de Software, independente do papel que exerça no time.

    ResponderExcluir
  3. Boa analogia meu caro!

    ResponderExcluir
  4. Excelente!
    Estou aqui na busca do que significa...
    Na verdade ainda quero fazer uma mescla com os papéis do Agile, o que complica um pouco.
    Aparentemente, o Product Owner receberia o Status Report do engenheiro e do arquiteto... E o Scrum Master trataria de executar (com a equipe dele) o que o Arquiteto definiu.
    Agile define o Product Owner e o Scrum Master... esse meio seria resolvido pela própria equipe, que definiria para o escopo da sprint quais componentes e arquitetura utilizar...
    Mas tenho uma equipe muito pequena pra poder esperar pelo meio da sprint para definir as coisas... então é melhor ter o papel de engenheiro e arquiteto, mesmo que seja uma pessoa somente, mas pra não deixar o sistema surgir a revelia.
    Abraço!

    ResponderExcluir