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.

QplQyer

Legacy Member
killgore zei:
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.
Dat kan wel, maar toch, je ziet de licentie zelf niet voor je het koopt, je ziet enkel dat er een licentie is. En als je de licentie wilt bekijken moet je al online gaan. Mja, ik ben ook geen jurist, dus ik weet ook niet zeker hoe het zit. Ze zijn alleszins niet zaligmakend (als ze zaken verbieden die door de wet expliciet worden toegestaan en dergelijke).
En om terug te keren naar waar dit nevendiscussietje vandaan kwam, in het geval van aansprakelijkheid bij software kan dat dus niet noodzakelijk door een EULA weggewaaid worden als de wet zegt dat de auteur wel degelijk de verantwoordelijkheid draagt.

@KeaTs: Dank je. Je zegt exact waar het hier voortdurend de mist ingaat en wat ik ook bedoel.

wlibaers

Legacy Member
KeaTs zei:
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.

Ik zou het onderscheid eerder maken afhankelijk van het toepassingsgebied, meer bepaald i.v.m. veiligheid en de mogelijke schade. Een kleine firma die werkt aan medische apparatuur heeft waarschijnlijk meer belang bij strikte modellen dan een gigantische multinational die alleen maar entertainmentsoftware produceert.

killgore

Legacy Member
QplQyer zei:
Dat kan wel, maar toch, je ziet de licentie zelf niet voor je het koopt, je ziet enkel dat er een licentie is. En als je de licentie wilt bekijken moet je al online gaan. Mja, ik ben ook geen jurist, dus ik weet ook niet zeker hoe het zit. Ze zijn alleszins niet zaligmakend (als ze zaken verbieden die door de wet expliciet worden toegestaan en dergelijke).
En om terug te keren naar waar dit nevendiscussietje vandaan kwam, in het geval van aansprakelijkheid bij software kan dat dus niet noodzakelijk door een EULA weggewaaid worden als de wet zegt dat de auteur wel degelijk de verantwoordelijkheid draagt.

Uhu, dat wel, disclaimers, reglementen, eula's, ... staan niet boven de wet. Moet ook rekening houden dat die internationaal zijn opgesteld, zo mag je niet kopiëren, maar in België is een kopie van een product waar je een licentie op hebt (dus het origineel gekocht) nog steeds legaal. Daarom dat ik mij ook al eens heb afgevraagd in hoeverre kopieerbeveiligingen in België legaal zijn :p.

Moto

Legacy Member
SE is enkel maar goed voor bepaalde zaken,

UML, en andere documentjes zijn plezant voor de theoretici maar uiteindelijk hebt ge nog altijd geen werkende software.
Wat nu net wel juist het belangrijkste is bij software-developement ;)
Nuja doe al een aantal jaar consultant-werk, maatwerk schrijven voor verschillende sectoren (medische, chemische, ...)

Daar heeft programmeren bitter weinig met engineering te maken, daar weet ge normaal op voorhand wat de klant wilt, dit is dus totaal niet de realiteit, de klant is in de meeste gevallen iemand die bij het begin van het project nog niet eens weet wat hem wilt :doh:
En hoe meer documenten en UML-kes ge voor zen neus legt hoe minder hij zal lezen :p

Voor normale software voor klanten is enkel agile development de manier om ergens te geraken.
Uitgebreide technische analysrkes en UML maken van alles is gewoon een waste of time.
gewoon zorgen dat ge een stel deftige programmeurs hebt en alles komt wel in orde :p

Echte kritische software is een ander verhaal maar ja, in de realiteit komt ge dat niet zoveel tegen

KeaTs

Legacy Member
Ik vind dat verontrustend veel mensen blijkbaar agile programming zien als het tegengestelde van SE; die zijn perfect complementair hoor [ Wikipedia definitie van agile programming: 'Agile software development is a conceptual framework for undertaking software engineering projects.' ]. AP gaat over methodologiëen, over hoe programmeerteams te organiseren, niet over hoe die teams hun werk zelf doen. Wijzelf gebruiken scrum, maar gebruiken tegelijk TDD, continuous integration en doen heel wat design (je hoeft daarom geen overladen UML- of andere schema's te maken hoor).

Belgianbonzai

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.
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.
dat geldt anders voor een ingenieur ook ze ;)

om terug de brug te nemen: typisch vb: Tacoma bridge precies die windsnelheid/hoek nodig om ze ineen te doen storten, maar het is toch maar gebeurd

of een brug in Amsterdam die als er een kleine waterlaag oplag hetzelfde kon voorhebben, zonder regen, pak sneeuw erop,... eender welk geval was ze wel stevig, maar met die halve mm water over het grootste deel van de brug wel ook plots mogelijkheid om op resonantie te komen. Dat kan je even slecht voorspellen als een foutje in je code.

QplQyer

Legacy Member
Moto zei:
UML, en andere documentjes zijn plezant voor de theoretici maar uiteindelijk hebt ge nog altijd geen werkende software.

Wat nu net wel juist het belangrijkste is bij software-developement ;)
Een degelijke voorbereiding is half het werk. Dat geldt voor zowat alles. Met een aanvalsplan heeft een leger ook nog geen aanval gedaan, moet men daarom dan maar het aanvalsplan weglaten en losjes op de vijand in lopen?
Terwijl het bij een leger ook wel het belangrijkste is dat de vijand in de pan wordt gehakt.

Daar heeft programmeren bitter weinig met engineering te maken, daar weet ge normaal op voorhand wat de klant wilt, dit is dus totaal niet de realiteit, de klant is in de meeste gevallen iemand die bij het begin van het project nog niet eens weet wat hem wilt :doh:
En hoe meer documenten en UML-kes ge voor zen neus legt hoe minder hij zal lezen :p
Modellen dienen dan ook niet om voor de klant zijn neus te leggen. Daar zit de fout die hier voortdurend gemaakt wordt, formele methoden zijn er voor het ontwikkelteam, de klant moet daar niks van zien (tenzij hij er eventueel kennis van zou hebben). En hiervoor is al uitvoerig bediscussieerd dat engineering niets te maken heeft met op voorhand alles weten.

Voor normale software voor klanten is enkel agile development de manier om ergens te geraken.
Nogal een sterke uitspraak, zonder al teveel argumentatie.

Echte kritische software is een ander verhaal maar ja, in de realiteit komt ge dat niet zoveel tegen
Alle software waar men geld door zou kunnen verliezen door het falen ervan kan men ook als kritische software beschouwen. Zo bestaat er veel software, denk maar aan loonbeheerpakketten, boekhoudkundige pakketten, ... . Alle software die zou kunnen leiden tot fysieke ongevallen met mensen kan men als kritische software beschouwen. Beschouw het voorbeeld van een patiëntenbeheer-pakket. Men zou niet willen dat door een fout in de software een patiënt wiens appendix moet weggehaald worden plots aangeduid staat als een patiënt wiens been moet afgezet worden.

Er bestaan bijgevolg enorm veel voorbeelden in de realiteit van kritische software.

zarathustra

Legacy Member
killgore zei:
edit: en nogmaals: jij vergelijkt appelen met peren imho. Het programmeren zelf en SE zijn voor een zeer groot deel verschillende zaken. Jij verstaat/beschrijft software engineering alsof het mogelijk is computers te ontwerpen die zelf programma's kunnen schrijven. Dit is niet wat SE inhoudt

Gewoon terzijde, het is best wel mogelijk om om dmv genetic programming computers zelf programma's te laten ontwerpen >_>
Nuja het is mogelijk voor elektronische schakelingen, dus ik zie niet in waarom het niet zou werken voor software

Arcadion

Legacy Member
Unzip Attack zei:
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.

Effe off-topic: Seg Unzip-Attack, ben jij niet diezelfde persoon die op een ander forum eens beweerde dat databanken onder de noemer `hardware' valt ??? :lol: Eveneens dat ingenieur computerwetenschappen 95% gaat over hardware ?? :lol:

Terug on-topic: ik ben oprecht akkoord met wat de opstarter van deze thread bedoelt ... het is alleen spijtig dat sommige anderen hem verkeerd interpreteren ;)

Arcadion

Legacy Member
QplQyer zei:

Ah hier van 't zelfde: ook 4e jaar computerwetenschappen met specialisatie software-engineering ?

Ik werk trouwens ook voltijds, dus voor ik word afgeschoten: spijtig genoeg weet ik wel degelijk hoe het er in grote softwareprojecten aan toegaat (50 simultane ontwikkelaars en heel ingewikkelde/uitgebreide maar slecht uitgewerkte specificaties) en hoe verschrikkelijk het is goede software te bekomen puur door coden en testen :( :( Software-engineering is hier bijna afwezig ... (het soort software-engineering dat nodig zou zijn en dat binnen enkele decennia hopelijk bestaat)

QplQyer

Legacy Member
Arcadion zei:
Ah hier van 't zelfde: ook 4e jaar computerwetenschappen met specialisatie software-engineering ?
Nee, lic. informatica, met als optie formele informatica.
Voltijds werken en studeren? Damn.

Arcadion

Legacy Member
QplQyer zei:
Nee, lic. informatica, met als optie formele informatica.
Voltijds werken en studeren? Damn.

Ah, formele informatica ... maar precies toch ook wel geinteresseerd in software-engineering, hoewel er tussen beiden wel een sterk verband bestaat natuurlijk :)

Trouwens, ik studeer maar aan 40%, dus doe ik er ook 2,5x zo lang over :)

Nog een paar dingen on-topic die me te binnen schieten:

Een mooi voorbeeld van het succes van formalisering van specificaties en de daaropvolgende automatische generatie van code is het inbedden van kennis omtrent formele talen theorie in compiler generator tools zoals lex en yacc. Je geeft gewoon een (formele) specificatie op van je te realiseren lexicale en syntactische analyser in geval je bv. een interpreter of compiler maakt en die tools genereren dan eenvoudigweg de nodige C-code :) Als je dan een kleine verandering aanbrengt aan je specificatie, bv. uitbreiding van de grammatica, wordt in het buildproces gewoon je ding opnieuw gegenereerd :)

Daarnaast slaat `engineering' niet enkel op formalisering: zoals hier reeds gezegd zijn algemene methodologieen, ontwerpbeslissingen, etc. die reeds hebben bewezen goed te zijn ook een onderdeel van software-engineering. Bv. principes als de verhouding tussen coupling/cohesion zo laag mogelijk te houden, bv. zoveel mogelijk componenten van je systeem declaratief maken (in praktijk waarschijnlijk imperatief qua implementatie, maar met een declaratieve interface), bv. je organisatie en projecten organiseren volgens de geest van CMMI, bv. doen aan configuratiemanagement, bv. correcte keuze van een bepaalde software-architectuur voor een bepaald soort van systeem teneinde aan bepaalde niet-functionele vereisten te kunnen voldoen (denk maar aan performantie, security, ...), etc.

Dat neemt niet weg dat het ook wel nuttig kan zijn dat als je een klein maar heel ingewikkeld stukje concurrente software hebt, je de correctheid ervan bewijst a.h.v. correctsheidsbewijzen. Uiteraard zou dit met behulp van gespecialiseerde tools moeten kunnen (geen idee of die er al zijn en of die bruikbaar zijn), net zoals elektrotechnici ook gebruik maken van allerlei tools om aan VLSI-ontwerp te doen: daar gebruikt men ook allerlei technieken voor uit de elektrotechniek, maar die zijn eveneens geautomatiseerd in softwareprogramma's.

Engineering is vooral ook (technisch) management, maar zogenaamde `good practices' worden maar stilletjesaan bekend en daar doet men dan ook empyrisch onderzoek naar.

Daarnaast wil ik er ook op wijzen dat het bij formele specificaties meestal niet de bedoeling is aan bewijsvoering te doen of om zelfs maar die specificaties te hebben, maar gewoonweg dat het proces van het opstellen van dit soort specificaties sneller bepaalde specificaties blootlegt en er sneller toe leidt dat iemand die daar wat ervaring mee heeft, doorheeft dat er eventueel contradicties of dubbelzinnigheden inzitten. Het is zeker niet de bedoeling massa's diagrammen te genereren die niemand snapt en sowieso horen formele specificaties ALTIJD gekoppeld te worden aan iets informeel: dat is altijd zo wanneer je iets formaliseert, dat is ook zo met wiskunde ...

Ik geloof dus in software-engineering en men maakt grote vorderingen. Deze ingenieursdiscipline is echter tot nog toe bezig enige vorm van maturiteit te ontwikkelen en dat zal nog wel een poosje zo blijven ... alleszins is het een goede zaak dat men overal op universiteiten ter wereld naast informatica-opleidingen ook aparte opleidingen in software-engineering begint te voorzien.

Ook de ontwikeling van nieuwe programmeertalen is software-engineering, als in deze nieuwe programmeertalen zorgvuldig bepaalde `good practices' uit software-engineering worden opgelegd of op zijn minst gemakkelijker mogelijk worden gemaakt ... En eigenlijk past volgens mij het hele verhaal van de ontwikkeling van hogere programmeertalen en compilertechnologie ook in de geest van software-engineering.

Alleszins is het zoals je ziet iets heel anders dan programmeren, maar programmeren (als creatieve activiteit) is en blijft nodig: programmeren is een stiel en zonder wordt er geen software gemaakt, maar zonder software-engineering (dat trouwens ook een creatieve activiteit is) blijft goede software maken louter een kunst en kan het geen kunde worden!!

Tw33tst3r

Legacy Member
kheb hele thread nie gelezen want tzijn te lange posts :p
kheb geen opleiding gehad op school dus dont shoot me als ik verkeerde termen gebruik :p

kheb 2 jr als programmeur gewerkt en kmoet zeggen als er geen "ontwikkel"model was dan had ik dr nooit een letter werkende code klaar gekregen

stel u gwn een systeem vr dat al 10 jaar bestaat en waar elke dag gemiddeld 6 man stukken aan veranderen, toevoegen en verwijderen...

zonder model zou niemand nog weten waar dat wat vr dient imo en zonder dat model had ik mij nooit kunnen inwerken (tgaat hier wel over gestructureerd programmeren en niet oo mr dat maakt imo niks uit qua principe van een model te hebben of niet)

en het creatieve gedeelte blijft: kheb dr routines zitten aanpassen en optimaliseren die al bijna 6 jr draaiden, ze waren na mijn aanpassingen nog steeds conform het model, mr ze waren wel tot 3x sneller klaar met verwerking :)


trouwens een enigszins off topic vraagske: ik vermoed dat het perfect mogelijk is om 2 clients met een totaal verschillende UI te laten samenwerken met een server(side programma)?
is mss een rare/domme vraag mr kzit al veel te lang met een concept in gedachten dat totaal afhankelijk is van die vraag :p
(kheb cobol gedaan op as400 dus van programmeerlogica enzo weet ik wel wat, mr van echt client/server toepassingen van 0 af maken niet)

EagleEye

Legacy Member
ja toch :D MSN messenger heeft toch tientallen mogelijke programma's die op dezzelfde server werken

en nog talloze voorbeelden

Tw33tst3r

Legacy Member
offtopic:
EagleEye zei:
ja toch :D MSN messenger heeft toch tientallen mogelijke programma's die op dezzelfde server werken

en nog talloze voorbeelden

stupid me :(
kgebruik zelf kopete vr op msn te gaan en messenger onder winblows ...
(twas gwn in een heel andere context dak mijn vraag bedoelde, mr t principe ist zelfde)
achja mss beter es eerst zelf nadenken ipv op een forum iets te vragen lol :)
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