Systemdesig fortsättigskurs
Orgaisatio Föreläsare Potus Boström Assistet? Tider mådagar och tisdagar kl. 8-10 Börjar 3.9 och slutar 16.10 Rum B3040
Orgaisatio Iga föreläsigar 24.9, 25.9, 1.10 och 2.10 Måste hitta adra passade tider Förhadskuskaper Systemdesig, grudkurs Programmerig 2-3 övigsuppgifter E av dem lite större
Litteratur Agile software developmet : priciples, patters, ad practices, 2003 [Marti] R. Marti Artiklar Läkar på kurssida Desig Patters: Elemets of Reusable Object-Orieted Software, 1995 [GoF] E. Gamma, R. Helm, R. Johso och J. Vlissides Object orieted software costructio, 2d editio, 1997 [Meyer] B. Meyer
Iehåll Objekt orieterad desig av mjukvara Bra desig priciper Återavädbarhet Egeskaper hos objektorieterade språk Nedärvig (iheritace) Geerisk programmerig Stadard bibliotek Kotrakt baserad desig För- och eftervillkor Objekt ivariater
Iehåll Desig priciper Mjukvarukompoeter som ka återavädas Kompoeter som ka utvidgas Desig möster Avädbara desig möster för olika problem
Utvecklig av mjukvara Producera det öskade mjukvarusystemet på utsatt tid och iom budgetramar Problem Komplexitet Itegrerig med gamla (ikompatibla) system Ädrade kravspecfikatioer Hjälpmedel Återavädig av existerade mjukvara Avädig av existerade kompoeter Desig möster
Utvecklig (forts.) Uderhåll av program e av de mest utmaade aktivitetera Mjukvara blir ite dålig med tide, me ma behöver... Fixa fel i de ursprugliga mjukvara Apassa mjukvara till ya avädarkrav Största dele av tide och pegara uder ett systems livstid går åt till detta Programmet bör vara desigat med take på detta Utvidgigsbart Ekelt att sätta till ya fuktioer Återavädig Ekelt att återaväda kod Kompatibilitet Det bör vara ekelt att olika moduler ka kombieras med varadra Kotiuitet Lite ädrig i specifikatioe leder till lite ädrig av programkode
Varför objektorieterad programmerig? För att hatera komplexitete för program måste ma ha e systematisk metod för att dela upp programmet i midre delar (moduler) Att dela upp systemet i objekt är ite de eda möjlighete
Uppdelig baserad på fuktio (Eg. Fuctioal decompositio) Traditioell metod före objektorieterade metoder Top-dow utvecklig. Idetifiera e huvud fuktio som se är delad upp i midre delar Stegvis programpreciserig
Uppdelig baserad på fuktio (forts.) Exempel C kompilator: Specifikatio Översätt C-kod till maskikod Uppdelig 1. Läs program och producera e sekves av tokes 2. Omvadla sekvese av tokes till ett abstrakt sytax träd 3. Sätt i sematisk iformatio i trädet (t. ex. Typifo för variabler) 4. Geerera kod frå det här trädet De här metode har flera fördelar Logisk och ekel Bra för att utveckla algoritmer och midre system
Nackdelar Oftast har ett program måga fuktioer Svårt att idetifiera vad olika fuktioer har gemesamt Ofta är det huvudfuktioe som avädare vill ädra Lite ädrig av specifikatioe leder till stora ädrigar i programmet Arkitekture följer frå utvecklaras ursprugliga uppfattig av systemets fuktio också om systemets verkliga huvudfuktio har ädrats med tide
Objektorieterad utvecklig Utvidgig av systemet Objekt bättre lämpade ä fuktioer Baserad på empiriska studier, ite på ågot formellt bevis Återavädig Objekt typer erbjuder mera stabil bas för återavädig Döljig av iformatio Stabilt grässitt Kompatibilitet Objekt ka be ekelt kombierade med varadra Väldefiierade grässitt
Objekt orieterad programutvecklig Object-orieted software costructio is the software developmet method which bases the architecture of ay software system o modules deduced from types of objects it maipulates (rather tha fuctio or fuctios that the system is iteded to esure) B. Meyer Object orieted software costructio, 1997 OBJECT MOTTO: Ask ot first what the system does: ask what it does it to! B. Meyer Object orieted software costructio, 1997
Hur hitta objekt Motsvarar direkt ågot fysiskt objekt iom applikatios området som mjukvara ämad för Relatioer mella objekt följer ofta också frå domäe Klasser som reda utvecklats av ågo aa Det är oödigt att skapa ågot ytt om problemet reda lösts tillräckligt bra tidigare Erfarehet och imitatio. Aväd passade prövade desig möster Också om ite direkt tillämpbara så ka de ge ispiratio
Utvecklig Hur bli e bra utvecklare Måste kua bakgrude Programmerigsspråk, algoritmer, data strukturer... Måste också veta priciper Programmerigs paradigmer, teamwork, Ikapslig, Döljig av iformatio, cohesio, couplig, kotrakt baserad utvecklig Måste också lära sej av dom bästa Desig möster fis tillgägliga för måga olika problem Ger e bra lösig om de tillämpas korrekt Övig ger färdighet