Skip to content
janeiro 21, 2007 / cassiomarques

Exceções às regras

Em meu emprego atual eu assumo diversos papéis diferentes: Eu sou o analista de sistemas para aplicações que já estão em produção, DBA para os respectivos bancos de dados e analista/desenvolvedor para uma nova aplicação de médio porte. Este último item é minha atividade principal na empresa no momento.
Este cenário de “equipe de um homem só” tem me mostrado que, assim como muitas outras coisas na vida, desenvolvimento de software não é algo tão exato. Não existe uma receita pronta e infalivel para que se cumpra as tarefas. Desde a disciplina de Engenharia de Software na faculdade, até o Livro do Craig Larman, passando por outros pontos de estudo, aprendi os diversos aspectos de um projeto que devem ser especificados, controlados e seguidos, bem como a divisão natural de responsabilidades. Mas ao tentar aplicar ao pé da letra estes conceitos em meu projeto atual percebi, mais uma vez, que a prática está longe de ser igual à teoria.
Isso me leva a analisar de uma maneira mais prática os diversos tipos de documentação utilizados em projeto de desenvolvimento de software. Dentre eles cito dois que considero apresentarem problemas para o tipo de projeto que estou desenvolvendo:
– Requisitos de Software: A análise de requisitos é um dos pontos mais importantes de qualquer projeto, pois ali são traduzidas as reais necessidades do cliente. Para que os requisitos sejam coletados é necessário um trabalho de “entrevistas” com o cliente, para tentar coletar o máximo de informação em relação às funcionalidades da aplicação. Mas qual é o nível ideal de detalhamento para os requisitos? Quando o material coletado é suficiente? Segundo minha humilde experiência, diz que o nível de detalhamento depende de dois pontos críticos: O conhecimento do contexto do problema por parte da equipe e a facilidade de novas “entrevistas” quando necessário.
No meu caso, como trabalho diretamente dentro do cliente, tenho uma facilidade muito grande de a qualquer momento tirar qualquer tipo de dúvida, logo os requisitos vão naturalmente tendo seu nível de detalhamento sendo incrementado. Como o único envolvido de maneira próxima no desenvolvimento sou eu, a maneira como os requisitos são escritos também é mais simples, uma vez que já estou bem a par do contexto de utilização da aplicação. Isso me poupa tempo com burocracias e controles que de outra forma poderiam até memso atrasar meus prazos.
– Diagramas UML: UML é uma ótima ferramenta para modelar o problema.
Pode ser utilizada desde a fase de coleta de requisitos, com diagramas de caso de uso, até a fase de criação dos componentes de software, classes e padrões de projeto utilizados. Entretanto, saber dosar a quantidade de diagramas a utilizar, quais pontos do projeto deverão ser abordados com esta técnica e qual o nível de detalhamento dos diagramas é uma tarefa que pode poupar muito tempo. Vejo também que a utilização da UML não tem por objetivo servir apenas como documentação após a aplicação ter sido posta em produção. Acho que sua melhor utilização é servir como um eficiente meio de comunicação entre os desenvolvedores que fazem parte da equipe do projeto. Através dos diagramas, é muito mais simples para o desenvolvedor perceber o que deverá ser implementado naquele ciclo de desenvolvimento. Para quem trabalha sozinho, entretanto, ter que criar diversos diagramas somente porque as “boas práticas” dizem que isso deve ser feito, não agrega valor algum ao projeto. Obviamente a UML deve também ser utilizada por profissionais que assumem sozinhos todo o desenvolvimento, por ser uma ferramenta de análise muito poderosa, mas também é uma ferramenta que exige bom senso para ser utilizada.

Dentre diversos outros pontos, os citados acima mostram que para desenvolver de maneira ágil devemos ter em mente que devemos controlar nossos projetos, que devemos documentá-los e que devemos utilizar ferramentas de análise para nos auxiliar, porém a melhor ferramenta de todas é o bom senso. Em muitas situações a experiência vai falar mais alto, em outras teremos que utilizar somente nosso “faro”. Fica a conclusão de que controle nenhum é terrível e não funciona, mas controle em excesso é improdutivo e pode até mesmo levar o projeto ao fracasso. Os prazos estão lá, não há como mudá-los de maneira simples. O desenvolvimento deve ser ágil e eficiente. Não deve haver retrabalho desnecessário, ai está a maior razão para controlar e documentar todo o processo. Mas quando você percebe que está criando documentação demais e produzindo de menos, e que essa documentação está servindo apenas para atender ao que está escrito naquele livro que você leu, está na hora de você repensar suas prioridades.

6 Comentários

Deixe um comentário
  1. Alexandre [ AFSRJ ] / jan 22 2007 1:29 pm

    Fala cara, pow lendo seu blog, da a entender que voce seja “o fera” na POO e no Java.
    Mas seu forte é POO, Java e web?

    Pow quem ler pensa que sim, mas suas duvidas sao meio leigas…

    Posso estar confundido. E que suas duvidas e logicas poucos “patterniadas” sao so com o menta.


    Mas a minha duvida, sr Analista, DBA e etc e afinz ( rs )

    Voce é desenvolvedor Java mesmo? ou esse blog quer dizer php, rails, asp e etc…

    Leve na esportiva… Pois os texto sao de pessoas muito experientes e as duvidas vindo de voce sao de pessoas nao experientes…

    []’s!

    Curti o blog

  2. Cássio Marques / jan 22 2007 2:06 pm

    Olá Alexandre,

    Eu programo em Java há aproximadamente 1 ano. Antes disso eu programava somente em C++ e um pouco de Perl.
    Meu atual projeto é meu PRIMEIRO projeto web, antes disso desenvolvia apenas aplicações desktop/console, em geral para implementação de métodos numéricos e, em meu emprego anterior, para filtrar grandes volumes de dados em arquivos binários e para comunicação com smart cards.
    Estou aprendendo agora a desenvolver para web e ainda tenho algumas dificuldades. Li alguns livros, estudei um pouco e tal, mas em geral acabo tendo algumas dúvidas com o Framework em si (Mentawai). Mas percebi que com ele é muito mais fácil do que fazer tudo na mão (somente JSP + Servlets). Tentei também com alguns outros frameworks mas foi com o Menta que me adaptei melhor.
    Se atuo como analista e DBA isso acontece porque a estrutura do meu atual emrpegador assim exige. Isso não quer dizer que meu forte seja este. O que eu sei fazer é programar. O que eu gosto é de lógica e matemática. Tenho estudado POO à alguns anos, mas nem tudo que fazia em C++ acontece da mesma forma em Java, em alguns pontos ainda estou me adaptando.
    Nunca programei em PHP/ASP e espero nunca ter que fazê-los.
    Agradeço pelo comentário :)

    Abraço!

  3. Alexandre [ AFSRJ ] / jan 22 2007 2:57 pm

    Boa respostas..
    Mas vou citar alguns pontos.

    O POO usado no C++ é completamente igual, repito COMPLETAMENTE IGUAL. So removendo 1 conceito de OO que é a Heranca multipla, porem no C++ nao existia Inteface, logo sao 6 por meia-duzia. Entao sao iguais!

    PHP é uma linguagem alto nivel e existem framework como o Zend que fazem PHP se torna POO. Nunca diga nunca.

    Asp eu sou programador senior e te falo que não tem porque usa-lo hoje em dia, porem foi uma revolucao na sua epoca, assim como o java é hoje.
    E é obsoleto hoje como o java será daqui alguns anos.
    Mas até hoje nada se compara com Java, entao nao leve tao a serio essa “comparacao” de epocas x linguagens.

    Perl é legal!

    Funcoes como Analista e DBA, dificilmente voce seja um ou outro.
    Existe muito conceito entre os 2 que talvez so muitos livros podem ter passar o que significa cada um deles.

    Amigo, a nossa area é louca, eu sei.
    Mas se estiver numa empresa grande voce jamais sera Analista/DBA Simultaneamente. Pois voce exerce o que esta na sua carteira…

    Acredito que sua empresa seja pequena , logo voce modela banco, conversa com cliente, estuda caso de uso, faz uml, exige e mostra briefing e etc…
    Mas posso te falar que talvez nenhum dos 2 voce seja…

    Resumindo, apenas: Desenvolvedor com experiencias alem do simples desenvolvimento.

  4. Cássio Marques / jan 22 2007 3:06 pm

    Sim, vc está correto quanto a POO em C++ e Java. Porém, como programava muito para métodos numéricos, em algumas situações era interessante sair da OO e fazer coisas estruturadas, o que Java não permite. Pode parecer estranho, mas quem já programou métodos numéricos sabe que a orientação a objetos não é sempre o método mais indicado.
    Realmente a empresa para a qual trabalho é pequena, e optou por realizar o desenvolvimento internamente ao invés de comprar um software pronto de terceiro. Tenho pleno conhecimento de que em uma empresa grande eu JAMAIS atuaria como DBA e analista. Mas vejo também nesta situação uma oportunidade de aprender um pouco mais sobre coisas diferentes!
    Quanto ao PHP e ao ASP, não disse que nunca programarei nestas linguagens, disse apenas que espero não ter que fazê-lo, mas caso acontecer eu encaro numa boa!

    Abraço!

  5. roberto henrique / fev 7 2007 3:53 pm

    http://gettingreal.37signals.com/GR_por.php

    Não vejo problema nenhum em desempenhar mais de uma função. Principalmente por estar no inicio de carreira. Continue estudando como está e aplicando algo importante que você mesmo citou: bom senso.

    []

  6. Cássio Marques / fev 7 2007 4:23 pm

    Obrigado pelo comentário Roberto!

    Eu já havia visto esse livro e achei bastante interessante. Na verdade, pelo que consegui ler nos trechos do livro que o site apresenta, a estratégia de desenvolvimento adotada visa produtividade e demonstra que em qualquer projeto de sw o cliente é quem solicita o projeto, não quem executa. Assim, certas burocracias que só servem para agradar gerentes nem sempre são aplicáveis. Usar somente o realmente necesário, esse é o lema!

    Abraço!

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: