migrando 4 milhões de linhas de delphi 7 para xe7

34

Upload: jose-araujo

Post on 17-Jun-2015

2.745 views

Category:

Technology


6 download

DESCRIPTION

Apresentação realizada no Embarcadero Conference 2014. Mostra o caso de sucesso da Fortes Informática na atualização da sua plataforma de desenvolvimento.

TRANSCRIPT

Page 1: Migrando 4 milhões de linhas de Delphi 7 para XE7
Page 2: Migrando 4 milhões de linhas de Delphi 7 para XE7

Migrando ~4 milhões de linhas de código de Delphi 7 > XE7

José Araújo

Page 3: Migrando 4 milhões de linhas de Delphi 7 para XE7

Quem?

• 9 anos na área de desenvolvimento;• Fortes Informática(Fortes Report);•Delphi Developer Certification;• Embarcadero Conference 2011, 2012;• Sócio da Startup Top Sistemas;

Page 4: Migrando 4 milhões de linhas de Delphi 7 para XE7

Um pouco de história

• Clipper;•Delphi 1;• BDE;•Mesmos programadores;• Conceito RAD;• 15 anos de legado;•+50 programadores/analistas;

Page 5: Migrando 4 milhões de linhas de Delphi 7 para XE7

Motivação

•Delphi 7 obsoleto;• Problemas com link edição;• Se livrar do BDE;• Colaboradores insatisfeitos;• Embarcadero (Delphi – O Retorno);• AlphaControls(Projeto Botox);

Page 6: Migrando 4 milhões de linhas de Delphi 7 para XE7

Dificuldades

•Muitos usuários(+40 mil);• Backlog, bugs;•Muitas pessoas envolvidas;•GP’$;• Vendedore$;•Diretore$;

Page 7: Migrando 4 milhões de linhas de Delphi 7 para XE7

1ª reunião

•GP’s, Vendedores, Diretores e Programadores;• Todos na mesma sala;

Page 8: Migrando 4 milhões de linhas de Delphi 7 para XE7

2ª reunião

• Reuniões separadas primeiro;•GP’s, Vendedores, Diretores;• Estratégia para cada grupo;•GP’s: Entregar mais tarefas;• Vendedores: Sistema mais rico;•Diretores: Maior retorno $;

Page 9: Migrando 4 milhões de linhas de Delphi 7 para XE7

3ª reunião

•GP’s, Vendedores, Diretores e Programadores;• Todos na mesma sala;

Page 10: Migrando 4 milhões de linhas de Delphi 7 para XE7

Recursos

• Pessoas para executar;• 1 membro de cada equipe;• Algumas horas por dia;• Equipe PeD (Pesquisa e Desenvolvimento);• Buscar novos conhecimento;• Resolver impedimentos do setor;

Page 11: Migrando 4 milhões de linhas de Delphi 7 para XE7

Vamos começar

Page 12: Migrando 4 milhões de linhas de Delphi 7 para XE7

Cenário

• 9 sistemas;• 9 segmentos diferentes;•~4 milhões de linhas;• Firebird e SQLServer;•Delphi 7 (12 anos);• BDE (Era o que tinha);• Poucos componentes de terceiros;

Page 13: Migrando 4 milhões de linhas de Delphi 7 para XE7

Analisando valores

•Delphi 7 x Delphi XE;• BDE x DBXpress;•Morro(MOnitor de eRROs);•Maiores queixas dos clientes;• Problemas com blobs;•MaxFileHandle;

Page 14: Migrando 4 milhões de linhas de Delphi 7 para XE7

DLib2

• BDE <> DBXpress(Totalmente);• E se amanhã mudar denovo;•Design Pattern Strategy;•Wrapper(Empacotador);•Mínimo de impacto nos sistemas;• Reduzir tempo de conversão;

Page 15: Migrando 4 milhões de linhas de Delphi 7 para XE7

Conversor

• Próprio;• reFind;• Programações “criativas”;• *.dfm;• *.pas;• Protótipos;• Passos pequenos;

Page 16: Migrando 4 milhões de linhas de Delphi 7 para XE7

Exemplos

• TDataBase > TDLServerConnection;• SessionName: Morreu;• ServerAddress: Morreu;• DataBaseName > ConnectionName;• DataBaseFile > DataBaseURL;

• TQuery > TDLQuery;• TDataSource > TDLDataSource;•Uses: DLDataSet, DLConnections;

• DB,• DB;

Page 17: Migrando 4 milhões de linhas de Delphi 7 para XE7

Técnica

•DevOps (Blue/Green);• Rollback rápido;

Sistema Router(Conversor)

BDE

DLib2 DBXpress

Page 18: Migrando 4 milhões de linhas de Delphi 7 para XE7

Implantação

•Delphi 7 ainda;•Homologamos internamente;• Programa Beta;•Nossos Representantes(Filiais);• Servidor de Deploy gera 2 pacotes;

Page 19: Migrando 4 milhões de linhas de Delphi 7 para XE7

Técnica

Page 20: Migrando 4 milhões de linhas de Delphi 7 para XE7

Técnica

• Implantação “Canário” (Teste em Produção);•DevOps;• Sinalizador;

Usuários Router(Implantadores)

BDE

DLib2 DBXpress

95%

5%

Page 21: Migrando 4 milhões de linhas de Delphi 7 para XE7

BDE Adeus!

BDE1800 AC – 2013 DC

Page 22: Migrando 4 milhões de linhas de Delphi 7 para XE7

Delphi XE?

• Volta as atenções;• Ânimo da equipe; • Vamos para o XE;• Investimento “Alto”;

Page 23: Migrando 4 milhões de linhas de Delphi 7 para XE7

Delphi 7 > XE7

• Benefícios;• Linguagem; • 64 bits;• FireDAC;• VCL Style;

Page 24: Migrando 4 milhões de linhas de Delphi 7 para XE7

Técnica

• Arquitetura de convivência;•Não atrapalhar a produção;•Mudança paralela; •Diretivas de compilação;

Page 25: Migrando 4 milhões de linhas de Delphi 7 para XE7

Exemplos

uses

{$IF CompilerVersion = cvDelphiXE7}

DBXCommon,

{$ELSE}

DBXpress,

{$IFEND}

Page 26: Migrando 4 milhões de linhas de Delphi 7 para XE7

Exemplos

const

cvDelphiXE = 22; //VER220

cvDelphiXE2 = 23; //VER230

cvDelphiXE3 = 24; //VER240

cvDelphiXE4 = 25; //VER250

cvDelphiXE5 = 26; //VER260

cvDelphiXE6 = 27; //VER270

cvDelphiXE7 = 28; //VER280

Page 27: Migrando 4 milhões de linhas de Delphi 7 para XE7

Exemplos

{$IF CompilerVersion = cvDelphiXE7}

function TDLQuery.GetRecord(Buffer: TRecBuf; ...): TGetResult;

{$ELSE}

function TDLQuery.GetRecord(Buffer: PChar; ...): TGetResult;

{$IFEND}

begin

try

Result := inherited GetRecord(Buffer, GetMode, DoCheck);

except

on e: Exception do

raise Exception.Create(...);

end;

end;

Page 28: Migrando 4 milhões de linhas de Delphi 7 para XE7

Exemplos

{$IF CompilerVersion = cvDelphiXE7}

procedure OnDocumentComplete(ASender: TObject; const pDisp: IDispatch; const URL: OleVariant);

{$ELSE}

procedure OnDocumentComplete(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant);

{$IFEND}

Page 29: Migrando 4 milhões de linhas de Delphi 7 para XE7

O Exemplo

unit DelphiUp;

interface

const

{$IF CompilerVersion = cvDelphiXE7}

EmptyBookmark = nil;

{$ELSE}

EmptyBookmark = '';

{$IFEND}

type

{$IF CompilerVersion = cvDelphi7}

TBookmark = string;

{$IFEND}

Page 30: Migrando 4 milhões de linhas de Delphi 7 para XE7

Migração Total

• Sim! Analisamos;

Page 31: Migrando 4 milhões de linhas de Delphi 7 para XE7

Segurança

Page 32: Migrando 4 milhões de linhas de Delphi 7 para XE7

Segurança...

Page 33: Migrando 4 milhões de linhas de Delphi 7 para XE7

Segurança...

• Testes automatizados;• Código versionado;• Testes humanos;• Passos pequenos;• Teste Complete;•DUnit;• Protótipos;

Page 34: Migrando 4 milhões de linhas de Delphi 7 para XE7

[email protected]@cengenharia

centraldaengenharia.wordpress.com