SlideShare a Scribd company logo
1 of 12
Versiebeheer Repository
         Invantive Producer
Wouter Vos   Afstudeerstage




                                 1
Agenda
               Invantive
               Doel
               Uitvoering
               Resultaten
               Toekomst




Invantiv Doel   Uitvoerin   Resultate   Toekomst   2
e               g           n
Invantive Producer
         Idee
         Specificaties in repository
         Invantive Estate
                 • Idee / strategie


                            • Specificaties


                                        • Invantive Producer


                                                 • Projectmanagement software


Invantiv Doel   Uitvoerin   Resultate    Toekomst                               3
e               g           n
Software genereren
         Level editor




         Snel reageren
         Alleen gewenste functionaliteit
Invantiv Doel   Uitvoerin   Resultate   Toekomst   4
e               g           n
Doel van de opdracht
         Versiebeheer op een database
         • Rekening houden met relaties
         • Visualisering verschillen
         • Samenvoegen van versies
         • Inzichtelijk maken wie, wat, wanneer




Invantiv Doel   Uitvoerin   Resultate   Toekomst   5
e               g           n
Versiebeheer
         •      Geschiedenis bijhouden
         •      Verschillen berekenen
         •      Afsplitsingen
         •      Samenvoegen
         •      Parallel ontwikkelen




Invantiv Doel   Uitvoerin   Resultate   Toekomst   6
e               g           n
Uitvoering
         •      Research & Development
         •      Hoe werkt versiebeheer op een database
         •      Complexiteit Invantive Producer
         •      Focus op verschil functionaliteit
         •      Een efficient verschil algoritme
         •      PL/SQL implementatie
         •      WPF en Model View ViewModel



Invantiv Doel   Uitvoerin   Resultate   Toekomst   7
e               g           n
Verschil berekening
         Hij berekent het verschil
         Daar berekenen wij het verschil
         HijDaar berekenten wij het verschil
         Snel verschil algoritme




Invantiv Doel   Uitvoerin   Resultate   Toekomst   8
e               g           n
Inhoud verschillen
         Een onderdeel heeft
         afhankelijk van zijn type
         een aantal groepen
         onderdelen van een type




Invantiv Doel   Uitvoerin   Resultate   Toekomst   9
e               g           n
Eigenschap verschillen
         Eigenschappen bepalen
         hoe een onderdeel het
         systeem beïnvloed




Invantiv Doel   Uitvoerin   Resultate   Toekomst   10
e               g           n
Toekomst
         Ontwikkeling versiebeheer
         • Samenvoegen
         • Parallel ontwikkelen
         • Afsplitsingen
         • Toepassing van een specifieke commit
         • Volgend afstudeerproject




Invantiv Doel   Uitvoerin   Resultate   Toekomst   11
e               g           n
Bedankt voor jullie aandacht
             Vriendelijke groeten
Wouter Vos

More Related Content

Similar to Versiebeheersysteem op software repository: software versies samenvoegen

Continuous delivery met jenkins twist en puppet
Continuous delivery met jenkins twist en puppetContinuous delivery met jenkins twist en puppet
Continuous delivery met jenkins twist en puppetltebbens
 
Versiebeheer van database changes
Versiebeheer van database changesVersiebeheer van database changes
Versiebeheer van database changesArjen van Vliet
 
JavaLand 2017 - Pipeline as code
JavaLand 2017 - Pipeline as codeJavaLand 2017 - Pipeline as code
JavaLand 2017 - Pipeline as codeBert Jan Schrijver
 
Sdb Presentatie
Sdb PresentatieSdb Presentatie
Sdb Presentatiemenfey
 
Liferay 6.2 Roadmap 28 Jan 2013
Liferay 6.2 Roadmap 28 Jan 2013Liferay 6.2 Roadmap 28 Jan 2013
Liferay 6.2 Roadmap 28 Jan 2013Ruud Kluivers
 
JavaLand 2016: Continuous performance
JavaLand 2016: Continuous performanceJavaLand 2016: Continuous performance
JavaLand 2016: Continuous performanceBert Jan Schrijver
 
Hoe releasen minder pijnlijk werd bij de ANWB Alarmcentrale
Hoe releasen minder pijnlijk werd bij de ANWB AlarmcentraleHoe releasen minder pijnlijk werd bij de ANWB Alarmcentrale
Hoe releasen minder pijnlijk werd bij de ANWB AlarmcentraleJeroen Reijn
 
Joomla componenten bouwen met Component Creator
Joomla componenten bouwen met Component CreatorJoomla componenten bouwen met Component Creator
Joomla componenten bouwen met Component CreatorRené Kreijveld
 
Creating sustainable solutions with SharePoint 2013 - Yuri Burger
Creating sustainable solutions with SharePoint 2013 - Yuri BurgerCreating sustainable solutions with SharePoint 2013 - Yuri Burger
Creating sustainable solutions with SharePoint 2013 - Yuri BurgerDelta-N
 
PFZ Workshop - Automatiseren van functionele tests
PFZ Workshop - Automatiseren van functionele testsPFZ Workshop - Automatiseren van functionele tests
PFZ Workshop - Automatiseren van functionele testsRichard Tuin
 
JUGM meetup March 2019 - Continuous performance - Load testing for developers...
JUGM meetup March 2019 - Continuous performance - Load testing for developers...JUGM meetup March 2019 - Continuous performance - Load testing for developers...
JUGM meetup March 2019 - Continuous performance - Load testing for developers...Bert Jan Schrijver
 
Webinar programmeren c# java php python c++ r nodejs
Webinar programmeren c# java php python c++ r  nodejsWebinar programmeren c# java php python c++ r  nodejs
Webinar programmeren c# java php python c++ r nodejsEduvision Opleidingen
 
Verander legacy code in clean code!
Verander legacy code in clean code!Verander legacy code in clean code!
Verander legacy code in clean code!David Baak
 
JavaZone 2016: Continuous performance
JavaZone 2016: Continuous performanceJavaZone 2016: Continuous performance
JavaZone 2016: Continuous performanceBert Jan Schrijver
 
Take control of your deployments with Release Management
Take control of your deployments with Release ManagementTake control of your deployments with Release Management
Take control of your deployments with Release ManagementRick van den Bosch
 
OpenValue meetup January 2019 - Continuous performance - Load testing for dev...
OpenValue meetup January 2019 - Continuous performance - Load testing for dev...OpenValue meetup January 2019 - Continuous performance - Load testing for dev...
OpenValue meetup January 2019 - Continuous performance - Load testing for dev...Bert Jan Schrijver
 

Similar to Versiebeheersysteem op software repository: software versies samenvoegen (20)

Continuous delivery met jenkins twist en puppet
Continuous delivery met jenkins twist en puppetContinuous delivery met jenkins twist en puppet
Continuous delivery met jenkins twist en puppet
 
Versiebeheer van database changes
Versiebeheer van database changesVersiebeheer van database changes
Versiebeheer van database changes
 
JavaLand 2017 - Pipeline as code
JavaLand 2017 - Pipeline as codeJavaLand 2017 - Pipeline as code
JavaLand 2017 - Pipeline as code
 
Booosting 24sept13 bim dutch revit standards mark wieringa cepezed
Booosting 24sept13 bim dutch revit standards   mark wieringa cepezedBooosting 24sept13 bim dutch revit standards   mark wieringa cepezed
Booosting 24sept13 bim dutch revit standards mark wieringa cepezed
 
Sdb Presentatie
Sdb PresentatieSdb Presentatie
Sdb Presentatie
 
Liferay 6.2 Roadmap 28 Jan 2013
Liferay 6.2 Roadmap 28 Jan 2013Liferay 6.2 Roadmap 28 Jan 2013
Liferay 6.2 Roadmap 28 Jan 2013
 
H6 Realisatiefase
H6 RealisatiefaseH6 Realisatiefase
H6 Realisatiefase
 
JavaLand 2016: Continuous performance
JavaLand 2016: Continuous performanceJavaLand 2016: Continuous performance
JavaLand 2016: Continuous performance
 
Hoe releasen minder pijnlijk werd bij de ANWB Alarmcentrale
Hoe releasen minder pijnlijk werd bij de ANWB AlarmcentraleHoe releasen minder pijnlijk werd bij de ANWB Alarmcentrale
Hoe releasen minder pijnlijk werd bij de ANWB Alarmcentrale
 
Joomla componenten bouwen met Component Creator
Joomla componenten bouwen met Component CreatorJoomla componenten bouwen met Component Creator
Joomla componenten bouwen met Component Creator
 
Creating sustainable solutions with SharePoint 2013 - Yuri Burger
Creating sustainable solutions with SharePoint 2013 - Yuri BurgerCreating sustainable solutions with SharePoint 2013 - Yuri Burger
Creating sustainable solutions with SharePoint 2013 - Yuri Burger
 
PFZ Workshop - Automatiseren van functionele tests
PFZ Workshop - Automatiseren van functionele testsPFZ Workshop - Automatiseren van functionele tests
PFZ Workshop - Automatiseren van functionele tests
 
Coww 2.16 Presentatie Samet Yilmaz
Coww 2.16 Presentatie Samet YilmazCoww 2.16 Presentatie Samet Yilmaz
Coww 2.16 Presentatie Samet Yilmaz
 
BI Projects
BI ProjectsBI Projects
BI Projects
 
JUGM meetup March 2019 - Continuous performance - Load testing for developers...
JUGM meetup March 2019 - Continuous performance - Load testing for developers...JUGM meetup March 2019 - Continuous performance - Load testing for developers...
JUGM meetup March 2019 - Continuous performance - Load testing for developers...
 
Webinar programmeren c# java php python c++ r nodejs
Webinar programmeren c# java php python c++ r  nodejsWebinar programmeren c# java php python c++ r  nodejs
Webinar programmeren c# java php python c++ r nodejs
 
Verander legacy code in clean code!
Verander legacy code in clean code!Verander legacy code in clean code!
Verander legacy code in clean code!
 
JavaZone 2016: Continuous performance
JavaZone 2016: Continuous performanceJavaZone 2016: Continuous performance
JavaZone 2016: Continuous performance
 
Take control of your deployments with Release Management
Take control of your deployments with Release ManagementTake control of your deployments with Release Management
Take control of your deployments with Release Management
 
OpenValue meetup January 2019 - Continuous performance - Load testing for dev...
OpenValue meetup January 2019 - Continuous performance - Load testing for dev...OpenValue meetup January 2019 - Continuous performance - Load testing for dev...
OpenValue meetup January 2019 - Continuous performance - Load testing for dev...
 

Versiebeheersysteem op software repository: software versies samenvoegen

  • 1. Versiebeheer Repository Invantive Producer Wouter Vos Afstudeerstage 1
  • 2. Agenda  Invantive  Doel  Uitvoering  Resultaten  Toekomst Invantiv Doel Uitvoerin Resultate Toekomst 2 e g n
  • 3. Invantive Producer Idee Specificaties in repository Invantive Estate • Idee / strategie • Specificaties • Invantive Producer • Projectmanagement software Invantiv Doel Uitvoerin Resultate Toekomst 3 e g n
  • 4. Software genereren Level editor Snel reageren Alleen gewenste functionaliteit Invantiv Doel Uitvoerin Resultate Toekomst 4 e g n
  • 5. Doel van de opdracht Versiebeheer op een database • Rekening houden met relaties • Visualisering verschillen • Samenvoegen van versies • Inzichtelijk maken wie, wat, wanneer Invantiv Doel Uitvoerin Resultate Toekomst 5 e g n
  • 6. Versiebeheer • Geschiedenis bijhouden • Verschillen berekenen • Afsplitsingen • Samenvoegen • Parallel ontwikkelen Invantiv Doel Uitvoerin Resultate Toekomst 6 e g n
  • 7. Uitvoering • Research & Development • Hoe werkt versiebeheer op een database • Complexiteit Invantive Producer • Focus op verschil functionaliteit • Een efficient verschil algoritme • PL/SQL implementatie • WPF en Model View ViewModel Invantiv Doel Uitvoerin Resultate Toekomst 7 e g n
  • 8. Verschil berekening Hij berekent het verschil Daar berekenen wij het verschil HijDaar berekenten wij het verschil Snel verschil algoritme Invantiv Doel Uitvoerin Resultate Toekomst 8 e g n
  • 9. Inhoud verschillen Een onderdeel heeft afhankelijk van zijn type een aantal groepen onderdelen van een type Invantiv Doel Uitvoerin Resultate Toekomst 9 e g n
  • 10. Eigenschap verschillen Eigenschappen bepalen hoe een onderdeel het systeem beïnvloed Invantiv Doel Uitvoerin Resultate Toekomst 10 e g n
  • 11. Toekomst Ontwikkeling versiebeheer • Samenvoegen • Parallel ontwikkelen • Afsplitsingen • Toepassing van een specifieke commit • Volgend afstudeerproject Invantiv Doel Uitvoerin Resultate Toekomst 11 e g n
  • 12. Bedankt voor jullie aandacht Vriendelijke groeten Wouter Vos

Editor's Notes

  1. Invantive Producer is een software-ontwikkelomgeving met versiebeheersysteem op repository. Het versiebeheersysteemsteltontwikkelaars in staatomvanuit de software repository softwareversiesteanalyseren, modelleren, samenvoegen en automatischteinstalleren.
  2. De volgende onderwerpen zullen besproken worden.Eerst iets over Invantive, het bedrijf waar ik mijn afstudeerstage uitgevoerd heb.Welk probleem deze afstudeerstage op moet lossenHoe de afstudeerstage is verlopen.De afgeleverde producten.Onderin kunt u volgen waar we ongeveer zijn.
  3. Met Invantive Producer maakt Invantive op een slimme manier software voor bedrijven. Het software ontwikkelproces begint bij een idee voor welke software nodig is. Dan maakt Invantive in samenwerking met de klant een set specificaties waarin vastgelegd staat hoe de uiteindelijke software zal werken.(klik)Deze specificaties bestaan uit bedrijfsobjecten en staan opgeslagen in een repository. Invantive is bezig met de ontwikkeling van Invantive Studio, dat is een programma waarmee de specificaties beheerd kunnen worden (zie beeldscherm)Links zie je de specificaties en hun bedrijfsobjecten. In het midden de onderdelen van het geselecteerde bedrijfsobject. Rechts zie je de eigenschappen van het geselecteerde bedrijfsobject.(klik)(screenshot Invantie Studio verdwijnt, en Invantive producer komt tevoorschijn)Dan kan Invantive Producer gebruikt worden om projectmanagement software te genereren.(klik)(icoontje, projectmanagement software verschijnt en screenshot Invantive Estate verschijnen)De uiteindelijke software kan in grote mate voor de specifieke klant aangepast wordt, waardoor die klant het ervaart als software op maat. Anders gezegd wordt de software gegenereerd.
  4. Software genereren kun je vergelijken met een level editor. Die biedt een level bestaande uit een aantal onderdelen waarvan de eigenschappen aangepast kunnen worden en er kunnen ook onderdelen worden toegevoegd of verwijderd. Vervolgens zal het computerspel dit level gebruiken om de speler een spelervaring te leveren. Dit is zo te vergelijken met het genereren van software dat het level een set specificaties is, het computerspel een product van Invantive en de spelervaring het informatiesysteem dat de klant gebruikt.Andere manieren om het gewenste resultaat te bereiken zijn op maat gemaakte software of zeer generieke software, waar de meeste opties uit staan. Het nadeel van op maat gemaakte software is dat het relatief veel tijd kost om een mooi systeem te bouwen en van generieke software dat er veel functionaliteit in zit die niet gebruikt wordt. Bij het genereren van software wordt alleen de functionaliteit afgeleverd die de klant nodig heeft. Er zijn ook steeds meer situaties waar dit geschikt is, bijvoorbeeld bij de nieuwe maasvlakteIn vergelijking met het ontwikkelen van een softwarepakket vanaf niks op maat ontwikkelen kun je met Invantive Producer snel resultaat leveren en eenvoudig bestaande software aanpassen.Een andere We komen steeds vaker problemen tegen waarbij we steeds ongeveer dezelfde software nodig hebben, maar net een beetje anders. Invantive heeft dit opgelost op een manier die te vergelijken is met het principe van een level editor voor een computerspel. In het level vind je een aantal onderdelen die je kunt wijzigen. Hierdoor zal de game engine de speler een andere spelervaring bieden. In de vergelijking met Invantive Producer zijn de specificaties het level, Invantive producer is de game engine en de projectmanagement software de spelervaring.Het voordeel ten op zichtte van op maat gemaakte software is dat het veel minder tijd kost en naar de toekomst toe flexibel blijft. Het voordeel ten op zichtte van zeer generieke software is dat het systeem alleen de functionaliteit bevat die de klant nodig heeft en daardoor betere prestaties levert.
  5. Bij de ontwikkeling van software wordt bijna altijd gebruik gemaakt van een versiebeheersysteem, omdat het belangrijke werkprocessen mogelijk maakt.Het doel van de opdracht is om het programma Invantive Studio uit te breiden met versiebeheer. We hebben gekozen om dit te laten werken op een database vanwege de volgende voordelen:1. Goed in het werken met grote hoeveelheden data die door meerdere mensen gebruikt wordt;2. Maakt het mogelijk rekening te houden met relaties tussen opgeslagen gegevens.Het te ontwikkelen systeem zal in ieder geval de volgende functionaliteit ondersteunen:Het houdt rekening met de relaties tussen de gegevens.Maakt duidelijk hoe het systeem in de loop der tijd gewijzigd is.Laat meerdere personen tegelijk aan dezelfde gegevens werken.Voegt de wijzigingen van verschillende versies samen tot een nieuwe versie.Kan voor een specifiek onderdeel aangeven wie het veranderd is. Bijvoorbeeld: er is een nieuwe functie is toegevoegd die fouten veroorzaakt, dan kun je zien wie dat heeft gedaan en aan die persoon vragen waarom dat op die manier is gebeurt.
  6. Als eerste onderdeel van mijn project heb ik onderzoek gedaan naar wat versiebeheer nou precies is en hoe dat op een database zou moeten werken.Een versiebeheersysteem zorgt voor de opslag van alle gegevens die relevant zijn voor een project.Vervolgens kunnen gebruikers wijzigingen maken in die gegevens en die opleveren aan het systeem.
  7. Het project bevat veel research, het is naar mijn weten nog nooit gedaan. Het bedrijf had wel een idee van het concept maar wist ook niet hoe de oplossing eruit zou zien.Het versiebeheersysteem wordt helemaal in Invantive Producer geïntegreerd zodat het ook op de software bij de klant zal werken. Echter dit maakt de opdracht veel lastiger omdat Invantive Producer een zeer complex programma is.De belangrijkste problemen die ik tegen ben gekomen:Het vinden van een efficiënt verschil algoritme. Meestal zit er maar weinig verschil tussen de dingen die je wilt vergelijken en daar is goed voor te optimaliseren. Dus mijn doel was om een diff algoritme te vinden wat het beste verander pad zou vinden maar ook heel efficiënt blijft als het aantal te vergelijken elementen groot wordt maar het aantal verschillen klein. Bijvoorbeeld als je in een tabel van 10000 records 1 record veranderd wil je niet minutenlang op de vergelijking wachten. Het bleek niet mogelijk om altijd het beste pad te vinden, dus vind het algoritme nu meestal niet het beste pad maar wel altijd een correct pad.Dit algoritme in PL/SQL implementeren was heel lastig omdat de Oracle omgeving en deze taal voor mij beide nieuwe waren. Ook gaat PL/SQL ervan uit dat je werkt met data uit de database, dat maakt het lastiger om speciaal voor het algoritme tussentijds gegevens op te slaan.Op dit punt hebben we besloten de scope van de opdracht aan te passen en de focus te leggen op het laten zien van verschillen tussen objecten. Invantive zorgt bij al zijn software voor een goede gebruikerservaring en het product moet naar de toekomst uitgebreid kunnen worden naar een tool om merges uit te voeren. Daarom hebben we ervoor gekozen om WPF uit te voeren met het principe Model View ViewModel. WPF maakt het mogelijk een zeer goede gebruikservaring te leveren. Model View ViewModel zorgt ervoor dat het uiterlijk en de gegevens op een goede manier gescheiden worden. Als je dan later iets anders met die gegevens wilt doen zijn ze direct beschikbaar in plaats van dat ze in de user interface vast zitten. Dat bleek in dit scenario echter wel heel lastig te realiseren.
  8. Een voorbeeld van hoe verschillen berekent worden. Van de eerste naar de tweede zin wordt er een letter verwijderd en weer toegevoegd.Het algoritme ziet dat door van beide teksten iedere letter met iedere andere letter te vergelijken. In het resultaat worden de wijzigingen zichtbaar doordat verwijderde letters rood en doorgestreept weergegeven worden en toegevoegde letters groen en dikgedrukt.Het probleem met deze berekening is dat het bij grote hoeveelheden tekst zeer lang gaat duren.Terwijl er programma’s zijn die ook grote hoeveelheden tekst snel met elkaar kunnen vergelijken.Dus heb ik uitgezocht hoe je dat moet doen. Het voordeel zo’n snel algoritme is dat het meest voorkomende scenario, namelijk heel weinig verschillen, heel snel is.Simpel gezegd slaat het de gekopieerde letters over, waardoor het alleen op plekken in de tekst met een verschil verder gaat kijken.
  9. Elk onderdeel bevat, afhankelijk van zijn type, een aantal groepen onderdelen van een bepaald type.
  10. De eigenschappen van een onderdeel bepalen hoe het systeem beïnvloed word.
  11. Het versiebeheer in Invantive Studio wordt doorontwikkeld zodat de ontwikkeling van specificaties beter ondersteund wordt.Het systeem voegt automatisch wijzigingen van verschillende ontwikkelaars samen.Hierdoor wordt het werkbaar dat meerdere ontwikkelaars tegelijkertijd aan een specificatie werken.Het systeem is zich bewust van afsplitsingen. Bijvoorbeeld bij het samenvoegen houdt het rekening met het punt tot waar de verschillende versies nog hetzelfde waren.Als een fout in de ene versie gerepareerd is, moet die reparatie ook makkelijk op een andere versie uitgevoerd kunnen worden.Invantive is op
  12. Vragen mogen tussendoor gesteld worden.