/* Delphi-like function para converter string para inteiro*/function StrToInt($value){ return (int)$value;}/* Funcao para validar CPF. Baseado na funcao validaCPF (Delphi) do PoliGestor da empresa PolidadosInformatica Ltda.*/function validaCPF($cpf){ $CPFInvalido = array ('00000000000', '11111111111', '22222222222', '33333333333', '44444444444', '55555555555', '66666666666', '77777777777', '88888888888', '99999999999'); $digitado = ""; $calculado = ""; $Result = false; try { // verifica CPF invalido for ($i = 0; $i < 9; $i++) if ($cpf == $CPFInvalido[$i]) return false; if ($cpf != ''){ $n1 = StrToInt($cpf[0]); $n2 = StrToInt($cpf[1]); $n3 = StrToInt($cpf[2]); $n4 = StrToInt($cpf[3]); $n5 = StrToInt($cpf[4]); $n6 = StrToInt($cpf[5]); $n7 = StrToInt($cpf[6]); $n8 = StrToInt($cpf[7]); $n9 = StrToInt($cpf[8]); $d1 = $n9*2+$n8*3+$n7*4+$n6*5+$n5*6+$n4*7+$n3*8+$n2*9+$n1*10; $d1 = 11-($d1 % 11); if ($d1>=10) $d1 = 0; $d2 = $d1*2+$n9*3+$n8*4+$n7*5+$n6*6+$n5*7+$n4*8+$n3*9+$n2*10+$n1*11; $d2 = 11-($d2 % 11); if ($d2>=10) $d2 = 0; $calculado = $d1 . $d2; $digitado = $cpf[9] . $cpf[10]; return ($calculado == $digitado) ? true : false; } } catch (Exception $e) { $Result = false; }}?> A Engenharia de Software (ES) evoluiu muito nos ultimos anos para adequar-se a uma nova dinamica em que a sociedade e as organizacoes estao cada vez mais conectadas.Com as crescentes pressoes impostas por inovacao, produtividade com prazos cada vez mais curtos, flexibilidade, melhorias no desempenho, funcionalidade e qualidade dos produtos desenvolvidos, a ES como se conheceu a 15 anos atras teve que se reciclar, varias vezes por sinal, sem que talvez pudessemos ter percebido.Interessante observar que nesta rapida evolucao, varias metodologias, processos e ferramentas surgiram para dominar a complexa atividade que e construir software com qualidade. Algumas sao usadas ate hoje mas muitas foram esquecidas ou substituidas por algo melhor no mercado.Iniciei minha carreira na Informatica pouco tempo depois da UML (Unified Modeling Language) ser aprovada como padrao pelo OMG (Object Management Group). Foi uma fase de grande aprendizado, diga-se de passagem. Nessa epoca, cursava Tecnico em Informatica, o paradigma dominante era Cliente/Servidor e as linguagens de programacao top da minha cidade eram Delphi e Visual Basic.Trabalhava em uma empresa RAT Bematech que desenvolvia sistemas de Gestao Empresarial (Ex.: controle de estoque, financeiro, boleto bancario, pontos de venda (PDV) e TEF discado) para a regiao de Santa Maria e arredores no RS. Nesta epoca, a Internet era discada e os grandes clientes pagavam muito caro para colocar links de conexao de 800k para integrar as suas lojas.Nesse contexto, o que mais me marcou foi com certeza a metodologia e o processo de desenvolvimento de software utilizado na empresa em que trabalhava: a regra era seguir UML a risca e produzir muita documentacao. Muitas vezes os desenvolvedores discutiam muito sobre a real necessidade de tantos artefatos pois o framework utilizado ja fazia muita coisa. Alem do mais, as ferramentas bem como o hardware da epoca eram muito lentos e os analistas perdiam muito tempo aguardando a ferramenta de modelagem UML compilar o portal da documentacao.Desta epoca ate o presente, quase tudo mudou e na minha opiniao para melhor. Pode-sedizer que houve um amadurecimento da TIC. Hoje e comum as empresas pensarem de forma Agil. Ser Agil significa dizer que os engenheiros vao produzir somente os artefatos que podem agregar