Önce klasik (ve göreceli olarak pratik) Microsoft Web programlama, geliştirme ve iyileştirme (bug fixing, patching vs.) modeline bakalım:
- Notepad (ya da daha gelişmişi Notepad++) ve/veya Visual Studio kullanılarak program yazılır, hata giderilir ya da yeni bir özellik eklenir.
- Kişi, bir test bilgisayarı olarak kullandığı kendi bilgisayarında bulunan bir sanal makineyi (virtual system) açar ve yeni dosyaları buraya kopyalar.
- Programı test eder ve sanal sistemi kapatır.
- Asıl sunucuya bağlanıp yeni dosyaları herhangi bir karşılaştırma programı ile kopyalar (Beyond Compare, Diff Merge, Winmerge vb.)
Bu sistem görüldüğü üzere tamamen kişisel insiyatif ve iyiniyet ölçüsünde başarılı olabilmektedir. Bunun yerine yazılımı uygulamak, test etmek ve asıl uygulama yerine (production) koymak, konuşlandırmak (deployment) için gerçekçi ve uygulanabilir bir sisteme ihtiyaç vardır. Yani geliştirme, test ve nihai ürün katmanlarını oluşturmak gereklidir.
Yeni nesil Agile (XP, Scrum) gibi yazılım geliştirme metodolojileri ve süreçleriyle de entegre edilebilecek şekilde:
- Yazılım, geliştirme ortamında kodlanır, test edilir ya da hatalar giderilir.
- Yeni dosyalar Team Foundation Server (TFS), SVN, Perforce, Git gibi bir uygulamaya taşınır.
- SVN ile entegre çalışan CruiseControl.NET, Bamboo, TeamCity ya da TFS vb. uygulamalar ile Test ortamına aktarılır.
- Test işlemleri bitip onaylandıktan sonra yeni dosyalar MSDeploy ya da Chinchilin gibi bir araçla uygulamanın asıl yerine (Production Server) aktarılır.
Burada bahsedilen yazılımlar bir ya da birden fazla fonksiyon sahibidir.
Web adresleri:
Team Foundation Server http://msdn.microsoft.com/en-us/library/bb668991.aspx
SVN http://subversion.apache.org/
Perforce http://www.perforce.com/
CruiseControl.NET http://confluence.public.thoughtworks.org/display/CCNET/Welcome+to+CruiseControl.NET
Bamboo http://www.atlassian.com/software/bamboo/
TeamCity http://www.jetbrains.com/teamcity/
Chinchilin http://code.google.com/p/octalforty-chinchillin/