O que BPM tem a ver com requisitos de software? Tudo!

Muitas organizações estão buscando adotar BPM (Gestão por Processos de Negócio) como disciplina gerencial. Isto quer dizer que a empresa começa a se organizar e ter seus negócios gerenciados com base em processos de negócio bem estabelecidos, que definem o quê a organização realiza para transformar matéria prima (ou informações) em produtos e serviços.

Conhecer os processos leva a uma série de benefícios para a gestão da organização, mas de forma especial:

  • Possibilita ter uma visão mais clara de como os clientes participam do negócio da empresa
  • Possibilita que a empresa se organize ajustando seus processos para atender os objetivos do planejamento estratégico
  • Possibilita olhar para o quê e como as áreas da empresa interagem para entregar produtos e serviços, de ponta a ponta (do recebimento de materiais/informações, passando por todas as etapas de transformação e agregação de valor até que o produto/serviço seja entregue).

Com isso, torna possível também à organização identificar situações onde pode gerar grande inovação, destacando-se no seu mercado por um produto de muito mais qualidade, ou muito menor custo – tendo como meta atender à expectativa dos clientes.

Então o processo de negócio bem definido nos ajuda a entender o quê a organização faz, não apenas dentro das áreas, mas também como o processo passa de uma área para a outra.

E o que isto tem a ver com requisitos de software?

Sabendo o quê é preciso fazer (e eliminando aquilo que é feito sem necessidade), a organização pode definir melhor como faz. E o como passa pelos recursos utilizados, inclusive, de software. Como uma pessoa realiza uma determinada atividade de um processo? Usando o sistema X. E o que é necessário para ela interagir com os sistemas nesta etapa do processo? Isso é que determina, da forma mais assertiva, os reais requisitos de software que o sistema precisa ter para que as pessoas façam o que precisa ser feito e como deve ser feito!

As integrações entre sistemas, as interfaces e casos de uso para a interação do usuário com o sistema, quais informações o usuário precisa obter, gerar, editar para poder concluir aquela atividade – tudo isso pode ser identificado e definido com maior assertividade se temos a visão do processo.

Pense só: com a visão de processo, é possível identificar claramente que informações um participante de processo precisa gerar, para que os participantes das próximas etapas (que estejam por exemplo em outras áreas) precisarão para poderem fazer a sua parte. E com isso, conseguimos definir de forma assertiva tudo o que (e nada mais que) o usuário precisa fornecer em termos de dados no sistema para que o trabalho continue sendo realizado nas áreas seguintes com o menor risco de falta de informações e de erros possível.

Nós da iProcess (junto com muitos profissionais de processos que atuam na frente de tecnologia) acreditamos que o processo de negócio deve guiar a identificação dos requisitos de software. Esta abordagem se reflete na qualidade e aderência do software às necessidades do negócio quando a solução é implantada.

Veja resultados efetivos dessa abordagem nos cases implementados da iProcess.


Gerenciando a execução de processos com (ou sem) um BPMS

A tecnologia é sem dúvida um dos aspectos que podem gerar melhor contribuição para agilidade e qualidade na execução dos processos de negócio.

Através de projetos para automatizar processos com um BPMS, fica mais fácil definir claramente um evento para iniciar o processo, possibilita que as informações fornecidas nas atividades de processo possam ser acessadas pelos próximos participantes, todas as etapas ficam registradas para acompanhamento e auditoria e a coleta de dados para alimentar indicadores de desempenho pode ser automática. Também unifica a forma como os processos são executados e controlados, já que a plataforma de um BPMS é feita justamente para possibilitar o gerenciamento de múltiplos processos da organização. Esses e outros benefícios de usar um BPMS para automatizar processos já foram discutidos aqui no blog em artigos como Benefícios da Automação de Processos e Automatização de Atividades.

Entretanto, automatizar em um BPMS não é para todo e qualquer processo. No artigo Automatizar o processo (ou não)? Eis a questão!, chegamos a discutir algumas características de processos que não são bons candidatos a serem automatizados, baseado em um caso real.

Existem outras formas de se controlar processos com suporte tecnológico, mesmo sem um BPMS:

  • Sistemas tradicionais: pode-se desenvolver um sistema tradicional, baseado em um determinado processo, que garanta que a sequência de atividades seja realizada como prevista. Em geral não apresenta muitos benefícios em relação à automatização com um BPMS, já que terá que desenvolver, além das telas de interação com os usuários, controles de estados (para garantir a sequência de atividades), armazenar dados específicos daquele tipo de processo de negócio, coletar indicadores, controlar autenticação de usuários vs. seu papel no processo (para que uma pessoa não faça o trabalho da outra) e disponibilizar recursos para acompanhar o processo e seu histórico – tudo funcionalidades que já são nativas do BPMS.
  • Ferramenta de gestão de projetos: Alguns processos tendem a ser melhor gerenciados como projetos. Neste caso, a sequência de atividades, suas dependências e os papéis responsáveis são transformados em uma EAP (Estrutura Analítica de Projeto) e cada nova instância do processo se transformaria em um projeto gerenciada e executada em uma ferramenta de gestão de cronogramas. Com isso é possível gerenciar os recursos e prazos e monitorar o andamento da execução do processo. (A iProcess faz isso, por exemplo, com o processo de desenvolvimento de software: temos nosso processo de desenvolvimento formalmente modelado em BPMN, mas a cada nova “instância” o GP gera uma EAP baseada no processo e passa a executá-lo em nossa ferramenta de gerenciamento de projetos).
    Este tipo de controle funciona melhor para alguns processos em que a sequência de atividades precisa ser flexibilizada (as atividades do processo passam por uma adequação às necessidades da instância), mas requer maior envolvimento do gestor e constantes auditorias para confirmar que os processos estão sendo executados conforme o modelo do processo. Muitas dessas ferramentas permitem exportar dados de execução que podem ser utilizados em uma aplicação de relatórios para monitorar o desempenho do processo.
  • Aplicações de gestão de atividades: Algumas ferramentas como Redmine e Jira permitem determinar uma sequência de atividades baseada em uma máquina de estados criando dependências entre elas. O administrador “configura” a sequência de atividades baseada no fluxo de processo, e as instâncias obedecem a sequência, que é controlada pelo estado do mesmo. Funciona bem para processos de workflow puramente humano e geralmente possuem alguns relatórios para monitoramento, mas não permitem acionar serviços de outros sistemas para buscar dados de algum cadastro existente, por exemplo.
  • Software de pacote: Existem processos que já são considerados commodities. Por exemplo, existe pouca variação em processos de help desk (atendimento a cliente) ou de empréstimo de livros/obras (biblioteca). Para estes casos é comum adquirir um software de pacote que já possui um processo “embutido”. Em alguns casos este tipo de software permite customizações para se adequar ao processo da empresa, mas em geral é a empresa que acaba adequando seu processo ao que a solução possibilita fazer.
  • Aplicação de rastreamento do processo físico: Em alguns casos, os processos precisam continuar existindo fisicamente, através de “pastas de documentos”. Apesar do conteúdo digital já ser uma realidade (prova disso é a Nota Fiscal Eletrônica), muitas organizações ainda demandam que processos baseiem-se em documentos físicos, de papel. Para estes casos, a organização pode manter uma aplicação de histórico no qual, cada vez que um participante vai passar a pasta física “para frente”, ele registra que está finalizando a atividade e para onde os documentos do processo estão indo, possibilitando rastrear a execução do processo.

Na maior parte dos projetos de implantação de processos, entretanto, os benefícios em utilizar um BPMS para controlar, gerenciar e monitorar a execução apresentam um retorno muito melhor para o investimento.

 


Aprenda a analisar processos de negócio para a automatização com a equipe da iProcess, que tem mais de 13 anos de experiência em soluções para gestão de processos!
Confira já a agenda de cursos da iProcess Education e inscreva-se:
www.iprocesseducation.com.br

Arquitetura típica de BPMS

Os BPMS (Business Process Management Suite, ou System) são uma categoria de software com a capacidade de coordenar a execução de processos de negócio.

Apesar de apresentarem variações, podendo conter ou não alguns componentes, os BPMS essencialmente apresentam uma arquitetura básica comum:

Arquitetura típica de um BPMS (iProcess, 2009/2013)

 

Modelagem

O componente de modelagem é a ferramenta que auxilia o analista a documentar o processo de negócio.

Podem ser utilizadas diferentes notações pela ferramenta de modelagem, embora a mais comum seja BPMN, pela sua facilidade de transformação no modelo que poderá ser implementado tecnicamente para a automação.

Muitas ferramentas dispõem na ferramenta de modelagem recursos como documentação detalhada, integração com a estrutura hierárquica organizacional, funcionalidades de apoio à análise e simulação dos processos.

Desenho Técnico

O componente de desenho técnico é a área de trabalho do desenvolvedor, que irá implementar o processo modelado.

Em alguns BPMS, a ferramenta de desenho técnico pode ser a mesma ou estar integrada à de modelagem. Em outros casos, as ferramentas podem ser distintas.

A ferramenta de desenho técnico pode implementar o processo na mesma notação do processo modelado (em geral BPMN) ou eventualmente poderá requerer uma transformação para outra notação ou linguagem, como BPEL por exemplo.

Motor de Processos (Process engine)

O motor de processos é o componente onde a mágica do controle e execução do processo automatizado acontece.

Quando o modelo do processo implementado está pronto, ele é disponibilizado para o motor de processos. As informações do modelo são armazenadas na base de dados da ferramenta, que passa a usá-las como base para controlar cada etapa da execução.

O motor de processos é responsável por:
  • interpretar o modelo do processo,
  • controlar a execução de acordo com o modelo do processo,
  • interagir com os participantes humanos do processo,
  • invocar e integrar-se com aplicações externas,
  • manter automaticamente atualizada a base de dados de execução do processo.
Quando uma nova instância do processo é disparada, o motor de processos interpreta a próxima etapa, identificando quem deve executar, que dados devem ser fornecidos como entrada, que dados são esperados como saída da sua execução.

O framework de tarefas humanas é o responsável por gerenciar as atividades executadas por usuários, disponibilizando as informações configuradas para a tarefa ao ator responsável através de mecanismos como a lista de trabalho (ou lista de tarefas). Quando um usuário finaliza sua atividade, o framework de tarefas humanas repassa o resultado ao motor de processos, que dá seguimento à execução do processo.

O framework de integração é o responsável por gerenciar o acionamento de mecanismos automáticos, executando serviços, APIs ou scripts de busca ou envio de dados para sistemas de informação como sistemas legados, ERPs ou serviços de agentes externos. Em geral apresenta melhor desempenho quando estas integrações são gerenciadas através de uma arquitetura SOA (para saber mais, leia os artigos “SOA – Arquitetura Orientada a Serviços” e “SOA – A relação com BPM no sucesso da automação de processos“).

Alguns produtos dispõem também de um framework de regras, que gerencia a invocação de regras de negócio. Neste caso, as regras de negócio são mantidas em uma solução denominada BRMS (Business Rules Manager System), viabilizando que gestores do negócio tenham controle sobre os parâmetros que definem a regra, cabendo ao processo apenas executá-la para obter o resultado.
(Leia mais sobre BRMS no artigo Business Rules e a Dinâmica do Negócio)

Repositório de documentos

É natural que em muitos processos de negócio haja o envolvimento de documentos.
Documentos podem ser o gatilho de um processo de negócio, bem como atividades no decorrer da execução do processo podem requerer que documentos sejam associados a ele.

Assim, a maior parte das soluções de BPM disponibilizam mecanismos para vincular documentos a processos em execução, mas elas podem se diferenciar basicamente de duas formas. Muitas soluções viabilizam mecanismos simples de vínculo de documentos, em que os arquivos são armazenados no sistema de diretórios do servidor e oferecem formas de interação simples (anexar, abrir, remover).
Outras soluções mais robustas incorporam ferramentas mais completas de gerenciamento de conteúdo – ECM (Enterprise Content Management), contemplando uma gestão plena sobre o documento, com funcionalidades como versionamento, busca por metadados ou por conteúdo, gerenciamento de validade e expiração, controle de acesso ao conteúdo, entre outros.

Dados de Desempenho e Monitoramento

Sem monitoramento não há gerenciamento. Assim, todo BPMS mantém uma base de informações da execução de cada instância de processo que pode ser usada na geração de dados de desempenho do processo.

Os dados de desempenho são utilizados por ferramentas que possibilitam o monitoramento através de indicadores reportados em relatórios ou painéis gráficos.

A forma como estes dados são disponibilizados para o monitoramento também pode apresentar variações entre as soluções disponíveis no mercado.

Enquanto algumas soluções disponibilizam relatórios tabulares e gráficos para acompanhamento dos indicadores (muitas vezes inclusive com alto grau de customização e personalização), outras ferramentas apresentam componentes mais robustos de Monitoramento Ativo – BAM (Business Activity Monitoring), que possibilitam não apenas visualizar indicadores mas interagir com processos problemáticos.

 

Com tantas variações, como escolher o BPMS certo para minha organização?

Selecionar um BPMS para uso em uma organização passa por compreender a robustez dos componentes disponibilizados pelas soluções de cada fornecedor e avaliá-las frente às necessidades atuais e futuras da organização, levando também em conta aspectos econômicos e culturais. Leia o artigo “A difícil tarefa de escolher uma plataforma BPM para uma organização” para compreender as complexidades envolvidas nesta escolha e estruturar um projeto de seleção.

 

Avaliando o real custo-benefício de BPMS livres ou de baixo custo

No nosso último post falamos sobre os motivos que tornam a escolha de uma plataforma de BPMS tão difícil (veja aqui).

Aprofundando a questão da seleção de plataformas, um equívoco muito comum está no fato dos profissionais acreditarem que soluções de BPMS livres ou de baixo custo são sempre mais baratas do que as ferramentas pagas. Por vários fatores que veremos a seguir esta premissa nem sempre é verdadeira, sendo fundamental que os seguintes fatores sejam analisados:

  1. Investimento total na ferramenta no longo prazo: Nem sempre o custo de licenciamento é o maior custo na aquisição de uma solução BPMS, principalmente quando visto a médio ou longo prazo. Muitas vezes, o custo de um contrato de suporte e manutenção de uma ferramenta gratuíta é significativamente maior ao final de 3 ou 5 anos do que a soma dos custos de licenciamento e contrato de manutenção de outras ferramentas, de modo que este custo não pode ser analisado somente no primeiro ano.
  2. Requisitos disponibilizados pela ferramenta: Para evitar que o barato saia caro, analise o quanto a solução escolhida é aderente às necessidades da sua empresa. Caso existam requisitos obrigatórios ou opcionais que ela não atenda, verifique qual será o impacto da solução escolhida não ter estas funcionalidades.
  3. Benefícios (reais) de uma solução Open Source: A escolha de uma solução open source (quando o fabricante disponibiliza o acesso ao código fonte do produto) nem sempre traz o benefício esperado pela organização. Via de regra, fornecedores que dão suporte e manutenção às suas ferramentas não permitem, durante o período de vigência do contrato, que seus clientes alterem o seu código fonte, pois isso inviabilizaria o contrato de suporte.
  4. Características do suporte oferecido pelo fabricante: É fundamental verificar como é o nível de suporte fornecido pelo fabricante: Questões como a existência de suporte no país, a língua em que é prestado o atendimento, a possibilidade de se obter um atendimento no local, a disponibilidade 24×7, a existência ou não de um limite de abertura de chamados e o tempo de atendimento à produção devem ser analisados de modo a verificar se o suporte irá atender às expectativas.
  5. Existência de mão de obra qualificada: Uma ferramenta de BPMS, por si só, é uma caixa vazia: não tem nenhuma utilidade enquanto os processos não forem desenvolvidos. Assim, a disponibilidade de mão de obra capacitada para realizar este desenvolvimento torna-se um fator crucial.
  6. Esforço para a formação de um profissional apto a operar com a plataforma: Uma alternativa para uma eventual falta de mão de obra qualificada é a organização investir na formação de pessoal capacitado. Aqui, torna-se fundamental avaliar qual a complexidade desta formação: Quais os pré-requisitos mínimos de conhecimento de um profissional que venha a se capacitar? Como é a qualidade do material de capacitação fornecido pelo fornecedor? Existem instrutores disponíveis para realizar esta formação? Ou existe uma material de auto-estudo que permita esta capacitação? O quão rico é este material?
  7. Verifique o custo da mão de obra especializada: De nada adianta a organização economizar em licenciamento e gastar muito mais a cada projeto de automação que for realizar. Desta forma, é importante que se avalie qual o custo da mão de obra especializada em operar a ferramenta de BPM.
  8. Qual a produtividade oferecida pela plataforma: Finalmente, a produtividade também é um fator essencial na análise de custo entre plataformas distintas. Semelhante à questão do custo da mão de obra, uma plataforma que render uma produtividade significativamente superior às outras pode ter o seu custo de licenciamento pago rapidamente ao final de um primeiro ou segundo projeto de automação.

Qual o melhor BPMS do Mercado?

Frequentemente, clientes e prospects perguntam aos consultores da iProcess qual é a melhor ferramenta de BPMS existente hoje no mercado. Infelizmente não existe uma resposta única para esta questão e a dificuldade em respondê-la advém de inúmeros fatores.

Nesse post procuramos elencar alguns dos motivos pelas quais a escolha de uma plataforma de BPM é uma escolha tão difícil.

  1. Por ser uma escolha corporativa: soluções de BPMS não são soluções departamentais: assim como os processos, que possuem uma natureza transversal na organização, uma solução de BPMS tende a ser utilizada por toda a organização.
  2. Pela necessidade de atender diferentes necessidades: sendo uma escolha corporativa, a escolha da solução de BPMS deve atender a um conjunto amplo de demandas: caso contrário, corre-se o risco de se deixar alguma necessidade organizacional à descoberta. Isso exige que um amplo levantamento de expectativas deve ser realizado antes da sua seleção, de modo a evitar uma quebra de expectativa após a escolha da solução.
  3. Pelo enorme conjunto de funcionalidades disponíveis: Existem hoje mapeados na iProcess mais de 600 requisitos que podem ser avaliados na escolha de uma ferramenta de BPMS. Obviamente nenhuma ferramenta atende a estes 600 requisitos, e tão pouco é comum as empresas terem demandas tão complexas a ponto de necessitar todos estes requisitos sejam atendidos como obrigatórios. Desta forma, o casamento entre o que a empresa precisa e o que a plataforma disponibiliza é um fator crítico de sucesso na escolha da plataforma.
  4. Pelo número de alternativas que existem hoje no mercado: Existem hoje centenas de ferramentas de BPMS disponíveis no mercado. Só no Brasil são fabricadas dezenas, sem contar tantas outras que possuem escritórios de representação instalados no país.
  5. Pelo enfoque dado pelo fabricante ao conceber o seu produto: Via de regra os produtos de BPMS possuem categorias de funcionalidades que se destacam dos demais devido a forma como surgiu o produto. Produtos de BPMS se originaram de diferentes segmentos tecnológicos, tais como a gestão de conteúdo, a colaboração, a integração entre sistemas, a edição de formulários, …
  6. Pela enorme variação de valores financeiros envolvidos: Existem atualmente produtos para todos os bolsos e gostos: desde aqueles que são totalmente gratuítos (mas que possuem contratos de suporte e manutenção) até aqueles cujo o licenciamento pode chegar à centena de milhares de dólares. A forma de licenciamento também tem o impacto direto na sua precificação, sendo os tipos mais comuns as licenças por usuário ou processador.
  7. Pelas plataformas tecnológicas existentes na organização: As plataformas tecnológicas disponíveis dentro da organização podem facilitar ou inviabilizar a escolha de uma plataforma de BPM. Questões como, por exemplo, o sistema operacional utilizado nos computadores clientes e servidores (Windows, Linux, Unix, …); o banco de dados da organização (Oracle, DB2, Postgress, SQL Server, …); o servidor de aplicação disponível (IIS, Apache, WebLogic, Websphere, …); a linguagem de desenvolvimento utilizada (Java, .NET, PHP, …) podem ser fundamentais na análise de aderência de uma ferramenta de BPMS à plataforma atual.

A escolha certa de uma plataforma de BPM passa por uma análise detalhada de cada um destes fatores. É importante ter em mente que a escolha inadequada de uma solução de BPMS pode inviabilizar a execução de alguns processos de negócio da sua organização e, em última análise, até mesmo as suas iniciativas de gestão por processos.

[Atualizado] Leia também: ferramentas BPMS livres ou de baixo custo são sempre mais baratas do que as ferramentas pagas?

Até lá.

Até onde vão os benefícios da automatização de processos “zero-code”?

Quando buscamos soluções de BPMS (Business Process Management System), um dos argumentos mais sedutores lançados pelas equipes de vendas dos produtos é o de “zero-code”, ou “código zero”. Zero-code é a promessa de que o produto permite que um usuário de negócio possa modelar seu processo e disponibilizá-lo para execução automatizada sem a necessidade de desenvolver código de programação.

Esta proposta vem de encontro a uma percepção geral do negócio em relação à TI. Num cenário em que as organizações possuem inúmeros sistemas, nas mais diferentes plataformas e tecnologias, e em que o suporte tecnológico encontra dificuldades em atender com agilidade as necessidades do negócio para acompanhar às mudanças estratégicas do mercado, as empresas já não querem mais TI. Querem resultados.

Assim, a expectativa de poder modelar seus processos e executá-los sem requerer o envolvimento de analistas de sistemas e desenvolvedores soa extremamente atraente.

Mas o que significa de fato “zero code” e até onde um processo pode ser implementado com esta visão?

Parte desta impressão é alimentada pela adoção de uma “linguagem” de modelagem de processos em comum: a notação BPMN (Business Process Model and Notation). BPMN permite que a documentação de um processo em nível de negócio possa ser complementado para adquirir profundidade técnica à medida que é preparado para a implementação. Assim, o processo de negócio modelado pela área de negócio pode ser o mesmo a ser implementado no BPMS adotado pela organização.

O fato de BPMN permitir que usuários de negócio possam mapear e detalhar seus processos, leva muitas ferramentas vislumbrar a participação destes usuários de forma mais ampla do que a simples definição e detalhamento para o desenvolvimento de aplicações tradicionais. O usuário de negócio capacitado pode: definir a cadeia de atividades e suas dependências, definir regras de negócio para manejar fluxos alternativos, detalhar o que deve ser solicitado a cada participante nas atividades para que as mesmas sejam consideradas como concluídas, definir quem são os responsáveis por realizar o trabalho de cada tarefa.

Para tanto, existem algumas premissas básicas na realização de um projeto como este:

I. O(s) usuário(s) de negócio precisa(m) ter alto domínio sobre tecnologia e sobre a ferramenta para compreender e aplicar corretamente cada um de seus recursos;

II. O(s) usuário(s) de negócio deve(m) ter noções de construção de telas/formulários através do qual os participantes irão interagir com o processo em suas atividades;

III. O processo deverá ser essencialmente humano e restrito às informações coletadas em sua execução.

O resultado do processo sem envolvimento da TI está de certa forma limitado às funcionalidades mais básicas da solução de BPM, produzindo um workflow de atividades humanas com baixo nível de (ou sem) inteligência. Sem programação não é possível utilizar-se da inteligência que a organização já possui e que está distribuída nos seus sistemas sob a forma de informação.

Um dos aspectos mais importantes do processo é a informação. Naturalmente, durante o desenho do processo de negócio são identificadas necessidades de informações que precisam ser reunidas de fontes diferentes e eventualmente transformadas para sustentar a execução do processo.

Assim, inevitavelmente a participação de profissionais de TI acaba sendo necessária. Não apenas para o resgate e armazenamento de informações no decorrer do processo, mas a própria questão da interface do usuário nas atividades do processo – que muitas vezes requer mais do que oferece o formulário básico que pode ser construído com os recursos disponibilizados pela ferramenta.

O que ocorre então é a necessidade da própria TI rever seu papel, sobretudo do Analista de Sistemas. O novo analista deve ajudar a construir o processo, identificando juntamente com o negócio os componentes de software que precisam ser desenvolvidos para:

  • coletar informações do processo para alimentar os sistemas legados;
  • buscar informações de sistemas legados para disponibilizar aos participantes do processo, minimizando  a necessidade de acessar a diferentes sistemas para isso;
  • identificar melhorias de interface que reduzam o esforço de interação do usuário com o processo (como busca de valores existentes, cálculos, etc);
  • identificar validações que possam ser feitas pelo sistema para garantir a integridade do processo;
  • identificar formas mais eficazes de realizar o balanceamento de atividades em grupos.

Automatizar atividades humanas sem fazer uso inteligente dos recursos computacionais da empresa no que se refere à obtenção de informações agregará pouco ou nenhum valor ao processo e como consequência apresentará retorno do investimento muito abaixo das expectativas.

Configurando um ambiente de desenvolvimento mais produtivo

Quando planejamos a implantação de uma nova tecnologia, de um novo sistema, é comum nos preocuparmos diretamente com os recursos de hardware e software que serão requeridos nos computadores servidores envolvidos. Porém, um ponto que poucos lembram-se de planejar previamente diz respeito aos recursos que as equipes de desenvolvimento e manutenção irão demandar.

Para além dos produtos diretamente relacionados ao sistema implantado, que outros aplicativos podem ajudar um técnico a ser mais produtivo em suas tarefas? Nesta hora, nada melhor do que trocar experiências, conversar com quem vive essa realidade no dia-a-dia.

Este é o motivador deste post: trocar experiências!

Não temos porém a pretenção de determinar quais são os melhores softwares, tampouco, ao citarmos um aplicativo específico, não queremos dizer que seus concorrentes são menos qualificados. O que estamos nos propondo a fazer é, na verdade, apresentar uma coleção que acreditamos atender adequadamente a maioria das necessidades de trabalho dos técnicos envolvidos com automação de processos e com desenvolvimento de sistemas de um modo geral.

Nota: é importante atentar para as políticas de licenciamento de cada software! Nem todo programa que pode ser instalado gratuitamente permite o seu uso para fins comerciais. Não nos responsabilizamos e tampouco estimulamos usos indevidos. Tampouco temos qualquer relação comercial com os fabricantes e distribuidores dos aplicativos citados.

 

Bom, vamos ao que interessa!

Confira a lista de aplicativos que sugerimos, considerando as plataformas Windows e Linux. Aguardamos contribuições e outras sugestões nos comentários.

Para facilitar, vamos agrupar as sugestões em aplicativos básicos, técnicos, segurança e desenvolvimento.

Aplicativos básicos:

  • Primeiramente é importante definir o sistema operacional a ser utilizado. O Windows 7 Professional é uma ótima opção nessa plataforma e, em Linux, as distribuições Fedora e Ubuntu são recomendadas (mas muitas outras também são adequadas).

** Adicionalmente, o Firefox mostra-se como uma opção bastante interessante para desenvolvedores pela grande quantidade de plugins disponíveis para estender suas funcionalidades. Dentre esses, podemos destacar o Webdeveloper e o Firebug, especialmente úteis para depurar os componentes Javascript das suas páginas.

  • Compactador de arquivos 7-zip, para Windows.
  • PDF XChange é um bom leitor deste tipo de arquivo, pois é leve e permite a inclusão de comentários e marcações. No Linux, ele pode ser instalado utilizando o Wine, citado mais adiante (Okular e Evince são bons leitores também para Linux). Claro, há também a opção de utilizar o Adobe Reader (para Windows e Linux), mas este é bastante “pesado”. Já para geração de PDFs, o pdfCreator é uma ótima opção para Windows, e o Cups-PDF para Linux atende a necessidade.
  • Para edições simples de imagens, recomendamos o Paint.net para Windows ou o Gimp (Windows e Linux), e o Gadwin Printscreen (Windows) para produzir cópias de telas (a maioria dos ambientes Linux possui opção nativa para tal).
  • Para comunicação, Skype para videoconferências e para chat o Pidgin (Windows e Linux), que suporta em um só aplicativo contas do MSN, GTalk e de outros serviços.
  • Instale o cliente do Dropbox para compartilhar facilmente arquivos entre diferentes computadores, ou mesmo entre toda a equipe de desenvolvimento.

Aplicativos técnicos:

  • Para Linux, há muitos pequenos programas de linha de comando úteis para diversas tarefas. Em ambiente Windows, podemos utilizar boa partes desses comandos utilizando o Cygwin! Por exemplo, nada como poder utilizar o comando tail para acompanhar um arquivo de log e, com o Cygwin, isso é possível mesmo em Windows.
  • No Windows, podemos conectar em um ambiente Linux remoto utilizando o Putty ou XShell, e podemos até mesmo executar localmente programas gráficos que estão instalados em um ambiente Linux remoto se utilizarmos o XMing. E o contrário também é verdadeiro: podemos instalar e executar alguns aplicativos Windows em ambiente Linux, instalando o Wine. Se o aplicativo não for dependente de bibliotecas muito específicas, tem uma boa chance de funcionar muito bem! E, para conectar remotamente em uma máquina Windows a partir do Linux, utilize o Vinagre, um cliente Remote Desktop e VNC leve e adequado.
  • Para controle de versões SVN, instale no Windows o Tortoise SVN, que integra-se muito bem ao Windows Explorer. Existe também o projeto Tortoise GIT para este outro controle de versões. Bem menos explorado e conhecido, o sistema de controle de versões Bazaar é uma opção bastante interessante para manter versionados arquivos locais sem depender de um servidor específico para tal. Pode ser utilizado, por exemplo, para manter versões locais mais frequentes, sem, no entanto, submeter versões para o sistema centralizado da empresa, onde espera-se que sejam entregues apenas versões estáveis dos códigos-fonte.
  • Para comparação de arquivos, recomendamos WinMerge para Windows e Meld para Linux.
  • Para editar arquivos texto no Windows, esqueça o Notepad! Instale o Notepad++, que possui diversos recursos e plugins disponíveis.
  • Instale o Wireshark (Windows e Linux) para interceptar e monitorar o tráfego de rede.

Segurança:

  • Utilize o TrueCrypt principalmente para proteger pendrives e HDs externos, mas o mesmo pode ser utilizado também para criptografar discos rígidos dos seus computadores. ** Adicionalmente, em Linux, é possível criptografar o disco rígido facilmente utilizando LVM.
  • Especialmente em ambiente Windows, tenha um bom antivirus instalado! O McAfee é bastante eficiente, mas tem custo de licença e consome bastante recursos do computador. Já o Comodo tem a vantagem de ser uma suite com antivirus, antimalware e firewall, e gratuita. Para Linux, o Avast é uma boa opção de antivirus para uso pessoal, enquanto que o Clamav é o mais famoso e de uso gratuito. Já o ipTables é o firewall padrão (boa parte das distribuições geralmente contam com um aplicativo gráfico de firewall baseado em iptables). Ainda para Windows, pode-se também fazer uso das próprias ferramentas da Microsoft: Windows Firewall e o Security Essentials como antivirus.
  • Também não esqueça de ter uma opção de software para backup, especialmente se trabalhar em home-office ou se viaja muito com notebook. A maioria desses serviços é pago, mas seu custo caiu muito nos últimos anos. Algumas opções de empresas que disponibilizam serviço de backup remoto são: CrashPlan, Carbonite e Mozzy – estes dois últimos somente para Windows, o primeiro para múltiplas plataformas.

Desenvolvimento:

  • Para acesso e programação em banco de dados Oracle, utilize o Oracle Sqldeveloper. Para banco de dados SQL Server, utilize as próprias ferramentas  Microsoft.
  • Para desenvolvimento, depende muito do gosto do programador, mas Eclipse e Netbeans são ótimas IDEs.
  • Para teste e simulação de webservices, o SoapUI é uma excelente ferramenta.
  • Para automação de build e deploy, principalmente em Java mas também em outras linguagens e plataformas, utilize Ant e Maven.
  • Para virtualização de servidores, o VirtualBox é uma ótima opção, pois permite inclusive criar snapshots. Mais limitado, o VMware Player também serve para executar máquinas virtuais facilmente.

Bom, ficamos por aqui. Compartilhando esta lista de aplicativos, esperamos ajudar a facilitar o processo de escolha de ferramentas para as diversas necessidades e demandas de software que surgem em um ambiente de desenvolvimento.

Aguardamos comentários e sugestões de outros aplicativos que podem ajudar a tornar o nosso dia-a-dia mais produtivo ;-)