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!!