Så fik jeg endelig afsluttet det sidste kursus for at leve op til de faglige mindstekrav i informatik. Kurset hedder “Software Engineering” på SDU og indbefatter to dele: Planlægning af projekter og system-arkitektur. Carsten Lützen stod som underviser.
Underviseren havde planlagt kursus-forløbet som en projekt-udvikling efter formen:
Kursets indhold om planlægning af et projekt (gule ovenfor) omfatter den traditionelle sekventielle vandfaldsmodel over iterative modeller som kan kaldes Agile til at berøre extreme programming (XP). Arbejdet inden for Agile rammer blev mest præsenteret via retningslinjerne i scrum.
Scrum er en ramme for team-organisering (5-10 personer) med henblik på trinvis forbedring for jævnligt at give brugerne værdifuldt software mellem hænderne. Der er forskellige roller, artefakter og ceremonier i scrum, og en arbejdsperiode på 2-3 uger kaldes et sprint.
System-arkitektur (grønne ovenfor) delen handlede om hvordan den overordnede struktur i IT-systemer kan designes og kommunikeres. Et system kan bestå af én kode (monolit) eller af mange små selvstændige moduler (micro-services). Hvert modul kan være opbygget af typisk op til tre lag, som fungerer i en klient-server arkitektur.
Kvalitet af kode og test af programmer blev også introduceret. Kode rådner dvs. kvaliteten falder med tiden, når den refaktoriseres (omskrives) og udvides. Høj kvalitet af kode kan sikre færre fejl, at koden kan genbruges og at den kan læses og forstås (og derfor forbedres eller udvides) senere. Metoderne er bl.a. lav cyclomatisk complexitet (antal veje gennem koden) og unit tests, og inden for objekt-orienteret programmering er principper som dekobling, encapsulation (don’t show your privates), single-responsibility afgørende for høj kvalitet af kode.
Eksamensspørgsmålene omfattede:
Et godt kursus, som giver en god baggrundsviden for design af IT-systemer. På trods af, at kurset indeholdt en projektaflevering over et IT-system, kunne det have været sjovt at prøve nogle af programmerings-principperne af fx. nogle design patterns eller implementering af et system i trelags-arkitektur.