| |
 |
 |
 |
 |
Mensenwerk
Software maken is mensenwerk en de beste software komt vaak tot stand in nauwe samenwerking met de mensen
die het gaan gebruiken.
Motivatie
De productiviteit van mensen is recht evenredig aan hun motivatie. Mensen die in een team werken, zijn het
meest productief indien zij elkaar aanvullen en inspireren. Als gemotiveerde mensen een complex probleem te
lijf gaan, zullen zij automatisch zoeken naar structuren en zij zullen in een groter project hun planning
faseren. Trotse, gemotiveerde software ontwikkelaars zullen hun programma's altijd eerst zelf testen zonder
dat iemand daar om hoeft te vragen. Daarom vindt u hier niet een verhaal over UML (software modellering),
ERD's (gegevensanalyse) en allerlei ontwikkelmethoden.
Visie
In een vroeg stadium neemt de opdrachtgever een aantal belangrijke beslissingen t.a.v. het doel en de omvang van
een project. De opdrachtgever baseert zich daarbij op een visie op de toekomst van het bedrijf. Noem dit voor het
gemak "de financiële motor" van een project. Maar doelstellingen liggen zelden vast. Van een automatiseerder mag
verwacht worden dat deze de opdrachtgever zal helpen om doelstellingen te formuleren en te vertalen naar technische
oplossingen. De vraag of er überhaupt wel geautomatiseerd moet worden is essentieel. Vaak zijn kleinere gerichte
functies ter ondersteuning van bestaande bedrijfsprocessen het meest kosten-effectief.
Koers
Een project dat langere tijd op koers ligt, bereikt zijn doel het snelste. Maar inzichten die in de loop van
een project verkregen zijn, beïnvloeden die koers. Verandert de koers te veel of te snel, dan zal een project
doelloos gaan ronddobberen. Daarom is het goed om iemand verantwoordelijk te maken voor zowel de voortgang als het
resultaat van een project. In deze verantwoordelijkheid wordt tegelijk de productiviteit binnen het projectteam
en de, vaak veranderlijke, doelstellingen van de opdrachtgever bewaakt. Daarvoor is zowel standvastigheid als
flexibiliteit nodig. Bovendien moet zo iemand ook nog communicatief sterk genoeg zijn om de verschillende
verwachtingen van alle betrokkenen op elkaar af te stemmen.
|
 |
 |
 |
 |
 |
 |
 |
 |
Dynamiek
Tijdens de uitvoering van bijna elk softwareproject voltrekken zich een aantal dynamische processen. Hier wordt
catalogisch een aantal van deze processen besproken.
Bewustwording
Eerst wordt bij softwareprojecten, veelal middels workshops of vergaderingen, geprobeerd om te achterhalen
wat er eigenlijk precies moet gebeuren. Daarvoor is het interessant om eerst te bepalen wat de huidige praktijk
is. Het is niet altijd gemakkelijk om daar overeenstemming in te bereiken. Nog minder makkelijk is het om het
eens te worden wat de praktijk idealiter zou moeten zijn. In dit proces worden betrokkenen zich vaak pas voor
het eerst bewust van allerlei zaken.
"Instrumentering"
Managers proberen een softwareproject vaak te instrumenteren. Met andere woorden:
managers proberen het project of de software zelf zo in te richten dat daarmee een doel wordt nagestreefd dat niet
enkel betrekking heeft op het automatiseren van een bedrijfsproces. Het is goed als software voor verschillende
mensen andere functies kan hebben, maar dit houdt ook enkele gevaren in. Denk bijvoorbeeld aan de volgende zaken:
- In softwareprojecten worden bedrijfsprocessen vormgegeven of gestroomlijnd: diverse verantwoordelijkheden van
medewerkers worden opnieuw vastgesteld.
- Het automatiseren van bedrijfsprocessen geeft allerlei mogelijkheden tot het bewaken en controleren van werk.
Denk aan statistische gegevens, automatisch verzorgde signalen (bijv. via e-mail) voor managers of
aan het regelen van toegangsrechten.
Centralisering
Door het automatiseren van bedrijfsprocessen ontstaan er doorgaans kansen om deze processen verder te stroomlijnen.
Het wegvallen van fysieke barrières maakt dat processen die een intrinsieke samenhang vertonen softwarematig aan elkaar
gekoppeld kunnen worden. Het meest klassieke voorbeeld is misschien wel een papieren adressenbestand dat op verschillende
afdelingen wordt bijgehouden. In veel bedrijven worden de adressen tegenwoordig opgeslagen op een centrale server waartoe
elke afdeling toegang heeft. Als bij verdere automatisering meer en meer processen centraal beheerd worden, raken afdelingen
vaak een stukje van hun vrijheid kwijt.
"Zwaan kleef aan"
Om dezelfde reden als hierboven onder centralisering is gezegd, leidt een softwareproject vaak ernstig aan een
"zwaan kleef aan"-syndroom. Natuurlijk hangen allerlei processen in een bedrijf met elkaar samen. Het doet altijd pijn in
het hoofd om doublures te zien van zaken die op de ene afdeling geautomatiseerd worden en op de andere niet. Vanuit het
oogpunt van automatisering lijken veel zaken inefficiënt of zelfs overbodig, maar vaak vergeet men dan even de "digitale bril"
af te zetten. Gegevens zijn zelden slechts gegevens, ze hebben een (soms symbolische) functie en maken deel uit van een
proces.
|
 |
 |
 |
 |
 |
 |
 |
 |
Gegevensanalyse
Gegevensanalyse heeft voor WarpGear een speciale plaats in elk softwareproject. Dat behoeft
voor veel mensen nadere uitleg. Gegevensanalyse heeft niet altijd de zelfde betekenis, WarpGear
gebruikt de volgende definitie: Gegevensanalyse is een activiteit waarin een automatiseerder of
analist alle elementen in een bedrijfsproces inventariseert, benoemt en de onderlinge verbanden
tussen deze elementen probeert te doorzien.
Kosten
Uit onderzoek blijkt dat bij bedrijven gemiddeld ruim 80% van de uitgaven aan software betrekking
heeft op onderhoud en aanpassing van bestaande software, slechts 20% wordt besteed aan nieuw te
bouwen software. Vooral snel gebouwde software waarvan de gegevensverzamelingen niet vooraf helder
zijn vastgelegd, laten zich moeilijk (lees kostbaar) aanpassen. Om het anders te zeggen: bomen
zonder wortels groeien niet.
Vocabulaire
Juist aan het begin van nieuw te bouwen software bestaat een goede kans om bovengenoemde ellende
voor te zijn. Vaak verdient een investering in gegevensanalyse aan het begin van een project zich
al tijdens het zelfde project terug. Niet alleen wordt de software makkelijker te onderhouden en
uit te breiden, een traject van gegevensanalyse leent zich er uitstekend toe om alle partijen op
een lijn te krijgen. Alleen al door de elementen in een proces te benoemen ontstaat een
vocabulaire waarmee alle betrokken partijen elkaar snel begrijpen.
|
 |
 |
 |
 |
 |
 |
 |
 |
Object Oriëntatie
Te midden van deze krachten (zie Dynamiek) maakt WarpGear haar software. Object oriëntatie
staat daarbij centraal. Waarom?
Computertaal
Soms vragen mensen zich af: waarom doet de computer niet gewoon wat ik zeg??? Het antwoord is: omdat de computer
toch altijd nog een andere taal spreekt. Het gevaar is niet zozeer dat computers gaan "denken" als mensen, was het
maar waar! Nee, het gevaar is dat mensen gaan denken als computers.
Spreektaal
Object oriëntatie (OO) is een logische volgende stap op het gebied van programmeertalen. Programmeertalen zijn van
generatie tot generatie steeds abstracter geworden. OO is zelfs zo abstract dat het op gewone spreektaal kan lijken.
Als software geschreven wordt met simpele spreektaal zal het dichter komen bij het natuurlijk denken van de mens en
dat is mooi om twee belangrijke redenen:
|
|
-
Het menselijk denken is zeer efficiënt. Het vermogen tot abstractie is misschien wel de meeste krachtige eigenschap
van ons denken. Zo kan met OO ook zeer efficiënt geprogrammeerd worden. Niet zozeer efficiënt uit het oogpunt van
bits en bytes (code "optimalisering") maar eerder efficiënt vanuit het oogpunt van het gehele project. Denk daarbij
aan het beheersen van complexiteit en het beheer/onderhoud van modules en code. In OO staat hergebruik van code
centraal.
-
Ten tweede, en niet minder belangrijk, gaan software ontwikkelaars weer meer denken als "normale mensen".
Ontwikkelaars kunnen daarom door OO veel gemakkelijker communiceren met andere partijen in een project.
Eindgebruikers kunnen zodoende meer invloed uitoefenen op wat de software voor ze zal doen en hoe het zich moet
gedragen. Anders gezegd: in welke taal zij zelf voortaan de computer zullen gaan aanspreken.
Daarom probeert WarpGear haar software met behulp van OO zo te ontwikkelen alsof men een handleiding schrijft
die tegelijk het programma is: helder, leesbaar en onderhoudbaar. "Het kan niet simpel genoeg zijn".
|
|
|
 |
 |
 |
 |
|
|
|
|