De komst van client/server-architecturen 
          en de verdere groei naar netwerken 
          van toepassingen hebben ook grote 
          gevolgen voor het ontwikkelen en beheren van de zakelijke toepassingen. 
          De werkwijze moet aan andere en hogere eisen voldoen dan bij centrale 
          systemen op mainframe. 
        4.8.1 Het ontwikkelen
        Hieronder staan de belangrijkste eisen vermeld waaraan het ontwikkelen 
          van toepassingen moet voldoen: 
         Sneller ontwikkelen
          Het ontwikkelen van software kost nog steeds te veel tijd. Dit geldt 
          niet alleen voor maatwerksoftware van zakelijke toepassingen. Ook softwareleveranciers 
          hebben grote moeite hun produkten 
          op het vooraf aangekondigde tijdstip te leveren. In vergelijking met 
          conventionele toepassingen op een mainframe hebben client/server-toepassingen 
          veel meer software nodig. Dit komt door de middleware die nodig is en 
          door de toegenomen functionaliteit van het maatwerkgedeelte van de toepassingen. 
        
         Ontwikkelen in etappes
          De huidige ontwikkelmethoden werken volgens het zogenaamde 'waterval'-principe. 
          Hierbij komen alle toepassingen in de stappen voorstudie, analyse, ontwerp 
          en realisatie als één geheel tot stand. Deze verzameling toepassingen 
          is wat we op dit moment verstaan onder een informatiesysteem. Toekomstige 
          toepassingssystemen zijn netwerken van toepassingen met een grotere 
          functionaliteit, die veel meer bedrijfsprocessen 
          ondersteunen. Deze toepassingssystemen worden zo omvangrijk, dat we 
          ze niet meer in één keer kunnen bouwen. Nieuwe vormen van ontwikkeling 
          zijn nodig waarbij we het toepassingssysteem in etappes kunnen bouwen 
          en ook tegelijkertijd in staat zijn de bedrijfsvoering 
          en de menselijke organisatie in 
          etappes te wijzigen. 
         Eenvoudiger onderhoud
          De huidige monolitische informatiesystemen zijn moeilijk te onderhouden. 
          Wijzigingen in de bedrijfsvoering betekenen doorgaans dat op allerlei 
          plaatsen wijzigingen moeten plaatsvinden. Vaak is moeilijk te vinden 
          waar de wijzigingen moeten plaatsvinden en vast te stellen wat de gevolgen 
          van de wijziging zijn voor de rest van het systeem. Het gevolg is dat 
          het onderhoud van de toepassingen te veel tijd vergt en ten koste gaat 
          van nieuwe te ontwikkelen toepassingen. Het onderhoud kan sterk vereenvoudigen 
          wanneer we onderdelen van de toepassingen één op één kunnen relateren 
          aan bepaalde onderdelen van de bedrijfsvoering, zoals bedrijfsprocessen 
          en bedrijfsobjecten. 
         Samengevat betekent dit dat er sprake moet zijn van evolutionair 
          ontwikkelen van zowel het bedrijf 
          als zijn IT-toepassingen. 
          De toepassingen moeten kunnen mee-evolueren met veranderingen in het 
          bedrijf. Omgekeerd moet het bedrijf kunnen evolueren door nieuwe of 
          betere toepassingen. 
         De volgende ontwikkelingen dragen bij tot het oplossen van de problemen 
          met het ontwikkelen van toepassingen: 
         Gebruik van ontwikkeltools
          Het ontwikkelproces kan aanzienlijk versneld worden door het gebruik 
          van geautomatiseerde ontwikkeltools. 
         Client/server-architectuur
          Een client/server architectuur 
          en vooral de Collaborative Object Architecture 
          vereenvoudigen het in etappes bouwen van toepassingen. Men kan bovendien 
          de toepassingen en de componenten ervan relatief onafhankelijk van elkaar 
          wijzigen bij onderhoud. 
         Objectparadigma
          Realisatie van toepassingen volgens het objectparadigma maakt het eenvoudig 
          veranderingen in de bedrijfsvoering te vertalen naar veranderingen in 
          de toepassingen. 
         'Fabriek' voor softwarecomponenten
          Objectoriëntatie legt ook de basis voor het fabrieksmatig produceren 
          en leveren van softwarecomponenten, waaruit gebruikers hun toepassingen 
          zelf kunnen samenstellen. 
         Deze wijze van werken is de beste methode om maatwerkoplossingen te 
          bouwen voor zakelijke toepassingen die gebruik maken van multimediadocumenten 
          en een grafische of multimedia-gebruikersinterface. 
          Ontwikkelaars kunnen deze complexe toepassingen niet meer volledig gaan 
          programmeren. Zij moeten de beschikking hebben over generieke software 
          voor de standaardfuncties van de interface 
          en de multimediadocumenten, zodat ze alleen die functies die echt bedrijfsspecifiek 
          zijn nog moeten toevoegen. 
         Visuele tools
          Met de opkomst van de GUI komen er ook steeds meer ontwikkeltools op 
          de markt die het ontwerpen en programmeren visueel ondersteunen. De 
          visuele werkwijze is aanzienlijk sneller dan het in instructies programmeren 
          van de toepassing. Wanneer we overschakelen 
          op het componeren van toepassingen uit softwarecomponenten dan helpen 
          dit soort visuele tools de ontwikkelaar te zien uit welke objecten 
          hij zijn toepassing samenstelt en om de werking van de toepassing te 
          testen. 
         Iteratieve ontwikkelmethoden
          Ook de ontwikkelmethoden moeten zich meer richten op gedistribueerde 
          toepassingen, die in de loop van de tijd groeien en meer functionaliteit 
          krijgen. 
         Op dit moment zijn methoden in ontwikkeling voor Iterative Application 
          Development (IAD) die zich richten op het ontwerp van gedistribueerde 
          systemen volgens client/server architecturen inclusief het gebruik van 
          objectoriëntatie om te komen tot herbruikbare softwarecomponenten. Deze 
          methoden gaan uit van een bestemmingsplan voor de realisatie van toepassingen 
          op langere termijn en een stappenplan voor de realisatie van de toepassingen 
          in kleine projecten. Zie het boek IAD: het evolutionair ontwikkelen 
          van informatiesystemen. 
        4.8.2 Het beheren
        De gedistribueerde architectuur van netwerksystemen 
          stelt hoge eisen aan het beheer van zowel de hardware als de toepassingen. 
          De eerste ervaringen met client/server-architecturen laten zien dat 
          met name het gedistribueerde beheer en de beveiliging van zowel de software 
          als de gegevens op dit moment de 
          grootste bottle-neck vormen voor de verdere groei van netwerksystemen. 
          Voor het gedistribueerde beheer van hardware en vooral van netwerken 
          zijn op dit moment tools beschikbaar. Maar tools voor het gedistribueerde 
          beheer van toepassingen en databases zijn nog in ontwikkeling. Het kan 
          nog wel een aantal jaren duren voordat deze tools hetzelfde niveau van 
          beheer en beveiliging bereiken als nu bijvoorbeeld geboden wordt door 
          DBMS'en op centrale systemen. 
         Het beheer van gedistribueerde computersystemen 
          heeft te maken met een aantal specifieke probleemgebieden waarvoor de 
          beheertools oplossingen moeten bieden. Ook de overstap van alfanumerieke 
          velden naar documenten brengt een 
          aantal specifieke problemen met zich mee. Hieronder volgt een overzicht 
          van de belangrijkste probleemgebieden. 
         Configuratiebeheer en versiebeheer
          Het configuratiebeheer houdt zich bezig met het installeren, beheren 
          en administreren van de configuraties van de volgende componenten:
        
        
          - hardware, zoals computers en netwerken; 
 
          - middleware als brug tussen besturingssysteem en toepassingen; 
 
          - de databases met de definities van de gegevens die kunnen worden 
            opgeslagen; 
 
          - de toepassingssoftware (zowel pakketten als maatwerk); 
 
          - bij het gebruik van objecten vervallen de twee vorige punten en 
            beheren we de configuratie van typen objecten (classes) die de toepassingen 
            in gebruik hebben. 
 
        
         Van al deze componenten moet worden bijgehouden waar, in welke combinaties 
          en vooral in welke versies zij geïnstalleerd zijn. Het zal duidelijk 
          zijn dat dit een zeer complexe zaak wordt, omdat we door de groei van 
          de netwerken steeds grootschaliger configuraties krijgen, die uit steeds 
          meer verschillende componenten zijn opgebouwd. Het beheer moet dan ook 
          zo georganiseerd zijn dat de beheerders diverse aandachtsgebieden krijgen, 
          waarbij we de totale configuratie in deelgebieden opsplitsen die zich 
          redelijk onafhankelijk van elkaar laten beheren. Ondersteuning met geautomatiseerde 
          beheertools is een noodzaak. Deze tools moeten in ieder geval ondersteuning 
          geven aan de registratie van de configuraties en het licentiebeheer 
          van pakketsoftware en aan het op afstand installeren van software en 
          databases. 
         Configuraties en versies van documenten
          Toepassingen gaan steeds meer gebruik maken van documenten die zijn 
          samengesteld uit objecten zoals teksten, tekeningen, spreadsheets, video 
          en geluid. Het probleem is het beheer van de configuraties van objecten 
          in diverse documenten, waarbij bijvoorbeeld dezelfde tekening kan voorkomen 
          in verschillende documenten. Hierbij kan er één originele versie van 
          de tekening zijn, waarnaar door alle documenten wordt verwezen. Het 
          is ook mogelijk tekeningen vast in documenten op te nemen. Dit levert 
          een noodzaak op voor versiebeheer van zowel de objecten als de documenten, 
          waarbij we bijhouden welke versie van een bepaald object in welke versie 
          van bepaalde documenten in gebruik is via verwijzing en welke versies 
          van objecten vast opgenomen zijn in documenten. Er zijn softwarepakketten 
          die dit ondersteunen voor omgevingen 
          waar diverse personen werken aan de samenstelling van publikaties die 
          voortdurend wijzigen, zoals bijvoorbeeld vliegtuighandboeken, die voortdurend 
          updates nodig hebben. 
         Wanneer we toepassingen gaan bouwen waarin we in plaats van de huidige 
          alfanumerieke velden gebruik maken van documenten die zijn samengesteld 
          uit objecten, dan zal configuratiebeheer en versiebeheer van de inhoud 
          van deze documenten en objecten nodig zijn. Een voorbeeld hiervan is 
          een langlopend verzekeringscontract met een klant, dat bestaat uit diverse 
          subcontracten en clausules. Gedurende de looptijd ontstaan door wijzigingen 
          opvolgende versies van het contract. Iedere versie heeft zijn een eigen 
          configuratie die weer bestaat uit bepaalde versies van subcontracten 
          en clausules. 
         Autorisatie en eigenaarschap
          Een groot probleem in een gedistribueerde omgeving 
          is het beheer van eigenaarschap en van de autorisaties. Dit geldt zowel 
          voor het gebruik van objecten als voor het gebruik van functies van 
          deze objecten. Nu zijn dit soort zaken nog voor programma's 
          en gegevens afzonderlijk geregeld. Een gebruiker mag een bepaalde toepassing 
          (dus programma) starten en krijgt toegang tot bepaalde gegevens. Het 
          hangt vervolgens van het DBMS af welke bewerkingen hij op deze gegevens 
          mag uitvoeren. Aangezien de meeste documenten niet in databases maar 
          in losse bestanden zijn opgeslagen, is er nu weinig of geen beveiliging 
          tegen het wijzigen of kopiëren van documenten door derden. In de toekomst 
          moet ieder afzonderlijk document 
          of object weten welke gebruiker zijn eigenaar is en welke gebruikers 
          welke functies op hem mogen uitvoeren. Ook moeten de objecten bijhouden 
          of zij het origineel zijn waarbij wijzigen is toegestaan of een kopie 
          van een bepaalde datum die niet mag wijzigen. Licenties voor gebruik 
          zullen in de toekomst geen betrekking meer hebben op complete programma's 
          maar op het gebruik van afzonderlijke functies of gereedschappen voor 
          bepaalde soorten objecten. 
         Gedistribueerde besturing en bewaking
          De distributie van toepassingen over de hardware maakt het nodig dat 
          operators met computerondersteuning de bewaking en de besturing 
          van de processen in het gehele netwerk 
          uitvoeren. Dit betekent dat het procesverloop van de toepassingen moet 
          worden bewaakt en gepresenteerd aan de operators. De besturing betreft 
          het geautomatiseerd bijsturen of handmatig ingrijpen van de operator 
          bij bijvoorbeeld performance-problemen of storingen. Dit ingrijpen kan 
          bestaan uit het tijdelijk laten draaien van toepassingen op een andere 
          computer of het aanbieden van alternatieve routes in het netwerk. Ook 
          kan men via het configuratiebeheer een permanente aanpassing van de 
          distributie van de toepassingen uitvoeren. Bij permanente performance-problemen 
          kan men besluiten om de hardwareconfiguratie uit te breiden. 
        4.8.3 Naar één platform voor alle toepassingen
        De groei van netwerksystemen zowel binnen als tussen bedrijven 
          zal ertoe leiden dat er in toenemende mate één IT-infrastructuur 
          komt die als platform dient voor de toepassingen van alle bedrijven. 
          Door het ontstaan van de elektronische 
          snelweg zal dit platform zich ook uitstrekken tot de thuissystemen 
          en toepassingen van particulieren. 
         Zo ontstaat eerst per bedrijf, maar in toenemende mate wereldwijd, 
          een gemeenschappelijk toepassingsplatform dat gebruikers, 
          beheerders en ontwikkelaars van toepassingen ondersteunt. 
          
         
          
            
 
          
        
         
          
            Afbeelding 4.10 Het toepassingsplatform. 
          
        
         Het platform bestaat van beneden naar boven uit:
        
        
          - hardwarecomponenten zoals werkstations, servercomputers en netwerken; 
          
 
          - basissoftware en middleware die nodig zijn om de toepassingen te 
            laten werken; 
 
          - een database voor de opslag van gegevens met een repository voor 
            de definities en functies (software), op termijn te vervangen door 
            een OBMS voor de objecten; 
 
        
         Het platform 'draagt' de actieve gebruikerstoepassingen, beheertools 
          en ontwikkeltools waar respectievelijk gebruikers beheerders en ontwikkelaars 
          mee werken. Op termijn zijn de toepassingen samengesteld uit interface-, 
          proces- en domeinobjecten. 
         Het hier beschreven toepassingsplatform heeft een aantal belangrijke 
          gevolgen voor de eigenschappen van toepassingen. 
         Naast specifiek veel meer generiek
          De toepassingen zullen relatief steeds meer generiek en minder specifiek 
          zijn. Dit komt doordat de middleware veel standaardfuncties uitvoert 
          en door het feit dat men toepassingen steeds meer samenstelt uit standaard 
          generieke objecten. 
         Flexibiliteit en hergebruik
          Het opbouwen van toepassingen uit standaardcomponenten verhoogt de flexibiliteit. 
          Een ontwikkelaar kan formeel voorgeschreven delen van een toepassing 
          snel wijzigen door de samenstelling aan te passen. Veel toepassingen 
          werken met flexibel samengestelde documenten waarbij de gebruiker zelf 
          kan bepalen welke objecten hij in het document opneemt. Dit ondersteunt 
          de informele kant van het werk, zoals het opnemen van commentaar, annotaties 
          en gesprekken. Het samenstellen van toepassingen uit standaardcomponenten 
          bevordert het hergebruik van software. 
         Verschuiving in de ontwikkelresultaten
          Voor een computersysteem gaat 
          gelden dat er meer infrastructuur en minder structuur is. Hardware 
          en generieke software vormen een steeds groter deel van de toepassing. 
          De toepassingen zelf ondersteunen naast het formele gestructureerde 
          gedeelte van de bedrijfsprocessen ook steeds meer het informele en niet-gestructureerde 
          deel. 
         Standaardisatie door zelforganisatie
          De groei van het platform zal ook leiden tot meer standaardisatie van 
          hardware, softwarecomponenten en toepassingen. Dit is nodig, omdat anders 
          samenwerking tussen hardware en software van verschillende leveranciers 
          en toepassingen van verschillende eigenaren niet mogelijk is. In tegenstelling 
          tot min of meer opgelegde standaarden ontstaan deze standaarden door 
          zelforganisatie. Gebruikers en leveranciers zullen zelf zaken gaan standaardiseren 
          om onderling te kunnen samenwerken. 
         Het toepassingsplatform versterkt nog een trend. Er komt namelijk 
          een duidelijker scheiding tussen organisaties 
          die zich bezighouden met het inrichten en exploiteren van IT-faciliteiten 
          en de gebruikersorganisaties. 
         De IT-facilitaire organisaties zijn de leveranciers van een IT-platform 
          bestaande uit hardware, middleware en generieke en specifieke componenten 
          voor toepassingen. De gebruikersorganisaties zijn de afnemers van dit 
          IT-platform. De gebruikersorganisaties sluiten met de IT-facilitaire 
          organisaties dienstverleningscontracten af (de zogenaamde service level 
          agreements) waarin afspraken staan over het niveau van dienstverlening 
          dat de IT-facilitaire organisaties in de vorm van produkten en diensten 
          moeten leveren.