Devo ouvir meu empregador e usar as ferramentas CASE?

17

Meu empregador (não um desenvolvedor) acha que as ferramentas CASE nos ajudarão a melhorar nosso processo e documentação de desenvolvimento. Não tenho certeza disso, somos uma pequena equipe de 5 desenvolvedores que criam soluções de banco móvel para clientes locais. Acho que as ferramentas CASE serão um desperdício de tempo e dinheiro, pois precisam ser compradas e precisaremos de algum tempo antes de nos acostumarmos com elas e sermos eficientes trabalhando com elas para modelagem e outras coisas. A geração de código é outra questão, eu realmente acho que o código gerado pelo CASE não será tão bom quanto o código escrito por bons desenvolvedores.

Eu acho que se seguirmos os princípios ágeis, projetar padrões, usar TDD e manter nosso código limpo. nós deveríamos ser bons. E no que diz respeito à Análise e Design, acho que diagramas UML simples no quadro branco devem fazer o truque. A documentação é boa e importante, mas deve ser feita o menos possível e não devemos nos concentrar no Documentos e esquecer o código. Isto é o que eu penso.

Estou correcto? ou devo ouvir meu empregador e começar a pesquisar uma ferramenta CASE apropriada?

omsharp
fonte
21
"Eu realmente acho que o código gerado pelo CASE não será tão bom quanto o código escrito por um bom desenvolvedor" - as pessoas costumavam dizer o mesmo sobre o código gerado pelos compiladores.
9
A resposta depende muito de se ou não você gostaria de manter o seu emprego :)
dasblinkenlight
23
Os anos 90 ligaram, e eles querem voltar à moda.
Blrfl 5/09/12
6
@GrahamLee, porém, existe uma enorme diferença entre os dois - você lê (ao depurar) e faz adições (via classes parciais ou similares) ao código gerado pelo CASE o tempo todo, enquanto você basicamente não se importa com o código gerado pelo compilador legível.
precisa saber é o seguinte
6
@ guillaume31: Depois de ajustar manualmente o código gerado pelo CASE, você terá um código que precisa ser mantido por humanos e, portanto, legível. Não me lembro da última vez em que tive que modificar a saída do compilador, muito menos não conseguir recuperar esses ajustes de volta à fonte na forma de montador embutido.
Blrfl 5/09/12

Respostas:

54

A situação justifica uma abordagem analítica da decisão. O resultado final será "A ferramenta CASE fornece um valor ao negócio?" Freqüentemente, a gerência deseja que os desenvolvedores adotem uma metodologia ou ferramenta porque ouviram coisas boas sobre ela, independentemente de quão bem ela se encaixe nos processos e na cultura atuais da organização.

Se seu empregador solicitou que você analisasse as ferramentas CASE, como ChrisF aponta, você deve obrigar (esse é um problema no local de trabalho, não na programação). Alguns fatores que afetariam a adoção de uma ferramenta CASE incluem:

  • Para quais de seus processos existem ferramentas CASE disponíveis,
  • Uma estimativa de quantas horas-pessoa seriam necessárias para adotar as novas ferramentas,
  • Como o (s) processo (s) mudaria com a adoção das novas ferramentas,
  • ou Que tipo de impacto positivo (ou negativo) seria mensurável com a adoção da (s) nova (s) ferramenta (s)

Pense nisso como uma oportunidade para atualizar seu ambiente e processos de desenvolvimento. Pode ser que seus processos atuais sejam uma combinação perfeita para a cultura da sua organização, mas você deve isso ao seu empregador e à sua equipe para fazer a pesquisa apropriada.

David Kaczynski
fonte
17
"Pense nisso como uma oportunidade para atualizar seu ambiente e processos de desenvolvimento." - Ferramentas CASE são destinadas a resolver o problema de X. Não temos problema X por causa de A, B, e C. A ferramenta mais relevante é a ferramenta Y, que resolve Z. problema relacionado
Brian
29

Sim, você deve começar a pesquisar as ferramentas CASE.

  1. Porque você precisa de evidências para apoiar sua afirmação de que elas não ajudarão. Você nunca sabe, pode achar que eles ajudarão.
  2. Porque seu empregador disse para você.

Não vou repetir os pontos apresentados por David Kaczynski em sua excelente resposta , pois são exatamente os passos que você deve seguir.

ChrisF
fonte
Você acha que eles não vão ajudar?
Omsharp 05/09/12
@omsharp - Não faço ideia se eles o ajudariam ou não. Eu estava respondendo à pergunta que você fez "devo ouvir o meu empregador e começar a pesquisar uma [sic] ferramenta CASE apropriada".
ChrisF
7
+1 para o ponto 1. Muitas pessoas pensam que não podem fazer seu trabalho porque "sabem melhor".
TZHX 5/09/12
2
"Porque o seu empregador disse para você" nunca deve ser uma razão para nada.
Picarus 18/09/12
2
@Picarus - Sim, deveria - mesmo que esteja entregando sua demissão quando eles lhe disseram para fazer algo antiético ou ilegal.
ChrisF
5

Parece uma grande mudança de paradigma, de fato, do desenvolvimento ágil para o CASE / MDA, com geração de código. Não necessariamente do ponto de vista do gerenciamento de projetos (uma abordagem CASE não entra em conflito com os conceitos de iterações, histórias de usuários, feedback rápido ou aprimoramento contínuo), mas definitivamente do ponto de vista do "artesanato de software" - significa menos controle sobre o código código produzido e gerado que provavelmente será ilegível, rígido, mais difícil de testar, constantemente necessitando de sincronização com o modelo e assim por diante.

Pelo que você descreve, o que seu empregador precisa é facilmente compreensível:

  • Melhor documentação para evitar perda de conhecimento se um desenvolvedor sair da equipe.
  • Um processo de desenvolvimento mais rápido.

Como profissional de software, você definitivamente pode (e deve) contar a ele sobre suas dúvidas sobre a capacidade da abordagem CASE de corresponder a essas expectativas. Também é seu dever começar a examinar as ferramentas CASE, se ele exigir. Apenas experimentar um deles não significa 1 / que os resultados serão satisfatórios (estou pensando especialmente na sobrecarga de geração de código potencialmente grande que tipo de conflito com a necessidade de se desenvolver mais rapidamente) e 2 / que você não pode encontre um compromisso em que alguns recursos da ferramenta CASE (diagramas, geração de documentação) serão usados ​​enquanto preserva o contexto ágil existente.

Aqui está um artigo interessante sobre as ferramentas CASE em um ambiente Agile e seus possíveis benefícios / desvantagens: http://www.agilemodeling.com/essays/simpleTools.htm

guillaume31
fonte
1
Esse artigo seria um excelente ponto de partida para @omsharp
David Kaczynski
3

Meu empregador (não um desenvolvedor) acha que as ferramentas CASE nos ajudarão a melhorar nosso processo de desenvolvimento e documentação ".

Se eu fosse atuar como consultor para o seu empregador, seria obrigado a tentar dissuadi-los desse tipo de coisa. Antes de tudo, é um grande erro de gerenciamento fazer com que pessoas que não estão envolvidas no trabalho escolham ferramentas para desenvolvedores. Isso quase nunca vai bem. É pelo menos duas vezes pior quando as pessoas que fazem a escolha não têm uma sólida formação técnica. E se eles não tiverem nenhuma experiência com as ferramentas que estão empurrando, isso provavelmente será um desastre total.

A razão mais provável pela qual esse tipo de coisa está sendo sugerido pelo gerenciamento não técnico é porque alguém está tentando vender alguma coisa. Uma grande empresa que vende esse tipo de coisa tem receitas que estão caindo como um zepelim de chumbo no ar rarefeito. Os vendedores (também conhecidos como revendedores, consultores) que não mudaram para outra coisa tentam encontrar novas marcas, er ... clientes. Uma das principais razões pelas quais essas empresas estão enfrentando dificuldades é que não há mais demanda por esses tipos de ferramentas. Por 'esses tipos de ferramentas', quero dizer ferramentas que prometem 'eliminar código de escrita'. Não há nada errado com o código, dependendo do idioma. O código escrito possui abstrações muito mais poderosas do que o que essas ferramentas oferecem.

Um dos principais motivos pelos quais essa é uma maneira tão ruim de gerenciar o desenvolvimento é que ela reduzirá severamente o número de pessoas disponíveis para atrair a equipe de sua equipe. Por um lado, eles precisam aprender essas ferramentas incomuns e, em segundo lugar, os desenvolvedores mais experientes não querem trabalhar com essas coisas. Frequentemente, o argumento sobre esse tipo de ferramenta é que você realmente não precisa de bons desenvolvedores, porque essas ferramentas fazem a maior parte do trabalho pesado. Isto é completamente falso. É o contrário. Eles fazem todas as coisas que são triviais e muitas vezes tornam mais difícil fazer as partes não triviais. Eles também nunca eliminam realmente a necessidade de escrever código.

Especificamente com as ferramentas CASE, trabalhei em três locais diferentes que possuíam esses pacotes. Em cada um, foi assim:

  1. O modelo foi cuidadosamente projetado na ferramenta. Levou muito mais tempo que o normal e nenhum produto utilizável foi produzido até muito tarde no esforço.
  2. O modelo precisava ser aumentado com a lógica de negócios. O modelo estava errado e precisou ser ajustado manualmente durante as fases finais do projeto, porque o esforço estava atrasado.
  3. A ressincronização do modelo e do código era tão proibitiva de custos que a ferramenta CASE foi arquivada, para nunca mais ser usada novamente.

Em poucas palavras, houve 100% de falha total e desperdício de dinheiro em cada caso. Quando conversei com outras pessoas que usaram as ferramentas CASE em outras organizações, a história é sempre a mesma. Não usei todas essas ferramentas e é possível que algumas pessoas tenham feito bom uso delas, mas tenho certeza de que a maioria das equipes que as usaram parou de usá-las há muito tempo.

JimmyJames
fonte
1

Um dos benefícios que você obteria da investigação / implementação das ferramentas CASE é que você adquiriu um conjunto de habilidades mais comercializáveis ​​para futuros empregos. Penso que muitas de suas preocupações são dignas de nota, mas, como apontado por David Kaczynski, essa não é uma questão de programação, mas uma questão de relacionamento empregador / empregado. Outro benefício das ferramentas CASE é que, uma vez aprendida, sua empresa estará em posição de assumir uma ampla gama de projetos de maior complexidade. Pode muito bem ser que um contrato que seu empregador busque obter exija ou dê preferência ao uso das ferramentas CASE.

deadEddie
fonte
1

Você está misturando o problema e a solução e seu chefe está tentando ajudar, com mais ou menos sucesso. Para desafiar seu chefe, você deve ter claro qual é o seu papel na organização. Se ele é o CEO e você é o CTO, a decisão é sua e o CEO deve apenas apontar quais aspectos de negócios são afetados pela falta de documentação. Sua obrigação será resolver o problema comercial, com uma ferramenta CASE ou qualquer outra solução que você apresentar.

Em relação à sugestão específica de usar as ferramentas CASE, acho que você deve escolhê-la adequadamente para atingir seu objetivo sem sobrecarregar sua equipe com trabalho extra. Se você deseja melhorar a documentação, pode ter o suficiente com uma ferramenta capaz de gerar diagramas a partir do código, não necessariamente para gerar o código a partir do diagrama gráfico. Um exemplo dessa ferramenta é o Codelogic . Eu usei alguns anos atrás para garantir que nossos projetos fossem limpos e claros para serem entendidos e que fosse bastante fácil de usar. Se, ao expressar dinheiro, é outra preocupação, provavelmente você pode procurar no código aberto (não posso ajudar aqui, mas estaria interessado no resultado de qualquer pesquisa).

A alternativa às ferramentas CASE também pode ajudar. Medir coisas como medidas ciclomáticas ou outras medidas de complexidade manterá seu design bem estruturado e os desenvolvedores focados no código. Melhores comentários sobre o seu código, como Javacode, também podem ajudar a melhorar a documentação.

Honestamente, acho que se você considerar que as ferramentas CASE não ajudam seu chefe a conhecê-lo. Se ele é um bom chefe, ele valoriza sua opinião. Eu nunca gostei de um funcionário que apenas faz o que lhe é dito sem análise crítica. Mas é claro que, como David sugere, qualquer discussão deve ser mantida em argumentos fortes e objetivos.

Picarus
fonte
1

Eu tentaria fazer seu empregador perceber que ele conseguiu as coisas ao contrário. Se houver espaço para investimento para a equipe de software, você deve identificar quais são seus gargalos ou problemas de qualidade. Se houver mais espaço para melhorias nas áreas de documentação e processo de desenvolvimento, você deve identificar quais alterações têm maior ROI no que diz respeito à melhoria dessas áreas. Isso pode ou não estar começando a usar as ferramentas CASE.

Buhb
fonte
0

Ajude seu chefe, ajude a si mesmo

Você pode reagir ou agir sobre essa solicitação.

Lembre-se de todas as perguntas "Mova o Monte Fuji"? Se você estivesse em uma entrevista para um emprego que realmente queria, não diria ao entrevistador quão estúpida era a pergunta, mas continuaria fazendo perguntas e expressando suas melhores idéias para resolvê-la. Em algumas culturas, você nunca diria não a um chefe que realmente pediu para você mudar o Monte Fuji, mas encontraria uma maneira de você salvar o rosto.

Reenquadrando a pergunta

Se você reformular a pergunta em algo como,

"Posso comprar ou adquirir um conjunto de ferramentas que automatize o máximo possível de tarefas de baixa produtividade relacionadas ao software?"

essa tarefa se torna muito mais agradável. Ajude seu chefe (e você mesmo), dando a ele uma opção com rastreio claro para o CASE e uma ou duas opções baseadas em Agile / código aberto / nuvem.

CASO Revisitado

Nos anos 90, as ferramentas CASE podem assumir a forma de um conjunto de ferramentas da Rational que provavelmente incluía o Requisite Pro, o Rational Rose, o Clear Case, o Rational Robot (um executor de teste), Purify, Pure Coverage e Quantify e várias outras ferramentas que foram integrados juntos. Se você fosse uma loja MAD (Médica, Aviônica, Defesa), poderá usar versões atualizadas dessas ferramentas para produzir documentação e artefatos extensos e rastreáveis ​​que são frequentemente exigidos pelos clientes nesses mercados.

Entre em contato com a IBM e solicite a um vendedor que faça uma cotação para cinco licenças (ou apenas uma licença flutuante). Adicione algum treinamento também. Compartilhar essa citação com seu gerente pode encerrar a conversa sobre as ferramentas CASE. Mas não me interpretem mal. Gosto da Rational, de seus principais cientistas e de seus produtos, mas os acessei principalmente por meio de licenças de sites de universidades, porque o preço era muito alto para as empresas em que trabalhei. Se você for aprovado, pelo menos pela minha experiência, eles tratarão seu direito com bom suporte, treinamento de qualidade (geralmente em um resort de primeira com boa comida).

Ferramentas para venda

Você ainda tem uma grande oportunidade de fazer compras de ferramentas. Os desenvolvedores ágeis também precisam de ferramentas. Você pode comprar um conjunto que fornece suporte de documentação para fichas on-line, casos de uso, casos de uso e outros tipos de diagrama UML. O Atlassian tem o que eu acho que é um bom conjunto de ferramentas - Jira para rastreamento de tarefas e bugs, Green Hopper pelo que eles descrevem como gerenciamento de projetos Agile, Confluence para um wiki da intranet, Crucible para revisão de código on-line e Bamboo para um servidor de integração contínua. Existem licenças de software como serviço para esses e outros conjuntos de ferramentas direcionados às suas necessidades, se você é ágil.

A integração do IDE é outro caminho para obter um equivalente CASE de 2012 no ano. Se você é uma empresa de desenvolvimento da Microsoft, o Visual Team Studio possui ferramentas de escopo semelhante ao que o Rational criou. Eles têm alguma engenharia de software de ida e volta, geração de stubs de teste de unidade de classes, integração com sistemas de controle de origem e várias ferramentas para colaboração em equipe.

Ferramentas de código aberto

No lado do código aberto, o Eclipse e seus muitos plug-ins tentam integrar várias ferramentas de código aberto. Não tenho certeza se o Eclipse Modeling Framework está maduro ou se existem outras ferramentas que fornecem um engenheiro de software de ida e volta eficaz, mas da última vez que olhei, não parecia muito fácil de alcançar. O ambiente do Qt Creator se integra ao controle de origem e possui alguns recursos para ajudar na verificação pontual da cobertura do código das alterações enquanto você estiver no editor.

Adoção Iterativa de Ferramenta Incremental

Uma abordagem iterativa / incremental da seleção de ferramentas também pode ser muito eficaz. Projetos de código aberto geralmente oferecem suporte a ambientes únicos ou múltiplos. Suas opções de ferramenta podem ser influenciadas pelas pilhas que você usa. Nunca há um bom momento para interromper completamente o desenvolvimento; portanto, adicionar e treinar a equipe em algumas ferramentas menores por trimestre pode ser melhor do que uma abordagem do big bang que muda tudo de uma vez.

Soluções de ferramentas na nuvem

Muitas das soluções listadas podem exigir servidores e configuração relativamente complexa. Existem muitas opções no mercado baseadas na nuvem e que fornecem software como serviço hospedado por um provedor por uma taxa mensal. Isso pode fazer sentido para sua equipe, a curto ou longo prazo. Alguns podem ter uma solução hospedada que você pode usar para iniciar rapidamente, com a opção de comprar licenças posteriormente.

Nenhuma dessas sugestões é um caminho fácil e barato para a melhoria instantânea da produtividade, mas se você achar algumas das ferramentas indispensáveis ​​depois de experimentá-las.

DesenvolvedorDon
fonte
0

Uma coisa que eu acrescentaria às excelentes respostas aqui é que você pode se beneficiar ao entender como deseja "melhorar seu processo de desenvolvimento".

A tendência avassaladora nos últimos 20 anos foi otimizar o desenvolvimento de software para o mercado. "Ágil", "enxuto", DevOps, TDD, BDD - tudo sobre como obter software de qualidade o mais rápido possível.

As ferramentas CASE não estão disponíveis no mercado. Eles se concentram na rastreabilidade, consistência do projeto, integridade do modelo etc. Todos esses são aspectos valiosos - especialmente em sistemas bancários -, mas custam muito tempo para o mercado.

Então, talvez pergunte ao seu chefe exatamente o que ele está tentando otimizar.

Por experiência, trabalhar com ferramentas CASE rapidamente se torna mais difícil do que trabalhar com código - especialmente quando se trabalha com domínios com problemas que são mais do que razoavelmente complexos. O projeto deixa de ser um projeto "bancário" e, em vez disso, se torna um projeto "insira o nome do CASE-tool-here".

Neville Kuyt
fonte