Versionshantering och subversion Bara en liten ändring till Vad är versionshantering? Versionshantering låter dig arbeta med olika versioner av systemet Versionshantering är en säkerhetsmekanism som tillåter en att gå tillbaka och få fram tidigare versioner av ett system Versionshantering hjälper till att koordinera arbetet när man är flera personer i ett projekt Versionshantering - Historia Har funnits nästan lika länge som datorerna Rätt lätt med hålkort Manuell process, svarta tavlan Verktygsstöd kom tidigt redan i början på Verktygsstöd kom tidigt, redan i början på 60-talet
Konfigurations vs Versionshantering Configuration Management (CM) Version/revision-hantering CM är ett vidare begrepp än version/revision- hantering Version/revision-hantering ingår i CM Ändringshantering (Change control/management) Systemgenerering (build management) etc Vad bör versionshanteras? Programkod Dokumentation Krav Buggrapporter CI -definition A configuration item (CI) is any part of the development and/or deliverable system (whether software, hardware, firmware, drawings, inventories and/or documentation) which needs to be independently identified, stored, tested, reviewed, used, changed, delivered and/or maintained. CIs differ widely in complexity and may contain other CIs in a hierarchy. M. Kelly, Configuration Management, The Changing g Image: McGraw-Hill, 1996. CM-plan från ISO 10007 Introduction Description of the system or CIs to which the plan applies, a schedure of the CM activities, the purpose and scope of the plan, list of related documents etc Policies and procedures CM policies, CM organisation and structure of the CCB and the other committees, selection criteria for the CIs, frequency, distribution and control of reports and agreed terminology. Configuration identification Family tree of the CIs, numbering conventions, baselines to be established etc. Configuration control Organisation and composition of the CCB, change mangement procedures and so on. Configuration status accounting Procedures for collecting, recording, processing, and maintaining the data for status accounting reports, definition of all CM reports etc. Configuration audit List of audits to be conducted, the audit procedures, the authorities and disciplines involved, format of the audit reports, etc.
Versionshanteringssystem Vanligen en databas för (källkods)filer Ändringslogg Möjlighet jg att återskapa tidigare versioner Stöd för koordination av utvecklare Check-in/Check-out Fillåsning Kodjämförelse Eventuellt stöd för parallell utveckling Eventuellt integrerad med krav/fel-hantering Checkin och checkout All kod samlas i en central databas För att editera/testa/etc en fil checkar varje utvecklare e ut en privat kopia av filen När editeringen är klar checkas filen in i databasen igen Deltas I stället för att spara varje version som en separat fil kan man nöja sig med att spara en version och information om vad som krävs för att skapa övriga versioner Fördel: tar mindre plats man kan se vad som ändrats Nackdel:det kan ta tid att återskapa en tidigare version Fillåsning Innan en fil kan editeras måste den checkas ut med låsning De som bara a vill använda a filen kan checka ut den utan låsning När en fil är låst kan ingen annan editera den Vad händer om man går hem på kvällen och glömmer att checka in filen igen?
Utan fillåsning Flera personer kan editera samma fil samtidigt VHS:et måste kunna jämföra filer och slå ihop dem diff manuellt Distribuerade system Oberoende grenar Bra merge-rutiner nödvändigt Ex: GIT Verktyg Finns i princip p hur många som helst http://en.wikipedia.org/wiki/comparison_ of _ revision _control o _software Subversion Ett väldigt vanligt VHS Utvecklat för att ersätta CVS http://subversion.tigris.org/ tigris org/
Subversion - att ge kommandon Subversion - kommandon svn kommando [ev flaggor, filer etc] svn commit svn commit Filnamn.java svn commit -m loggmeddelande l d Användnings- kommandon update commit add, delete, move, copy Engångs- g kommandon import checkout svn help svn help kommando Subversion - kommandon (forts) Statuskontroll- Konflikthanteringskommandon status kommandon resolved log diff Hjälp finns blame svn help kommando Subversion - Kom igång Skapa ett repository (görs av oss) Sätt miljövariabeln SVN_EDITOR Skapa en arbetskatalog Lägg in en första version av projektet Använd
Subversion exempel på andra gränssnitt Tids och kostnadsuppskattningar Vad vill vi uppskatta?
Tumregler 1-3 för att skapa en klass 1 dag för att lära sig en klass De flesta metoder är1-3 LOC Få metoder är >10 LOC EVB E.V. Berard, The Object Agency Gör en uppskattning av antalet manmånader för det översta projektet jk Language System C. Months MM KSLOC FP UA_FP SLOC/MM Cobol IBM308X 17??? aprox. 250 1217.1 1010 aprox 850 Cobol IBM43XX 7 82.5 40.5 507.3 457 491 Cobol DECVAX 15 1107.3 450.0 2306.8 2284 406 Cobol IBM308X 18 86.9 214.4 788.5 881 2476 Cobol IBM43XX 13 336.3 449.9 1337.6 1583 1338 Cobol 36514 5 84.0 50.0 421.3 411 595 Bliss 36514 5 23.2 43.0 99.9 97 1853 Cobol IBM43XX 11 130.33 200.00 993.0 998 1535 Cobol IBM308X 14 116.0 289.0 1592.9 1554 2491 Cobol IBM308X 5 72.0 39.0 240.0 250 542 Natural IBM308X 5 72.0 39.0 240.0 250 542 Cobol IBM308X 13 258.7 254.22 1611.0 1603 983 Cobol IBM43XX 31 230.7 128.6 789.0 724 557 Cobol IBM308X 31 230.7 128.6 789.0 724 557 Cobol HP3000 20 157.0 161.4 690.9 705 1028 Cobol IBM308X 26 246.9 164.8 1347.5 1375 667 Natural IBM308X 14 69.9 60.2 1044.3 976 861 Vad behöver vi veta? Storleken och komplexiteten på uppgiften p p ppg Vår egen produktivitet
Kostnadskomponenter Tekniker Expertbedömning Analogireonemang Matematiska modeller E=aS b +c a=kostnad per storleksenhet b=1 12 10 E 8 6 4 2 a=1 a=2 0 1 2 3 4 5 S
E=aS b +c b=skalekonomi E 3 2.5 2 1.5 a=1 b=1 b=0.5 b=2 funktionalitet tid resurser fasta lättrörliga traditionella varierbara tid resurser funktionalitet 1 1 2 3 4 5 6 7 8 9 10 11 S