HOME PROJECTEN VISIE LINKS DOWNLOAD CONTACT
 
 

Sinds het ontstaan van gedistribueerde systemen, zo'n 30 jaar geleden, heeft men getracht de ontwikkeltrajecten voor dit soort systemen te versnellen en de kwaliteit te verbeteren. Daarnaast heeft men de enorm toegenomen mogelijkheden van user interfaces moeten bijbenen. Van veel verbetering in het ontwikkelproces lijkt nog geen sprake te zijn. Dit komt waarschijnlijk door de enorme haast die men in ons vakgebied aan de dag legt; door de gretigheid waarmee een nieuwe ontwikkeling wordt omarmd en opgedane kennis afgedankt.

Met de regelmaat van de klok worden er met veel tamtam nieuwe methodologiën en gereedschappen geïntroduceerd. Object oriëntatie (OO) is, als één van de meer succesvolle benaderingen, gebleven in de vorm van C++, Java en C#. Het zuiver OO-modelleren lijkt nu echter wat weg te zakken onder het geweld van patterns en frameworks.

OO is vooral geschikt gebleken om moeilijke business cases te modelleren en om te zetten in succesvolle applicaties. Van flexibiliteit, beheersbaarheid en hergebruik van code is echter niet veel terecht gekomen. Zo rond 2000 was component based development (CBD) nogal in zwang. OO gecombineerd met CBD zou de resterende belofte van OO waarmaken. Om onduidelijke redenen heeft niemand een succesvolle en tevens werkbare implementatie kunnen maken. (J2EE, COM, .NET, San Francisco, The Select Perspective, Catalysis). Het lijkt erop dat men bij veel van dit soort projecten net niet de juiste benadering heeft kunnen vinden (afgezien van COM). Ondanks dat zijn de frameworks enorm uitgebouwd en met het gebruikelijke rumoer in de markt gezet. De frameworks lijken te lijden aan het Second-System Effect (zie: The Mythical Man-Month - ISBN: 0201835959). Ze zijn log en zwaar, gebruik ervan is vermoeiend en frustrerend voor een ontwikkelteam.

IJsberg heeft enige tijd onderzoek gedaan naar CBD. Na een paar mislukte pogingen is het gelukt om een CBD-framework op te zetten. De sleutel tot de oplossing bleek het weglaten van features te zijn. Één van de karakteristieken van het framework is dat de structuur van elke deeloplossing in 3 tot 5 elementen overzien kan worden. Met dit inzicht bleek het verassend weinig moeite te kosten om onze bestaande Java codebibliotheek om te zetten naar het nieuwe framework. Integratie van allerlei 3rd party code bleek vervolgens ook geen probleem. Ook bleek het framework uitermate geschikt als basis voor de webapplicatie van Albert.

Het framework is inmiddels uitgebreid met een aantal componenten waardoor het als een applicatie server kan draaien. Wij vinden dat het tijd wordt om ons product te delen met de rest van de wereld.



Wij streven ernaar om Cornerstone simpel, compleet en open te maken en te houden.

Simpel
  • Cornerstone moet gelijk en altijd kunnen starten, ook zonder configuratie
  • Cornerstone moet de ontwikkelaar wijzen op eventuele fouten en oplossingen i.p.v. te crashen
  • Cornerstone moet doelgericht zijn en bestaat alleen uit elementaire functionaliteit

Compleet
  • Cornerstone bevat een volledige technische applicatie-infrastructuur
  • Cornerstone bevat alle noodzakelijke basisfunctionaliteit voor het bouwen van middleware applicaties
  • Cornerstone bevat een management console voor beheer
  • Cornerstone is (voorzien van) een applicatie-server

Open
  • De source code van Cornerstone en standaardcomponenten wordt vrijgegeven
  • Implementatie van basis functionaliteit kan te allen tijde worden vervangen
  • Cornerstone hoeft niet centraal te staan, het kan ook als klein onderdeel van een andere applicatie worden gebruikt

Wij streven daarmee de volgende doelstellingen na:
  • Snel en efficiënt ontwikkelen (alles moet snel)
  • Mogelijkheid om met elk ander systeem te kunnen integreren
  • Eenvoudiger en krachtiger onderhoud en beheer van de applicatie

Snel en efficiënt ontwikkelen
Cornerstone voorziet in een technische applicatie-infrastructuur met componenten voor o.a. configuratie en logging. De applicatie(server) kan na het uitpakken gelijk command-line gestart worden, eventueel vanuit een ontwikkelomgeving. Eigen componenten kunnen d.m.v. configuratie worden toegevoegd. M.a.w. de installatie van Cornerstone kost geen tijd; men kan direct beginnen met het ontwikkelen van klantspecifieke functionaliteit. Door de eenvoudige componentstructuur wordt bovendien hergebruik van code gestimuleerd.

Mogelijkheid om met elk ander systeem te kunnen integreren
De kern van Cornerstone bevat enkele minimale, maar noodzakelijke mechanismes voor sessiemanagement, authenticatie, autorisatie, configuratie, logging en reporting. De afhandeling van al deze mechanismes wordt overgelaten aan componenten, waarvan standaard een simpele implementatie wordt meegeleverd. Enerzijds is hiermee de voor gedistribueerde systemen noodzakelijke infrastructuur gegarandeerd. Anderzijds is het mogelijk gewenste klantfunctionaliteit en technische afhandeling aan welke oplossing, systeem of pakket dan ook uit te besteden. (Compleet/Open concept)

Eenvoudiger en krachtiger onderhoud en beheer van de applicatie
De bouwstenen van de applicatie, de componenten, hebben allen enkele gemeenschappelijke eigenschappen en zijn aangesloten op een gedeelde infrastructuur. Daardoor zijn ze via een management tool te monitoren en aan te sturen. Het is mogelijk om, zelfs runtime (maar daar moet mee oppassen), componenten te vervangen door een ander. Het gemak van de management console en de structuur van het framework leiden een applicatieontwikkelaar vanzelf in de richting van een degelijke component-architectuur.



Cornerstone is volledig in Java gemaakt. Java is bij uitstek geschikt voor een CBD-implementatie omdat het aan runtime classloading doet. Daarnaast is het een rijke en populaire taal. Met java wordt rekening gehouden, hetgeen integratie-inspanningen vergemakkelijkt.


Een applicatie bezit een configuratie en bevat een aantal componenten. Elementaire toegang tot de componenten wordt door een applicatie(-controle)-object verschaft. Toegang voor gebruikers vindt plaats via een server. Een server kan zelf ook een component zijn en worden opgestart door de applicatie.

De wereld volgens Cornerstone is nogal simpel. Dat moet ook wel, want Cornerstone kan zich alleen aan een veelheid van andere systemen aanpassen als het slechts fundamentele eigenschappen van gedistribueerde applicaties ondersteunt.

De hoofddraagstructuur wordt gevormd door de Application class, naar analogie van de Java System class. Door een Application te instantiëren (via de command-line of op een andere manier) komt Cornerstone tot leven. De Application leest de configuratie uit en start gespecificeerde componenten op.

Cornerstone kent in het dagelijks leven 1 type mens, de user. De user heeft eventueel een sessie, een aktentas waarin de user specifieke zaken m.b.t. zijn bezoek bewaart. De user mag in sommige gevallen wel of niet bij sommige objecten. dit wordt bepaald a.d.h.v. de groep waar de user toe behoort.

Cornerstone kent drie instanties die iets van de applicatie willen weten. Ontwikkelaars, beheerders en managers. Ontwikkelaars willen weten of ze geen fouten hebben gemaakt. Beheerders willen weten of alles lekker loopt. Managers willen op de hoogte zijn van calamiteiten en resultaten.

Cornerstone brengt meldingen op drie niveaus: debug, verbose en critical. Cornerstone kent drie types meldingen: information, warning en error.

Een Cornerstone component moet drie dingen kunnen: initialiseren, starten en stoppen. Indien de applicatie een component beveelt te resetten, wordt een stop-init-start uitgevoerd indien het al gestart was, of anders alleen een init.


Voorbeeld van een Cornerstone-architectuur. Een applicatie-object controleert een aantal faciliterende componenten. De stervorm is karakteristiek voor een CBD-architectuur. Via een applicatieserver kan de applicatie worden gecontroleerd en kan business logic worden benaderd. De business logic, object georiënteerd uiteraard, hoeft niet per se zelf een component te zijn.



Basic
  • Simpel configuratie- en initialisatiemechanisme
  • Uitgebreide logging en rapportage
  • Performance monitor
  • Eenduidige database ontsluiting
  • User Management
  • Connectiepooling
  • Flow mechanisme (simpele rule engine voor o.a. websites)
  • (Web)formulier afhandeling
  • Component monitoring
  • Component aansturing
  • (Runtime) component upgrade

Advanced
  • Ge�ntegreerde webserver en servletrunner (Jetty)
  • Ge�ntegreerde JSP-compiler (Jasper)
  • Ge�ntegreerde connectiepool (Proxool)
  • Deployment manager (upload en deployment van resources)
  • Caching

Enterprise
  • Uitgebreide performance analyzer
  • Distributed components
  • Diverse adapters:
    • Flash
    • MQ Series
    • Tivoli



Het is de bedoeling om het basic framework van Cornerstone als open source vrij te geven. Eind november, begin december 2003 zal er een beta release plaatsvinden.
- copyright � 2003 ijsberg automatisering -
website by addink.net