Ce este Trasabilitatea in software
Din Wikipedia, http://en.wikipedia.org/wiki/Traceability :
Traceability is the ability to verify the history, location, or application of an item by means of documented recorded identification.
Vom defini trasabilitatea in software capacitatea si implementarea de urmarire a componentelor software pentru a sti exact :
1. Data la care componenta a fost facuta( astfel incit sa putem reproduce codul sursa)
2. Detalii de producere ( versiune ,framework-uri, alte componente, compilare debug/release , alte date) astfel incit sa avem capacitatea de a distinge intre diferite versiuni
Presupunem ca deja am raspuns afirmativ la pasul 1 (Do you use source control ?)de la http://www.joelonsoftware.com/articles/fog0000000043.html De asemenea ( desi nu vom folosi š ) e bine sa studiati si Semantic Version http://semver.org/
De ce avem nevoie de trasabilitate in software
Sa presupunem ca avem un codul sursa 1 pe care il distribuim la citiva clienti. Presupunem ca modificam codul pentru un versiunea doi. Unii din clientii vechi isi upgradeaza softul āaltii nu. Daca un client raporteaza o eroare,cum stim care versiune de cod sursa a avut probleme?
Trasabilitatea in .NET
Fiecare proiect in Visual Studio contine un fisier numit AssemblyInfo.cs care contine informatii sumare despre componenta. Vom discuta despre aceste rinduri:
// Version information for an assembly consists of the following four values: // // Major Version // Minor Version // Build Number // Revision // // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] [assembly: AssemblyVersion("1.0.0.0")] [assembly: AssemblyFileVersion("1.0.0.0")]
Dupa cum se vede exista deja posibilitatea de trasabilitate in .NET .Diferenta intre AssemblyVersion si AssemblyFileVersion este detaliata si aici: http://support.microsoft.com/kb/556041
Ceea ce vrem sa realizam este ca, dupa o modificare a codului sursa si recompilare, acest AssemblyVersion ( sau AssemblyFileVersion) sa ne indice cum sa putem ārefaceā codul sursa
Este evident ca , daca facem modificari in codul sursa, AssemblyVersion va ramine tot 1.0.0.0 .
Ca sa putem avea control asupra versiunilor putem fie modifica manual versiunea, fie vom modifica automat versiunea.
In cele ce urmeaza voi arata diverse posibilitati de a modifica automat versiunea, precum si de a adaug alte amanunte in AssemblyDescription.
Calea oficiala ( 1.0.*)
Cel mai usor este sa puneti
[assembly: AssemblyVersion("1.0.*")]
In AssemblyInfo.cs si sa comentati
//[assembly: AssemblyFileVersion("1.0.0.0")]
Ca aici:
// Version information for an assembly consists of the following four values: // // Major Version // Minor Version // Build Number // Revision // // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: [assembly: AssemblyVersion("1.0.*")] // [assembly: AssemblyVersion("1.0.0.0")] //[assembly: AssemblyFileVersion("1.0.0.0")]
In acest mod versiunea se va incrementa de fiecare data. Ceea ce e deranjant ca nu se incrementeaza astfel incit sa ne putem da seama, de exemplu, de ziua build-ului. Video : https://www.youtube.com/watch?v=jq6Uu64md1s
Proiectul demo il puteti downloada de aici : http://traceabilitydemo.codeplex.com/releases/view/130512
Codul sursa il puteti downloada de aici: https://traceabilitydemo.codeplex.com/SourceControl/changeset/view/110330
Data viitoare vom face identificarea datei de buildĀ prin fisiere .tt
Nu ar fi suficient last modified date al DLL-ului in cauza?
Ba da. Si asta o sa fac in urmatoarele episoade š