Development, of in goed Nederlands ontwikkeling, bestrijkt het hele spectrum van de ict. Van hardware tot besturingssystemen en van applicatiesoftware tot dienstverlening.
Wat is dat?
Development, of in goed Nederlands ontwikkeling, bestrijkt het hele spectrum van de ict. Van hardware tot besturingssystemen en van applicatiesoftware tot dienstverlening. Op al die terreinen zijn er veranderingen die van invloed zijn op development. De ontwikkelingen op het gebied van hardware gaan in een razend tempo. Van single core via dual core naar quad core tot nu al multi core. Computers krijgen steeds meer verwerkingskracht en de ontwikkelaars van besturingssystemen maken daar gretig gebruik van, wat weer resulteert in geavanceerdere applicatiesoftware.
Wat zijn de trends?
Multicore, multithread, multiprocessor Omdat miniaturisatie steeds moeilijker en duurder wordt, proberen processorfabrikanten de de prestaties van processoren de laatste tijd vooral te verhogen met meer processoren, meer ‘cores' (kernen) en meer ‘threads' (reken-‘draden'), allemaal binnen één systeem. Die benadering zorgt ervoor dat de computer intelligenter moet omgaan met de benutting van bronnen die alle processerkernen samen delen, zoals het systeemgeheugen.
Besturingssystemen Ontwikkelaars van besturingssoftware maken van de hardwaremogelijkheden gretig gebruik. Operating systemen zien er steeds ‘gelikter' uit, maar vragen ook om steeds geavanceerdere hardware. Legacy besturingssytemen kregen al vanaf begin jaren tachtig geduchte concurrentie van het opensourcebesturingssysteem Unix. Dat moest op zijn beurt weer wedijveren met Windows van Microsoft – dat zijn Unixvariant Xenix zag mislukken – en Novells Netware. De laatste is uiteindelijk een stille dood gestorven, hoewel menigeen dit bestempelde als het beste netwerkbesturingssystem. Echter ook Windows lijkt niet langer het alleenrecht te hebben, want het opensourcebesturingssyteem Linux (afgeleid van Unix) krijgt steeds meer grip op de markt. In dit strijdperk moet Microsoft weer aantreden tegen Novell, dat de linuxdistributie SuSe voert.
Welke oplossingen zijn er?
Parellelle rekenmethoden. Die zijn nodig om de mogelijkheden te benutten van multicore, multihreaded en multiprocessorsystemen. De komst van multicore-processoren vraagt om nieuwe programmeertalen.
Zo heeft Intel een nieuwe programmeertaal ontwikkeld, als onderdeel van project Tera-scale. Dat is een onderzoeksproject naar de ontwikkeling van manycore processoren. De taal heet Ct, wat staat voor C/C++ for Throughput Computing. Ct werkt met zogenaamde throughput vectors (TVEC's), die niet alleen bekende instructiesets (arrays) kunnen bevatten maar ook andere vormen van parallelle data. Denk aan geavanceerde programmeermiddelen als sparse matrices en associatieve arrays. Intel noemt dit "collections". De bedenkers introduceren naast taken ook "futures". Dat zijn functies die uitgevoerd kunnen worden zodra hun parameters bekend zijn. Op die manier ontstaat een hele boom van onderling afhankelijke threads. De administratie hiervan doet erg denken aan de manier waarop scoreboards de afhankelijkheden van instructies binnen processoren bijhouden. Dat laat weer duidelijk zien hoe manycores complexiteit van de hardware naar de software verplaatsen.
Daarnaast sponsort Microsoft samen met chipfabrikant Intel de oprichting van twee Universal Parallel Computing Research Centers (UPCRC) op twee Amerikaanse universiteiten (UC Berkeley en de UIUC). De rekencentra moeten de ontwikkeling van parallelle rekenmethoden versnellen. Het onderzoek gaat zich toespitsen op het ontwerpen van ontwikkelomgevingen voor het bouwen van parallelle architecturen, applicaties en besturingssystemen.
Agile ontwikkeling. Het is gedaan met de klassieke manier van software ontwikkelen zoals dat onder het waterval-model gebeurt. Daarbij worden eerst de requirements verzameld, en de modellen en een architectuur ontwikkeld. Pas daarna wordt begonnen met de implementatie, gevolgd door het testen. Het toverwoord is agile development (AD). Volgens deze methode wordt een applicatie stukje bij beetje bij een gebruiker geïmplementeerd en geëvolueerd, voordat een volgend deel wordt ontwikkeld. Agile programming vraagt wel een discliplinair ontwikkelteam dat zijn oren openzet en goed naar de opdrachtgever luistert.
Consultancy Guide 2009
Dit artikel is onderdeel van de Consultancy Guide 2009. Deze gids geeft een overzicht van de trends en ontwikkelingen op de Nederlandse markt voor consultants. Daarnaast bevat de gids de resultaten van een onderzoek, uitgevoerd door TNS NIPO, naar de ervaringen van ict'ers met consultants. De Consultancy Guide 2009 verschijnt op 19 december 2008 in druk.
Vormt Agile development een oplossing voor efficient gebruik van multi-core processoren? Ik mis het verband volledig eerlijk gezegd.
Wat wellicht beter als een alternatieve oplossing genoemd had kunnen worden is hardware-virtualisatie. Je zorgt er daarmee voor dat die ene multi-core processor zich transparant gedraagt als 10 of 20 aparte computers (of nog veel meer in de toekomst).
Zo maak je via een omweg toch gebruik van de processorcapaciteit, echter zonder de applicatie-programmeur te dwingen om gebruik te maken van uiterst complexe (lees foutgevoelige) parallellisatie-methoden.