SlideShare uma empresa Scribd logo
http://netponto.org12ª Reunião Presencial - 10/07/2010Estratégias de Estruturação de Código-fonte e Controlo de VersãoTiago Pascoal
Tiago Pascoaltiago.pascoal@agilior.pthttp://agilior.pt/blogs/tiago.pascoal
AgendaArquitectura?Padrões?Código?Estruturas?Veremos….
I am not teaching you anything. I just help you to explore yourself.If you want to learn to swim jump into the water. On dry land no frame of mind is ever going to help you.
Aviso...
Desenvolvimento em SérieQuando alguém está a trabalhar num ou mais artefactos tem exclusividade sobre ele e mais ninguém lhe pode mexer
Estratégias de Estruturação de Código-fonte e Controlo de Versão
Estratégias de Estruturação de Código-fonte e Controlo de Versão
Estratégias de Estruturação de Código-fonte e Controlo de Versão
TEM DE HAVER UMA MANEIRA MELHOR... UM POUCO MAIS FLEXÍVEL
Conway Law“...organizations which design systems ... are constrained to produce designs which are copies of the communication structures of these organizations.”http://en.wikipedia.org/wiki/Conway%27s_Law
Meu CorolárioA qualidade e a fluidez do desenvolvimento está dependente da estrutura e organização do código, mas acima de tudo pela flexibilidade e dos padrões oferecidos pelo sistema de controlo de versões...
Desenvolvimento ConcorrenteModelo de concorrência optimista. Várias pessoas podem mexer no mesmo artefacto e só em caso de conflito será necessário intervenção humanaMas e a arquitectura senhor?O que é que isto tem a ver com arquitectura?hei-de ouvir o teu parecerhás-de me dizerhás-de me dizerhás-de me dizerse é cada coisa para seu ladoou se isto anda tudo ligado				Sérgio Godinho
Isto anda tudo ligado...Padrões OrganizacionaisPadrões ArquitecturaisPadrões Organização de código (dia-a-dia)Padrões “Formação” de código (a genese)
Padrões OrganizacionaisTODO: meter o diagrama do livroVão ter de imaginar. O meu scanner não funciona no Windows 7 :)Página 100
Padrões de Organização de Código
Ou estas...
Padrões
Controlo de VersõesMáquina do tempoPermite reconstruir e perceber o passado e a evolução do código fonte...
Controlo de VersõesMáquina do tempoPermite reconstruir e perceber o passado e a evolução do código fonte...
Controlo de VersõesMáquina do tempoPermite reconstruir e perceber o passado e a evolução do código fonte...
Controlo de VersõesMáquina do tempoPermite reconstruir e perceber o passado e a evolução do código fonte...
Source Control ModernoCaracterísticas ExpectáveisOperaçõesatómicasMarcação de código  (taggingoulabelling)BranchingMergingMerge through RenameNavegaçãorepositórioClienteWeb
Source Control ModernoCaracterísticas ExpectáveisOperaçõesatómicasMarcação de código  (taggingoulabelling)BranchingMergingMerge through RenameNavegaçãorepositórioClienteWeb
Source Control ModernoCaracterísticas ExpectáveisOperaçõesatómicasMarcação de código  (taggingoulabelling)BranchingMergingMerge through RenameNavegaçãorepositórioClienteWeb
Dinossauro
Dinossauro
Dinossauro
E os Sistemas Distribuídos? (DVCS)TeamWare   (90s)Code Co-op (97)GNU ArchDarcsSVKMercurialBazaarGit
Cool Kids
Cool Kids
Source Control: TerminologiaMainlineou trunk – Árvore principal de desenvolvimento.  Possui os desenvolvimentos mais actuais.Branch– A separação de um item (directoria, ficheiro) para um caminho alternativo. Os caminhos são independentes.Label ou Tag– Define um snapshot de uma árvore de desenvolvimento a um dado momento. Auxílio para definição de uma baseline.
Padrões de OrganizaçãoControlo de Versões
Codeline por Versão / ReleaseExiste uma árvore de desenvolvimento distinta para cada versãoQue terá que ser mantidaAdequada para o desenvolvimento de produtos
Codeline por AmbienteSe substituirmos versão por ambiente, temos um padrão mais adequado a empresas que não desenvolvem produtosO código é promovido entre ambientes à medida das necessidadesEg: desenvolvimento, testes, qualidade e produção.
Um método possívelUma árvore de desenvolvimento TrunkA raiz deve ser muito pequenaAconselhável criar especificamente um trunk na raiz. Facilita o branching.Ao colocar criar uma versão colocar-lhe uma labelPermite reproduzir a qualquer altura uma dada versãoSe necessário corrigir um bug numa dada versão e não for possível colocar a versão em produção, criar um branch a partir da label.Corrigir o bug no branch, e fazer o merge para os ambientes necessários (forward merge)
Cuidados a ter no Check-InOs check-insdevem ser atómicosNão devemos misturar diferentes tarefas no mesmo check-inUma tarefa por check-in apenasEstas práticas facilitam a rastreabilidadeNota: Para sistemas em que existe capacidade de ligação entre código e tarefas
All fixed set patterns are incapable of adaptability or pliability. The truth is outside of all fixed patternsBruce Lee
Estruturação de um Projecto
Obey the principles without being bound by themBruce Lee
Estruturação Árvore Desenvolvim.Não existe uma maneira pré-definida de estruturação de código...O sistema de controlo de versões não deve qualquer obrigação ou coloca restrição na estruturação da árvore de desenvolvimentoMas existem algumas práticas que facilitam o processo de desenvolvimento
Práticas de Estruturação?Escrever um documento com as convenções e práticas a utilizar na estruturação de códigoA estruturação pode não ser perfeita, mas a consistência facilita a comunicação, a migração entre equipas e o processo de desenvolvimento
Estruturação de um ProjectoUma prática possível...
Estruturação de um ProjectoNa raiz criar uma directoria com o nome do projecto (raiz do projecto)Não colocar ficheiros na raiz do projectoA raiz do projecto contém apenas directoriasPara cada um dos branchesDar um nome bem definido para a arvore principal (eg trunk, mainline). Este nome será comum a todos os projectos
Árvore de ProjectoDefinir uma convenção para estruturação das directorias do projecto e seguí-las em todos os projectosPrevisibilidade e ajudam a comunicação e à adaptação de um projectoReduz Custo de entradaAumenta productividadeReduz erros
Sugestão para Árvore de ProjectoProjecto ATrunk – Directoria principal. Contém o(s) ficheiro(s) da(s) solução(ões)Solution ItemsDependencies –Bibliotecas licenciadas , bibliotecas comuns entre projectoInstallation – Ficheiros para criar o instalador da aplicaçãoSource – Código fonte da aplicação. Estruturar por módulos ou por tecnologia. Contém os ficheiros de projecto de Visual StudioMódulo 1Modulo 2Módulo ...TestsUnitLoadManualIntegration...
Agregação de CódigoSolution – Pode Conter:Um mais projectosFicheiros (Item)Directorias virtuais (solution folders)Project – ContémTem um tipoCada tipo poderá ter caracteristicas distintasReferências para outros projectos (dependencias) da soluçãoReferências a DLLsCódigoFicheiros
Estruturação da SoluçãoUtilizar Solution Folders Mapeia areas lógicas da soluçãoFacilita a organização e navegação no códigoNão tem que ser um mapeamento directo para as directorias de projecto
Código Comum a vários ProjectosColocado na directoria DependenciesGerido tal e qual se fosse um componente desenvolvido por uma entidade externa (eg: biblioteca de gráficos)Não ligar directamente ao código-fonte do projecto comumSerá feito o upgrade para uma nova versão quando a equipa o entender e não sempre que é feita uma alteração
O que ficou de fora?BuildsRastreabilidadeLigação a outros sistemas:TestesRequisitosBugs
Em SumaRepositório centralizado de todos os artefactosCódigo fonteScriptsModelo de dadosScripts de instalaçãoTeste do AlgodãoInstalar uma nova máquina, ligá-la à rede, obter a última versão do repositórioÉ possível compilar o código sem processos manuais?
Questões?
ReferênciasCM Patterns for Agilityhttp://www.scmpatterns.comMicrosoft Team Foundation Server Branching Guidancehttp://www.codeplex.com/BranchingGuidanceVisual Studio TFS Branching Guide 2010http://tfsbranchingguideiii.codeplex.com
Patrocinadores desta reunião
Próximas reuniões presenciais10/07/2010 - Julho14/08/2010 - Agosto18/09/2010 - Setembro23/10/2010 - OutubroReserva estes dias na agenda! :)
Obrigado!Tiago Pascoaltiago.pascoal@agilior.pthttp://agilior.pt/blogs/tiago.pascoal
Estratégias de Estruturação de Código-fonte e Controlo de Versão

Mais conteúdo relacionado

PDF
Exemplos de Design Patterns em Java
PPT
Padroes de projetos gof
PDF
Padrões de projeto
PPTX
React e reactividade Meetup Facebook Developer Circles
PPT
Design Patterns
PPTX
BDD (Behavior-Driven Development) - Setembro/2015
PPTX
Padrões de projeto - Adapter, Proxy, Composite e Bridge
PPTX
Metodologias Ágeis de Desenvolvimento de Software
Exemplos de Design Patterns em Java
Padroes de projetos gof
Padrões de projeto
React e reactividade Meetup Facebook Developer Circles
Design Patterns
BDD (Behavior-Driven Development) - Setembro/2015
Padrões de projeto - Adapter, Proxy, Composite e Bridge
Metodologias Ágeis de Desenvolvimento de Software

Mais procurados (20)

PDF
O papel e a carreira do arquiteto de software
PDF
Iniciando no Codeigniter
PDF
Tdd como uma ferramenta de arquitetura
PPTX
BDD (Behavior-Driven Development)
PDF
Framework JGenesis
PDF
Padroes De Projeto
PPTX
Programação orientada à objetos & mvc
PDF
Introducao a Arquitetura de Software
PDF
MVC já era! O negócio é DCI!
PDF
Crescendo profissionalmente com o apoio comunidade
PDF
Poo apostila visual c
PPT
Padrões Arquiteturais de Sistemas
PPTX
Processos Ágeis - Scrum, Kanban ou ScrumBan
PDF
DDD e PHP - TDC 2012
PDF
Como DDD e Strategic Design estão nos ajudando a modernizar um Legado
PPTX
Usabilidade aplicada a dispositivos móveis
PPTX
DevOps: Entregando software e serviços rapidamente
PDF
Metodologias Ágeis para o Desenvolvimento de Software
PPT
Engenharia Reversa e Reengenharia Software
O papel e a carreira do arquiteto de software
Iniciando no Codeigniter
Tdd como uma ferramenta de arquitetura
BDD (Behavior-Driven Development)
Framework JGenesis
Padroes De Projeto
Programação orientada à objetos & mvc
Introducao a Arquitetura de Software
MVC já era! O negócio é DCI!
Crescendo profissionalmente com o apoio comunidade
Poo apostila visual c
Padrões Arquiteturais de Sistemas
Processos Ágeis - Scrum, Kanban ou ScrumBan
DDD e PHP - TDC 2012
Como DDD e Strategic Design estão nos ajudando a modernizar um Legado
Usabilidade aplicada a dispositivos móveis
DevOps: Entregando software e serviços rapidamente
Metodologias Ágeis para o Desenvolvimento de Software
Engenharia Reversa e Reengenharia Software
Anúncio

Semelhante a Estratégias de Estruturação de Código-fonte e Controlo de Versão (20)

PDF
Clean Architecture
PDF
Engenharia de Software I - Aula 6
PDF
TDC2016SP - Trilha Microservices
PPTX
Treinamento ASP.NET 2014
PPT
Padrões De Projeto e Anti Patterns
ODP
Arquitetura web para sistemas de negócio
ODP
Entendendo Frameworks web com Python
ODP
Entendendo Framework Web com Python
DOCX
Trabalho 4 Semestre e 5 Semestre 2015
PPTX
Domain-Driven Design
PPT
Teched Brasil 2005 - A Metodologia MSF Agile e o Visual Studio Team System
PPTX
Tendências e Dicas para o Desenvolvimento de Software
PPTX
Keynote Visual Studio Summit 2016
PPTX
Introdução ao Domain-Driven Design
PPTX
Sistemas de controle de versão
PPTX
Evolução do .NET Framework e do Visual Basic
PPTX
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
PDF
Escalando apps com React e Type Script e SOLID
PPTX
1º FasS2B 2010
PDF
APSI 2 aulas - padroes arquiteturais - camadas PROF.TARCIANE
Clean Architecture
Engenharia de Software I - Aula 6
TDC2016SP - Trilha Microservices
Treinamento ASP.NET 2014
Padrões De Projeto e Anti Patterns
Arquitetura web para sistemas de negócio
Entendendo Frameworks web com Python
Entendendo Framework Web com Python
Trabalho 4 Semestre e 5 Semestre 2015
Domain-Driven Design
Teched Brasil 2005 - A Metodologia MSF Agile e o Visual Studio Team System
Tendências e Dicas para o Desenvolvimento de Software
Keynote Visual Studio Summit 2016
Introdução ao Domain-Driven Design
Sistemas de controle de versão
Evolução do .NET Framework e do Visual Basic
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
Escalando apps com React e Type Script e SOLID
1º FasS2B 2010
APSI 2 aulas - padroes arquiteturais - camadas PROF.TARCIANE
Anúncio

Mais de Comunidade NetPonto (20)

PDF
Continuous Delivery for Desktop Applications: a case study - Miguel Alho & Jo...
PPTX
Criando aplicações para windows phone 8.1 e windows 8.1 com o app studio da...
PPTX
MVVM Light e Cimbalino Toolkits - Sara Silva
PPTX
Deep dive into Windows Azure Mobile Services - Ricardo Costa
PDF
The power of templating.... with NVelocity - Nuno Cancelo
PPTX
ASP.Net Performance – A pragmatic approach - Luis Paulino
PPTX
ASP.NET Signal R - Glauco Godoi
PPTX
NoSQL em Windows Azure Table Storage - Vitor Tomaz
PPTX
HTML5 - Pedro Rosa
PPTX
De Zero a Produção - João Jesus
PPTX
OData – Super Cola W3
PPTX
Como deixar de fazer "copy and paste" entre Windows Store e Windows Phone Apps
PPTX
Case studies about Layout & View States & Scale in Windows 8 Store Apps
PPTX
Aspect-oriented Programming (AOP) com PostSharp
PPTX
Utilização de Mock Objects em Testes Unitários
PPTX
Dinâmica e Motivacao de Equipas de Projecto
PPTX
KnockoutJS com ASP.NET MVC3: Utilização na vida real
PPTX
Como ser programador durante o dia e mesmo assim dormir bem à noite
PPTX
Windows 8: Desenvolvimento de Metro Style Apps - C. Augusto Proiete
PPTX
Uma Introdução a ASP.NET Web API
Continuous Delivery for Desktop Applications: a case study - Miguel Alho & Jo...
Criando aplicações para windows phone 8.1 e windows 8.1 com o app studio da...
MVVM Light e Cimbalino Toolkits - Sara Silva
Deep dive into Windows Azure Mobile Services - Ricardo Costa
The power of templating.... with NVelocity - Nuno Cancelo
ASP.Net Performance – A pragmatic approach - Luis Paulino
ASP.NET Signal R - Glauco Godoi
NoSQL em Windows Azure Table Storage - Vitor Tomaz
HTML5 - Pedro Rosa
De Zero a Produção - João Jesus
OData – Super Cola W3
Como deixar de fazer "copy and paste" entre Windows Store e Windows Phone Apps
Case studies about Layout & View States & Scale in Windows 8 Store Apps
Aspect-oriented Programming (AOP) com PostSharp
Utilização de Mock Objects em Testes Unitários
Dinâmica e Motivacao de Equipas de Projecto
KnockoutJS com ASP.NET MVC3: Utilização na vida real
Como ser programador durante o dia e mesmo assim dormir bem à noite
Windows 8: Desenvolvimento de Metro Style Apps - C. Augusto Proiete
Uma Introdução a ASP.NET Web API

Último (18)

PPTX
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
PDF
Aula04-Academia Heri- Tecnologia Geral 2025
PPTX
Aula 18 - Manipulacao De Arquivos python
PPTX
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
PDF
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
PDF
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
PPTX
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
PDF
Processos na gestão de transportes, TM100 Col18
PDF
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
PDF
Apple Pippin Uma breve introdução. - David Glotz
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PDF
Custos e liquidação no SAP Transportation Management, TM130 Col18
PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PDF
COBITxITIL-Entenda as diferença em uso governança TI
PDF
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
PDF
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
PDF
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
PDF
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
Aula04-Academia Heri- Tecnologia Geral 2025
Aula 18 - Manipulacao De Arquivos python
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
Processos na gestão de transportes, TM100 Col18
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
Apple Pippin Uma breve introdução. - David Glotz
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
Custos e liquidação no SAP Transportation Management, TM130 Col18
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
COBITxITIL-Entenda as diferença em uso governança TI
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...

Estratégias de Estruturação de Código-fonte e Controlo de Versão

  • 1. http://netponto.org12ª Reunião Presencial - 10/07/2010Estratégias de Estruturação de Código-fonte e Controlo de VersãoTiago Pascoal
  • 4. I am not teaching you anything. I just help you to explore yourself.If you want to learn to swim jump into the water. On dry land no frame of mind is ever going to help you.
  • 6. Desenvolvimento em SérieQuando alguém está a trabalhar num ou mais artefactos tem exclusividade sobre ele e mais ninguém lhe pode mexer
  • 10. TEM DE HAVER UMA MANEIRA MELHOR... UM POUCO MAIS FLEXÍVEL
  • 11. Conway Law“...organizations which design systems ... are constrained to produce designs which are copies of the communication structures of these organizations.”http://en.wikipedia.org/wiki/Conway%27s_Law
  • 12. Meu CorolárioA qualidade e a fluidez do desenvolvimento está dependente da estrutura e organização do código, mas acima de tudo pela flexibilidade e dos padrões oferecidos pelo sistema de controlo de versões...
  • 13. Desenvolvimento ConcorrenteModelo de concorrência optimista. Várias pessoas podem mexer no mesmo artefacto e só em caso de conflito será necessário intervenção humanaMas e a arquitectura senhor?O que é que isto tem a ver com arquitectura?hei-de ouvir o teu parecerhás-de me dizerhás-de me dizerhás-de me dizerse é cada coisa para seu ladoou se isto anda tudo ligado Sérgio Godinho
  • 14. Isto anda tudo ligado...Padrões OrganizacionaisPadrões ArquitecturaisPadrões Organização de código (dia-a-dia)Padrões “Formação” de código (a genese)
  • 15. Padrões OrganizacionaisTODO: meter o diagrama do livroVão ter de imaginar. O meu scanner não funciona no Windows 7 :)Página 100
  • 19. Controlo de VersõesMáquina do tempoPermite reconstruir e perceber o passado e a evolução do código fonte...
  • 20. Controlo de VersõesMáquina do tempoPermite reconstruir e perceber o passado e a evolução do código fonte...
  • 21. Controlo de VersõesMáquina do tempoPermite reconstruir e perceber o passado e a evolução do código fonte...
  • 22. Controlo de VersõesMáquina do tempoPermite reconstruir e perceber o passado e a evolução do código fonte...
  • 23. Source Control ModernoCaracterísticas ExpectáveisOperaçõesatómicasMarcação de código (taggingoulabelling)BranchingMergingMerge through RenameNavegaçãorepositórioClienteWeb
  • 24. Source Control ModernoCaracterísticas ExpectáveisOperaçõesatómicasMarcação de código (taggingoulabelling)BranchingMergingMerge through RenameNavegaçãorepositórioClienteWeb
  • 25. Source Control ModernoCaracterísticas ExpectáveisOperaçõesatómicasMarcação de código (taggingoulabelling)BranchingMergingMerge through RenameNavegaçãorepositórioClienteWeb
  • 29. E os Sistemas Distribuídos? (DVCS)TeamWare (90s)Code Co-op (97)GNU ArchDarcsSVKMercurialBazaarGit
  • 32. Source Control: TerminologiaMainlineou trunk – Árvore principal de desenvolvimento. Possui os desenvolvimentos mais actuais.Branch– A separação de um item (directoria, ficheiro) para um caminho alternativo. Os caminhos são independentes.Label ou Tag– Define um snapshot de uma árvore de desenvolvimento a um dado momento. Auxílio para definição de uma baseline.
  • 34. Codeline por Versão / ReleaseExiste uma árvore de desenvolvimento distinta para cada versãoQue terá que ser mantidaAdequada para o desenvolvimento de produtos
  • 35. Codeline por AmbienteSe substituirmos versão por ambiente, temos um padrão mais adequado a empresas que não desenvolvem produtosO código é promovido entre ambientes à medida das necessidadesEg: desenvolvimento, testes, qualidade e produção.
  • 36. Um método possívelUma árvore de desenvolvimento TrunkA raiz deve ser muito pequenaAconselhável criar especificamente um trunk na raiz. Facilita o branching.Ao colocar criar uma versão colocar-lhe uma labelPermite reproduzir a qualquer altura uma dada versãoSe necessário corrigir um bug numa dada versão e não for possível colocar a versão em produção, criar um branch a partir da label.Corrigir o bug no branch, e fazer o merge para os ambientes necessários (forward merge)
  • 37. Cuidados a ter no Check-InOs check-insdevem ser atómicosNão devemos misturar diferentes tarefas no mesmo check-inUma tarefa por check-in apenasEstas práticas facilitam a rastreabilidadeNota: Para sistemas em que existe capacidade de ligação entre código e tarefas
  • 38. All fixed set patterns are incapable of adaptability or pliability. The truth is outside of all fixed patternsBruce Lee
  • 40. Obey the principles without being bound by themBruce Lee
  • 41. Estruturação Árvore Desenvolvim.Não existe uma maneira pré-definida de estruturação de código...O sistema de controlo de versões não deve qualquer obrigação ou coloca restrição na estruturação da árvore de desenvolvimentoMas existem algumas práticas que facilitam o processo de desenvolvimento
  • 42. Práticas de Estruturação?Escrever um documento com as convenções e práticas a utilizar na estruturação de códigoA estruturação pode não ser perfeita, mas a consistência facilita a comunicação, a migração entre equipas e o processo de desenvolvimento
  • 43. Estruturação de um ProjectoUma prática possível...
  • 44. Estruturação de um ProjectoNa raiz criar uma directoria com o nome do projecto (raiz do projecto)Não colocar ficheiros na raiz do projectoA raiz do projecto contém apenas directoriasPara cada um dos branchesDar um nome bem definido para a arvore principal (eg trunk, mainline). Este nome será comum a todos os projectos
  • 45. Árvore de ProjectoDefinir uma convenção para estruturação das directorias do projecto e seguí-las em todos os projectosPrevisibilidade e ajudam a comunicação e à adaptação de um projectoReduz Custo de entradaAumenta productividadeReduz erros
  • 46. Sugestão para Árvore de ProjectoProjecto ATrunk – Directoria principal. Contém o(s) ficheiro(s) da(s) solução(ões)Solution ItemsDependencies –Bibliotecas licenciadas , bibliotecas comuns entre projectoInstallation – Ficheiros para criar o instalador da aplicaçãoSource – Código fonte da aplicação. Estruturar por módulos ou por tecnologia. Contém os ficheiros de projecto de Visual StudioMódulo 1Modulo 2Módulo ...TestsUnitLoadManualIntegration...
  • 47. Agregação de CódigoSolution – Pode Conter:Um mais projectosFicheiros (Item)Directorias virtuais (solution folders)Project – ContémTem um tipoCada tipo poderá ter caracteristicas distintasReferências para outros projectos (dependencias) da soluçãoReferências a DLLsCódigoFicheiros
  • 48. Estruturação da SoluçãoUtilizar Solution Folders Mapeia areas lógicas da soluçãoFacilita a organização e navegação no códigoNão tem que ser um mapeamento directo para as directorias de projecto
  • 49. Código Comum a vários ProjectosColocado na directoria DependenciesGerido tal e qual se fosse um componente desenvolvido por uma entidade externa (eg: biblioteca de gráficos)Não ligar directamente ao código-fonte do projecto comumSerá feito o upgrade para uma nova versão quando a equipa o entender e não sempre que é feita uma alteração
  • 50. O que ficou de fora?BuildsRastreabilidadeLigação a outros sistemas:TestesRequisitosBugs
  • 51. Em SumaRepositório centralizado de todos os artefactosCódigo fonteScriptsModelo de dadosScripts de instalaçãoTeste do AlgodãoInstalar uma nova máquina, ligá-la à rede, obter a última versão do repositórioÉ possível compilar o código sem processos manuais?
  • 53. ReferênciasCM Patterns for Agilityhttp://www.scmpatterns.comMicrosoft Team Foundation Server Branching Guidancehttp://www.codeplex.com/BranchingGuidanceVisual Studio TFS Branching Guide 2010http://tfsbranchingguideiii.codeplex.com
  • 55. Próximas reuniões presenciais10/07/2010 - Julho14/08/2010 - Agosto18/09/2010 - Setembro23/10/2010 - OutubroReserva estes dias na agenda! :)