
Marcus Paulino (marcus_paulino@hotmail.com) tem 15 anos de experiência na área de desenvolvimento e arquitetura de software e banco de dados, dos quais 6 anos dedicados a Visual Basic, 2 anos com ASP clássico e os últimos 7 anos com .NET. Também atua como DBA para Oracle e SQL Server. Vasta experiência com migração de sistemas VB/Access para .NET/SQL Server e desenvolvimento de interfaces para integração de sistemas utilizando plataformas e bancos de dados distintos. 2004 Fort Worht Police Department Civilian Employee of the Year.
Guinther Pauli (GP) – O Marcus Paulino é um grande desenvolvedor .NET que trabalha nos Estados Unidos para o departamento de polícia de Fort Worth, no Texas. Nesta entrevista vamos conhecer um pouco do trabalho do Marcus, e principalmente, observar como os projetos são desenvolvidos por lá, trocar experiências sobre arquitetura, tecnologias, metodologias e muito mais.
GP - Marcus, agradeço sua participação. Vamos começar essa entrevista falando um pouco sobre você e seu trabalho.
Marcus Paulino (MP) - Sou natural do Rio de Janeiro, mas já moro em Fort Worth, Texas, há 10 anos. Trabalho para o Fort Worth Police Department como Senior Developer/Analyst há 5 anos, tendo sido voluntário durante 1 ano inteiro antes da minha contratação. Também trabalhei por 2 anos para uma empresa chamada Insala como Web Developer e depois promovido a Business/System Analyst.
GP - Em que projetos já trabalhou usando .NET, e em que projeto está trabalhando atualmente? Quais as tecnologias do .NET foram utilizadas nestes projetos?
MP - Comecei a trabalhar com .NET 1.1 em 2002, quando fui contratado pela Insala. Até então eu só tinha experiência com ASP clássico e praticamente tudo que eu fazia era em VB 6. Tudo que desenvolvíamos era web-based e eu rapidamente me familiarizei com .NET, sendo que a maioria dos meus projetos eram em ASP.NET por causa do meu background. Meus maiores projetos enquanto na Insala foram um webmail que era integrado facilmente integrado/adicionado aos vários produtos da empresa, e um report builder utilizando XML para a estrutura do relatório e GDI para criar gráficos e estatísticas em real-time. O webmail utilizava um componente .NET adicional que compramos por causa variedade de recursos oferecidos. A empresa mesmo era responsável por hosting, a conta de e-mail em nossos servidores, e o webmail possuía todas as características de uma conta normal, tais como: agenda de endereços, gerenciamento de anexos, opção para formatação de mensagens em HTML entre outras. Já o report builder permitia usuários a criar seus próprios relatórios selecionando campos do banco de dados, determinando critérios de filtragem e ordenação, Tudo isso era armazenado em arquivos XML individuais, por usuário, e ainda havia a opção de incluir gráficos que eram criados baseados em estatísticas, usando GDI.
GP - Como iniciaram os trabalhos no departamento de polícia?
MP - Eu fui contratado em 2004 principalmente para desenvolver um portal de informações e aplicações interno, rodando em nossa intranet. Como responsável principal pelo projeto, apenas o conceito me foi apresentado pelos comandantes e toda a parte técnica ficou por minha conta. Por causa dos meus 2 anos de experiência com .NET na Insala e levando em conta que todos os setores da polícia estavam finalmente integrados à rede, foi uma decisão óbvia de desenvolver em .NET 1.1 usando SQL 2000 como banco de dados. Esse portal utiliza Windows Authentication para validar os usuários, uma vez que cada empregado tem seu próprio login e e-mail, fazendo com que o portal seja “login-free”. Essa informação é checada contra nosso banco de dados de pessoal, e a partir daí é determinado que tipo de acesso o usuário possui. Alguns acessos são baseados em patente. Officers possuem um tipo de acesso básico, Detetives outro tipo de acesso, Sargentos, Tenentes, Capitães até o Chefe de Polícia. Todo acesso é controlado através de arquivos XML usados pelo menu principal do portal. Dependendo do seu nível de acesso, você tem ou não determinados menus. Em 2006 nós migramos o portal para .NET 2.0 e no início desse ano nos migramos para 3.5 (Visual Studio 2008) e os bancos de dados de SQL 2000 para SQL 2005. Nós temos atualmente em torno de 3.000 usuários e uma média de 35.000 acessos por mês, sendo que esperamos que o número de acessos aumente consideravelmente, pois agora o portal pode ser acessado diretamente dos carros de polícia através de Wifi/VPN. Para este tipo de acesso, nós temos uma versão “light” do portal, onde retiramos todos os tipos de gráficos e mídia (vídeos principalmente) e utilizamos componentes básicos de menu ao invés dos “sliding” e “fading”. O acesso via WiFi/VPN é identificado através do IP do cliente. Trabalhando juntamente com nosso pessoal de rede e Motorola (computadores dos carros) nós alocamos um determinado range de IPs para essas conexões, o qual foi adicionado ao Web.Config. Caso o processo rodando no servidor identifique a conexão vindo de um desses IPs, os componentes ascx de menu, cabeçalho e rodapé automaticamente mudam para a versão “light”, e o XML controlador do menu automaticamente “esconde” os menus que contêm mídia, na intenção de diminuir o consumo bandwidth WiFi dado o grande número de carros que possuímos. Com essa solução, conseguimos manter apenas um portal ao invés de ter que desenvolver um totalmente novo só para ser utilizado via WiFi/VPN, mantendo o mesmo endereço HTTP que todos os usuários estão acostumados.
GP - Como foi o processo de migração, em 2006, do portal para o .NET 2.0? Vocês utilizaram novos recursos que foram introduzidos no ASP.NET 2.0, ou simplesmente recompilaram o sistema na nova versão do framework? Quais foram as principais dificuldades encontradas?
MP - A conversão foi toda feita pelo próprio VS 2008 e foi bem mais tranquila do que a nossa tentativa com o VS 2005. Quando experimentamos com o 2005, várias páginas tiveram sérios problemas e muitas das coisas, especialmente relacionadas a ADO.NET, deveriam ser corrigidas manualmente. Assim sendo nós desistimos da ideia inicialmente até que tentamos novamente com o 2008 e aí sim foi bem tranquilo. Muito poucas páginas tiveram que ser manualmente corrigidas. O único problema mesmo foi com os add-ons do Crystal Report que pararam completamente de funcionar, até que atualizamos todas as DLLs e re-adicionamos os componentes de volta ao projeto.
GP - Como foi a migração do SQL Server 2000 para o SQL Server 2005? Algum recurso de migração foi utilizado? Algum novo recurso do SQL 2005 foi empregado ou simplesmente foi portado para rodar na nova versão?
MP - A migração dos bancos de dados foi totalmente gerenciada pelos DBAs do departamento de TI da prefeitura. Nossos servidores (web e BD) são mantidos por eles. Nós (polícia) temos acesso de administradores, mas todas as atualizações e migrações necessárias são realizadas por eles. Nós mesmos fazemos o design dos bancos de dados, criamos tabelas, PKs, indexes, triggers, relacionamentos etc.
GP – No portal, qual foi a metodologia de desenvolvimento utilizada? Alguma Best Pratice? Enterprise Library? Algum framework de persistência? Foram criadas classes de negócio? Foi feito utilizando multicamadas? O código de acesso a dados estava em uma classe à parte? Como a estrutura da aplicação está organizada? E a Orientação a Objetos como foi empregada?
MP - Nós temos várias classes criadas, tanto para acesso a dados, como, por exemplo, para os diversos worksheets que temos. Com relação à Best Practices, acho que o melhor que posso dizer é que nós utilizamos várias metodologias contidas no livro "Code Complete", documentando cada módulo e mantendo nossos ERDs atualizados e código com o máximo de comentários possíveis.
GP - Os carros então acessam via Wifi o mesmo sistema do portal, que ao ser identificado, gera uma versão mais light. Como é feita essa identificação? Manual ou com recursos do framework?
MP - A identificação é praticamente manual. O portal possui 3 componentes OCX básicos utilizados em todas as páginas (cabeçalho, menu lateral e rodapé), sendo que o cabeçalho possui gráficos e fotos, enquanto o menu e rodapé possuem sliding menus (componente .NET adicional que compramos). O departamento de TI da prefeitura reservou um bloco de IPs específico para serem usados pelas conexões VPN via Wifi nos carros. Esse bloco de endereços de IP está configurado no Web.Config, e os 3 componentes checam o IP do cliente para ver se está dentro do bloco reservado. Se for identificado que a chamada está vindo de uma conexão VPN, o código então constroi o componente sem gráficos, fotos, sliding menus e qualquer outro conteúdo que consuma bandwidth desnecessária. Menus que fazem links para páginas com áudio, vídeo e fotos são simplesmente ignorados e não aparecem na versão "light".
GP - Existe algum plano de migrar o sistema ou mesmo desenvolver algum módulo dele, utilizando tecnologias mais recentes, como ADO.NET Entity Framework, LINQ, ASP.NET AJAX 4, Silverlight 3, ADO.NET DataServices, ou mesmo rodar nas nuvens com Azure?
MP - Sim, nós já temos pequenas aplicações "stand alone" utilizando AJAX, por exemplo, e pretendemos aplicar AJAX no portal inteiro. Silverlight não nos interessa por ser um portal interno (intranet) e puramente para aplicações e bancos de dados, sem a necessidade de animações.
GP - Você se sente realizado profissionalmente?
MP - Meu trabalho para a polícia de Fort Worth é bastante interessante e definitivamente o melhor trabalho que já tive, e onde eu pretendo trabalhar durante muitos anos. Uma das coisas que o torna tão interessante, primeiro é o fato de que eu sempre admirei e respeitei o trabalho policial pelo serviço à comunidade. Segundo pelo fato de que eu faço o que gosto e o que escolhi como profissão e carreira. Terceiro pela diversidade de sistemas com os quais eu trabalho e desenvolvo. E quarto pelo acesso que tenho à tecnologia e treinamentos.
GP - Como é trabalhar no departamento de polícia em um país como os EUA?
MP - Pode não parecer, mas quando você desenvolve sistemas para um departamento de polícia, isso envolve várias unidades internas que coletam e geram informações e estatísticas diferentes, como por exemplo, a aplicação que coleta as atividades da unidade de repressão a narcóticos é totalmente diferente da aplicação para SWAT, mesmo com as duas unidades trabalham em conjunto muitas das vezes.
GP - Como hierarquias superiores têm acesso às informações geradas pelo sistema?
MP - O resultado final é a extração de dados estatísticos de todos os bancos de dados, gerando o relatório mensal que é apresentado ao prefeito e câmara de deputados pelo Chefe de Polícia. Cada unidade tem um Analista de Criminalidade que é responsável pelo relatório da unidade, e a unidade de Planejamento e Desenvolvimento coleta todos os relatórios das unidades criando o relatório final do Chefe de Polícia.
GP - Algum trabalho na área de TI é terceirizado?
MP - Como qualquer instituição, o departamento de polícia também possui vários sistemas administrativos que foram da mesma forma desenvolvidos internamente, mas dois de nossos maiores e mais importantes sistemas foram adquiridos diretamente de empresas especializadas no desenvolvimento de tais. Um é o nosso Computer Aided Dispatch (CAD), desenvolvido pela TriTech usando SQL Server 2005. O outro é o nosso Automated Report System (ARS) e Records Management System (RMS), desenvolvido pela Tiburon usando Oracle 9i. O primeiro sistema é para a comunicação e despacho de policiais captando todas as informações relacionadas à chamada por serviço de polícia. Já o segundo sistema é responsável por gerenciar toda a informação gerada pelo evento da chamada inicial, significando informação de vítimas e suspeitos, policiais envolvidos na chamada, detetives investigando o evento e qualquer relatório suplementar que venha a ser adicinado ao caso.
GP - Como é trabalhar com componentes terceirizados? Pessoalmente sempre tive receio quanto a isso em meus projetos...
MP - Por serem sistemas caros não só de serem adquiridos, mas também instalados e treinados, qualquer tipo de costumização pode chegar a dobrar e às vezes triplicar o preço final do projeto. E assim sendo, foi determinado durante o processo de análise do projeto que nenhum tipo de costumização seria solicitada. Tal fato nos levou à necessidade de desenvolver “in-house” qualquer tipo de interface com esses dois sistemas. Essas aplicações são obviamente desenvolvidas em .NET e fazem parte do nosso portal interno, e a maior vantagem de serem desenvolvidas internamente é justamente a habilidade de conectar simultaneamente aos dois bancos de dados (Oracle and SQL Server) e consolidar informações em uma única aplicação.
GP - Existe alguma ideia de expandir o sistema para outras unidades?
MP - Tais aplicações já despertaram o interesse de outros departamentos de polícia, como Dallas, Austin e Houston, e até mesmo das empresas que desenvolvem CAD e ARS/RMS. Nosso trunfo é ter desenvolvedores .NET que entendem bem como CAD e ARS/RMS funcionam e são bastante familiarizados com a estrutura dos bancos de dados de cada sistema, pois todos também desenvolvem Crystal Reports baseados nos dois sistemas.
GP - Migração para .NET muitas vezes significa esquecer o código legado e reescrever tudo de novo, reaproveitar muitas vezes pode comprometer desempenho, arquitetura, visto as diferenças de plataforma e frameworks. Como é o seu trabalho nesse sentido?
MP - Uma atividade que nos mantêm bastante ocupado é a migração de antigas aplicações Visual Basic/Access para .NET/SQL Server. Dada minha experiência administrando bancos de dados, eu sou responsável por toda a parte estrutural do novo banco de dados em SQL Server 2005 e migração dos dados. Também aproveitamos para realizar qualquer tipo de mudanças e melhorias nas aplicações. Nenhum código VB é aproveitado e toda a aplicação é redesenvolvida do zero, adicionando o módulo de segurança (controle de acesso) e componentes comums do portal. Todo acesso à dados é realizado através de ADO.NET o que acaba automaticamente requerindo código novo.
GP - Quais são os próximos planos?
MP - Nosso principal foco para o próximo ano fiscal é utilizar boa parte do nosso orçamento com cursos, treinamentos e certificações para tirarmos o máximo proveito do framework 3.5. Com uma equipe de apenas 2 desenvolvedores, fica difícil para mim e outros membros da equipe nos afastarmos ou mesmo pararmos nossas atividades mesmo que seja com treinamento. Há coisas como AJAX que queremos passar a implementar e adicionar para melhorar a experiência dos nossos usuários. Tecnologias que melhorem a performance e velocidade como informações são acessadas e transmitidas são sempre bem-vindas, principalmente no nosso ramo de trabalho onde cada segundo faz diferença.