Kursplan för Software engineering principles for complex systems

Kursplanen innehåller ändringar
Se ändringar

Kursplan fastställd 2020-02-20 av programansvarig (eller motsvarande).

Kursöversikt

  • Engelskt namnSoftware engineering principles for complex systems
  • KurskodTDA594
  • Omfattning7,5 Högskolepoäng
  • ÄgareTKITE
  • UtbildningsnivåGrundnivå
  • HuvudområdeDatateknik, Informationsteknik
  • InstitutionDATA- OCH INFORMATIONSTEKNIK
  • BetygsskalaTH - Mycket väl godkänd (5), Väl godkänd (4), Godkänd (3), Underkänd

Kurstillfälle 1

  • Undervisningsspråk Engelska
  • Anmälningskod 52113
  • Blockschema
  • Sökbar för utbytesstudenterNej
  • Endast studenter med kurstillfället i programplan.

Poängfördelning

0119 Projekt 6 hp
Betygsskala: TH
6 hp
0219 Inlämningsuppgift 1,5 hp
Betygsskala: TH
1,5 hp

I program

Examinator

Gå till kurshemsidan (Öppnas i ny flik)

Behörighet

Grundläggande behörighet för grundnivå
Sökande med en programregistrering på ett program där kursen ingår i programplanen undantas från ovan krav.

Särskild behörighet

Samma behörighet som det kursägande programmet.
Sökande med en programregistrering på ett program där kursen ingår i programplanen undantas från ovan krav.

Kursspecifika förkunskaper

The student must know Java programming and must have taken courses on data structures and algorithms (e.g., TDA416) as well as on object-oriented programming (e.g., TDA552, TDA367). Courses on user-interface development (e.g., DAT216, TDA289), and on testing (e.g., TDA567) are recommended.

Syfte

Real-world software systems are becoming increasingly complex and pervasive. Consider application domains such as enterprise computing (e.g., data-processing/AI systems), business information systems (e.g., web portals), cyber-physical systems (e.g., automotive software), systems software (e.g., operating system kernels), or mobile software and software ecosystems (e.g., Android apps). All these domains boast software systems of unprecedented complexity, many of which are long-living and exist in many different variants. As such, these software systems require dedicated planning, modeling, design, realization, and advanced analysis techniques presented in this course.

Lärandemål (efter fullgjord kurs ska studenten kunna)

Identifiera och resonera kring återkommande problem inom konstruktion och hantering av komplexa system, och applicera lämpliga lösningar. Lärandet drivs av ett konkret exempel genom ett projekt för programvaru-konstruktion eller -omformande, vilket utvecklas i grupp.

1. Kunskap och förståelse:
  • Redogöra för utmaningarna med att konstruera och hantera komplexa mjukvarusystem
  • Redogöra för hur komplexa mjukvarusystem praktiskt hanteras och konstrueras inom industrin
  • Redogöra för koncept för att konstruera och hantera mjukvarusystem med många varianter (e.g. software product lines, ekosystem för programvara)
  • Redogöra för affärs-, arkitektur-, process-, och organisations-orienterade aspekter av att konstruera och hantera komplexa mjukvarusystem
2. Färdighet och förmåga:
  • Modellera ett mjukvarusystem utifrån olika perspektiv (e.g. använda funktionsmodeller, UML-diagram eller beskrivningsspråk för arkitektur)
  • Konstruera ett variant-rikt mjukvarusystem (e.g. variant-rika mjukvarusystem, software product line, ekosystem för programvara)
  • Analysera ett komplext mjukvarusystem (e.g. samhörighet, variabilitetsanalys, modell/kod-analys)
  • Redogöra för modulariseringstekniker
  • Använda moderna komponent- eller service-ramverk
3. Värderingsförmåga och förhållningssätt:
  • Analysera existerande mjukvarusystem och diskutera möjligt förbättring eller re-engineering
  • Redogöra för typiska egenskaper hos olika koncept för modularitet inom programvara
  • Avgöra i vilka situationer vilka principer för hantering av komplexa mjukvarusystem är lämpliga
  • Läsa och analysera vetenskaplig litteratur

Innehåll

Programmeringsexpertis är endast en av många färdigheter som krävs för att konstruera och hantera komplexa programvarusystem. I denna kurs analyserar vi vilka Software Engineering-principer som stödjer konstruktion och hantering av komplexa programvarusystem. Vi diskuterar dessa principer under föreläsningarna och applicerar dem i projektarbetet.

Organisation

Kursen består av föreläsningar varje vecka, vilka täcker kursens teoretiska innehåll. Därutöver görs ett projektarbete i grupper och, som en del i detta, har grupperna obligatoriska handledningsmöten varje vecka. Studenterna introduceras även för koncepten grupparbete och gruppdynamik via en skräddarsydd lektion. Varje enskild student har ansvar för en specifik del av det övergripande projektet.

Utöver projektet och den skriftliga inlämningen görs en slutpresentation av projektarbetet vid kursens slut.

Litteratur

Information om kurslitteratur hittas på kursens hemsida.

Examination inklusive obligatoriska moment

Examinationen består av två delar: en individuell skriftlig rapport och muntlig uppgift (1,5 hp) och ett grupprojekt (6 hp). De två delmomenten betygsätts individuellt, båda enligt skalan: 3, 4, 5, samt Underkänt (U). Slutbetyg på kursen beräknas som följer:
  • Betyg 3: minst betyg 3 på projektet och minst betyg 3 på den skriftliga inlämningen
  • Betyg 4: minst betyg 4 på projektet och minst betyg 4 på den skriftliga inlämningen
  • Betyg 5: betyg 5 på både projektet och den skriftliga inlämningen
  • Betyg U: i övriga fall

Kursplanen innehåller ändringar

  • Ändring gjord på kurstillfälle:
    • 2020-06-09: Examinator Examinator ändrat från Thorsten Berger (bergert) till Gregory Gay (ggay) av Viceprefekt
      [Kurstillfälle 1]