32
dezembro 2008

The Club - megazine · rial, passou a ser elemento essencial, diante da capacidade de elevar os índices de produti-vidade e de propiciar vantagens competitivas. Porém, a qualidade

  • Upload
    buidiep

  • View
    218

  • Download
    0

Embed Size (px)

Citation preview

Page 1: The Club - megazine · rial, passou a ser elemento essencial, diante da capacidade de elevar os índices de produti-vidade e de propiciar vantagens competitivas. Porém, a qualidade

dezembro 2008

Page 2: The Club - megazine · rial, passou a ser elemento essencial, diante da capacidade de elevar os índices de produti-vidade e de propiciar vantagens competitivas. Porém, a qualidade

dezembro 2008

Page 3: The Club - megazine · rial, passou a ser elemento essencial, diante da capacidade de elevar os índices de produti-vidade e de propiciar vantagens competitivas. Porém, a qualidade

dezembro 2008 03

LegendaIniciante

Intermediário

Avançado

Índice

Editorial

04 06

Vitor Rodrigues

Visão Holística do COBIT em Re-lação a Outros Modelos de Melhores Práticas para Governança de TI

Delphi

Utilizando as funções de data e hora do Delphi

.NET

Olá pessoal, com esse artigo fechamos a serie sobre LINQ. Espero que tenha sido bem legal!

E que tenha contribuído para e agregado co-nhecimento, pois esta ferramenta pra mim e uma das melhores evoluções da FrameWork.

Linq to Objects

Dicas Delphi Dicas .NET

Como executar um mé-todo de uma página em um UserControl

28

30

DBGrid – Congelar uma co-luna

Desligar/Reiniciar o Windo-ws XP

InnoSetup – Verificar a Ver-são do Aplicativo antes de ins-talar

26

14Caro leitor no ultimo

dia 29 de Novembro o The Club participou do 9º Delphi Developers Day, um dia de palestras voltada para o programador Delphi, desta forma abro este edi-torial pedindo licença para agradecer algumas pessoas pelo excelente evento realiza-do na cidade de São Paulo...

22

Desafio The CLub

Teste seus conhe-cimentos.

Criando uma barra de controle genérica 16

05Marcelo Nogueira

9º Delphi Developers Day

Page 4: The Club - megazine · rial, passou a ser elemento essencial, diante da capacidade de elevar os índices de produti-vidade e de propiciar vantagens competitivas. Porém, a qualidade

dezembro 200804

Bem-vindo

Delphi é marca registrada da Borland International, as demais marcas citadas são registradas

pelos seus respectivos proprietários.

Marcos César Silva - Editor [email protected]

Caro leitor no ultimo dia 29 de Novembro o The Club participou do 9º Delphi Developers Day, um dia de palestras voltada para o programador Delphi, desta forma abro este editorial pedindo licença para agradecer algumas pessoas pelo excelente evento realizado na cidade de São Paulo, e pela receptividade com a Equipe The Club, assim meu muito obrigado vai para Marcelo Nogueira (CTA), Marcelo Ribeiro (Active Delphi), Sidinei Akira, Marcos Paulo (Delphi-br ), Emerson Facunte e demais membros do DUG-BR.

Este mês Marcelo Nogueira está de volta com o artigo ‘Visão Holística de COBIT em Relação a Outros Modelos de Melhores Práticas para Gover-nança de TI’. Neste artigo Marcelo faz uma síntese do modelo COBIT, e os relacionamentos de seus processos com os outros modelos de melhores práticas.

Na seção Delphi temos a estréia do consultor Antonio Spitareli Neto, onde escreve a respeito das inúmeras funções de data da unit DateUtils, onde embora muito útil está unit mostra-se desconhecida por inúmeros programadores. Luiz Alexandre trás em seu artigo um exemplo de como criar uma barra de controle genérica, permitindo seu reaproveitamento em diversas ‘telas’ de cadastro.

Temos também nesta publicação a continuação da seqüência de arti-gos de Fabiano Belmonte, onde mostra todos os recurso do LINQ, falando nesta revista mais especificamente sobre Linq to Objects. Em dicas .Net Fabiano Belmonte mostra como executar um método de uma página em um UserControl.

Encerro este editorial agradecendo a todos que colaboram com o The Club para a superação dos diversos desafios que tivemos que transpor neste ano que está se fechando. Meu agradecimento vai também para todos os sócios que estiveram com a gente durante todo este ano de 2008, e sabendo que entraremos em 2009 com o objetivo em manter esta par-ceria baseado na missão de melhorar a cada dia nossa qualidade técnica, para oferecer o suporte necessário no nível e qualidade que nossos sócios precisam e merecem. Boas Festas e que o espírito natalino esteja presente nos lares de todos.

Até o próximo ano.

Av. Profº Celso Ferreira da Silva, 190 Jd. Europa - Avaré - SP - CEP 18.707-150

Informações: (14) 3732-1529 Suporte: (14) 3733-1588

Internethttp://www.theclub.com.br

Cadastro: [email protected]: [email protected] Informações: [email protected] Cadastro: theclub_cadastro

Skype Suporte: theclub_linha1 theclub_linha2

Copyright The Club Megazine 2008

Diretor TécnicoMarcos César Silva

Diagramação e ArteVitor M. Rodrigues

RevisãoMarcos César Silva

ColunistasAntonio Spitaleri Neto

Fabiano BelmonteLuís Alexandre de OliveiraMarco Antonio Armando

Marcos César SilvaVitor Manuel Rodrigues

Impressão e acabamento:GRIL - Gráfica e EditoraRua São Paulo, nº 447

Cep: 18740-00 - Taquarituba-SPTel. (14) 3762-1345

ReproduçãoA utilização, reprodução, apropriação, armazenamento em banco de dados, sob qualquer forma ou meio, de textos, fotos e outras criações intelectuais em cada publicação da revista “The Club Megazine” são terminantemente proibidos sem autorização escrita dos titulares dos direitos autorais.

Page 5: The Club - megazine · rial, passou a ser elemento essencial, diante da capacidade de elevar os índices de produti-vidade e de propiciar vantagens competitivas. Porém, a qualidade

dezembro 2008 05

Vitor Rodrigues

MARCELO NOGUEIRA

Aconteceu no dia 29 de novembro na Unip Tatuapé em São Paulo o 9º “DDD” (Delphi Developers Day) um dia dedicado aos desenvolvedores Delphi, com palestras sobre os acontecimentos e novidades no mundo Delphi.

Muito bem organizado pelo DUG-BR (Delphi users group Brasil) “Marce-lo Nogueira, Akira, Facunte e Eduardo Rocha” o 9º DDD teve a participação de centenas de programadores e con-tou com a presença de vários colabo-radores como: CODEGEAR, FireBase, DelphiBR, Active Delphi, UNIP, SafeNet CTA; e claro, o The Club, que não iria deixar de prestigiar esse evento e marcou presença com um estande onde mostramos o trabalho realizado pelo The Club.

Quem compareceu ao evento teve a oportunidade de assistir palestras de alto nível com os mais importantes programadores na linguagem Delphi da atualidade.

Abaixo cito as palestras e palestrantes:

InterBase SMP 2009 – Segurança Total com • Felipe SantosRelatórios Avançados com Rave Reports com • Leandro MatosServidor Web (LLS) dicas e truques com • FacunteGenerics no Delphi 2009 com • Manoel EdésioCriação de Componentes no Delphi com • Robinson LedesmaSOA com • AkiraDelphi ISAPI (case Saraiva.com) com • FacunteReconhecimento de Impressão Digital com Delphi com • Eduardo RochaAplicabilidade da Engenha-• ria de Software com Marcelo NogueiraFirebird – A escolha certa com • CantuDelphi com Microsoft Word e • Excel com Walter ChagasSMS Machine-To-Machine, • XPEmbededd em MicroTermi-nais com ClaudenirVisão Holística do COBT em • Relação a Outros Modelos com Marcelo NogueiraDataSnap 2009 e interface • Web 2.0 com VCL for Web com Bruno Lichot

Monitorando banco de dados e servidores Firebird com Cantu• Fábrica de Software com • Fábio Vieira do AmaralAplicações ASP.NET utilizando 00 e Generics com • Eduardo MercadoNovidades Delphi 2009 com • Marcelo Nogueira e Bruno Lichot

Passei a relação das palestras pra deixar quem não foi ao evento com muita “água na boca” e ansioso em participar do próximo.

O 9º DDD foi também uma exce-lente oportunidade para dezenas estu-dantes que puderam além de assistir as palestras e adquirir conhecimento técnico, tiveram a oportunidade de es-tar no meio de tantos programadores experientes. E o mais importante, a entrada para os estudantes foi 1kg de alimento que no final foi revertida para o estado de Santa Catarina.

Parabéns ao pessoal do DUG-BR que organizaram o “9º DDD” com tanto bri-lhantismo e pela iniciativa onde foram arrecadados mais de 300Kg de alimen-tos; e parabéns aos diversos programadores presentes que também se sensibiliza-ram com a causa .

akira, marcos (the club) e marcos

equipe the club: marco, alexandre, vitor, vanessa e marcos

Page 6: The Club - megazine · rial, passou a ser elemento essencial, diante da capacidade de elevar os índices de produti-vidade e de propiciar vantagens competitivas. Porém, a qualidade

dezembro 200806

Marcelo Nogueira

Resumo

A competitividade entre as empresas tem aumentado a partir do advento da globali-zação. Desta forma, a gestão da informação tornou-se crítica para os gestores de TI nas tomadas de decisão. A área da Tecnologia da Informação, alinhada à estratégia empresa-rial, passou a ser elemento essencial, diante da capacidade de elevar os índices de produti-vidade e de propiciar vantagens competitivas. Porém, a qualidade dos serviços prestados, ao longo do tempo, não tem apresentado conformidade com os requisitos de negócios. Um dos principais fatores identificados foi à ausência de gestão sistêmica nos âmbitos de controle, transparência e monitoração. Esta demanda originou a Governança de TI. E para compô-la, vários modelos de melhores práti-cas foram criados, e aos poucos estão sendo adotados pelas empresas. Neste cenário de diversidade, a alta direção encontra dificul-dades para escolher qual modelo adotar. Através de um levantamento bibliográfico desses modelos, foi possível identificar as suas abrangências e suas relações. Este artigo tem o objetivo de apresentar aos profissionais da área, uma visão holística, ou seja, uma síntese do modelo COBIT, e os relacionamentos de seus processos com os outros modelos de melhores práticas, propiciando ao gestor, informações necessárias para apoiar a decisão de qual modelo será o mais adequado para as necessidades da empresa.

Visão Holística do COBIT em Relação a Outros Modelos de Melhores Práticas para Governança de TI

Palavras-Chave: Governança de TI, COBIT, ITIL, PMBOK, SOX, PRINCE2, ISO 17799.

1. Objetivo

O objetivo deste estudo é apresentar uma visão holística do modelo COBIT em relação aos outros modelos de melhores práticas, para con-tribuir com a alta direção e gestores da área de TI na escolha do modelo de melhores práticas para governança de TI.

Este artigo pretende contribuir com outros es-tudos de adoção e implementação da Governança de TI nas empresas.

2. Introdução

Com o advento da globalização, cada vez mais as empresas, buscam apoiar-se na Tecnologia da Informação que possam propiciar relevantes contribuições aos negócios. O grande desafio está em buscar tecnologias que possam de forma real, organizar operacionalmente o processo de informação, minerar dados de forma que possam ser analisados e conseqüentemente encontrar ligações e possíveis informações que levarão a estabelecer estratégias de negócios em mercados ainda não explorados ou não enxergados, obtendo diferenciação e vantagens competitivas.

O ambiente da era da informação, tanto para as organizações do setor de produção quanto para as do setor de serviços, exige novas capacidades para assegurar o sucesso competitivo. A capacidade de mobilização e exploração dos ativos intangíveis ou invisíveis tornou-se muito mais decisiva do que investir e gerenciar ativos físicos tangíveis. Os ativos intangíveis permitem que uma empresa (KAPLAN,1997):

• Desenvolva relacionamentos que conservem a fidelidade dos clientes existentes e permitam que novos segmentos de clientes e áreas de mercado que sejam atendidos com eficácia e eficiência.

• Lance produtos e serviços inovadores desejados por seus clientes-alvo.

• Produza bens e serviços personalizados de alta qualidade a preços baixos e com ciclos de produção mais curtos.

• Mobilize as habilidades e a motivação dos funcionários para a melhoria contínua de pro-cessos, qualidade e os tempos de resposta.

• Utilize tecnologia da informação, ban-cos de dados e sistemas.

Com a implementação da TI, as empresas pas-saram a enfrentar o ambiente de competição com maiores possibilidades de obtenção de êxito nas

Page 7: The Club - megazine · rial, passou a ser elemento essencial, diante da capacidade de elevar os índices de produti-vidade e de propiciar vantagens competitivas. Porém, a qualidade

dezembro 2008 07

suas operações, diante das possibilidades reveladas pelas informações omitidas pelo aglomerado de dados em suas bases.

Com a complexidade inerente a área de TI, a qualidade dos serviços prestados, tanto para clientes internos ou externos, tornou-se crítica para o sucesso dos empreendimentos desenvol-vidos. Ao longo dos anos de sua existência a área demonstrou dificuldades em implantar modelos sistêmicos de gestão, seja por inexistência cultural ou por resistência a mudanças. Para atender as necessidades de controle, transparência e moni-toração, apresenta-se a governança de TI. Com a capacidade de se alinhar às estratégias de negócios da empresa, vem sendo adotada em larga escala pelas empresas que estão focadas em melhorar os serviços de TI prestados (FAGUNDES, 2004).

Diante desta demanda, muitos modelos de melhores práticas foram criados e outros adap-tados para serem aderentes a Governança de TI. Posta a diversidade dos modelos presentes para adoção, à escolha do modelo mais adequado tor-nou-se fundamental para o sucesso da implantação da governança de TI, pois cada modelo apresenta particularidades e especificidades, que são objetos de estudo deste artigo.

A prática da governança é definida simples-mente como o “Ato de governar”, ou seja é algo inerente à ação de se comandar um ambiente formado por pessoas, processos e tecnologias. No entanto, o conjunto de atitudes às quais o termo diz respeito atualmente, principalmente quando se fala em governança corporativa, vai muito além disso. Hoje, o termo se refere a uma melhor forma de gerenciar esse ambiente, identificando proces-sos, definindo responsabilidades e, principalmente, mostrando claramente os resultados obtidos para a corporação. Sempre com um objetivo: dar trans-parência ao negócio (CERIONI,2004).

Para compreender os fatores que motivam a adoção, os conceitos de Governança Corporativa e Governança de TI serão apresentados a seguir.

3. Governança Corporativa

A Governança Corporativa é o modelo de ges-tão pelo qual as organizações são administradas e controladas. A Governança Corporativa contempla os seguintes tópicos (Nogueira, 2004):

» Efetividade e eficiência das operações;» Confiabilidade dos relatórios financei-

ros;» Conformidade com leis e regulamen-

tos;» Proteção dos ativos;» Transparência na relação com os acio-

nistas, colaboradores e clientes;» Prestação de contas.

Os modelos de melhores práticas da Go-vernança de TI têm por objetivo atender aos requisitos fundamentais que regem a governança corporativa.

4. Governança de TI

Atualmente, há uma grande expectativa acerca das aplicações da tecnologia da informa-ção nas empresas, graças às novas alternativas para os negócios que elas proporcionam e às melhorias que trazem aos processos existentes (LAURINDO,2002).

Contudo há um questionamento sobre os ganhos reais advindos dos investimentos maciços em tecnologia, pois, muitas vezes, o retorno fica aquém do esperado.

Neste contexto, surge a governança de TI e o gerenciamento de riscos como assuntos funda-mentais para as empresas e gestores, visto que os maiores riscos a que estão expostas às organizações atualmente, estão relacionados à tecnologia da informação.

A Governança de TI define-se com um con-junto de processos e controles que direcionam a estratégia de Tecnologia da Informação, garantindo que a TI possa suportar as estratégias e objetivos do negócio (Nogueira, 2004).

Figura 1 – Contexto da Governança de TI – (No-gueira, 2004).

Para a maioria das organizações, a informa-ção e a tecnologia que suportam os negócios representam seus ativos mais valiosos. Em um ambiente cada vez mais competitivo e dinâmico, a administração requer qualidade, funcionalidade e facilidade no uso dos recursos de TI, assim como

alta disponibilidade a custos mais baixos. Não há dúvidas quanto aos benefícios do uso da tecno-logia, entretanto, para ser bem sucedida, uma organização deve adotar um modelo de gestão que possibilite a eficácia e eficiência da TI. É nesse contexto que o COBIT surge como um guia de me-lhores práticas para a governança de TI.

5. COBIT

O COBIT (Control Objectives for Information and related Technology) pode ser traduzido como Objetivos de Controle para a Informação e Tecnolo-gia relacionada. Publicado pela ISACA (Information Systems Audit and Control Foundation) em 1996, o COBIT está em sua quarta edição, atualmente mantido pelo IT Governance Institute, e compõe a sua estrutura, guias de gerenciamento requeridas pela governança corporativa.

O COBIT foi desenvolvido com base no con-senso de especialistas de todo o mundo no que concerne as melhores práticas e metodologias, tais como códigos de conduta (Conselho Europeu, OECD, ISACA etc.) critérios de qualificação para os sistemas e processos de TI (ITSEC, TCSEC, ISO 9000, SPICE, TickIT, Common Criteria etc.), padrões profissionais para controle interno e auditoria (COSO, IFAC, AICPA, CICA, ISACA, IIA, PCIE, GAO etc.), práticas de mercado e requerimentos legais, governamentais e específicos dos mercados que dependem fortemente de tecnologia, tais como os setores financeiro e de telecomunicações (ISACA, 2008) .

O grande diferencial do COBIT é sua orientação para negócios, o que vem atender as seguintes demandas:

» Da administração e gerência, visando equilibrar os riscos e os investimentos em controles no ambiente dinâmico de TI;

» Dos usuários, que dependem dos servi-ços de TI e seus respectivos controles e mecanismos de segurança para realizar suas atividades;

» Dos auditores, que podem utilizá-lo para validar suas opiniões ou para recomendar me-lhorias dos controles internos à administração.

As atividades de TI são apresentadas pelo COBIT de forma lógica e estruturada, relacionando riscos de negócios, necessidades de controles e questões técnicas. O COBIT pode ser usado inde-pendentemente da plataforma tecnológica adotada pela organização e se aplica também a qualquer segmento de indústria (ITGI, 2008).

O COBIT agrupa os processos de TI em 4 do-mínios abrangentes:

Page 8: The Club - megazine · rial, passou a ser elemento essencial, diante da capacidade de elevar os índices de produti-vidade e de propiciar vantagens competitivas. Porém, a qualidade

dezembro 200808

» Planejamento e Organização;» Aquisição e Implementação;» Entrega e Suporte;» Monitoramento.

Observe a Figura 2.

O COBIT contém 34 Objetivos de Controle de alto nível e 318 objetivos detalhados para os processos de TI.

Esses Objetivos de Controle são suportados pelos Guias de Auditoria que possibilitam aos auditores e gerentes revisarem os processos espe-cíficos de TI assegurando que os controles sejam suficientes ou que necessitam de melhorias.

O terceiro principal componente do COBIT são as Guias de Gerenciamento.

Observe a Figura 3.

As Guias de Gerenciamento são compostos por:

- Modelos de Maturidade: São usados para definir o perfil da empresa em relação aos controles adotados para os processos de TI e fornecem um método de nivelação para cada um dos 34 pro-cessos de TI, de forma que a organização possa se enquadrar em um ranking de inicial a otimizado (1 a 5). Desta forma, a alta administração tem acesso às seguintes informações:

» Onde a organização está;» A situação atual dos melhores do mer-

cado;» Permite visualizar onde a organização

quer estar. Observe a Figura 4.

- Fatores críticos de sucesso: Definem as questões e ações mais importantes para que a ge-rência possa ter controle sobre os processos de TI. Identificam o que a gerência deve fazer estratégica, técnica, procedural e organizacionalmente.

- Indicadores chave de metas: definem medi-

das que informam a gerência, depois do fato ocorri-do, se um processo de TI atendeu os requerimentos de negócios. Geralmente expressos em termos dos seguintes critérios de informação:

» Disponibilidade da informação neces-sária para suportar o negócio;

» Redução de riscos de integridade e confidencialidade;

» Custo-eficiência de processos e opera-ções;

» Validação da confiabilidade, efetividade e conformidade.

- Indicadores chave de desempenho: definem medidas para determinar quão bem está sendo realizado um processo de TI visando atingir a meta definida. São os indicadores principais para saber se a meta será ou não atingida e podem também apontar capacidades, práticas e habilidades.

As Guias de Gerenciamento trazem as diretri-zes para a implementação.

O CobiT é um padrão aberto, sendo que seus

componentes se encontram disponíveis para do-wnload na página do IT Governance Institute ou na página da ISACA, exceto as guias de auditoria.

6. Outros Modelos de Melhores Prá-ticas

A seguir, os modelos ITIL, PMBOK, CMMI, ISO/IEC 17799, PRINCE 2 e SOX serão apresentados.

6.1 ITIL

O ITIL™ (Information Technology Infrastructure Library) é o modelo de referência para gerencia-mento de processos de TI mais aceito mundial-mente. A metodologia foi criada pela secretaria de

Figura 2 – Estrutura do COBIT (Nogueira, 2004).

Figura 3 – COBIT – Família de Produtos (Nogueira, 2004).

Figura 4 – COBIT – Níveis de Maturidade (Nogueira, 2004).

Page 9: The Club - megazine · rial, passou a ser elemento essencial, diante da capacidade de elevar os índices de produti-vidade e de propiciar vantagens competitivas. Porém, a qualidade

dezembro 2008 09

comércio (Office of Government Commerce, OGC) do governo Inglês, a partir de pesquisas realizadas por Consultores, Especialistas e Doutores, para desenvolver as melhores práticas para a gestão da área de TI nas empresas privadas e públicas. Atualmente se tornou a norma BS-15000, sendo esta um anexo da ISO 9000/2000. O foco deste modelo é descrever os processos necessários para gerenciar a infra-estrutura de TI eficientemente e eficazmente de modo a garantir os níveis de serviço acordados com os clientes internos e externos. Entre os processos que fazem parte do modelo de referência, podemos citar (MANSUR, 2007):

» Planejamento de serviços;» Gerenciamento de incidentes;» Problemas;» Mudanças;» Configuração; » Operações;» Segurança;» Capacidade;» Disponibilidade;» Custos;» Entrada em produção;» Testes.

Observe a Figura 5.

As empresas que o adotaram estão preocu-padas em gerar valor do TI para os negócios da empresa e provar este valor de maneira adequada, através de processos corretos.

As normas ITIL™ estão documentadas em apro-ximadamente 40 livros, onde os principais proces-sos e as recomendações das melhores práticas de TI estão descritas. O ITIL™ é composto por módulos. Os mais importantes são o "IT Service Support" e o "IT Service Delivery" (BRODBECK, 2008).

São Características do ITIL:

» Modelo de referência para processos de TI não proprietário;

» Adequado para todas as áreas de ativi-dade;

» Independente de tecnologia e fornece-dor;

» Um padrão de fato;» Baseado nas melhores práticas;» Um modelo de referência para a imple-

mentação de processos de TI;» Padronização de terminologias;» Interdependência de processos;» Diretivas básicas para implementação;» Diretivas básicas para funções e respon-

sabilidades dentro de cada processo;

» Checklist testado e aprovado;» O que fazer e o que não fazer.

6.2 PMBOK

O PMBOK foi desenvolvido contando com a colaboração de várias dezenas de profissionais afiliados ao PMI e de origens diversas. A primeira versão do PMBOK foi publicada em 1996, a segunda em 2000 e a terceira atual versão em 2004.

O PMI (Project Management Institute) é uma organização não-governamental respeitada mundialmente no campo da gestão de projetos, de uma maneira geral, e podemos afirmar que é a organização que criou a profissão de gerente de projetos, como hoje é reconhecida. Atualmente com mais de 240 mil membros espalhados em 160 países (ARAGON, 2008).

O modelo é estruturado em nove áreas de conhecimento em gerenciamento de projetos:

» Gerenciamento Integrado de Projetos;» Gerenciamento Escopo de Projetos;» Gerenciamento Tempo de Projetos;» Gerenciamento Custo de Projetos;» Gerenciamento Qualidade de Proje-

tos;» Gerenciamento Recursos Humanos de

Projetos;

» Gerenciamento Comunicações de Pro-jetos;

» Gerenciamento Riscos de Projetos;» Gerenciamento Aquisições de Proje-

tos.

Cada área de conhecimento é organizada em cinco grupos de processo:

» Iniciação;» Planejamento;» Execução;» Monitoramento e Controle;» Encerramento.

O objetivo principal do modelo é identificar o subconjunto do conjunto de conhecimentos em gerenciamento de projetos que é amplamente re-conhecido como boa prática. O PMBOK não fornece uma descrição detalhada do conjunto de conheci-mentos, mas sim uma visão geral, sendo que boa prática significa que existe um acordo geral de que a aplicação correta dessas habilidades, ferramentas e técnicas podem aumentar as chances de sucesso de uma ampla série de projetos diferentes.

De acordo com uma pesquisa realizada em 2001 pelo Center for Business Practices em 43 organizações de variados portes, os seguintes benefícios foram obtidos com a implantação da gestão de projetos em organizações de TI:

Figura 5 – ITIL - Processos (Nogueira, 2004).

Page 10: The Club - megazine · rial, passou a ser elemento essencial, diante da capacidade de elevar os índices de produti-vidade e de propiciar vantagens competitivas. Porém, a qualidade

dezembro 200810

» 38,6% foi a melhoria na estimativa de prazo;

» 32,8% foi a melhoria na estimativa de esforço e de custo;

» 7,6%% foi a melhoria na estimativa da qualidade;

» 37,8% foi a melhoria na satisfação dos clientes;

» 37% foi a melhoria no alinhamento dos projetos com as estratégias do negócio;

» 21,7% foi a melhoria no “time-to-maket”;

» 31,9% foi a melhoria na qualidade;» 32,5% foi a melhoria na entrega dos

projetos dentro do orçamento;» 25,6% foi a melhoria na utilização das

horas de trabalho;» 32,1% foi a melhoria no desempenho

do prazo;» 23,8% foi a melhoria no desempenho

do custo;» 12,9% foi a melhoria na taxa de defei-

tos;» 22,8% foi a melhoria na produtividade

do staff do projeto;» 23% foi a melhoria no tempo de respos-

ta;» O ROI total observado foi de 27,9%.

Figura 6 – PMBOK – Áreas de Conhecimento (PMBOK, 2004).

6.3 CMMI

O CMMI – (Capability Maturity Model Inte-grated) foi desenvolvido pelo SEI (Software Engi-neering Institute), ligado à CMU (Carnegie Mellon University), em Pittsburgh, nos Estados Unidos. O desenvolvimento desse modelo foi financiado pelo DoD, Departamento de Defesa Americano, com o objetivo de se estabelecer um padrão de qualidade para software desenvolvido para as forças armadas (PESSOA&SPINOLA).

O CMMI foi concebido para o desenvolvimento

de grandes projetos militares e, para a sua aplicação em projetos menores e em outras áreas, é neces-sário um trabalho cuidadoso de interpretação e adequação à realidade da organização (FIORINI, 1998),(CMMI, 2006).

No modelo CMMI foram estabelecidos níveis referentes à maturidade que a organização possui para desenvolver software: Inicial (1), gerenciado (2), definido (3), gerenciado Quantitativamente (4) e otimizado (5).

Cada nível de maturidade está dividido em áreas-chave de processo chamadas de PA (Process Area), que estabelecem grandes temas a serem abordados, somando 18 áreas-chave.

Observe a Figura 7.

6.4 ISO/IEC 17799

A informação é o bem mais importante de uma organização e, portanto, este patrimônio necessita de proteção. A segurança da informação visa proteger a informação contra uma variedade de ameaças, pois esta é uma das formas de garantir a continuidade dos negócios, minimizando riscos e maximizando o retorno de investimentos.

A Política de Segurança é um mecanismo preventivo de proteção dos dados e processos importantes de uma organização, que define um padrão de segurança a ser seguido pelo corpo técnico e gerencial, usuários internos e remotos e, também terceiros, além de estabelecer um pro-cesso formal para acompanhamento e revisão das melhores práticas de segurança a serem exercidas

pela organização (ISO/IEC 17.799, 2005).

Para elaborar um processo de política de se-gurança com qualidade, existe a norma NBR ISO/IEC 17.799 - padrão definitivo em Security Mana-gement - uma abordagem única para a definição e implementação de Políticas de Segurança para organizações de todos os portes. Compatibilizando prazos curtos com alta qualidade.

Figura 8 – ISO/IEC 17.799 - Processos (ISO/IEC 17.799, 2005).

6.5 PRINCE 2

A PRINCE foi estabelecida primeiramente em 1989 pelo CCTA (Central Computer and Tele-communications Agency) do governo britânico. A metodologia PRINCE foi desenvolvida a partir da PROMPTII, uma metodologia de gerenciamento de projetos criada pela empresa Simpact Systems

Figura 7 – CMMI – Níveis de Maturidade (CMMI, 2006).

Page 11: The Club - megazine · rial, passou a ser elemento essencial, diante da capacidade de elevar os índices de produti-vidade e de propiciar vantagens competitivas. Porém, a qualidade

dezembro 2008 11

Ltda em 1975, a qual foi adotada pelo CCTA em 1979 como padrão para uso por todos os projetos de sistemas de informação do governo. A PRINCE sucedeu a PROMPTII em 1989 para os projetos do governo britânico (ARAGON, 2008).

O CCTA, agora incorporado ao Office of Govern-ment Commerce, continuou o desenvolvimento da metodologia e a PRINCE2 foi lançada em 1996, em resposta aos requisitos dos usuários para melhorar a orientação de gestão de projetos para todos os tipos de projeto, além dos projetos de sistemas de informação. Em 2002 foi lançada a terceira edição da metodologia e em 2005 a quarta edição.

Da mesma forma que o PMBOK, a PRINCE2 também possui o seu modelo de maturidade. A metodologia PRINCE2 é baseada nas experiências com os projetos, gerentes de projetos e equipes de projeto que contribuíram com os seus erros e acertos e sucessos. A metodologia é, atualmente, o padrão usado pelo governo britânico, sendo tam-bém reconhecida e usada no setor privado, tanto na Grã-Bretanha como internacionalmente.

A metodologia possui 08 processos:

» Criando um projeto;» Dirigindo um projeto;» Iniciando um projeto;» Gerenciando as fronteiras de um está-

gio;» Controlando um estágio;» Gerenciando a entrega do produto;» Fechando um projeto;» Planejamento.

E possui 07 componentes:

» Casos de Negócio;» Organização;» Planos;» Controles;» Gestão de Riscos;» Qualidade no ambiente do projeto;» Gestão de configuração;» Controle de mudanças.

Figura 9 – PRINCE2 - Fases (PRINCE2, 2005).

6.6 SOX

A Sarbanes-Oxley, ou simplesmente SOX, é uma lei criada nos Estados Unidos para aperfeiçoar os controles financeiros das empresas que possuem capital na Bolsa de Nova York, incluindo cerca de 70 empresas brasileiras. Esta lei veio em decorrência dos escândalos financeiros das empresas Enron, Worldcom e outras que pulverizaram as economias pessoais de muitos americanos. A lei tem como ob-jetivo restaurar a confiança dos investidores. Para isso ela exige um maior nível de responsabilidade e comprometimento das companhias no que se refere aos processos e controles internos e um aumento na supervisão sobre as demonstrações financeiras.

Esta lei é composta pelas as seções (SARBANES-OXLEY, 2006):

» Seção 1-Títulos e Conteúdos» Título I —Companhias Públicas» Título II—Auditoria Independente» Título III—Responsabilidade Corporati-

va» Título IV—Revelações Financeiras Avan-

çadas» Título V—Análise de Conflito de Inte-

resses» Título VI—Comissão de Recursos e

Autoridade» Título VII—Estudos e Relatórios» Título VIII—Responsabilidade Corpora-

tiva e Fraudes Criminais» Título IX—Crimes de Colarinho Branco

e Penalidades Avançadas» Título X—Taxa de Retorno Corporativo» Título XI—Responsabilidade e Fraudes

Corporativas

A Lei Sarbanes-Oxley foi uma forma que o

governo americano encontrou para, de uma ma-neira legal, impor as empresas as regras da boa governança corporativa. A SOX torna os executivos explicitamente responsáveis por estabelecer, ava-liar e monitorar a eficácia da estrutura de controle internos das companhias.

A lei Sarbanes-Oxley de 2002 mudou signifi-cativamente a visão sobre governança corpora-tiva. Muitas organizações estão nesse momento, planejando e implementando processos que as auxiliarão na avaliação sobre a eficácia dos seus controles internos relacionados à elaboração de suas demonstrações financeiras (Internal Control Over Financial Reporting) (DELOITTE, 2003).

A SOX objetiva atender os seguintes aspectos (YOSHIDA, 2007):

» Restituir a confiança dos investidores nos auditores independentes e nas empresas de capital privado.

» Aumentar a responsabilidade e compro-metimento da direção da empresa, relativamente aos processos e controles internos.

» Aumentar à supervisão sobre as demonstrações financeiras apresentadas pelas organizações.

Especificamente em relação à área de TI, as seções 302 (certificação das indicações financeiras pela diretoria) e 404 (auditoria interna / relatório gerencial atestado por auditor certificado) afetam diretamente, na medida em que na seção 302 atribui à diretoria a responsabilidade pelas infor-mações prestadas oficialmente e a seção 404 trata mais precisamente dos controles internos e dos aspectos relacionados ao trabalho dos auditores externos.

Observe a Figura 10.

Figura 10 – SOX - Processos (DELLOITE, 2003).

Page 12: The Club - megazine · rial, passou a ser elemento essencial, diante da capacidade de elevar os índices de produti-vidade e de propiciar vantagens competitivas. Porém, a qualidade

dezembro 200812

7. Metodologia

Através do levantamento bibliográfico dos mo-delos de melhores práticas foi possível encontrar os processos do COBIT e dos demais modelos e verificar as suas interligações e relacionamentos.

Foi utilizado o modelo COBIT, pois de todos os modelos de melhores práticas, é o mais abran-gente em termos de atendimento à gestão de TI (ARAGON, 2008).

Desses dados levantados, foi gerada uma planilha, agrupando a partir do COBIT, os outros modelos em colunas, formando assim a visão holística.

8. Visão Holística

A palavra hólos veio do grego e significa inteiro; composto. Segundo o dicionário Aurélio, holismo é a tendência a sintetizar unidades em totalidades, que se supõe seja própria do universo. Sintetizar é reunir elementos em um todo; compor.

A visão holística do modelo de melhores práticas de TI de uma empresa equivale a se ter uma "imagem única", sintética de todos os ele-mentos da empresa, que normalmente podem ser relacionados a visões parciais abrangendo suas estratégias, atividades, informações, recursos e organização, estrutura da empresa, cultura orga-nizacional, qualificação do pessoal, assim como suas inter-relações.

Apresenta-se a seguir o quadro que representa a visão holística do modelo de melhores práticas COBIT em relação os modelos ITIL, PMBOK, CMMI, ISO/IEC 17.799, PRINCE 2 e SOX. Foram adaptadas (ARAGON, 2008) e utilizadas algumas siglas para identificar a abrangência, conforme a legenda a seguir:

» E – Excede; » C – Cobertura Completa; » A – Vários Aspectos abordados; » NA – Não se Aplica.

Observe a Tabela 1.

9. Considerações Finais

Através do estudo do modelo de melhores prá-ticas COBIT e da contextualização dos modelos ITIL, PMBOK, CMMI, ISO/IEC 17.799, PRINCE 2 e SOX, na revisão dos conceitos de Governança Corporativa e Governança de TI, foi possível identificar que a construção de uma visão holística de um modelo abrangente e a comparação com alguns modelos, seria fundamental para contribuir com o gestor da área, no momento de decidir qual modelo mais adequado adotar e que abrangência ele possui.

Em cada situação e para cada caso, buscando atender os requisitos de controle, transparência e monitoração, através dessa visão holística, forne-cida por este trabalho, será possível minimizar os riscos da escolha de qual modelo mais adequado para as necessidades da organização.

Como trabalho futuro, pretende-se ampliar o estudo na descrição dos processos dos modelos comparados, em relação aos do COBIT, criando uma lista analítica de processos.

Tabela 1 – Visão Holística - COBIT x Outros modelos de melhores práticas.

Page 13: The Club - megazine · rial, passou a ser elemento essencial, diante da capacidade de elevar os índices de produti-vidade e de propiciar vantagens competitivas. Porém, a qualidade

dezembro 2008 13

10. Referências Bibliográficas

B5C, Big Five Consulting, http://www.b5c.com.br , acesso em 24/05/2008.

BRODBECK, Henrique J., Governança de TI, acessado em 20/05/2008 http://www.inf.ufrgs.br/~brodbeck/

CERIONI, THAIS ALINE, Cada Peça em seu lugar, Information Week, Ed.122, São Paulo, ITMidia, 2004.

CMMI, SEI, Software Engineering Institute, Carnegie Melon University, 2006, http://www.sei.cmu.edu, acesso em 20/05/2008.

DELLOITE, Lei Sarbanes-Oxley Guia para melhorar a governança cor-porativa através dos controles internos Deloitte, em http://www.deloitte.com.br , acesso em 20/05/2008.

FAGUNDES, Eduardo Mayer, COBIT, Um Kit de Ferramentas para exce-lência na Gestão de TI, www.efagundes.com.br acesso em 21/03/2008.

Fernandes, Aguinaldo Aragon, Implantando Governança de TI, Brasport, RJ, 2008.

FIORINI, SOELI T., et al. Engenharia de Software com CMM, Rio de Janeiro, Ed. Brasport, 1998.

ISACA, Information System Audit and Control Association, http://www.isaca.org/

acesso em 21/03/2008.ITGI, IT Governance Institute, http://www.itgi.org/ , acesso em

21/03/2008.KAPLAN, ROBERT S., et al., A Estratégia em Ação,Ed.Campus, Rio de

Janeiro,1997.LAURINDO, FERNANDO J.B., Tecnologia da Informação – Eficácia nas

organizações, São Paulo, Editora Futura, 2002.Mansur, Ricardo, Governança de TI: Metodologias, Frameworks e

Melhores Práticas, Brasport, Rio de Janeiro, 2007.

Nogueira, Marcelo, Gestão de Infraestrutura de Tecnologia da Informação com ITIL, WCETE 2004, anais do IEEE Education Society, SP, 2004.

Nogueira, Marcelo, Gestão de Riscos em Projetos de Software, WCETE 2004, anais do IEEE Education Society, SP, 2004.

Nogueira, Marcelo, Governança de Tecnologia da Informação com COBIT, WCETE 2004, anais do IEEE Education Society, SP, 2004.

PESSOA, MARCELO E SPINOLA, MAURO in WEBER, KIVAL CHAVES, et al. Qualidade e Produtividade em Software, São Paulo, Ed. Makron Books, 2001.

PMI, PMBOK, Project Management Institute, 2004.SARBANES-OXLEY. http://www.sarbanes-oxley.com acesso em

20/05/2008.YOSHIDA, Marta Harumi, Alinhamento dos Requisitos da Lei Sarba-

nes-Oxley com o RUP para o processo de desenvolvimento de sistemas, Monografia, Programa de Educação Continuada em Engenharia (PECE), USP, Universidade de São Paulo, SP, 2007.

Sobre o autor

Marcelo Nogueira

UNIP – Universidade Paulista

[email protected]

Page 14: The Club - megazine · rial, passou a ser elemento essencial, diante da capacidade de elevar os índices de produti-vidade e de propiciar vantagens competitivas. Porém, a qualidade

dezembro 200814

Delphi

Em várias situações na programação nos deparamos com a necessidade de realizar cálculos com datas e horários.

Neste artigo, estarei falando sobre al-gumas funções da unit dateutils do delphi. Funções estas muito úteis para se manipular datas e horários.

O primeiro passo consiste em de-clarar a unit dateutils na cláusula uses do formulário. Com isso as funções já estarão disponíveis.

Mostrarei algumas a seguir:

Daysbetween:

Essa função retorna a quantidade de dias entre duas datas. Sua sintaxe é a seguinte:

Daysbetween (datainicial,datafinal:tdatetime):integer.

Exemplo:

Datainicial:=encodedatetime(2003,01,15,0,0,0,0)Datafinal:=nowDiferença:=hoursbetween(datainicial,datatafinal)

Semelhantes a essa função existem as funções yearsbetween, monthsbetween, hoursbetween, minutesbetween e secondsbetween com sintaxe igual a primeira.

Daysinamonth:

Essa função retorna a quantidade de dias em um determinado mes de um ano. Sintaxe:

Daysinamonth (ano,mês:word):word

Exemplo:Para saber a quantidade de dias do mês de

janeiro de 2006, por exemplo, podemos fazer:

Daysinamonth (2006,1)

Lembrando que o índice que representa o mês segue a ordem normal, ou seja: 1-janeiro, 2-fevereiro, etc..

Daysinayear:

Essa função possui sintaxe semelhante a anterior só que recebe como parâmetro apenas o ano. Sintaxe:

Daysinayear(ano:word): word.

Exemplo:Quantidade de dias do ano 1997:

Daysinayear (1997)

U t i l i z a n d o a s

funcoes de data e

hora do Delphi

Page 15: The Club - megazine · rial, passou a ser elemento essencial, diante da capacidade de elevar os índices de produti-vidade e de propiciar vantagens competitivas. Porém, a qualidade

19/12/2008

05/01/200910/01/1952

01/03/200303/12/1971

05/08/197621:30

14:05

03:27

10:59

05:60

07:00

dezembro 2008 15

Dayspan

Semelhante a daysbetween só que retorna um número fracionário. Por exemplo, se a diferença entre duas datas for de 3 dias e 6 horas o resultado será de 3,25. Sintaxe:

Dayspan(dataincial,datafinal:tdatetime):double

Isleapyear

Essa função retorna verdadeiro caso o ano passado como parâmetro for bissexto. Sintaxe:

Isleapyear (ano):boolean.

Exemplo:

If isleapyear (1997) then Showmessage (‘O ano é bissexto ’)Else Showmessage (‘O ano não é bissexto’)

Fileage

Função que retorna a data da última modifica-ção de um arquivo passado como parâmetro. Para utilizá-la não é necessária a abertura do arquivo especificado, caso o mesmo não seja encontrado será retornado -1.Sintaxe:

Fileage ('caminho do arquivo':string):integer.

Exemplo:

Showmessage(‘O arquivo foi modificado pela última vez em:’+fileage(‘C:\meuarquivo.txt’))

Monthoftheyear

Essa função retorna o índice do mês da data passada como parâmetro. Esse índice seguirá a ordem: 1-janeiro..12-dezembro. Sintaxe:

Monthoftheyear (data:tdatetime):word

Incyear

Retorna uma data acrescida da quantidade de anos passados por parâmetro. Sintaxe:

Incyear (data:tdatetime,número de anos:integer):tdatetime.

Exemplo:Data de hoje acrescida de 15 anos:

Incyear (now,15)

Semelhantes a essa função existem as fun-ções:

Incday, incmonth, incsecond, incmilisecond e incminute.

Dayofweek

Retorna o índice do dia da semana da data

passada como parâmetro. Esse índice seguirá a ordem: 1-Domingo até 7-Sábado.Sintaxe:

Dayofweek (data:tdatetime):integer

Secsperday

Essa função retorna o número de segundos em um dia.

Exemplo de uso:

Showmessage ('O dia tem ' +inttostr (secsperday)+'segundos')

Conclusão

Com essas funções e com as demais existentes na unit dateutils, com certeza a manipulação de datas e horários se torna muito mais produtiva. O bom uso dessas funções proporcionará um ganho de tempo considerável na tarefa de programar.

Espero que tenham gostado e até a próxima.

Sobre o autor

Antonio Spitaleri Neto

Consultor Técnico The club

[email protected]

Page 16: The Club - megazine · rial, passou a ser elemento essencial, diante da capacidade de elevar os índices de produti-vidade e de propiciar vantagens competitivas. Porém, a qualidade

dezembro 200816

Neste artigo irei demonstrar umas das possíveis implementação de uma barra de Menu genérica, que poderá ser utilizado em praticamente todos os formulários que fazem operações básicas num banco de dados( inclusão, exclusão, edição, cancelamento). Com isso criaremos uma classe genérica que poderá ser utilizada em diversos projetos.

Classes genéricas

Do ponto de vista do projeto, classes genéri-cas são forms/units que irão gerar outros forms/units com as mesmas características, utilizando o principio de herança de classes (conceitos de orientação a objeto).

Quais são as vantagens?

• Otimização de código, como o código é genérico ele será único para uma determinada função.

CRIANDO UMA BARRA DE CONTROLE

GENÉRICA

• Agilidade no desenvolvimento, você não fica criando vários forms e tendo que inserir os mesmos objetos e criando os mesmo metódos.

• Fácil detecção de erros, com um código genérico você encontra os erros com maior facili-dade.

• Utilização em vários projetos, quando você cria um form/unit genérico de cadastro ele pode ser utilizado em vários projetos distintos, basta adicioná-lo ao projeto.

• Otimização do executável, com menos código menor será seu executável.

Construção da barra de menu

Crie um novo projeto e vá file>New>Frame. Salve o projeto como prFrameMenu , a unit com unFrameMenu . Nomeie o frame com FrameMenu.Adicione um componente TollBar que se encontra na paleta Win32. Nomeie de ToolBar_Edicao.

Adicione três objetos ImageList que estão loca-lizados na paleta Win32. Com esses componentes iremos definir as imagens dos nossos botões.

Nomeie os ImageList para Images, DisableIma-ges e HotImages respectivamente.

Teremos que adicionar algumas imagens nos componentes ImageList . Observe as imagens su-geridas nos editores dos três ImageList (Figura1, 2 e 3)

No objeto ToolBar_Edição altere seguintes

propriedades (tabela 1):

Propriedade ValorDisableImages DisableImages

HotImages HotImages

Images ImagesTabela 1.

Adicione um ActionList , que se encontra na paleta standard .Altere a propriedade name para Acoes Umas das principais vantagens desse com-ponente é a reutilização de código.

As ações (Actions) têm várias propriedades que serão aplicadas aos outros componentes vinculados à ela através da propriedade Action de cada componente.

Insira oito ações. Clique duas vezes no actionList e clique new action ( ícone amarelo). Observe a figura 4 :

Page 17: The Club - megazine · rial, passou a ser elemento essencial, diante da capacidade de elevar os índices de produti-vidade e de propiciar vantagens competitivas. Porém, a qualidade

dezembro 2008 17

Figura 1 . Images

Figura 2 . DisableImages

Figura 3. HotImages

Figura 4.

Após a adição das oito ações altere algumas propriedades (tabela 2)

Obs: Na propriedade ShortCut definimos as teclas de atalho.

Ação Incluir Propriedades ValoresCaption Incluir

Name acIncluir

ShortCut F2

ImageIndex 0

Ação Alterar

Caption Alterar

Name acAlterar

ShortCut F#

ImageIndex 1

Ação Excluir

Caption Excluir

Name acExcluir

ShortCut F4

ImageIndex 2

Ação Confirmar

Caption Confirmar

Name acConfirmar

Tabela 2

Page 18: The Club - megazine · rial, passou a ser elemento essencial, diante da capacidade de elevar os índices de produti-vidade e de propiciar vantagens competitivas. Porém, a qualidade

dezembro 200818

ShortCut F5

ImageIndex 3

Ação Cancelar

Caption Cancelar

Name acCancelar

ShortCut F6

ImageIndex 4

Ação Anterior

Caption Anterior

Name acAnterior

ShortCut 0

ImageIndex 5

Ação Próximo

Caption Próximo

Name acProximo

ShortCut 0

ImageIndex 6

Ação Sair

Caption Sair

Name acSair

ShortCut F9

ImageIndex 7

Adicione 8 botões na ToolBar. Clique com o botão direito do mouse da ToolBar, menu New. Altere as propriedades dos botões confome tabela . Observe a tabela 3 :

Tabela 2

ToolButton1 Propriedades ValoresCaption Incluir

Name tbIncluir

Action acIncluir

ToolButton2

Caption Alterar

Name tbAlterar

Action acAlterar

ToolButton3

Caption Excluir

Name tbExcluir

Action acExcluir

ToolButton4

Caption Confirmar

Name tbConfirmar

Action acConfirmar

ToolButton5

Caption Cancelar

Name tbCancelar

Action acCancelar

Tabela 3

Page 19: The Club - megazine · rial, passou a ser elemento essencial, diante da capacidade de elevar os índices de produti-vidade e de propiciar vantagens competitivas. Porém, a qualidade

dezembro 2008 19

ToolButton6

Caption Anterior

Name tbAnterior

Action acAnterior

ToolButton7

Caption Próximo

Name tbProximo

Action acProximo

ToolButton8

Caption Sair

Name tbSair

Action acSair

Adicione uma DataSource e nomeie como dsMenu. Como é um rotina genérica, este Data-Source não estará ligado a nenhum DataSet. Iremos ligá-lo a um DataSet somente quando estivermos manipulando os formulários. Veremos isso mais adiante.

Temos ainda os eventos que estão disponíveis no Action List, como o OnExecute, que será atribuí-do, em geral, ao OnClick dos controles vinculados à ele. Nele iremos adicionar os métodos dos DataSets (Append,Cancel,Update,Delete, post e etc).

Clique novamente na ActionList Acoes , selecione a ação acIncluir . Clique duas vezes no evento OnExecute . Listagem 1

Iremos fazer isso para todas as ações :

Veja Listagem 1.

Tabela 3

procedure TfrmMenu.acIncluirExecute(Sender: TObject);begin dsMenu.DataSet.Insert;end;

acExcluir

procedure TfrmMenu.acExcluirExecute(Sender: TObject);begin dsMenu.DataSet.Delete; TClientDataSet(dsMenu.DataSet).ApplyUpdates(-1); end;

acAlterar

procedure TfrmMenu.acAlterarExecute(Sender: TObject);begin dsMenu.DataSet.Edit;end;

acConfirmar

procedure TfrmMenu.acConfirmaExecute(Sender: TObject);begin dsMenu.DataSet.Post; TClientDataSet(dsMenu.DataSet).ApplyUpdates(-1);end;

acCancelar

procedure TfrmMenu.acCancelaExecute(Sender: TObject);begin

Listagem 1

Page 20: The Club - megazine · rial, passou a ser elemento essencial, diante da capacidade de elevar os índices de produti-vidade e de propiciar vantagens competitivas. Porém, a qualidade

dezembro 200820

dsMenu.DataSet.Cancel;end;

acAnteriorprocedure TfrmMenu.acAnteriorExecute(Sender: TObject);begin dsMenu.DataSet.Prior; dsMenuStateChange(dsMenu);end;

acProximo

procedure TfrmMenu.acProximoExecute(Sender: TObject);begin dsMenu.DataSet.Next; dsMenuStateChange(dsMenu);end;

acSair

procedure TfrmMenu.acSairExecute(Sender: TObject);begin if Self.Owner is TForm then TForm(Self.Owner).Close;end;

Listagem 1

No evento OnStateChange do DataSource dsMenu iremos controlar os ToolButtons conforme o estado do DataSet .(listagem 2)

Nossa barra de menu genérica esta finalizada

Para testar, crie um simples projeto em file>new> application. No formulário principal adicione dois componentes do dbExpress: o SQL-Connection e o SQLDataSet. Da paleta DataAccess adicione um DataSetProvider, um ClientDataSet e um DataSource.

Nesse exemplo irei utilizar o banco EMPLOYEE.GDB que se encontra na pasta C:\Arquivos de programas\Arquivos comuns\Borland Shared\Data\EMPLOYEE.GDB

Faça a conexão do componente SQLConnec-tion com o banco banco EMPLOYEE.GDB.

Na propriedade commandText do SQLDataSet digite a instrução SQL da figura 4:

Figura 4.

Conecte o DataSetProvider com o DataSet em questão (SqlDataSet) e o ClientDataSet com o DataSetProvider (providerName)

No menu Project > Add to Project adicione a

unit unFrameMenu recém criada.

Clique em Frames e selecione o frame a ser inserido .Figura5

Figura 5

procedure TfrmMenu.dsMenuStateChange(Sender: TObject);begin acIncluir.Enabled := dsMenu.State = dsBrowse; acAlterar.Enabled := dsMenu.State = dsBrowse; acExcluir.Enabled := dsMenu.State = dsBrowse; acConfirma.Enabled := dsMenu.State in [dsInsert, dsEdit]; acCancela.Enabled := dsMenu.State in [dsInsert, dsEdit]; acAnterior.Enabled := ((dsMenu.State = dsBrowse) and (dsMenu.DataSet.IsEmpty=False)); acProximo.Enabled := ((dsMenu.State = dsBrowse) and (dsMenu.DataSet.IsEmpty=False)) ; acSair.Enabled := dsMenu.State = dsBrowse;end;

Listagem 2

Page 21: The Club - megazine · rial, passou a ser elemento essencial, diante da capacidade de elevar os índices de produti-vidade e de propiciar vantagens competitivas. Porém, a qualidade

dezembro 2008 21

Formulário com o frame adicionado ( figura 6)

Veja Figura 6.

Para finalizar, faça a conexão entre o DataSour-ce dsMenu com o ClientDataSet.

Faça o teste com vários formulários do seu projeto.

Conclusão

A utilização de uma classe genérica é uma das formas de otimizar o desenvolvimento de nossas aplicações, facilitando assim nosso trabalho o tor-nando mais eficaz e profissional. Podemos reduzir drasticamente o tempo de desenvolvimento de um projeto. Portanto é uma forma de desenvolvimen-to essencial para qualquer programador Delphi.

Figura 6

Sobre o autor

Luís Alexandre de Oliveira é Téc-nologo em Processamento de Dados ,graduado pela Faculdade de Técnologia de Sorocaba, Consultor técnico do The Club

Docente do curso técnico informática - Etec de Avaré e do curso Tecnologia em Redes de Computadores - Fatec Eduvale – Avaré

Page 22: The Club - megazine · rial, passou a ser elemento essencial, diante da capacidade de elevar os índices de produti-vidade e de propiciar vantagens competitivas. Porém, a qualidade

dezembro 200822

Olá pessoal, com esse artigo fechamos a serie sobre LINQ. Espero que tenha sido bem legal!

E que tenha contribuído para e agregado conhecimento, pois esta ferramenta pra mim e uma das melhores evoluções da FrameWork. Acredito que com essa ferramenta a Microsoft conseguiu chegar muito mais perto de seu objetivo, de conseguir dar mais produtividade para o desenvolvimento ela vem tentando isso desde o VB 6, e nas primeiras versões da FrameWork .NET já tínhamos os DataSets tipados e outros approaches que eu não gosto muito, pela sua falta de transparência mais com o LINQ acredito que eles acertaram em cheio, pois ele bem utilizado melhora de mais a velocidade do desenvolvimento e uma característica muito interessante sobre ele é a legibilidade e facilidade de aprendizado que ele traz para o projeto como um todo, pois ele na sua base e simples de entender e um projeto todo baseado em LINQ fica mais simples. E não pensem quem terão códigos de baixa qualidade não porque e mais uma qualidade, códigos limpos e performáticos. Agora vamos falar de LINQ To Objects.

LINQ to Objects

O termos LINQ to Objects se refere ao uso de queries LINQ em IEnumerable ou IEnumerable<T> que são o resultado de uma consulta LINQ em um XML ou SQL, e com isso você pode fazer consultas LINQ no resultado de suas consultas, mas com a utilização do NameSpace "System.Linq" você po-derá fazer consultas em qualquer de enumerable seja List<T>, Array, Dictionary<TKey, TValue> seja ela uma coleção que você definiu ou um retorno de uma consulta ao banco de dados por exemplo.

Basicamente o LINQ to Objects representa uma nova abordagem dobre como recuperar dados de uma coleção de objetos, pois sem ele teríamos sempre que fazer complexos foreach loops para poder especificar como queria o resultado de cole-ções, para poder formatar do jeito que correto seu retorno, com o LINQ to Objects você passa a escre-ver de forma declarativa o que deve se obter.

Alem disso as Queries LINQ oferecem três principais vantagens em relação às tradicionais foreach loops:

1. Elas são mais concisas e legíveis, especialmente quando são muitas condições de filtragem.

2. Elas fornecem poderosa filtragem, or-denação e agrupamento de capacidades com um mínimo de aplicação código.

3. Eles podem ser levados para outras fontes de dados com pouca ou nenhuma modifi-cação.

Em geral, quanto mais complexa a operação que deseja realizar sobre os dados, mais a vanta-gem que você vai perceber usando LINQ em vez das tradicionais técnicas de interação e isso vale para todas as abordagens do LINQ seja To SQL, XML ou Objects.

Agora vamos fazer uma serie de exemplos de como se utilizar o LINQ to Objects para obter melhores resultados em suas aplicações.

Criando queries LINQ em ArrayList:

Veja Código Fonte 01.

Page 23: The Club - megazine · rial, passou a ser elemento essencial, diante da capacidade de elevar os índices de produti-vidade e de propiciar vantagens competitivas. Porém, a qualidade

dezembro 2008 23

using System;using System.Collections;using System.Linq;

namespace GenericLINQ{ public class Student { public string FirstName { get; set; } public string LastName { get; set; } public int[] Scores { get; set; } }

class Program { static void Main(string[] args) { ArrayList arrList = new ArrayList(); arrList.Add( new Student { FirstName = “Svetlana”, LastName = “Omelchenko”, Scores = new int[] { 98, 92, 81, 60 } }); arrList.Add( new Student { FirstName = “Claire”, LastName = “O’Donnell”, Scores = new int[] { 75, 84, 91, 39 } }); arrList.Add( new Student { FirstName = “Sven”, LastName = “Mortensen”, Scores = new int[] { 88, 94, 65, 91 } }); arrList.Add( new Student { FirstName = “Cesar”, LastName = “Garcia”, Scores = new int[] { 97, 89, 85, 82 } });

var query = from Student student in arrList where student.Scores[0] > 95 select student;

foreach (Student s in query) Console.WriteLine(s.LastName + “: “ + s.Scores[0]);

// Keep the console window open in debug mode. Console.WriteLine(“Pressione qualquer tecla para sair.”); Console.ReadKey(); } }}

/* Output: Omelchenko: 98 Garcia: 97*/

Código Fonte 01

Page 24: The Club - megazine · rial, passou a ser elemento essencial, diante da capacidade de elevar os índices de produti-vidade e de propiciar vantagens competitivas. Porém, a qualidade

dezembro 200824

Agora vamos fazer um exemplo em que criamos duas classes uma de Pessoa e a outra de Filho.

E com essas duas classes vamos fazer vários selects...

Veja Código Fonte 02

Note que a partir de uma lista de objetos con-seguimos implementar uma serie de queries que com certeza vão facilitar em muito nossa vida. Tive-mos muitos exemplos e com esse artigo fechamos a serie sobre LINQ espero ter conseguido passar todo o valor que esta ferramenta pode agregar ao nosso dia a dia...

Espero ter ajudado.

Bons Códigos...

using System;using System.Collections.Generic;using System.Linq;using System.Text;

namespace ExemplosLinqtoObjects{

class Programw { static void Main2(string[] args) {

//Alimentado lista de pessoas var pessoas = new List<Pessoa> { new Pessoa {Nome=”Alexandre” , Idade=19} , new Pessoa {Nome=”Mario” , Idade=20} , new Pessoa {Nome=”Joao”, Idade=25} , new Pessoa {Nome=”Pedro”, Idade=25} };

var query = from p in pessoas select p;

foreach (var p in query) { Console.WriteLine(“Nome: “ + p.Nome); }

var query2 = from p in pessoas where p.Idade >= 20 select p;

foreach (var p in query2) { Console.WriteLine(“Nome: “ + p.Nome); }

var query3 = from p in pessoas orderby p.Idade descending group p by p.Idade into g select new { idade = g.Key, total = g };

foreach (var grupo in query3) { Console.WriteLine(“Pessoas com:” + grupo.idade + “ anos”); foreach (var pessoa in grupo.total) { Console.WriteLine(pessoa.Nome); } }

Código Fonte 02

Page 25: The Club - megazine · rial, passou a ser elemento essencial, diante da capacidade de elevar os índices de produti-vidade e de propiciar vantagens competitivas. Porém, a qualidade

dezembro 2008 25

Sobre o autor

Fabiano BelmonteSenior Architect da InfoMoney.com, es-

pecialista em aplicações e-Business com larga experiência em B2B (Submarino.Com e Saraiva.Com). Trabalha há 5 anos com a tecnologia .Net, aplicando conhecimentos nas diversas áreas: instituições financeiras (sistema SPB), e-Commerce, gerenciamento logístico entre outras. Trabalhando com Visual Studio desde suas primeiras versões, responsável pela implementação de uma Metodologia de tra-balho e melhoras significativas no resultados e na qualidade do time de Desenvolvimento de muitas empresas por onde passou como (Saraiva.Com) e ferramentas como TFS (Team Foundation Server).

Foi palestrante em eventos como Codi-ficando. NET 2008 e outros eventos sobre Tecnologia .NET.

Instrutor da e-TNIAX Group especialista em C#, ASP.NET e Silverlight. www.etniax.com.br

var filhos = new List<Filho> { new Filho {Nome = “Alexandre Jr”, nomePai=”Alexandre”} , new Filho {Nome = “Alexandre Jr 2”, nomePai=”Alexandre”} , new Filho {Nome = “Joao Jr”, nomePai=”Joao”} };

var query4 = from p in pessoas join f in filhos on p.Nome equals f.nomePai select new { Pai = p.Nome, Filho = f.Nome };

foreach (var i in query4) { Console.WriteLine(“Pai: “ + i.Pai + “ Filho:” + i.Filho); }

var query5 = from p in pessoas join f in filhos on p.Nome equals f.nomePai group f by f.nomePai into g select new { Pai = g.Key, Total = g };

foreach (var i in query5) { foreach (var grupo in i.Total) { Console.WriteLine(grupo.Nome);

} }

Console.Read();

} }

class Pessoa { public string Nome { get; set; } public int Idade { get; set; } }

class Filho { public string Nome { get; set; } public string nomePai { get; set; } }}

Código Fonte 02

Page 26: The Club - megazine · rial, passou a ser elemento essencial, diante da capacidade de elevar os índices de produti-vidade e de propiciar vantagens competitivas. Porém, a qualidade

dezembro 200826

Dicas DELPHIDBGrid – Congelar uma coluna

Type THack = class(TDBGrid)end;var Form1: TForm1;implementation{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);begin THack(DBGrid1).FixedCols := 2 ; // Desliga o ScrollBar Horizontal do DBGrid // Declarar a Unit STDCtrls para o ssNone THack(DBGrid1).ScrollBars := ssNone;end;procedure TForm1.DBGrid1ColEnter(Sender: TObject);begin if ( THack(DBGrid1).SelectedIndex = 0 ) then THack(DBGrid1).LeftCol := 2;end;

Desligar/Reiniciar o Windows XP

{Reiniciar}ShellExecute(0,nil,'shutdown',PChar('-r -f -t 00'),nil,sw_hide);{Desligar}ShellExecute(0,nil,'shutdown',PChar('-s -f -t 00'),nil,sw_hide);

Edit – Digitar Somente Números

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);

begin if ((Key in ['0'..'9'] = False) and (Word(Key) <> VK_BACK)) then Key := #0;end;

Form – Executar um Avi no Form

procedure TForm1.BitBtn1Click(Sender: TObject);begin with MediaPlayer1 do begin FileName := 'c:\windows\help\scroll.avi'; Open; Display := Form2; Form2.Show; Play; end;end;

InnoSetup – Verificar a Versão do Aplicativo antes de instalar

[Setup]AppName=VerificaVersaoAppVerName=VerificaVersaoDefaultDirName={pf}\VerificaVersaoDisableStartupPrompt=trueUninstallable=falseDisableDirPage=trueOutputBaseFilename=VerificaVersao[Code]function GetVersion(): String;var sVersion: String;begin sVersion := ''; GetVersionNumbersString( ExpandConstant('{win}\notepad.exe') , sVersion ); Result := sVersion;end;function InitializeSetup(): Boolean;begin if GetVersion() = '5.1.2600.0' then begin MsgBox( 'Versão instalada: ' + GetVersion() + chr(13) + ' Você só poderá instalar uma versão superior.', mbInformation, MB_OK ); Result := false; end else Result := true;end;

Page 27: The Club - megazine · rial, passou a ser elemento essencial, diante da capacidade de elevar os índices de produti-vidade e de propiciar vantagens competitivas. Porém, a qualidade

dezembro 2008 27

Page 28: The Club - megazine · rial, passou a ser elemento essencial, diante da capacidade de elevar os índices de produti-vidade e de propiciar vantagens competitivas. Porém, a qualidade

dezembro 200828

Código Fonte 01.

Código Fonte 02.

Código Fonte 03.

Código Fonte 04.

Código Fonte 05.

Dicas .NET

Algumas vezes precisamos executar métodos de uma página a partir de um UserControl é, isso pode parecer muito complicado, mas não é. Isso pode ocorrer por exemplo com um UserControl de paginação quando o Usuário clica na página de destino precisa bindar novamente os dados da página, só que o método de bindar o grid está na página e o evento ocorre no controle, que são coisas distintas. Como fazer então para do controle disparar o evento na página? A seguir faremos um pequeno exemplo mostrando como faze-lo. A idéia é mostrar que é possível, e como, a partir daí e com vocês...

Vamos lá!

Em um projeto web tenho uma página default.aspx essa página tem um Label como no código fonte 01:.

Vou criar um UserControl dentro deste site. Vou chamá-lo de ucDispara-Evento.ascx no controle vide código fonte 02:.

Agora vou adcionar o controle a página:

Veja o Código Fonte 03.

No UserControl vou adcionar um TextBox onde poderemos digitar a mensagem e um LinkButton com um evento OnClick que fará a chamada para o método da Página “Default.aspx”

Veja o Código Fomte 04.

Agora de volta a página Default.aspx vamos criar um método que irá receber uma string e imprimir no Label.

Veja o Código Fonte 05.

Agora que são elas! Como fazer para que no onClick do controle o método RecebeMensagem na página seja executado também. Parece complicado

Como executar um método de uma página em um UserControl

<body> <form id=”form1” runat=”server”> <div> <asp:Label ID=”lblMessage” runat=”server” /> </div> </form></body>

<%@ Control Language=”C#” AutoEventWireup=”true” CodeFile=”ucDisparaEvento.ascx.cs” Inherits=”ucDisparaEvento” %>

***Não esqueça da diretiva de registro do controle no início da página.<form id=”form1” runat=”server”> <div> <asp:Label ID=”lblMessage” runat=”server” /> <br /> <uc1:ucDisparaEvento ID=”ucDisparaEvento1” runat=”server” /> </div></form>

<asp:TextBox ID=”txtMessage” runat=”server” /><br /><asp:LinkButton ID=”lnkExibeMsg” runat=”server” Text=”Exibe Mensagem na Pagina” OnClick=”lnkExibeMsg_Click” />

public void RecebeMensagem(string MSG){ lblMessage.Text = MSG;}

Page 29: The Club - megazine · rial, passou a ser elemento essencial, diante da capacidade de elevar os índices de produti-vidade e de propiciar vantagens competitivas. Porém, a qualidade

dezembro 2008 29

Código Fonte 06.

Código Fonte 07.

Código Fonte 08.

Código Fonte 09.

Sobre o autor

Fabiano BelmonteSenior Architect da InfoMoney.com, especialista em aplicações e-Busi-

ness com larga experiência em B2B (Submarino.Com e Saraiva.Com). Trabalha há 5 anos com a tecnologia .Net, aplicando conhecimentos nas diversas áreas: instituições financeiras (sistema SPB), e-Commerce, gerenciamento logístico entre outras. Trabalhando com Visual Studio desde suas primeiras versões, responsável pela implementação de uma Metodologia de trabalho e melhoras significativas no resultados e na qualidade do time de Desenvolvimento de muitas empresas por onde passou como (Saraiva.Com) e ferramentas como TFS (Team Foundation Server).

Foi palestrante em eventos como Codificando. NET 2008 e outros eventos sobre Tecnologia .NET.

Instrutor da e-TNIAX Group especialista em C#, ASP.NET e Silverlight. www.etniax.com.br

public interface IMensagem{ void RecebeMensagem(string Mensagem);}

public partial class _Default : System.Web.UI.Page, IMensagem

((IMensagem)Page).RecebeMensagem(txtMessage.Text);

if (this.Page is IMensagem) ((IMensagem)Page).RecebeMensagem(txtMessage.Text);

else

throw new Exception(“A página precisa implementar a interface IMensagem”);

Figura 01.

mas ...

Veja como podemos solucionar este impasse, criamos uma Interface que irá implementar esse método. Segue o código da Interface:;

Veja o Código Fonte 06.

Uma solução simples, elegante e eficiente. Vamos lá!

E agora a Página passa a implementar esta Interface.

Veja o Código Fonte 07.

E agora no controle utilizamos a interface para fazer a chamada do método na página. Como no exemplo abaixo.

Veja o Código Fonte 08.

Porque a página implementa esta interface que expõe o método Rece-beMensagem e nos possibilita utilizá-lo no UserControl. Esta solução e bem legal porque além disso podemos controlar se a página que esta utilizando esse UserControl implementa a Interface, se não implementar podemos gerar uma exeption por exemplo,como no código abaixo.

Veja o Código Fonte 09.

Vejam o Resultado na figura 01:

É isso ai pessoal espero ter passado uma experiência nova para vocês! E que esse artigo contribua mais para seu aprendizado.

Para saber mais truques como este, não percam a próxima turma de ASP.NET, pois temos muitas dicas interessantes como esta.

Bons Códigos...

Page 30: The Club - megazine · rial, passou a ser elemento essencial, diante da capacidade de elevar os índices de produti-vidade e de propiciar vantagens competitivas. Porém, a qualidade

dezembro 200830

Page 31: The Club - megazine · rial, passou a ser elemento essencial, diante da capacidade de elevar os índices de produti-vidade e de propiciar vantagens competitivas. Porém, a qualidade

dezembro 2008

Page 32: The Club - megazine · rial, passou a ser elemento essencial, diante da capacidade de elevar os índices de produti-vidade e de propiciar vantagens competitivas. Porém, a qualidade

dezembro 2008