O programador profissional precisa de testes unitários?  XML
Índice dos Fóruns » Arquitetura de Sistemas
Autor Mensagem
rodrigoy
GUJ Ranger
[Avatar]

Membro desde: 18/04/2006 01:06:28
Mensagens: 758
Localização: São Paulo
Offline

microfilo wrote:
CMMi 1.2 wrote:
SP 1.4 Maintain Bidirectional Traceability of Requirements

Maintain bidirectional traceability among the requirements and work products.

The intent of this specific practice is to maintain the bidirectional traceability of requirements for each level of product decomposition. (See the definition of ?bidirectional traceability? in the glossary.) When the requirements are managed well, traceability can be established from the source requirement to its lower level requirements and from the lower level requirements back to their source. Such bidirectional traceability helps determine that all source requirements have been completely addressed and that all lower level requirements can be traced to a valid source.

Então isso necessariamente é algo ruim?


Ruim? Se você ver, as idéias do CMMi não são todas ruins, a maneira como o mercado interpreta é que é um cancer. De qualquer forma:

1. A preocupação por uma matriz de rastreabilidade "cheira (ou fede) waterfall": Dá a entender que o requisito levará meses para ser implementado. A preocupação com "será que atendemos o requisito?" demonstra também que o usuário demorará meses para ver a aplicação.

2. Essa visão é antiquada: Como falei, temos várias alternativas de demonstrar os requisitos de modo executável. Assim, o "source requirement" é o mesmo que o "lower level requirements". Pode ter certeza que uma consultoria CMMi não vai aceitar um @Valid do hibernate validator como "source" de requisitos. Vc compreende? Se você usar os benefícios da tecnologia você não precisa de rastreabilidade bidirecional. E se você não tem essa rastreabilidade, segundo o SEI, seu processo não é maduro! Não soa estranho?

3. Matriz de rastreabilidade "cheira escopo-fechado": É uma presunção forte que os "source requirements" são verdade lavrada em cartório. Requisitos são incertos até o sorriso do usuário aparecer. Esse "completely addressed" dá a entender que os requisitos não vão mudar.

4. Teoria da Conspiração: Passei por 2 implantações de CMMi e meu sentimento foi que era meio impossível um mortal manter uma matriz de rastreabilidade na mão. Talvez uma matriz de Sudoku 100X100 seja mais fácil. No fim, vinha aqueles vendedores de fabulosas ferramentas que "faziam isso sozinho pra você" por alguns milhares de dólares. Será que é por isso que eles pedem essa matriz?

[editado só correções ortográficas confusas]

This message was edited 1 time. Last update was at 04/03/2008 16:21:13


Rodrigo Yoshima
www.ASPERCOM.com.br

Próximas Turmas:
São Paulo: Scrum 28/agosto | OOAD-UML 13/setembro

Débito Técnico Blog: blog.aspercom.com.br
[WWW]
s4nchez
Virtual Machine Man
[Avatar]

Membro desde: 05/06/2006 11:35:55
Mensagens: 654
Localização: London, UK
Offline

Thiago Senna wrote:
s4nchez wrote:Se você engole qualquer coisa só pra fechar contrato ou acredita que seu cliente sabe mais de desenvolvimento do que você, só posso desejar boa sorte na hora de entregar o seu produto final.


Olá s4nchez,

como assim engolir? Na realidade não vejo muita opção. Pelo menos tenho visto mais clientes que acham que sabem mais que o a equipe de desenvolvimento do que desenvolvedores agilistas. O único lugar que vejo desenvolvedor agilista é em fórum de discussão, reuniões e eventos. Fora isso, conto nos dedos da mão direita os programadores que conheci pessoalmente que ao menos usassem TDD.

Enfim, qual é a dica para se dar ao luxo de não engolir as situações citadas pelo Rubem?


A questão é que muitas vezes os dois lados que fecham um contrato de software não sabem tanto assim sobre software, justamente porque estão mais preocupados com decisões comerciais. Neste caso cabe ao responsável interno tentar fazer valer as opiniões de quem é responsável pelo desenvolvimento em si. Pra isso é que serve ter poucos desenvolvedores ótimos do que uma cacetada de desenvolvedores medíocres, como normalmente acontece. Se a cultura de desenvolvimento da empresa não for ditada por desenvolvedores, vai ser ditada por quem?

Lógico que dá para flexibilizar algumas coisas, mas esta história de "fazemos qualquer negócio" é que mata muitas software houses hoje em dia: a cultura de desenvolvimento é ditada pelos clientes, e cada novo cliente é uma nova dor de cabeça. De que adianta fechar centenas de contratos se vai acabar como as empresas de três letrinhas?

Ivan Sanchez | coding dojo | blog | twitter
[WWW]
fabio.patricio
GUJ Master

Membro desde: 04/01/2004 02:51:33
Mensagens: 1512
Localização: Porto Alegre - RS
Offline

microfilo wrote:quem somos nós para falar que eles não têm?


Qual o problema de dizer que o cliente esta errado?
Mesmo que tu esteja como outsourcing dentro do cliente, dar sugestões nunca tirou os dedos de ninguem. Agora se esta como consultoria, ver um fato errado e se omitir é pedir pra mais cedo ou mais tarde ser xingado pelo cliente. Já vi isso com os proprios olhos....uma consultoria X que sabia que tava errada mas não quiz falar pro cliente, o cliente contratou a consultoria Y que avisou ele do problema....advinha o que aconteceu com a consultoria X?


Fabio Patricio
http://blog.wansoft.com.br

[WWW] [MSN] [ICQ]
fabio.patricio
GUJ Master

Membro desde: 04/01/2004 02:51:33
Mensagens: 1512
Localização: Porto Alegre - RS
Offline

Paulo Silveira wrote:Esta prática é adotada na sua empresa?


Um sonoro SIM. Estamos até levando para nossos clientes muitas das práticas.

cv wrote:
Paulo Silveira wrote:Quais os resultados que você obteve?


Otimos. O design das aplicacoes eh assustadoramente melhor, e todo tipo de metrica que a gente ja passou nos projetos eh melhor de maneiras significativas (e a TW lancou um whitepaper sobre essas metricas que eu nao estou conseguindo achar agora por estar razoavelmente bebado/cansado/sem saco).


Concordo 100%.

Cv ja curou a ressaca pra passar o paper?

]['s

Fabio Patricio
http://blog.wansoft.com.br

[WWW] [MSN] [ICQ]
jbernab
What is classpath?
[Avatar]

Membro desde: 24/07/2006 12:01:41
Mensagens: 6
Localização: São Paulo - SP
Offline

Pessoal,

Então recapitulando, pode se dizer que o programador que não faz testes unitários não é profissional?

Já perseveram quanto tempo vc deixou de usar em diagnostico de falhas e debugging desde que começou a usar TDD?

Abraços,
Juan.

www.TeamWare.com.br
Developing Highly Effective
Software Development Teams
[WWW] [MSN]
Emerson Macedo
Virtual Machine Man
[Avatar]

Membro desde: 01/08/2006 16:55:28
Mensagens: 688
Localização: Rio de Janeiro - RJ
Offline

Juan,

Essa afirmação é bem forte. Eu li isso uma vez no blog do Phillip. Eu, apesar de ser totalmente adepto não usaria uma frase como esta, pois a maioria dos que estão aqui no forum defendendo o uso de testes (inclusive eu), já programou por muito tempo sem o uso destes, e nem por isso não eramos profissionais. O ponto importante, que é o que eu acho que ele quiz dizer é que a abordagem de testes automatizados tem sido martelada faz tempo e o pessoal nem se interessa pelo assunto. Ao menos se as pessoas tentassem ver como que funciona, os ganhos, etc. Essas pessoas preferem simplesmente ignorar as coisas e usar argumentos totalmente evasivos contra a prática de testes automatizados.

Espero que essa mentalidade mude.

Emerson Macedo Leite
PMP - Ping-pong Master Player
CSM - Counter-Strile Manager
http://codificando.com

"Porque, assim como o relâmpago sai do oriente e se mostra até o ocidente, assim será também a vinda do filho do homem." - Mateus 24:27
[Email] [WWW] [Yahoo!] [MSN] [ICQ]
nadele
Debugger

Membro desde: 14/02/2008 13:28:16
Mensagens: 62
Offline

Essa discussão é realmente inútil, como muitos testes unitários por aí que não testam nada e são feitos por estagiários de saco cheio como o Leonardo falou!


Então recapitulando, pode se dizer que o programador que não faz testes unitários não é profissional?


Cara, primeiro defina PROFISSIONAL. O que é um PROFISSIONAL? Escolha abaixo:

1) É um cara que tem um emprego e ganha para programar?

2) É um cara que ganha bastante para programar, acima da média do mercado?

3) É um cara foda (ou que se acha foda) como algumas figurinhas marcadas desse forum?

4) É um cara que tem um cargo sênior de programação?

5) É um cara que tem uma carreira longa e comprovadamente de sucesso?

Falar que um programador que entrega uma linha de código sem testes UNITÁRIOS é irresponsável, é o mesmo que falar que o cara que faz um programa no notepad é irresponsável.

Agora se algumas pessoas acham que TDD, JUnit e essas coisas agilizam a implementação de um projeto então sejam felizes! So be it! Mas isso não tem nada haver com qualidade...

Só para lembrar o pessoal: existem outras formas de testar além do teste unitário, ok? Pensem nisso só um pouquinho...

This message was edited 3 times. Last update was at 05/03/2008 15:28:08

Mauricio Linhares
Moderador
[Avatar]

Membro desde: 09/01/2005 23:28:22
Mensagens: 3717
Localização: João Pessoa, Paraíba - Brasil
Offline

jbernab wrote:Então recapitulando, pode se dizer que o programador que não faz testes unitários não é profissional?


Duvido muito, especialmente porque testes unitários não garatem que o sistema funciona, apenas as unidades. Existem muitos casos aonde testes unitários não valem o esforço (como em sistemas embarcados ou próximos demais ao hardware), aonde estes funtionais e de integração são muito mais eficientes e baratos.

Testes unitários tem uma importância ímpar na hora de ajudar você a definir o design dos seus objetos, mas eles não são a única solução pra testar nem garantir a qualidade de um software.

Meu blog sobre desenvolvimento | My Last.fm | @mauriciojr

Screencast de Introdução a linguagem Objective-C
[WWW]
nadele
Debugger

Membro desde: 14/02/2008 13:28:16
Mensagens: 62
Offline

Sem falar que essa obcessão por testes unitários está levando a Herança para a fogueira da inquisição.

Herança tem sim o seu uso, é importante pra baralho e não é porque no passado você fez um extends Properties (eu também já fiz) é que você vai correr de herança como o diabo corre da cruz.

Um sistema grande e de alto nível sem herança é totalmente inviável. Se você não acredita é porque você nunca fez um sistema/framework realmente sério.

E viva o mengão!

This message was edited 1 time. Last update was at 05/03/2008 15:40:30

aleck
GUJ Ranger
[Avatar]

Membro desde: 27/03/2006 08:08:33
Mensagens: 843
Localização: Rio de Janeiro
Offline

nadele wrote:

Só para lembrar o pessoal: existem outras formas de testar além do teste unitário, ok? Pensem nisso só um pouquinho...




Poderia citar alguns exemplos mais confiáveis que se encaixam em todas as fases de desenvolvimento ?

Obrigado!





Desenvolvedor iOS/Android
http://blog.alexandresoli.com.br
@alexandresoli
[WWW] [MSN]
louds
Moderador
[Avatar]

Membro desde: 29/04/2003 23:09:15
Mensagens: 4061
Localização: São Paulo
Offline

nadele wrote:
...
Só para lembrar o pessoal: existem outras formas de testar além do teste unitário, ok? Pensem nisso só um pouquinho...



Não estamos falando exclusivamente de testes unitários, ninguém defende isso. Mas um programador que não usa de testes automatizados é um irresponsável fanfarrão. É impossível construir um sistema extremamente complexo no prazo e com qualidade sem usar testes automatizados - desafio qualquer um a me mostrar um caso que prove o contrário disso. Não estou falando de sistemas grandes, mas sim de sistemas complexos.

Um micreiro que diz ser possível construir tal sistema sem automação de testes não merece ser chamado de desenvolvedor, muito menos profissional.

Não consigo entender por que raios precisa de mais argumentos que a porcaria da realidade para mostrar que testes automatizados são extremamente saudáveis a qualquer projeto. Ou você automatiza, ou você corre atrás do próprio rabo o tempo todo.



http://www.kumpera.net/blog/
http://www.mono-project.com/
"Each individual should work for himself. People will not sacrifice themselves for the company. They come to work at the company to enjoy themselves."
Soichiro Honda
[ICQ]
Fabio Kung
JavaEvangelist

Membro desde: 08/03/2004 08:24:47
Mensagens: 445
Localização: São Paulo
Offline

nadele wrote:Um sistema grande e de alto nível sem herança é totalmente inviável. Se você não acredita é porque você nunca fez um sistema/framework realmente sério.

Bom, se é para dar opiniões, a minha é totalmente o contrário. Hoje em dia só uso herança quando sou obrigado (a ferramenta que eu estou usando me obriga).

Mas isso é outra discussão...

Procurando por oportunidades de emprego?
OndeTrabalhar.com
OndeTrabalhar.com Java?


http://blog.caelum.com.br


Fabio Kung
[WWW] [MSN] [ICQ]
nadele
Debugger

Membro desde: 14/02/2008 13:28:16
Mensagens: 62
Offline


Mas um programador que não usa de testes automatizados é um irresponsável fanfarrão. É impossível construir um sistema extremamente complexo no prazo e com qualidade sem usar testes automatizados - desafio qualquer um a me mostrar um caso que prove o contrário disso. Não estou falando de sistemas grandes, mas sim de sistemas complexos.


Eu acho o JForum bastante complexo e até onde eu sei ele nunca teve testes automatizados. Agora na versão 3.0 que parece que ele terá testes automatizados...

Ach que eu já descobri o que é um programador PROFISSIONAL: resposta 3)

!!! Get Real !!!

This message was edited 1 time. Last update was at 05/03/2008 16:43:29

Luca
Moderador
[Avatar]

Membro desde: 06/09/2002 14:30:10
Mensagens: 5796
Localização: São Paulo/SP ou Paraty/RJ
Offline

Olá

Programador profissional é aquele que faz programa para viver. Os que fazem programas ou frameworks para aprender ou para ter seu próprio modo de fazer as coisas, são diletantes.

[]s
Luca

This message was edited 1 time. Last update was at 05/03/2008 16:45:14


Dare Obasanjo (Program Manager at Microsoft)
"The folks I know from across the industry who have to build large scale Web services on the Web today at Google, Yahoo!, Facebook, Windows Live, Amazon, etc are using RESTful Web services. The only times I encounter someone with good things to say about WS-* is if it is their job to pimp these technologies or they have already "invested" in WS-* and want to defend that investment."


CEP, JMS, JMX e coisas afins (ou não)
http://lucabastos.blogspot.com/
[Email] [WWW]
nadele
Debugger

Membro desde: 14/02/2008 13:28:16
Mensagens: 62
Offline

Luca wrote:

Programador profissional é aquele que faz programa para viver. Os que fazem programas ou frameworks para aprender ou para ter seu próprio modo de fazer as coisas, são diletantes.



A vida seria muito chata se isso fosse verdade. E o pior é que muitas vezes o pessoal do segundo grupo acaba ganhando mais e conseguindo mais sucesso e realização do que o pessoal do primeiro grupo. Mas não são profissionais, porque um programador profissional é ....

This message was edited 5 times. Last update was at 05/03/2008 17:29:31

 
Índice dos Fóruns » Arquitetura de Sistemas
Ir para:   
Powered by JForum 2.1.8 © JForum Team