BT

Disseminando conhecimento e inovação em desenvolvimento de software corporativo.

Contribuir

Tópicos

Escolha a região

Início Artigos A essência da Engenharia de Software: revisão do livro e entrevista com Ivar Jacobson

A essência da Engenharia de Software: revisão do livro e entrevista com Ivar Jacobson

A publicação do livro "The Essence of Software Engineering" torna visível a iniciativa do grupo Software Engineering Method and Theory (SEMAT - Método e Teoria da Engenharia de Software) ao grande público. O núcleo praticável descrito nesse livro é de grande utilidade para o entendimento e melhoria de sua forma de trabalho nas empresas de desenvolvimento de software.

O núcleo consiste de coisas que sempre lidamos ou coisas que sempre são feitas quando as equipes desenvolvem software. As equipes podem usar os elementos do núcleo para discutir como será feito o que precisa ser feito, e explorar diferentes formas de ser feito conforme suas necessidades. O núcleo ajuda a equipe a concentrar mais nos resultados do que em documentações ou atividades. As descrições dos elementos em cartões podem ser usadas pelos membros da equipe em seu trabalho diário, permitindo que as equipes auto avaliem sua forma de trabalho e, assim, a auto evolução de maneira contínua.

Esse primeiro livro do SEMAT dá mais atenção aos princípios ágeis e às formas de desenvolver software, confirmando, assim, que esses princípios formam uma abordagem muito importante e útil no desenvolvimento de software. Esse livro pode ser muito útil para empresas que estão adotando Agile e Lean, assim como auxiliar ativamente o conceito ágil de auto-organização com o núcleo de engenharia de software.

O InfoQ.com fez uma entrevista com Ivar Jacobson, um dos autores do livro "A essência da Engenharia de Software". Jacobson também é um dos líderes do SEMAT, cujo objetivo é refundar a engenharia de software como uma disciplina rigorosa.

InfoQ.com: Obrigado Jacobson por conceder esta entrevista ao InfoQ. Por que agora seu interesse é o SEMAT?

Jacobson: Por volta do ano 2000, o meu interesse mudou de práticas técnicas de desenvolvimento de software para as práticas humanas. Percebi que todas aquelas maravilhosas técnicas que tínhamos desenvolvido estavam sendo adotadas por apenas alguns por cento da comunidade de desenvolvimento. A adoção não tinha aumentado e hoje toda a comunidade está perto de 20 milhões de pessoas. Ao mesmo tempo o movimento ágil cresceu muito rapidamente. Concordei com o manifesto e apoiei muitas das novas práticas que chegaram com a comunidade ágil. Na minha empresa transformamos muitas das práticas existentes como casos de uso e arquitetura a se tornarem super "leves", ágeis e enxutas, aprendendo com o resto do mundo.

Nosso foco passou a ser disseminar o Agile para grandes companhias. Desenvolvemos os três imperativos para escalar o Agile, que agora trabalhamos com nossos clientes. Ao trabalhar com isso percebemos que a comunidade de software tem alguns problemas mais fundamentais para lidar com eles. Esses problemas não foram resolvidos por nenhum método existente, e se pudéssemos resolver eles seriam aplicáveis para todos os métodos existentes - ágeis ou não. Assim foi a maneira como o SEMAT nasceu. Percebemos que era uma tarefa gigantesca que tínhamos e que poderia levar muitos anos para ser realizada, e o caminho a frente era acidentado, sem recompensas a se esperar em um longo tempo. E também percebemos que para termos sucesso precisávamos de uma forma de trabalho fundamentalmente diferente do que com os métodos que tínhamos antes.

InfoQ.com: Por favor, de uma visão geral para os leitores que não sabem o que é o Software Engineering Method and Theory (SEMAT).

Jacobson: O SEMAT foi fundado em 2009 com o objetivo de "refundar a engenharia de software baseada em uma teoria sólida, com princípios provados, melhores práticas que incluem um núcleo de elementos amplamente aceitos e extensíveis para usos específicos". Acabei de citar nossa Chamada para Ação. Identificamos uma série de problemas na comunidade de software como: "a prevalência de modismos típicos da indústria da moda ao invés de uma disciplina de engenharia de software"; "o grande número de métodos e suas variantes, com diferenças pouco compreendidas e ampliadas artificialmente"; e "a divisão entre as práticas da indústria e a pesquisa acadêmica".

Mais de 50 pessoas por todo o mundo estão trabalhando ativamente no SEMAT, tudo de forma voluntária, e com mais de 2000 apoiadores. O SEMAT deu seus primeiros passos primeiramente para conseguir que seu núcleo chamado "Essência" fosse adotado como um padrão. A "Essência" representa uma mudança de paradigma da forma que trabalhamos com os métodos. Historicamente, todos os métodos se manifestaram como descrições (artigos, livros, guias), mas trabalhando com o SEMAT, o foco mudará de uma conversa (descrição) para a prática. Desenvolvedores terão suporte de forma enxuta e ágil quando eles realmente trabalharem com o seu método escolhido.

InfoQ.com: O livro do SEMAT descreve um núcleo de elementos de engenharia de software. Quais são esses elementos?

Jacobson: O núcleo inclui coisas que sempre temos e coisas que sempre fazemos quando desenvolvemos software. Ele é universal para toda empreitada de desenvolvimento de software - ágil ou pré-ágil. O SEMAT adotou muitas novas ideias fundamentais. Uma delas é o que chamado de conceito alpha. Ao longo de mais de sete anos este conceito foi usado e teve o seu valor provado por muitos clientes da minha companhia. Este conceito permite que as equipes foquem na prática ao invés da descrição. As equipes podem medir o progresso e a "saúde" de suas empreitadas na prática ou de uma forma independente de qualquer método. Em qualquer momento a equipe pode identificar como está e como prosseguirá. Isto faz uma equipe focada em resultado ao invés de direcionado por documentos ou centrado em atividades. O conceito de alpha também favorece diversas outras ideias, por exemplo, a ideia de um método ser uma composição de práticas construídas sobre um núcleo universal. Graças ao conceito de alpha podemos criar um núcleo robusto, estensível e intuitivo.

InfoQ.com: Já foi mencionado uma das novas ideias adotadas pelo SEMAT - o conceito de alpha. Poderia mencionar mais alguma?

Jacobson: O SEMAT baseia-se em dois importantes princípios: 1) Ágil ao trabalhar com métodos; e 2) Separação de responsabilidades. Estes princípios guia quase tudo que fizemos quando trabalhamos na Essência.

InfoQ.com: O que é que torna o trabalho ágil com os métodos tão importante para a Engenharia de Software?

Jacobson: O princípio 'ágil ao trabalhar com métodos' requer uma mudança de pensamento de natureza similar como a necessária para mudar da forma tradicional de desenvolvimento de software para o desenvolvimento ágil, por exemplo: a) a equipe inteira é dona do seu método, ao invés de um pequeno número seleto de metodologistas; b) focar no uso do método ao invés de uma descrição abrangente do método; c) evoluir o método da equipe ao invés de mantê-lo fixo.

InfoQ.com: O que quer dizer com separação de responsabilidades?

Jacobson: A Separação de Responsabilidades pode ter muitas interpretações, mas a que aplicamos pode ser descrita de forma simples como "manter os princípios simples, mas permitir que eles sejam estendidos sem alterar os fundamentos". Geralmente complicamos as coisas conforme a evoluímos. Por exemplo: geralmente a primeira entrega de um pedaço do software é simples porque ela possui apenas o mínimo de funcionalidade. Se o software é bem sucedido as pessoas vão querer adicionar novas funcionalidades, e para isso sentem que precisam mudar o que está lá para estender com novas funcionalidades. Como resultado, o software se torna mais complicado. A boa notícia é que realmente não precisamos fazer isso. Podemos realmente estender sem alterar o que já funciona.

InfoQ.com: O livro menciona que o núcleo é praticável, com o objetivo de "apoiar os profissionais de software em como realizar o seu trabalho". Pode falar mais sobre isso?

Jacobson: Estamos dizendo que o núcleo é praticável e por isso dizemos que quando se executa uma empreitada, o núcleo se torna vivo pela sua utilização. Os elementos essenciais sempre prevalentes em toda empreitada como Requisitos, Sistema de Software, Equipe e Trabalho movem de um estado para outro a medida que avança e aplica as práticas, algumas das quais podem ser descritas e outras são apenas conhecimento implícito. Por exemplo, o Sistema de Software vai passar pelos seguintes estados: Arquitetura Selecionada, Demonstrável, Utilizável, Pronto, Operacional e Descontinuado.

InfoQ.com: O núcleo usa o que é chamado de "alphas" e "estados" para descrever a forma que o software pode ser desenvolvido. Poderia explicar como eles são usados?

Jacobson: Existem sete alphas no núcleo: Requisitos, Sistema de Software, Trabalho, Forma de Trabalho, Equipe, etc. Eles representam as diferentes dimensões que precisa avançar em uma empreitada. Cada uma delas tem um conjunto de estados que precisa avançar para progredir a empreitada.

A primeira coisa que se faz quando começa a trabalhar com a Essência, é avaliar quais estados já foram alcançados. Para cada alpha e cada estado há um conjunto de pontos de inspeção, que descreve um certo número de condições para serem cumpridas para alcançar aquele estado. Uma vez que já tenha estabelecido quais os estados, decida qual será o seu próximo passo e quais novos estados precisam ser alcançados na próxima iteração ou sprint. Para cada avanço há um número de tarefas para fazer. Quais tarefas devem ser feitas vem das práticas aplicadas. Se estas práticas são implícitas, então aplique-as com base no conhecimento comum da equipe. Se estiverem descritas, então obtenhas a partir das descrições das práticas.

InfoQ.com: Quando uma equipe decide que precisa mudar sua forma de trabalho, eles podem escolher as práticas que precisam? Quando podem começar a usar essas práticas?

Jacobson: Pequenas equipes competentes podem usar o núcleo como ele é. Eles tem que entender os alphas do núcleo e seus estados, então eles poderão, baseados em suas experiências e conhecimentos existentes, concordarem com a equipe em como fazer as mudanças de estado. Equipes menos competentes precisam de orientação em como fazer as mudanças de estado. Eles então estarão aptos a selecionar práticas de uma biblioteca de práticas, e estas práticas são adicionadas no topo do núcleo. Desenvolver está biblioteca é agora a principal prioridade do SEMAT. Hoje apenas algumas práticas, por exemplo, uma prática Scrum e um caso de uso foram desenvolvidos para verificar se toda essa ideia funciona. As práticas vão, em sua base, serem desenvolvidas para pessoas menos interessadas nos detalhes. A maioria dos desenvolvedores na comunidade estão felizes com apenas a descrição da essência de uma prática. Entretanto, algumas pessoas, por exemplo, pessoas que desenvolvem sistemas críticos, precisam de um direcionamento mais detalhado para cumprir os regulamentos em seu campo. Ambos os tipos de usuários, e vários outros, estarão satisfeitos com a biblioteca.

InfoQ.com: A Essência faz uma distinção entre os alphas e os produtos do trabalho. Qual é a diferença?

Jacobson: Primeiro usamos o termo produto de trabalho para representar documentos e artefatos semelhantes.

Como já havia explicado, os elementos chaves da Essência são os alphas. Os alphas possuem estados e definições dos estados usando pontos de inspeção. O estado de um alpha não é diretamente determinado pela produção de produtos de trabalho, mas pelo seu progresso e "saúde" (definida pelo ponto de inspeção). E o núcleo possui apenas sete alphas.

No topo do núcleo podemos compor práticas. Com cada prática é possível "adicionar" novos alphas específicos para a prática. Produtos de trabalho também são inseridos com as práticas; assim eles pertencem a uma prática específica. Cada produto de trabalho é anexado a um alpha. Alguns produtos de trabalho são anexados aos alphas do núcleo, alguns aos alphas específicos das práticas. Aqui temos um aspecto interessante da Essência. O número de produtos de trabalho para um produto é n vezes o número de alphas, no qual n pode ser tão grande quanto 10. Assim, enfatizando alphas em vez de produtos de trabalho que incidem sobre digamos dez elementos em vez de 100, o que é uma grande melhoria.

Mais do que isso, na Essência cada produto de trabalho tem um atributo "level de detalhe", que pode ter diferente valores como implícito, esboçado e marcado,... completamente descritos. Projetos ágeis geralmente tem um nível baixo de detalhes. Sistemas críticos geralmente requerem um alto nível de detalhe. E, como sabemos, o fato de possuir alto nível de detalhes de um produto de trabalho não é garantia que o seu alpha tenha progredido para um novo estado.

Em minha própria experiência de produtos realmente grandes de telecom, muitos documentos nunca foram lidos, apenas escritos. Talvez devesse ter dito mais corretamente que a maioria das palavras nos documentos nunca foram lidos; eles não eram essenciais para a compreensão - eles estavam lá para preencher um modelo.

InfoQ.com: Você pode nos dar algum exemplo concreto de como o SEMAT aplicou a separação de responsabilidades quando a Essência foi desenhada?

Jacobson: O núcleo é muito simples, mas ele pode ser estendido com práticas para construir métodos mais avançados sem mudar o núcleo. Aqui vão alguns exemplos: a) separar o núcleo das práticas; b) separar os alphas dos produtos de trabalho; c) separar o que é importante dos detalhes.

Ser capaz de separar o que é importante dos detalhes permite ter descrições diferentes para diferentes tipos de usuários. A maioria dos profissionais no mundo de 20 milhões de desenvolvedores não estão interessados ​​em descrições abrangentes; eles só querem o que é importante. No entanto, como já discutimos, alguns desenvolvedores de sistemas críticos são obrigados a definir suas práticas em um alto nível de detalhamento. Eles precisam de mais, mas este mais não deve complicar o que é necessário para os desenvolvedores de sistemas menos críticos.

InfoQ.com: Anteriormente foi mencionado que a estrada do SEMAT seria "esburacada", e que levaria algum tempo antes de ter algumas recompensas. Isso soa como algo na qual o pensamento ágil poderia ajudá-lo, assumindo os riscos cedo e entregar os primeiros resultados com o objetivo de obter um feedback rápido da comunidade?

Jacobson: Obrigado por perguntar. É claro, desenvolvemos a Essência iterativamente. A Essência inclui tanto o núcleo consistido de elementos universais como uma linguagem. A linguagem foi desenhada para descrever os elementos do núcleo, para descrever as práticas construídas acima do núcleo e para descrever métodos completos, que são composições de práticas.

O trabalho começou com três pilares arquiteturais (sprints, iterações), e em cada ponto progredimos o núcleo, a linguagem e algumas práticas sobre o núcleo. Tentamos vários conjuntos de elementos do núcleo, construções de linguagem e práticas antes de convergirmos para o que hoje é a Essência. Fizemos a linguagem intencionalmente muito simples para os profissionais não muito interessados em métodos formais. Usando o principio de Separação de Responsabilidades então adicionamos construções a linguagem para expressar mais detalhes para as pessoas que pedem mais.

InfoQ.com: Como o SEMAT ajuda a preencher a lacuna entre a pesquisa sobre a Engenharia de Software e a aplicação com as práticas da indústria?

Jacobson: Isto ainda continua a ser visto, é claro, mas há alguma evidência de que isso pode acontecer. Dentro do SEMAT temos um grande grupo de pessoas que trabalham no que chamados de Área de Teoria. Ela está a procura de uma teoria geral da engenharia de software. No final de maio de 2013 tivemos um workshop bem sucedido na ICSE13 em São Francisco com 25 participantes e 10 artigos publicados. Este longo trabalho está em seu início, criando a necessidade de uma teoria e identificando os requisitos dessa tal teoria.

O núcleo da Essência é esperado para servir um importante papel sendo uma definição de o que a engenharia de software (ou o desenvolvimento de software, seja lá o que for) realmente é, que em minha mente provavelmente é necessário para criar uma teoria prática. Mais do que isso, a habilidade para medir o progresso deve também ser útil para avaliar qualquer teoria. Dito isto, não estamos levando os teóricos a adotar a Essência em seu trabalho em uma teoria.

É evidente que o objetivo de obter uma teoria prática eventualmente acabou ajudando no desenvolvimento de software. Algumas pessoas, inclusive eu, acham que essa teoria será sócio técnica reconhecendo que o desenvolvimento de software é uma atividade humana aplicando práticas técnicas.

InfoQ.com: Se uma organização quer usar o SEMAT, há aulas de formação específica disponível sobre o núcleo e sobre como aplicá-la?

Jacobson: O treinamento no núcleo e a sua aplicação é feita em muitos níveis diferentes. Um tutorial de três horas sobre a Essência foi dado em São Francisco em conjunto com o GTSE e foi dado em 07 de junho em moscou e dia 20 de junho em Berlim. No nível universitário, está sendo ensinado na Florida Atlantic University, na Universidad Nacional de Colombia, no Royal Institute of Technology na Suécia, Oslo University na Noruega e muitos outros lugares. Minha companhia tem ensinado um núcleo desde 2007. Também estamos ensinando 'Agile & SEMAT - Perfect Partners' na Europa, EUA e China. Sei que muitas outras empresas estão interessadas em oferecer treinamento sobre o SEMAT e seu resultado.

InfoQ.com: Há algum custo envolvido se uma organização deseja usar o SEMAT, por exemplo para licenciamento ou certificação?

Jacobson: Não há custo de licença para usar o SEMAT. Também existem algumas ferramantas disponívels sem custo algum. A certificação será feita em vários níveis diferentes e que incorre em alguns custos.

InfoQ.com: Onde as pessoas podem ir se quiserem aprender mais sobre o SEMAT, tiverem dúvidas, ou precisarem de algum suporte?

Jacobson: As pessoas podem ir para o site do SEMAT na qual podem encontrar notícias e o que está acontecendo pelo mundo. E se eles realmente desejam se aprofundar, elas podem ler a especificação da Essência.

Se as pessoas estiverem interessadas em participar do trabalhando que está acontecendo elas podem se tornar apoiadores. Eles podem entrar em contato comigo ou com qualquer outra pessoas trabalhando com o SEMAT, e iremos encontrar alguma coisa interessante para criarmos.

Sobre o Entrevistado

Dr. Ivar Jacobson é o pai dos componentes e da arquitetura de componentes, casos de uso, da UML e do RUP. Ele tem contribuído para a modelagem de negócios moderno e desenvolvimento de software orientado a aspectos. Ultimamente Jacobson tem trabalhado sobre a forma de lidar com métodos e ferramentas de uma forma ágil e enxuta.

Em 2004, Jacobson recebeu a medalha Gustaf Dalen do Instituto Chalmers de Tecnologia, Gothenburg Suécia. Ele é um conselheiro internacional honorário da Universidade de Pequim, e é doutor honorário na Universidade San Martin de Porrres, Peru. Ele é o autor principal de seis livros influentes e mais vendidos. Ele foi co-autor de dois livros sobre UML com Grady Booch e James Rumbaugh. Jacobson também é o fundador da Ivar Jacobson International, operando em sete países ao redor do mundo. Informações sobre SEMAT são fornecidas na página de suporte do IJI SEMAT.

Avalie esse artigo

Relevância
Estilo/Redação

Conteúdo educacional

BT