Uml?

[quote=Luiz Augusto Prado]Eu uso muito papel e lápiz, “Giz” e lousa.
Em um ambiente onde outros podem sugerir melhorias isso é muito interessante pois cada um pode simplemente pegar seu modelo em UML e fazer as alterações e distribuir a idéia.

Eu tentei alguns mas vi que é demorado ficar desenhando, apagando, arrastando, jogando em tela, redimensionando…
Prefiro o papel e o lápiz
[/quote]

Essa é a melhor forma de usar UML. Para mim a UML deve ser usada para para divulgar idéias, para comunicar algo e não modelar um sistema inteiro. Isso é coisa de analista que não sabe nada de programação e que acretida que pode modelar um sistema inteiro com UML. O problema é que UML não da uma indicação clara das responsabilidades das classes e, com exceção de projetos muito simples, haverá problemas de comunicação, pois o cara que criou o modelo poderia querer uma coisa mas foi desenvolvida outra! Um exemplo é são os padrões State e Strategy que são identicos, mas fazem coisas completamente diferentes. Segue abaixo os diagramas dos dois, para uma comparação. Esse é um exemplo claro do problema de comunicação que pode surgir. Outro problema é a defasagem da implementação x documentação. Uma coisa pode paracer muito boa no papel mas não vai funcionar tão bem quando implementado, então é feito uma modificação no código que não é propagado para documentação.

A UML é um recurso poderoso, mas deve ser usada com moderação e de maneira apropriada!

Perfect!

Perfect!

É totalmente possível, tanto que muita gente o faz assim, sem diagramação formal, e sim os tais rascunhos de papel de pão.

Vc aprendeu a moda antiga, então é natural que pense assim, você foi talhado desse jeito, mas é interessante que você procure se atualizar pois você está um pouquinho defasado, modelar o banco antes de tudo é programar orientado a banco e não a objetos. VocÊ deve conhecer as alternativas para pelo menos decidir o que é melhor para o seu contexto.

Não sou xiita, acho que existem processos e regras de negócio que precisam ser mapeados com mais atenção e a UML pode ajudar, porém já tendo feito muito diagrama UML desde que comecei a trabalhar com desenvolvimento, hoje se eu puder tomar essa decisão em um projeto prefiro começar o quanto antes possível no código.

[quote=AlexandreGama][quote]
Na minha Opinião da pra fazer, mas deve ser horrivel isso ! sem falar que o codigo fica totalmente associado a quem fez, pois não saberei em que você pensou para fazer aquilo, com o diagrama fica mais facil de entender o caminho que o programador seguil.

No curso um professor meu indicou o StarUML, ele é free se não me engano.
[/quote]

Código totalmente associado ao programador que fez? Mas sempre teremos isso…
A ideia é que o programador codifique bem e de forma limpa o seu código e não precisemos de documentações UML pra saber o que ele fez ou deixou de fazer.

Pessoal, documentação do projeto em UML é ultrapassado e em raras exceções pode funcionar. O código hoje é muito vivo e manter as atualizações é extremamente custoso. Considero que a melhor documentação é
uma ótima suite de Testes.

Abs![/quote]

Bom, vc disse bem, a Ideia é que o programador codifique bem e de forma limpa, mas será que isso sempre acontece amigo ?? o cara chega ai na sua empresa, faz de qualquer jeito e some no mundo ! ai seu cliente quer uma alteração no programa, ai bem na parte do programador que te abondonou, e ai, vc faz oque ? perde uma vida só pra entender o que o cara fez, ou consulta um diagrama simples com tudo que vc precisa saber sobre o codigo ?

Nem tudo é um sonho, dizer que a função do programador e fazer tudo certo vc esta completamente certo, mas acreditar que todos fazem ao ponto de vc nunca precisar de um material de apoio ja acho um pouco de descuido, é minha opinião !

Abraço

Infelizmente tenho que concordar com o x@ndy; realmente o que ocorre hoje em dia é + ou - isso mesmo.

A problema é que muitos esquecem do seguinte:

  1. A UML é, além de outras coisas, uma “ferramenta” de auxilio a comunicação; no brasil poucos (ainda não vi nenhum) sabem utiliza-la com essa abordagem. Normalmente geram o diagrama de classes e sequencia de forma tosca e mandam pra frente.
  2. Para transmitir uma ideia é necessário, alem dos digramas, um texto e outras coisas mais para realçar os pontos não muitos óbvios da ideia; isso requer criatividade, dedicação e muita vontade transmitir informações a outras pessoas.
  3. Normalmente desenvolvedores detestam fazer documentação, fácil de entender mas não de aceitar; a abordagem ao lidar com a informação é bem diferente além da atividade levar ao tédio facilmente.
  4. O produtores de software em nosso mercado não investem tempo e nem dinheiro em documentação.
  5. A comunidade desenvolvedora em nosso país é imediatista e ainda não possui em sua consciência a preocupação com a qualidade do produto e da informação. Essa questão é uma daquelas que é mais fácil falar do que fazer (certo é claro).
  6. Um software bem feito em toda sua totalidade (incluindo é claro a documentação) requer tempo, dinheiro e muita dedicação (aqui entenda profissionais que valorizam outros fatores que não sejam unicamente codificação).
  7. Na comunidade a maioria quer “dominar” várias linguagens mas pouquíssimos querem dominar profundamente os aspectos necessários para se desenvolver um produto com alto nível de qualidade.
  8. O mercado não é exigente em muitos setores, em especial software.
  9. Resultados automáticos (geradores reversos e docs baseados e códigos existentes) não são bons em lidar com informações cruciais. Já recebi como documentação de um sistema o javadoc das classes, acredite isto está longe de ser profundamente elucidativo.

flws

O problema é que se o cara já fez um trabalho sujo no código, um código macarrônico, procedural, sem padrões, etc com toda a certeza ele fez igual em possíveis diagramas. Se o código está um lixo e sem entendimento algum, os diagramas, que refletem o código, também o estarão :wink:

A documentação raramente andará com o projeto, ou seja, se você pegar um diagrama, novamente, ele estará defasado em relação ao código horrível que você acabou de encontrar. Além de te confundir, os diversos diagramas de sequencia, classe, etc não só te darão um feedback errado como te confundirá mais ainda.

Abs!

Perfect!

[quote=AlexandreGama][quote]

É totalmente possível, tanto que muita gente o faz assim, sem diagramação formal, e sim os tais rascunhos de papel de pão.

Vc aprendeu a moda antiga, então é natural que pense assim, você foi talhado desse jeito, mas é interessante que você procure se atualizar pois você está um pouquinho defasado, modelar o banco antes de tudo é programar orientado a banco e não a objetos. VocÊ deve conhecer as alternativas para pelo menos decidir o que é melhor para o seu contexto.

Não sou xiita, acho que existem processos e regras de negócio que precisam ser mapeados com mais atenção e a UML pode ajudar, porém já tendo feito muito diagrama UML desde que comecei a trabalhar com desenvolvimento, hoje se eu puder tomar essa decisão em um projeto prefiro começar o quanto antes possível no código.

[/quote]

Perfect![/quote]
Bom, não tenho experiencia profissional para afirmar como é, vcs podem opinar bem mais que eu, eu so me baseio o que eu aprendo na faculdade, afinal, esta dentro das boas praticas de desenvolvimento de software que é um padrão universal, mas como disse, isso na teoria, na pratica pode mudar, não sei, mas tem pessoas que acham necessario, outras não, quando eu tiver com essa experiencia profissional e ja ter desenvolvido todo um sistema sem tais ferramentas posso mudar totalmente de opinião !

Não foi eu quem criou o Tópico, mas gostaria de mais opiniões a respeito do assunto, pra poder ter uma visão mais geral, se isso realmente acontece com todos, ou melhor, se todos acham que assim é melhor.

Abraços

Sério, quem ta dizendo que UML é uma obrigação, deveria dar uma lida em algumas metologias ágeis e principalmente no Getting Real da 37signals.

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

[quote=SpiderX]
Bom, vc disse bem, a Ideia é que o programador codifique bem e de forma limpa, mas será que isso sempre acontece amigo ?? o cara chega ai na sua empresa, faz de qualquer jeito e some no mundo ! ai seu cliente quer uma alteração no programa, ai bem na parte do programador que te abondonou, e ai, vc faz oque ? perde uma vida só pra entender o que o cara fez, ou consulta um diagrama simples com tudo que vc precisa saber sobre o codigo ?

Nem tudo é um sonho, dizer que a função do programador e fazer tudo certo vc esta completamente certo, mas acreditar que todos fazem ao ponto de vc nunca precisar de um material de apoio ja acho um pouco de descuido, é minha opinião !

Abraço[/quote]

Documentação não é sinal de qualidade de código. Se fosse assim era só fazer documentação que o produto seria uma maravilha.

Claro que não da para sair codificando a moda loco. O levantamento de requisitos é fundamental, é necessário antes de fazer entender o que fazer! O problema é querer modelar um sistema inteiro com UML. Isso não é possivel, pelos motivos que já relatei, entre outros.

[quote=SpiderX]
Bom, não tenho experiencia profissional para afirmar como é, vcs podem opinar bem mais que eu, eu so me baseio o que eu aprendo na faculdade, afinal, esta dentro das boas praticas de desenvolvimento de software que é um padrão universal, mas como disse, isso na teoria, na pratica pode mudar, não sei, mas tem pessoas que acham necessario, outras não, quando eu tiver com essa experiencia profissional e ja ter desenvolvido todo um sistema sem tais ferramentas posso mudar totalmente de opinião !

Não foi eu quem criou o Tópico, mas gostaria de mais opiniões a respeito do assunto, pra poder ter uma visão mais geral, se isso realmente acontece com todos, ou melhor, se todos acham que assim é melhor.

Abraços[/quote]
Cara, euy enxergo as coisas + ou - dessa forma…

Toda indústria evolui de forma natural passando por etapas de elucidação durante sua evolução. Outro dia conversando com um amigo meu que já está a quase 40 anos na área, ele estava me contando sobre como alguns posts que ele andou lendo sobre práticas ágeis (lembro aqui que na Web existe de tudo e é claro que ele não perdeu tempo filtrando, só leu por ler) ele já praticava em alguns de seus projetos lá pela década de 70 - 80.

A própria Engenharia de Software, hoje amplamente aceita e divulgada como verdade absoluta pela academia, tal como é em sua essência, veio com o intuito de organizar a casa em Projetos de Software, que falhavam em uma larga escala de vezes, gerando trauma no mercado. Quando a ES chegou, também gerou essa gama de discussões acaloradas na comunidade, sobre o que era “CERTO” e “ERRADO” no Desenvolvimento de Software.

Claro, após esse período, a Engenharia de Software foi aceita na comunidade como a ciência que resolveria o problema dos fracassos da área de DS. Alguns fatores surgem aqui:

  • Como acontece em todas as ocasiões, sempre que uma metodologia ou ciência entra em evidência ou se torna amplamente aceita, começam a aparecer os oportunistas de plantão que começam a introduzir nomes e siglas para ganhar algum $$ com a proposta;

  • Sempre aparecem os evangelizadores de tais práticas que as colocam em um pedestal e fundam a igreja da metodologia e se transformam em verdadeiros pastores, onde quem falar alguma coisa contra a santíssima metodologia, vai pro inferno;

  • Sempre aparecem a gama de “profissionais” que simplesmente vão de acordo com as pregações desses pastores e não conseguem montar uma opinião própria;

  • Sempre existirão os críticos que querem matar o pastor e não tem uma abordagem prática melhor, além de criticar;

E GRAÇAS A DEUS, ALÁ, ELEFANTE BRANCO, EVOLUÇÃO, (coloque aqui o que você acredita), enfim…

  • Sempre existem aqueles que sabem absorver o que a nova discussão gerou de bom e continua tentando evoluir a idéia;

Houve uma época em que essa idéia de se gerar a documentação, foi largamente aceita como única alternativa para evitar o fracasso de projetos de Software que eram “desorganizados” e a tal da documentação e modelagem viriam pra salvar a pátria.

Acontece que mesmo adotando tais métodos, projetos de software continuaram e continuam falhando de forma miserável e agora com um agravante, perde-se um tempo absurdo construindo artefatos que dizem conter as regras do Sistemas, mas que de tão defasados e inconsistentes que estão, acabam gerando ainda mais frustação.

Perceba que quando falamos em regras de um Sistema, estamos falando de uma coisa bem séria e que a experiência ainda vai lhe ensinar: “O que um Sistema deve fazer, deve ser definido pelo cliente e em 99,999999% dos casos, o cliente não sabe o que quer, ou se sabe, quando vê o Software funcionando muda de opinião.”.

Aí perdemos tempo colocando todas as idéia desse cara em um calhamaço de papel, com idéias retiradas de uma ou outra conversa que tiveram com um cara que muitas vezes nem será o cara que vai usar o Sistema e quando a primeira versão do Software é gerada e mandada pra ser homologada, o cara diz que não está atendendo.

Aí bate o desespero de dizer “como não ? Perdemos 6 meses docuimentando o Sistema, nós criamos o Diagrama de Casos de Uso e vocês assinaram o documento de Requisitos.”.

Daí percebemos que palavras em um papel, não é Software. Palavras podem ser ambíguas, diagramas mais ainda.

Começa então a fase do inferno do projeto. Como perdeu-se tempo lá no início, precisa-se correr atrás do preju e alguns sintomas aparecem nessa fase:

  • Stress da equipe que agora começa a perder suas madrugadas, seus fins de semana, seus feriados, etc. em horas extras pra poder recuperar o tempo perdido;

  • Caça aos culpados, onde analistas põe a culpa nos programadores que não desenvolveram o que foi especificado e programadores que acusam analistas que não documentaram de forma correta;

  • Gerentes de projeto mirando sua metralhadora de acusações para todos os lados querendo tirar o seu da reta;

  • Cliente insatisfeito, se sentindo enganado pela consultoria;

Existem algumas outras, mas acho que já deu pra entender. E eu lhe pergunto, isso é culpa do processo ???

Na minha visão metade da culpa só é do processo, só a metade onde o processo parece que esquece que quem os coloca em prática, são pessoas e pessoas são difíceis.

Há muito mais coisas envolvidas em um processo de desenvolvimento de Software, que estimativa e nem documento algum são capazes de mensurar.

Essas práticas http://manifestoagil.com.br/ tentam trazer uma nova abordagem para a ES como forma de evolução.

Ao pesquisar sobre, lhe recomendo 2 coisas:

1 - Perceber que nem tudo o que já foi evoluído foi jogado fora e que documentos e modelos ainda têm o seu espaço no processo;

2 - Isso é o que temos hoje, inclusive já com algumas vertentes pregando idéias diferentes;

E assim a vida segue seu ciclo. É o modelo perfeito ??? Não sei, só sei te dizer que no final das contas foi o modelo que casou com o que eu sempre critiquei no modelo anterior.

Minha dica é que você estude, se aperfeiçoe, critique o que ver de errado e busque soluções alternativas, mesmo aquelas que são ensinadas na sua faculdade.

A academia está bastante defasada nas disciplinas de desenvolvimento de software em relação ao mercado, por isso use e abuse da faculdade somente pra extrair conceitos.

Saiba que ainda não acabou por aí e que “Metodologias Ágeis” foi mais um nome dado para ganhar algum $$ em cima do novo padrão que a indústria está tentando implantar e que logo logo irá evoluir para algo ainda melhor e que passará pelo mesmo ciclo que eu coloquei no início do Post.

Espero ter sido claro cara e qualquer coisa que você queira discutir sobre o assunto, será bem vindo.

Abs []

Diego, cuidado para não se tornar o pastor dessas duas metodologias…

Perceba que no documento da 37signals eles deixam bem claro que essa é a forma deles desenvolverem o software deles e que não há certo ou errado e sim que é assim que ELES fazem.

Os softwares da 37signals são bem específicos.

Uso as metodologias deles para aplicar em uma Startup que estou criando, mas nem sonho em usá-los para o Sistema ao qual dou manutenção em um grande Banco da minha cidade.

Temos que acima de tudo, saber que em desenvolvimento de Software existem os mais diversos cenários e que o que é verdade em um cenário, pode não ser no outro.

E assim, seguimos, sempre procurando desenvolver da melhor forma possível sem receita de bolo.

Abs []

[quote]Diego, cuidado para não se tornar o pastor dessas duas metodologias…

Perceba que no documento da 37signals eles deixam bem claro que essa é a forma deles desenvolverem o software deles e que não há certo ou errado e sim que é assim que ELES fazem.

Os softwares da 37signals são bem específicos.

Uso as metodologias deles para aplicar em uma Startup que estou criando, mas nem sonho em usá-los para o Sistema ao qual dou manutenção em um grande Banco da minha cidade.

Temos que acima de tudo, saber que em desenvolvimento de Software existem os mais diversos cenários e que o que é verdade em um cenário, pode não ser no outro.

E assim, seguimos, sempre procurando desenvolver da melhor forma possível sem receita de bolo.

Abs [][/quote]

Sim, eu concordo com você. Eu acho que não existe uma melhor metodologia, e sim uma melhor metodologia para determinada situação. Não sei se fui bem claro, mas eu disse algo parecido com: “Pra quem acha que UML é uma OBRIGAÇÃO…”. O que eu quis dizer é: Sim existe lugar para UML. Mas UML ou “Documentação extensa e formal” não é a melhor solução para TODAS as aplicações e portanto não deve ser tratada como bala de prata.

Perfeito cara… Eu que interpretei mal o restante de seus textos…

De fato, o cuidado que devemos ter ao nos tornarmos adeptos de metodologia X ou Y ou especialistas em Tecnologia A ou B, é justamente nos tornarmos cegos às novidades e evoluções da nossa área.

Abs []

Juro que pensei que este tópico iria descambar, até o momento pelo menos.

Parabéns!

Gostei bastante do que você escreveu adriano_si.

flws

adriano_si, o que teu amigo falou é verdade; o pior é que depois de tanto tempo muitos, senão a maioria, não entenderam a idéia.

Dizem que utilizam “Metologias Ágeis” como desculpa para fazer a maior bagunça no projeto - e ainda acham que é bacana e moderno.

Só quem pega um projeto destes para fazer ajustes sabe exatamente do que estou falando.

flws

[quote=AlexandreGama][quote]
Luiz Augusto Prado

Concerteza antes de passar para um ferramenta case, o papel e lápis “comem solto”, porém, após o esboço, creio que seria meio ruim você passar para um banco, por exemplo, todas as tuas ideias de relacionamentos, tanto é que tu teria que ficar umas boas horas amarrando as tabelas na mão…
[/quote]

Na verdade o seu banco deveria seguir a modelagem do seu sistema, e não o contrário. Programar orientado a banco de dados é perigoso não? :wink:

Abs![/quote]

Por que perigoso?
Quando tenho que fazer um sistema (modulo), de acordo com o que o cliente deseja (Caso de uso), a primeira coisa que faço é extrair as tabelas e relacionamentos necessarios para que aquele sistema funcione. Apartir desse modelo pronto que eu passo para as classes.

[quote=x@ndy][quote=Luiz Augusto Prado]Eu uso muito papel e lápiz, “Giz” e lousa.
Em um ambiente onde outros podem sugerir melhorias isso é muito interessante pois cada um pode simplemente pegar seu modelo em UML e fazer as alterações e distribuir a idéia.

Eu tentei alguns mas vi que é demorado ficar desenhando, apagando, arrastando, jogando em tela, redimensionando…
Prefiro o papel e o lápiz
[/quote]

Essa é a melhor forma de usar UML. Para mim a UML deve ser usada para para divulgar idéias, para comunicar algo e não modelar um sistema inteiro. Isso é coisa de analista que não sabe nada de programação e que acretida que pode modelar um sistema inteiro com UML. O problema é que UML não da uma indicação clara das responsabilidades das classes e, com exceção de projetos muito simples, haverá problemas de comunicação, pois o cara que criou o modelo poderia querer uma coisa mas foi desenvolvida outra! Um exemplo é são os padrões State e Strategy que são identicos, mas fazem coisas completamente diferentes. Segue abaixo os diagramas dos dois, para uma comparação. Esse é um exemplo claro do problema de comunicação que pode surgir. Outro problema é a defasagem da implementação x documentação. Uma coisa pode paracer muito boa no papel mas não vai funcionar tão bem quando implementado, então é feito uma modificação no código que não é propagado para documentação.

A UML é um recurso poderoso, mas deve ser usada com moderação e de maneira apropriada!

[/quote]

Esse é um problema chato. O UML é uma idéia muito interessante, mas os recursos que as maquinas oferecem para desenharmos o UML é muito lento em comparação com o lapiz e papel. Bem, infelizmente isso ocorre comigo.
Esse mesmo problema também ocorre quando tenho que escrever sobre matemática. Consegue imaginar vc lembrando uma tecla de atalho pra cada um dos milhares de simbolos da matemática?
Estou começando a voltar para o velho lapiz, papel e borracha.

É perigoso pq você não sabe exatamente o que precisará e não sabe como será o seu design. O design do seu código te dirá exatamente o que fazer e onde armazenar. Se vc desenvolver com TDD por exemplo, as suas tabelas serão criadas a medida que cada funcionalidade sua nascer, ou seja, você mantem as coisas simples e só desenvolve aquilo que realmente precisa. Se você trabalhar com iterações por exemplo, com integras contínuas e com integração contínua, verá que o seu esforço tem q ser concentrado naquilo que precisa entregar, o que foge do modo orientado a banco de ser.

É regra para o mundo? não! Funciona? Muito bem!

Abs!