Archief - [ALG]SE Software "engineering"

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

wlibaers

Legacy Member
kwitters zei:
Oei, ben je dan zeker dat je niet mijn mening deelt ;)? UML is nog niets in vergelijking met wat software engineering voorstelt: zij willen ALLES formeel en wiskundig voorstellen, zodat achteraf de correcte werking kan bewezen worden.

Dat hangt ervan af. Dijkstra bijvoorbeeld, een groot voorstander van wiskundig bewijsbare software, beschouwde "software engineering" (dingen zoals UML) als lapmiddeltjes die geen problemen konden oplossen.

Zie bijvoorbeeld:
http://www.cs.utexas.edu/users/EWD/transcriptions/EWD10xx/EWD1036.html
(voor de liefhebbers: handgeschreven versie als pdf rechtsboven op de pagina)

Of
http://www.cs.utexas.edu/users/EWD/transcriptions/EWD11xx/EWD1165.html




Unzip Attack zei:
en doch geloof ik niet in de ingenieurs-aanpak ala een volledig voorgetekend plan. ik vraag mij af wat men hier verstaat onder een wiskundig model en op welke manier die dan getest worden etc... dat is allemaal prachtig op papier, maar wie in godsnaam wil werknemers eerst 2 maanden opleiden om ze nadien pas aan het werk te kunnen zetten ? waarom geen gebruik van hybride technieken (UML,...), waar de klant (belangrijk is regelmatige feedback naar klanten) ook nog iets van snapt.

Als je bijvoorbeeld simulaties schrijft (en dan bedoel ik niet iets als "The Sims", maar een softwaremodel om het gedrag van bepaalde systemen te beschrijven en te voorspellen), dan moet je wel een grondige kennis hebben van de wiskundige modellen, of je maakt geen kans om tot een bruikbaar resultaat te komen. De moeilijkheid is in dit geval het opstellen van en inzicht verkrijgen in het wiskundige model, dat daarna vertalen in code is doorgaans redelijk eenvoudig. Iemand die de hele dag niets anders doet dan GUI's bijeenklikken in VB heeft waarschijnlijk een andere kijk op de zaak.

Unzip Attack

Legacy Member
QplQyer zei:
Afhankelijk van het project kan dat zonder verandering van verwachtingen, of met.

zowat ELK project heeft changements tijdens implementatie. denken dat het geheel zonder kan is 1 grote illussie.

QplQyer zei:
Het is geen "lame excuus", het is een waarheid. Tuurlijk zullen de meesten wel iets gezien hebben van UML en dergelijke meer. Maar UML op zich is geen formele modelleringstaal, het heeft geen wiskundige onderbouw (er gebeurt wel onderzoek naar en ik geloof dat er reeds formeel onderbouwde UML-notaties bestaan). Ik denk niet dat het gebruik van theorem-proving tools voor software-design is aangeleerd in je curriculum? Of model-checkers? Of VDM, B, Z, ... ?

no offence maar wij zien Z, OCL, Algebraische specificaties, CTT, UML2.0, Activity/Deployement/... diagrams, model-check tools (natuurlijk niet voor elke model, maar dat is onbelangrijk) etc etc met andere woorden modelspecificaties op meerdere niveaus. *totaal geen nut om specifiek talen gaan te leren, principes zijn veel belangrijker*

het wordt dus weldegelijk gezien, alleen zien zeer weinig mensen de echte voordelen er van in. inclusief mezelf.

Unzip Attack

Legacy Member
wlibaers zei:
Als je bijvoorbeeld simulaties schrijft (en dan bedoel ik niet iets als "The Sims", maar een softwaremodel om het gedrag van bepaalde systemen te beschrijven en te voorspellen), dan moet je wel een grondige kennis hebben van de wiskundige modellen, of je maakt geen kans om tot een bruikbaar resultaat te komen. De moeilijkheid is in dit geval het opstellen van en inzicht verkrijgen in het wiskundige model, dat daarna vertalen in code is doorgaans redelijk eenvoudig. Iemand die de hele dag niets anders doet dan GUI's bijeenklikken in VB heeft waarschijnlijk een andere kijk op de zaak.

what's your point ? iemand die GUI's bijeenklikt in VB doet doorgaans 0.0 aan software engineering.

anyway kan jij mij eens het dykstra-algoritme in een wiskundige simultatie gieten die ik dan zonder problemen kan omzetten naar code.
Willen we er dan voor wedden dat mijn dykstra code ettelijke uren eerder af is en geen fouten bevat ?
echt wiskundig model opstellen is allemaal snel snel gezegd, tot je het in een groot project moet gaan gebruiken en je omringd bent met programmeurs die wss niets anders willen dan zo snel mogelijk beginnen. dat is iets dat die theoretici niet incalculeren in hun berekeningen, de menselijke factor (agile development WINK WINK).

sjeus het heeft echt wel meer redenen dan "onbekendheid en daarom onbemindheid", waarom modelgebaseerde aanpak nog zo weinig wordt gebruikt. als elke letter code kritiek is en de eerste prioriteit is dat er geen enkele bug mag bestaan (bv. NASA, tijdskritische processen, ...) zie ik zulke aanpak volledig zitten. In een doorgaans bedrijfsproces zijn zo wiskundige simulaties en modellen in zeer veel gevallen ZWARE overkill.

QplQyer

Legacy Member
kwitters zei:
Men kan niet bewijzen dat het model voldoet aan de verwachtingen van de klant, want klanten weten meestal niets over programmeren, laat staan formele of wiskundige methoden. Dus je vertrekt al van een model dat fout kan zijn. Welk nut heeft het dan om al dan niet te bewijzen of iets aan dat model voldoet, als je al van een foutief model vertrekt?
Het is totaal naast de kwestie of de klant al dan niet een model begrijpt of dat we niet kunnen bewijzen dat een model voldoet aan de verwachtingen van de klant. Op elk bepaald moment heb je immers wel sowieso een idee nodig van wat de klant verwacht, anders kan je ook geen source-code beginnen schrijven op dat moment. Op dat moment kan je dus evengoed een model maken, bruikbaar om ondubbelzinnig te communiceren onderling, om specificaties te vergelijken met elkaar, om implementaties te controleren aan de specificaties die men denkt dat op dat moment geldig zijn. De voordelen die ik hier al drie keer heb neergetikt dus.

Bij source code hoef ik trouwens niets te bewijzen, aangezien de computer het uitvoert zoals het er staat: de fout zit altijd bij wat de mens "denkt" dat het doet of moet doen. Zulke problemen kan je enkel oplossen door te testen: kijken of het programma voldoet aan de verwachtingen van de *klant*.
Dat is dan ook net de hele pointe van waarom men programma's gaat bewijzen: om zeker te zijn dat de source code die je hebt geschreven overeenkomt met wat jij als _programmeur_ denkt dat het programma doet (getuige de vele bugs is dat niet altijd juist gedacht). En dat probleem kan men wel degelijk oplossen door het te bewijzen.

Voldoen aan de verwachtingen van de klant is nog iets totaal anders, dat kan men natuurlijk enkel door een prototype te tonen aan de klant. Of bij een klant die de specificaties kan lezen, door de specificatie te tonen.

In de slides die je doorstuurde staat dat formele methoden 40 jaar oud zijn, vind je het zelf dan niet vreemd dat die in de praktijk zelden gebruikt worden?
In Frankrijk gebruikt men de B-methode al vaker in de industrie.

En 40 jaar is heel kort. 40 jaar terug begon men nog maar net met het onderzoek naar formele methoden, immers, voor men programmeertalen had, kon men ook geen onderzoek beginnen doen naar programmeertalen nietwaar?

Formele methoden vereisen bovendien nieuwe denkwijzen om aan wiskunde te doen (cfr Dijkstra's "how computing science created a new mathematical style"), iets wat men niet zomaar in 1-2-3 aanleert. Die technieken worden nu nog steeds niet degelijk aangeleerd in de vele opleidingen informatica die bestaan, waardoor de industrie niet de broodnodige injectie krijgt van mensen met een degelijke kennis ervan.
Daarnaast zijn er veel commerciële successen geoogst met software met bugs en heeft men de gebruikers kunnen doen wennen aan het idee dat software onvermijdelijk bugs bevat, waardoor managers nog minder geneigd zijn om hun mensen in opleiding te sturen, dat kost immers geld (patches schrijven achteraf echter ook, om te zwijgen van schadevergoedingen).
Het gaat zelfs zover dat sommigen claimen dat software-schrijvers niet verantwoordelijk kunnen gesteld worden voor fouten in hun software (cfr Alan Cox) ...

De gewenste implicatie van je vraag, dat het aan de formele methoden zelf zou liggen, is dus niet waar. Het is een samenloop van omstandigheden die verhinderd heeft dat formele methoden een echt wijdverspreid gebruik kennen in de industrie. Wat niet betekent dat we niet moeten streven naar meer professionalisme en ze alsnog trachten te incorporeren. Bugs kosten namelijk veel geld en frustratie.

Met het gaan naar parallelle software zal men niet anders kunnen dan zich van andere patronen bedienen dan "write-test-fix/release" trouwens, de meest vreemde bugs kunnen zich daar immers voordoen, die maar al te vaak onopgemerkt worden tijdens een gewone testfase.

De slides die je doorstuurde geeft trouwens aan dat het om een waterfall model gaat. Een waterfall model wil zeggen dat wanneer je de requirements aanpast, alle stappen terug moeten doorlopen worden. Bij een incrementeel process is dit niet zo, men voegt steeds meer functionaliteit toe in kleine stappen.

EDIT: misschien is dit niet duidelijk, dus hier even extra uitleg: een klant gaat geen feedback geven op jou voorgesteld formeel model aangezien hij hier niets van begrijpt, hij geeft feedback op het uiteindelijk werkende resultaat: maw, klant zegt dat er iets niet in orde is, jij moet alle stappen terug doorlopen om weer feedback te krijgen = waterfall model.
Als je degelijk naar het schema had gekeken had je gezien dat de klant geen feedback geeft op het voorgesteld formeel model, maar op een functioneel prototype.
Dat men dan terug opwaarts moet reizen is onvermijdelijk, voor het nieuwe stuk heb je sowieso een model nodig, met de vermelde voordelen voor het vermijden van code-duplicatie door verschillend lijkende specificaties eventueel equivalent te kunnen aantonen.

Je doet uitschijnen alsof alle stappen terug moeten doorlopen worden voor de gehele applicatie, wat hoegenaamd niet zo is, enkel voor de nieuwe zaken moet dit gebeuren (dus zelfs al was dit een waterfall-model, dan is de commentaar dat dit veranderende specificaties niet zou aankunnen totaal uit de lucht gegrepen).

QplQyer

Legacy Member
no offence maar wij zien Z, OCL, Algebraische specificaties, CTT, UML2.0, Activity/Deployement/... diagrams, model-check tools (natuurlijk niet voor elke model, maar dat is onbelangrijk) etc etc met andere woorden modelspecificaties op meerdere niveaus. *totaal geen nut om specifiek talen gaan te leren, principes zijn veel belangrijker*
De vraag is natuurlijk hoe diep alles wordt uitgespit. Je noemt hier nu vele zaken op, ik weet niet aan welke universiteit je hebt gestudeerd (ik vermoed Antwerpen of Hasselt), aan de mijne heb ik alleszins daar niet zoveel over gezien, en dan nog enkel in mijn optie-specifieke vakken.

het wordt dus weldegelijk gezien, alleen zien zeer weinig mensen de echte voordelen er van in. inclusief mezelf.
Op de ene universiteit wordt het dan wel al wat grondiger gezien dan op de andere vrees ik. Het belangrijkste voordeel voor mij vind ik het praktisch gegarandeerd bugvrij zijn van het programma. Ik dan ook een hekel aan bugs (en aan debuggen).

echt wiskundig model opstellen is allemaal snel snel gezegd, tot je het in een groot project moet gaan gebruiken en je omringd bent met programmeurs die wss niets anders willen dan zo snel mogelijk beginnen. dat is iets dat die theoretici niet incalculeren in hun berekeningen, de menselijke factor (agile development WINK WINK).
De programmeurs mogen dan ook direct beginnen. Het model wordt dan wel gemaakt door de theoretici.
Ik kan mij niet van de indruk ontdoen dat mensen die snel-snel willen programmeren de meeste bugs doen ontstaan (en soms de meest vreemde), enkel voor dat snelle resultaat. Het is natuurlijk leuker om al vanop dag één die vijf pixeltjes te zien oplichten, maar als je daarna twee dagen moet spenderen om alles opnieuw te schrijven omdat je toch nog iets meer wilde dan die vijf pixels te doen oplichten, waarbij je telkens faalt om zelfs ook maar één pixel opnieuw te doen oplichten zonder dat het programma crasht, is de lol er ook snel af.

En amateur-programmeurs doen maar op, maar in een professionele omgeving lijkt het mij beter om wel een iets gegarandeerdere manier te hanteren.

killgore

Legacy Member
Unzip Attack zei:
anyway kan jij mij eens het dykstra-algoritme in een wiskundige simultatie gieten die ik dan zonder problemen kan omzetten naar code.
Willen we er dan voor wedden dat mijn dykstra code ettelijke uren eerder af is en geen fouten bevat ?

het dijkstra algoritme IS een wiskundig model :x.

kwitters

Legacy Member
QplQyer zei:
Dat is dan ook net de hele pointe van waarom men programma's gaat bewijzen: om zeker te zijn dat de source code die je hebt geschreven overeenkomt met wat jij als _programmeur_ denkt dat het programma doet

Hoe ga je bewijzen dat source code voldoet aan wat iemand denkt :wtf:? Je kan hoogstens bewijzen dat je source code voldoet aan het opgestelde model.


QplQyer zei:
Het gaat zelfs zover dat sommigen claimen dat software-schrijvers niet verantwoordelijk kunnen gesteld worden voor fouten in hun software (cfr Alan Cox) ...

Dit is ook zo, nog nooit de disclamer gelezen wanneer je software installeert?

QplQyer zei:
Bugs kosten namelijk veel geld en frustratie.

Gelukkig dan dat het werken met formele methoden zo goedkoop is... not!


QplQyer zei:
Met het gaan naar parallelle software zal men niet anders kunnen dan zich van andere patronen bedienen dan "write-test-fix/release" trouwens, de meest vreemde bugs kunnen zich daar immers voordoen, die maar al te vaak onopgemerkt worden tijdens een gewone testfase.

In welke tijd leef jij? Langs de ene kant beschrijf je parallelle software als iets dat in de toekomst gebruikt gaat worden, en langs de andere kant beschrijf je formele software engineering als iets dat nu al toepasbaar is?

QplQyer zei:
Als je degelijk naar het schema had gekeken had je gezien dat de klant geen feedback geeft op het voorgesteld formeel model, maar op een functioneel prototype.

Als je degelijk naar het schema had gekeken had je gezien dat het functionele prototype boven de implementatie staat. Dit wil dus zeggen dat dit een prototype is op het model en dus niet op het geimplementeerde gedeelte. En nu je het zegt, ik zie in dat schema geen feedback van de finale geimplementeerde software... . "De klant zal het wel goed vinden zeker?"

QplQyer zei:
Dat men dan terug opwaarts moet reizen is onvermijdelijk, voor het nieuwe stuk heb je sowieso een model nodig, met de vermelde voordelen voor het vermijden van code-duplicatie door verschillend lijkende specificaties eventueel equivalent te kunnen aantonen.

Je doet uitschijnen alsof alle stappen terug moeten doorlopen worden voor de gehele applicatie, wat hoegenaamd niet zo is, enkel voor de nieuwe zaken moet dit gebeuren (dus zelfs al was dit een waterfall-model, dan is de commentaar dat dit veranderende specificaties niet zou aankunnen totaal uit de lucht gegrepen).

Waterfall kan inderdaad veranderende specificaties aan, maar het gaat erom tegen welke kostprijs. En bij klassieke waterfall kan je natuurlijk ook delen teruggebruiken zodat je niet alles overnieuw moet doen, maar aanpassingen zullen in zo'n model steeds een pak kostelijker zijn.

QplQyer

Legacy Member
kwitters zei:
Hoe ga je bewijzen dat source code voldoet aan wat iemand denkt :wtf:? Je kan hoogstens bewijzen dat je source code voldoet aan het opgestelde model.
Door ondubbelzinnig neer te schrijven wat je verwacht en dan te bewijzen dat het programma doet wat je verwacht. Idealiter zouden bewijs en programma eigenlijk hand in hand moeten geconstrueerd worden, maar goed.

Dit is ook zo, nog nooit de disclamer gelezen wanneer je software installeert?
Het is idioot. Een fout in een programma is een constructiefout en wel degelijk de schuld van de programmeur.

Disclaimers hebben geen juridische waarde in België trouwens.

Daarmee zeg ik niet dat open-source ontwikkelaars moeten verantwoordelijk worden gesteld voor fouten in hun programmatuur. Bij commerciële software zou dat echter wel moeten gebeuren.

Gelukkig dan dat het werken met formele methoden zo goedkoop is... not!
Goedkoop, neen, dat heb ik ook nooit beweerd. Eén fout in software kan enorm veel kosten (en dan nog niet alleen aan het bedrijf dat de software heeft gemaakt). Wanneer men de kosten voor het producerende bedrijf optelt voor het oplappen van de fout, het herstellen van geleden imago-schade, ... lijkt het me niet sterk om te stellen dat de kosten van een formele specificatie die gecontroleerd werd lager zullen liggen (indien de werknemers reeds getraind waren natuurlijk). Als men het breder trekt, kunnen vele bedrijven die de software gebruikten ook enorm veel geld verliezen door een onbetrouwbare applicatie. Als men al die kosten optelt, denk ik zeker niet dat formele methoden gebruiken duurder zal uitkomen als de kosten van de fout.

Trouwens, ik denk dat een "guaranteed to be error-free"-stickertje op software ook wel tot extra verkoop kan leiden.

In welke tijd leef jij? Langs de ene kant beschrijf je parallelle software als iets dat in de toekomst gebruikt gaat worden, en langs de andere kant beschrijf je formele software engineering als iets dat nu al toepasbaar is?
Wat een vreemde vraag. Formele methoden zijn nu toepasbaar, parallel programmeren gebeurt nu ook, maar in de toekomst zal dit alleen maar meer opkomen (en meer naar werkelijke parallellisatie neigen dankzij de multi-cores). En formele methoden om de inherente complexiteit van het parallellisme te kunnen temmen zullen daar dan ook broodnodig zijn.

Als je degelijk naar het schema had gekeken had je gezien dat het functionele prototype boven de implementatie staat. Dit wil dus zeggen dat dit een prototype is op het model en dus niet op het geimplementeerde gedeelte. En nu je het zegt, ik zie in dat schema geen feedback van de finale geimplementeerde software... . "De klant zal het wel goed vinden zeker?"
Natuurlijk is dat prototype bovenop het model. Zo verhindert men dat men gaat implementeren vooraleer men zeker is dat het model voldoet aan de verwachtingen van de gebruiker. Was dat dan niet ook juist de kritiek, dat je nooit een model kan tonen aan de gebruiker? Hierbij is dat duidelijk opgelost aan de hand van een prototype.

Dat er geen streepje staat van het finale product naar de gebruiker is van weinig belang. Als het prototype van het model voldoet aan de verwachtingen van de klant, dan zal een implementatie redelijkerwijze ook voldoen (net doordat het model garandeert dat de implementatie zal voldoen aan het model en het model voldoet aan de eisen van de klant, gevalideerd aan de hand van het prototype).

Waterfall kan inderdaad veranderende specificaties aan, maar het gaat erom tegen welke kostprijs. En bij klassieke waterfall kan je natuurlijk ook delen teruggebruiken zodat je niet alles overnieuw moet doen, maar aanpassingen zullen in zo'n model steeds een pak kostelijker zijn.
En aanpassingen in de toekomst aan zo'n softwarepakket zullen dan weer net goedkoper zijn doordat er een degelijke documentatie voor bestaat. Laat staan bij nieuwe applicaties die gelijkenissen vertonen met vorige.

jodeman

Legacy Member
Te strenge specificaties kosten enkel nutteloos tijd en vallen nooit 100% correct binnen de verwachtingen van de klant. Er zijn sowieso fouten en te technische modellen die worden opgesteld staan in sterk contrast tot de verwachtingen van de klant.

Tyfius

Legacy Member
QplQyer zei:
Het is idioot. Een fout in een programma is een constructiefout en wel degelijk de schuld van de programmeur.
Ik daag u uit, richt een bedrijf op, ontwikkel software volgens alle modellen en kijk na 5 jaar hoeveel u verdient hebt. Het uitdenken van alle mogelijkheden kost tijd en geld, en dat is iets wat de klant niet heeft. Het programma moet liever vandaag dan morgen af zijn.
Ten tweede kan je als programmeur niet op alles anticiperen, zelfs niet met alle mogelijke modellen. Op een bepaald moment gaat een klant iets doen wat tot een fout resulteert in je programma, only a few billion things to check, go ahead!

Ik hoor u hier veel zeggen, en in theorie is het allemaal mooi, maar in praktijk is het voor de gemiddelde klant niet haalbaar. Het is te duur en het kost te veel, punt uit.

QplQyer zei:
Disclaimers hebben geen juridische waarde in België trouwens.
Op 't ET forum was er een tijdje terug een discussie aan de gang over het maken van cheats. Basicly is dat een inbreuk tegen de EULA, en daar vertelde iemand het volgende:
Een EULA (= rechtshandeling) wordt geacht een AANVAARDBARE INHOUD (geoorloofd voorwerp) en BEWEEGREDEN te hebben. In Belgie is een EULA wel door de wet erkend (Wet 30 juni 1994)
Volgens mij valt een disclaimer hier ook onder.
Ikzelf ken weinig van recht, dus ik ga maar af op wat anderen zeggen.

kwitters

Legacy Member
QplQyer zei:
Door ondubbelzinnig neer te schrijven wat je verwacht en dan te bewijzen dat het programma doet wat je verwacht. Idealiter zouden bewijs en programma eigenlijk hand in hand moeten geconstrueerd worden, maar goed.

Hoe vaak nu nog, het gaat niet om wat jij verwacht, het gaat om wat de klant verwacht, iemand die totaal clueless is over technologie, wiskunde en formele methodes.

QplQyer zei:
Het is idioot. Een fout in een programma is een constructiefout en wel degelijk de schuld van de programmeur.

Als jij afgestudeerd bent mag je voor ons komen werken als programmeur :). Wel eerst even een papiertje tekenen dat je bugvrij programmeert, en een duidelijk gespecifieerde schadeclaim in het geval er toch bugs opduiken.

QplQyer zei:
Daarmee zeg ik niet dat open-source ontwikkelaars moeten verantwoordelijk worden gesteld voor fouten in hun programmatuur. Bij commerciële software zou dat echter wel moeten gebeuren.

Wat is het verschil? Dus firefox mag wel bugs bevatten maar IE of Opera niet?


QplQyer zei:
Als men al die kosten optelt, denk ik zeker niet dat formele methoden gebruiken duurder zal uitkomen als de kosten van de fout.

Als de klant bugvrije software wil dan zal hij dit ook vragen (en voor moeten betalen). Alle klanten die ik ken willen zoveel mogelijk business value voor wat ze kunnen betalen. Dat er hier en daar een kleine bug inzit (zoals in alle software trouwens) is verwaarloosbaar in vergelijking met de extra waarde die ze aan de software hebben.

QplQyer zei:
Trouwens, ik denk dat een "guaranteed to be error-free"-stickertje op software ook wel tot extra verkoop kan leiden.

:rofl:, niets maar dan ook niets is 100% guaranteed to be error-free! Geen space shuttles, geen vliegtuigen, geen processoren, geen software, niets! Men kan wel proberen de kans op falen zoveel mogelijk te verkleinen, maar 100% error free in real-life projecten, forget it.

QplQyer zei:
Formele methoden zijn nu toepasbaar

Cool! Kan je ons dan eens een link ofzo doorgeven waar de source code van een of ander project formeel bewezen wordt? Het hoeft niet groot te zijn, iets ter grootte van een bikini sudoku is al genoeg. (Liefst geen versimpeld academisch voorbeeldje met maar 100 lijnen code).


QplQyer zei:
Natuurlijk is dat prototype bovenop het model. Zo verhindert men dat men gaat implementeren vooraleer men zeker is dat het model voldoet aan de verwachtingen van de gebruiker. Was dat dan niet ook juist de kritiek, dat je nooit een model kan tonen aan de gebruiker? Hierbij is dat duidelijk opgelost aan de hand van een prototype.

Zoals ik zei dus, een waterfall model. Om het duidelijk te maken zal ik een voorbeeld nemen dat jullie maar al te graag doen: het bouwen van een huis. De architect/ingenieur tekent het plan en doet sterkte berekeningen. Er wordt een prototype aan de klant getoond door bijvoorbeeld tekeningen die het gebouw illustreren of eventueel een maquette. De klant keurt dit prototype goed, en men begint aan het construeren zelf (het implementeren). Wanneer het gebouw voldoet aan de originele plannen is de klant tevreden, want hij heeft tenslotte goedkeuring gegeven over het prototype. Bij bouwen klopt dit volledig, maar ik zal je eens vertellen wat er in het geval van software gebeurt. De klant zegt "hmmm... die kleur van die bakstenen ziet er in't zonlicht toch iets anders uit dan ik verwacht had, kunt ge die kleur niet effe snel aanpassen? En ik wou een keuken die groot genoeg is, en dat is wel, maar als we die muur nu eens iets opschuiven (shit, juist een steunmuur), dan heb ik wat meer plaats in de living. Kunt ge die muur tegen overmorgen verplaatsen? Want vrijdag heb ik effe tijd om te komen kijken, dan kan ik zien dat het af is." No kidding, zo gaat het er in de echte software wereld aan toe, en dan heb je met je formele methoden 2 keuzes: je zegt tegen de klant "sorry, jij hebt de maquette goedgekeurd, en zo hebben we het ook gebouwd, dus nu moet je niet komen zagen", of je zegt: "Oeioeioei, al die sterkte berekeningen moeten terug gedaan worden, alles moet terug worden goedgekeurd, om nog maar te zwijgen over de kosten van het afbreken en terug opbouwen van die muur". En dan zegt de klant: "Vreemd, software bedrijf X die niet met formele methoden werken zouden dat op een uurtje hebben gefixed. De deur van de keuken zou bij hun misschien wel wat klemmen, maar dan had ik toch wat ik echt wou."

Unzip Attack

Legacy Member
QplQyer zei:
De vraag is natuurlijk hoe diep alles wordt uitgespit. Je noemt hier nu vele zaken op, ik weet niet aan welke universiteit je hebt gestudeerd (ik vermoed Antwerpen of Hasselt), aan de mijne heb ik alleszins daar niet zoveel over gezien, en dan nog enkel in mijn optie-specifieke vakken.

Hasselt, bijna alle bovenstaande technieken zijn gebruikt in projecten. Z is een uitzondering, maar de bruikbaarheid van Z is dan ook ZEER miniem in de bedrijfswereld en zelfs academische wereld.

QplQyer zei:
Op de ene universiteit wordt het dan wel al wat grondiger gezien dan op de andere vrees ik. Het belangrijkste voordeel voor mij vind ik het praktisch gegarandeerd bugvrij zijn van het programma. Ik dan ook een hekel aan bugs (en aan debuggen).

de meeste technieken zijn zeer grondig gezien. grondig genoeg om te weten dat model-gebaseerd werken niet betekend dat je gegarandeerd 0.0 % bugs kan hebben. de ene universiteit bekijkt het vanuit een theoretisch standpunt, de andere vanuit een praktischer. wat mij vooral is bijgebleven is het feit dat modelgebaseerde oplossingen op papier zeer goed werken, maar in praktijk er andere factoren meespelen. Bijvoorbeeld librairies die PERFECT (met garantie 100%) in modellen werken, maar die bugs bevatten in real world. Of frameworks die performance problemen vertonen etc...
nogmaals het is een theoretische misvatting dat je een programma van de eerste keer zonder bugs kan krijgen, tenzij je binnen een ZEER nauw framework werkt dat ZEER goed gedefinieerd is op voorhand. (zoiets als NASA applicaties, die JA-REN development achter de rug hebben en JA-REN getest zijn)

QplQyer zei:
De programmeurs mogen dan ook direct beginnen. Het model wordt dan wel gemaakt door de theoretici.

dees slaat alles. hoe ga jij je programmeurs al laten beginnen, nog voor je een conceptuele analyse hebt gedaan ?

QplQyer zei:
Ik kan mij niet van de indruk ontdoen dat mensen die snel-snel willen programmeren de meeste bugs doen ontstaan (en soms de meest vreemde), enkel voor dat snelle resultaat. Het is natuurlijk leuker om al vanop dag één die vijf pixeltjes te zien oplichten, maar als je daarna twee dagen moet spenderen om alles opnieuw te schrijven omdat je toch nog iets meer wilde dan die vijf pixels te doen oplichten, waarbij je telkens faalt om zelfs ook maar één pixel opnieuw te doen oplichten zonder dat het programma crasht, is de lol er ook snel af.

wil dat daarom meteen zeggen dat je verplicht bent alles met formele modellen te beschrijven ? er zijn HEUS nog andere manieren om het aantal bugs en de kwaliteit van de code van je programmeurs te verbeteren hoor...

QplQyer zei:
En amateur-programmeurs doen maar op, maar in een professionele omgeving lijkt het mij beter om wel een iets gegarandeerdere manier te hanteren.

en wat als klanten en baas binnen de 2 maanden resultaat willen zien. ben je dan nog zo geneigd eerst je programmeurs formele modellen aan te leren, de nodige tools te leren, OM TE GAAN MET FOUTEN IN DIE FORMELE MODELLEN, etc etc Calculeer je dat ook in je keuze ?

nogmaals allemaal vanuit theoretisch standpunt evenzeer snel-snel gezegd (net zoals die programmeurs die snel-snel willen beginnen), maar praktijk is echt nog wel wat anders hoor.

welke universtiteit heb je btw gevolgd? Leuven/Brussel ?

killgore zei:
het dijkstra algoritme IS een wiskundig model :x.
sinds wanneer kan jij een wiskundig model zomaar even in 1-2-3 in een uitvoerbaar model (simulatie) gieten ? en kan je mij dan ook even tonen hoe ik dat uitvoerbaar model 1 op 1 map in een GIS-framework. weetje van zodra er een beetje complexiteit bij komt te kijken, kan je je uitvoerbare modelletjes al terug in de kast gaan steken. simple as that.

killgore

Legacy Member
Unzip Attack zei:
sinds wanneer kan jij een wiskundig model zomaar even in 1-2-3 in een uitvoerbaar model (simulatie) gieten ? en kan je mij dan ook even tonen hoe ik dat uitvoerbaar model 1 op 1 map in een GIS-framework. weetje van zodra er een beetje complexiteit bij komt te kijken, kan je je uitvoerbare modelletjes al terug in de kast gaan steken. simple as that.

?

Als je algoritme complexer wordt dan dijkstra ben je niet meer met dijkstra bezig hoor.

Wat er nog kan gebeuren is fout in het coden. Maar daar kan je nu eenmaal niet omheen aangezien het een menselijke fout is, deze kan op het engineering, coding & zelfs gebruiksvlak gemaakt worden.

edit: dat is net zoals je een elektrisch netwerk perfect kan uittekenen, maar als ze in het testmodel een condensator met 10mF ipv 1mF of zo pakken zal et ook mislopen he :). Dat willen de tegenstanders van SE hier zeggen, maar weerom: heeft niets te maken met het engineering aspect op zich.

QplQyer

Legacy Member
Unzip Attack zei:
Hasselt, bijna alle bovenstaande technieken zijn gebruikt in projecten. Z is een uitzondering, maar de bruikbaarheid van Z is dan ook ZEER miniem in de bedrijfswereld en zelfs academische wereld.
Nice, dan heeft Hasselt wel een degelijke opleiding blijkbaar.

de meeste technieken zijn zeer grondig gezien. grondig genoeg om te weten dat model-gebaseerd werken niet betekend dat je gegarandeerd 0.0 % bugs kan hebben. de ene universiteit bekijkt het vanuit een theoretisch standpunt, de andere vanuit een praktischer. wat mij vooral is bijgebleven is het feit dat modelgebaseerde oplossingen op papier zeer goed werken, maar in praktijk er andere factoren meespelen. Bijvoorbeeld librairies die PERFECT (met garantie 100%) in modellen werken, maar die bugs bevatten in real world. Of frameworks die performance problemen vertonen etc...
nogmaals het is een theoretische misvatting dat je een programma van de eerste keer zonder bugs kan krijgen, tenzij je binnen een ZEER nauw framework werkt dat ZEER goed gedefinieerd is op voorhand. (zoiets als NASA applicaties, die JA-REN development achter de rug hebben en JA-REN getest zijn)
0.0% was een overdrijving van mijn kant inderdaad. Libraries die "100%" perfect in modellen werken, maar die bugs bevatten in real world, daar is dan allicht iets misgelopen bij het implementeren. Of er liep iets mis bij een specificatie die men vergeten verifiëren is. Of bij de interactie met een andere component, het besturingssysteem en dergelijke meer. Er kan vanalles mislopen dat niet aan je eigen code ligt natuurlijk. Wat niet betekent dat we dan maar meteen alles moeten weggooien omdat het het probleem nog niet volledig oplost.

En het verifiëren is natuurlijk afhankelijk van wat men gebruikt als specificaties, als men een bepaald iets vergeet te verifiëren, kan het programma natuurlijk nog altijd een bug bevatten.

Testen blijft ook nodig, om het vertrouwen in het niet vergeten zijn van een specificatie te vergroten.

De opmerking over de performance is wel juist, correctheid en snelheid zitten elkaar soms wel eens in de weg en ook daar moet er nog werk gebeuren natuurlijk. Formele methoden zijn dan wel al toepasbaar, ze zijn daarom nog niet ideaal uitgewerkt voor elk gebied, wat ik al ergens gezegd heb.

dees slaat alles. hoe ga jij je programmeurs al laten beginnen, nog voor je een conceptuele analyse hebt gedaan ?
Natuurlijk beginnen de programmeurs nadat de theoretici hun werk hebben gedaan, het principe van een pipe-line kwam eerder in mij op toen ik dat neerschreef. De theoretici werken een nieuw project uit, terwijl de programmeurs de laatste loodjes van het ander project aan het bouwen zijn, zodat ze niet met hun vingers moeten zitten draaien terwijl het model wordt gemaakt. Ik had dat wat duidelijker moeten neerschrijven allicht.

wil dat daarom meteen zeggen dat je verplicht bent alles met formele modellen te beschrijven ? er zijn HEUS nog andere manieren om het aantal bugs en de kwaliteit van de code van je programmeurs te verbeteren hoor...
Methoden die eenzelfde garantie bieden? Dan ben ik toch benieuwd naar welke methoden dat zijn, buiten het gewone testen natuurlijk.

en wat als klanten en baas binnen de 2 maanden resultaat willen zien. ben je dan nog zo geneigd eerst je programmeurs formele modellen aan te leren, de nodige tools te leren, OM TE GAAN MET FOUTEN IN DIE FORMELE MODELLEN, etc etc Calculeer je dat ook in je keuze ?
Zo'n verandering heeft dan ook zijn ingang nodig vanuit het grote management en kan niet gebeuren vanuit een klein developergroepje.

nogmaals allemaal vanuit theoretisch standpunt evenzeer snel-snel gezegd (net zoals die programmeurs die snel-snel willen beginnen), maar praktijk is echt nog wel wat anders hoor.
Ik heb dan ook niet gezegd dat men het van de ene dag op de andere moet gaan gebruiken. Wel dat dit een evolutie is waar men naartoe zou moeten gaan. Dat daar nog veel werk en onderzoek voor nodig is, is mij wel duidelijk.

welke universtiteit heb je btw gevolgd? Leuven/Brussel ?
Gent.

QplQyer

Legacy Member
Tyfius zei:
Ik daag u uit, richt een bedrijf op, ontwikkel software volgens alle modellen en kijk na 5 jaar hoeveel u verdient hebt. Het uitdenken van alle mogelijkheden kost tijd en geld, en dat is iets wat de klant niet heeft. Het programma moet liever vandaag dan morgen af zijn.
Dat is het probleem met de industrie in het algemeen hé, snel-snel-snel. En een bedrijf dat het sneller en goedkoper belooft krijgt het contract (maar of de kwaliteit dan wel nog steeds zo goed is valt te betwijfelen natuurlijk). Trouwens, geld verdienen, daar gaat het mij niet om, de mogelijke kostenreductie was maar één argument van een heleboel.

Tyfius zei:
Ten tweede kan je als programmeur niet op alles anticiperen, zelfs niet met alle mogelijke modellen. Op een bepaald moment gaat een klant iets doen wat tot een fout resulteert in je programma, only a few billion things to check, go ahead!
kwitters zei:
:rofl:, niets maar dan ook niets is 100% guaranteed to be error-free! Geen space shuttles, geen vliegtuigen, geen processoren, geen software, niets! Men kan wel proberen de kans op falen zoveel mogelijk te verkleinen, maar 100% error free in real-life projecten, forget it.
Neen, dat is waar, en dat was wat kort door de bocht van mij om de honderd procent bugvrijheid te poneren. Een aanzienlijke reductie van het aantal bugs lijkt mij echter ook wel redelijk gewenst.


Tyfius zei:
Ik hoor u hier veel zeggen, en in theorie is het allemaal mooi, maar in praktijk is het voor de gemiddelde klant niet haalbaar. Het is te duur en het kost te veel, punt uit.
Dat wil niet zeggen dat het niet op termijn goedkoper kan worden (door het afstuderen van mensen met de benodigde kennis, etc, etc).

Tyfius zei:
Op 't ET forum was er een tijdje terug een discussie aan de gang over het maken van cheats. Basicly is dat een inbreuk tegen de EULA, en daar vertelde iemand het volgende:Volgens mij valt een disclaimer hier ook onder.
Ikzelf ken weinig van recht, dus ik ga maar af op wat anderen zeggen.
De wet van 30 juni '94 is de auteurswet. In de auteurswet staat enkel dat men een licentie kan verlenen onder voorwaarden (zolang die voorwaarden natuurlijk geen wettelijke rechten gaan verbieden, want dan is dat deel ongeldig). Echter is het heikele punt het feit dat je de EULA pas ziet nadat je het product (en dus de licentie erop eigenlijk) hebt gekocht. Ik ben ook geen jurist, dus ik kan het ook niet met de volledige garantie zeggen, maar ik vermoed dat een licentievoorwaarde na aanschaf in België ongeldig is.

QplQyer

Legacy Member
kwitters zei:
Hoe vaak nu nog, het gaat niet om wat jij verwacht, het gaat om wat de klant verwacht, iemand die totaal clueless is over technologie, wiskunde en formele methodes.
Het gaat wel degelijk om wat de programmeur denkt wat zijn code zal doen in de formele methoden. Voor je begint te programmeren heb je sowieso een idee nodig van wat je denkt dat er verwacht wordt, de programmeur schrijft het neer en verifieert of zijn code eraan voldoet. Het valideren van de verwachtingen van de klant is een totaal andere stap, waar geen wiskunde bij komt kijken, neen.

Als jij afgestudeerd bent mag je voor ons komen werken als programmeur :). Wel eerst even een papiertje tekenen dat je bugvrij programmeert, en een duidelijk gespecifieerde schadeclaim in het geval er toch bugs opduiken.
Als de werkgever het concept niet verwerkt in zijn methodologie en de werkgever het niet toestaat om tijd te spenderen aan het gebruiken van dergelijke methoden, kan men natuurlijk zoiets niet eisen van de werknemer. Bovendien rust het auteursrecht van computerprogramma's automatisch bij de werkgever, dus lijkt het mij normaal dat de werkgever de verantwoordelijkheid draagt voor fouten in zijn software.


Wat is het verschil? Dus firefox mag wel bugs bevatten maar IE of Opera niet?
Het verschil is dat het ene een gratis service is, op vrijwillige basis, zonder winstoogmerk, waar het andere voor commerciële doeleinden wordt gefabriceerd. Met winstoogmerk dus. Van een commerciëel pakket verwacht men toch wel dat men erop kan betrouwen dat de functies die het aanbiedt volledig beschikbaar zijn en niet tot data-loss en dergelijke meer gaan leiden.

Het is niet zozeer dat het geen bugs mag bevatten, het is wel dat bij een bug die schade veroorzaakt aan de koper van de software, men wel redelijkerwijze de software-maker verantwoordelijk kan stellen als deze, ondermeer door het vragen van geld voor de software impliciet, bepaalde functies foutloos claimt aan te bieden.

Men kan de maker van andere (niet-software) zaken ook verantwoordelijk stellen wanneer deze door nalatigheid fouten vertonen die tot schade hebben geleid en wanneer deze garandeert dat er geen fouten zitten in de functionaliteit die hij claimt aan te bieden.

Als de klant bugvrije software wil dan zal hij dit ook vragen (en voor moeten betalen). Alle klanten die ik ken willen zoveel mogelijk business value voor wat ze kunnen betalen. Dat er hier en daar een kleine bug inzit (zoals in alle software trouwens) is verwaarloosbaar in vergelijking met de extra waarde die ze aan de software hebben.
Extra betalen voor juistheid lijkt me de wereld op zijn kop. Misschien moet je hen dan ook maar laten betalen voor het laten maken van die fouten in de code die later opduiken? Maar goed, zoals ik reeds zei, het is doordat de gebruikers al gewend zijn geraakt aan het idee dat er in software fouten zitten, dat ze geen betere toestand durven hopen (met minder fouten dus) en dit zomaar slikken.

Cool! Kan je ons dan eens een link ofzo doorgeven waar de source code van een of ander project formeel bewezen wordt? Het hoeft niet groot te zijn, iets ter grootte van een bikini sudoku is al genoeg. (Liefst geen versimpeld academisch voorbeeldje met maar 100 lijnen code).
Ik zal enkele kritische applicaties geven anders:
http://en.wikipedia.org/wiki/Paris_Metro_Line_14 , applicatie van de B-methode
http://fmt.cs.utwente.nl/projects/ , Stormvloedkering Nieuwe Waterweg

En dan zijn er nog talrijke voorbeelden in de automobielsector, processorenfabrikanten (Intel), Microsoft (proberen een project met een nieuw, formeel gespecifieerd operating system), ...


Zoals ik zei dus, een waterfall model. Om het duidelijk te maken zal ik een voorbeeld nemen dat jullie maar al te graag doen: het bouwen van een huis. De architect/ingenieur tekent het plan en doet sterkte berekeningen. Er wordt een prototype aan de klant getoond door bijvoorbeeld tekeningen die het gebouw illustreren of eventueel een maquette. De klant keurt dit prototype goed, en men begint aan het construeren zelf (het implementeren). Wanneer het gebouw voldoet aan de originele plannen is de klant tevreden, want hij heeft tenslotte goedkeuring gegeven over het prototype. Bij bouwen klopt dit volledig, maar ik zal je eens vertellen wat er in het geval van software gebeurt. De klant zegt "hmmm... die kleur van die bakstenen ziet er in't zonlicht toch iets anders uit dan ik verwacht had, kunt ge die kleur niet effe snel aanpassen? En ik wou een keuken die groot genoeg is, en dat is wel, maar als we die muur nu eens iets opschuiven (shit, juist een steunmuur), dan heb ik wat meer plaats in de living. Kunt ge die muur tegen overmorgen verplaatsen? Want vrijdag heb ik effe tijd om te komen kijken, dan kan ik zien dat het af is." No kidding, zo gaat het er in de echte software wereld aan toe, en dan heb je met je formele methoden 2 keuzes: je zegt tegen de klant "sorry, jij hebt de maquette goedgekeurd, en zo hebben we het ook gebouwd, dus nu moet je niet komen zagen", of je zegt: "Oeioeioei, al die sterkte berekeningen moeten terug gedaan worden, alles moet terug worden goedgekeurd, om nog maar te zwijgen over de kosten van het afbreken en terug opbouwen van die muur". En dan zegt de klant: "Vreemd, software bedrijf X die niet met formele methoden werken zouden dat op een uurtje hebben gefixed. De deur van de keuken zou bij hun misschien wel wat klemmen, maar dan had ik toch wat ik echt wou."
De deur zou misschien op het eerste zicht klemmen, maar na enkele jaren zal dan misschien blijken dat de muur klemt doordat de funderingen scheef gegoten waren en het huis scheefzakt, waardoor er niets beters op zit dan het huis af te breken en opnieuw te bouwen.

Bovendien kan men altijd een laatste-stap validering inbouwen, dat is geen enkel probleem, dat houdt toch weer maar enkele aanpassingen in en niet een aanpassing voor alles.

killgore

Legacy Member
QplQyer zei:
De wet van 30 juni '94 is de auteurswet. In de auteurswet staat enkel dat men een licentie kan verlenen onder voorwaarden (zolang die voorwaarden natuurlijk geen wettelijke rechten gaan verbieden, want dan is dat deel ongeldig). Echter is het heikele punt het feit dat je de EULA pas ziet nadat je het product (en dus de licentie erop eigenlijk) hebt gekocht. Ik ben ook geen jurist, dus ik kan het ook niet met de volledige garantie zeggen, maar ik vermoed dat een licentievoorwaarde na aanschaf in België ongeldig is.

Bekijk uw gamedoosjes eens, daar staat normaal gezien altijd een kadertje op dat het product onderworpen is aan licentievoorwaarden die gebundeld zitten en je het product niet mag gebruiken zonder akkoord te gaan met die voorwaarden.
Die licentievoorwaarden kan je in principe ook apart raadplegen.

KeaTs

Legacy Member
Jullie kunnen nog een tijdje doorgaan hoor, maar jullie zitten volledig naast mekaar te discussieren. De ene helft zegt dat SE kan, omdat je een wiskundig toetsbaar model kan opstellen, coden, en testen, wat volgens mij klopt; en de andere helft zegt dat SE niet kan omdat de klant eisen stelt die zo vaak veranderen, dat het in een model gieten onbegonnen werk is, wat misschien vaak ook klopt, maar naast de kwestie of formele SE mogelijk is in de praktijk.

De discussie of SE kan met behulp van formele modellen zou precies moeten gaan over of zo'n model kan bestaan en of het achteraf perfect getoetst kan worden. Of je nu al dan niet ervaring hebt met lastige klanten doet er niet toe: als formele software mogelijk is dan kan je perfect met de klant een designspecificatie maken die formeel beschreven wordt, waarna alle verantwoordelijkheid voor fouten in dit design bij de klant ligt (die het immers kon verificeren), en alle verantwoordelijkheid voor fouten in de implementatie bij de SE's (vermits het formele design perfect zou kunnen worden getoetst aan de originele specificatie). Het al dan niet tevreden zijn van de klant met hoe dit of dat knopje eruit ziet of over de gebruiksvriendelijkheid etc etc, hoezeer dit in de praktijk ook het geval is en een groot deel van het werk opeist, is gewoon naast de SE kwestie.

Dat dat nu momenteel nog geen realiteit is, daar moet niemand van overtuigd worden; de discussie gaat erom of het mogelijk is & eventueel een toekomst voor software, of niet.

Persoonlijk zie ik in zo'n exacte modellen zeker een toekomst. Als je voor kleine klanten werkt, sure, dan is zoiets overkill, maar bij heel grote projecten kan dit een perfect middel zijn om een taak rigoureus te omschrijven en om achteraf onbetwistbaar te kunnen toetsen of de softwareontwikkelaar al dan niet het contract nageleefd heeft.

killgore

Legacy Member
KeaTs zei:
Jullie kunnen nog een tijdje doorgaan hoor, maar jullie zitten volledig naast mekaar te discussieren. De ene helft zegt dat SE kan, omdat je een wiskundig toetsbaar model kan opstellen, coden, en testen, wat volgens mij klopt; en de andere helft zegt dat SE niet kan omdat de klant eisen stelt die zo vaak veranderen, dat het in een model gieten onbegonnen werk is, wat misschien vaak ook klopt, maar naast de kwestie of formele SE mogelijk is in de praktijk.

De discussie of SE kan met behulp van formele modellen zou precies moeten gaan over of zo'n model kan bestaan en of het achteraf perfect getoetst kan worden. Of je nu al dan niet ervaring hebt met lastige klanten doet er niet toe: als formele software mogelijk is dan kan je perfect met de klant een designspecificatie maken die formeel beschreven wordt, waarna alle verantwoordelijkheid voor fouten in dit design bij de klant ligt (die het immers kon verificeren), en alle verantwoordelijkheid voor fouten in de implementatie bij de SE's (vermits het formele design perfect zou kunnen worden getoetst aan de originele specificatie). Het al dan niet tevreden zijn van de klant met hoe dit of dat knopje eruit ziet of over de gebruiksvriendelijkheid etc etc, hoezeer dit in de praktijk ook het geval is en een groot deel van het werk opeist, is gewoon naast de SE kwestie.

Dat dat nu momenteel nog geen realiteit is, daar moet niemand van overtuigd worden; de discussie gaat erom of het mogelijk is & eventueel een toekomst voor software, of niet.

Persoonlijk zie ik in zo'n exacte modellen zeker een toekomst. Als je voor kleine klanten werkt, sure, dan is zoiets overkill, maar bij heel grote projecten kan dit een perfect middel zijn om een taak rigoureus te omschrijven en om achteraf onbetwistbaar te kunnen toetsen of de softwareontwikkelaar al dan niet het contract nageleefd heeft.

wiii, nog iemand die het ziet :D.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan