Kursplan för Software engineering principles for complex systems

Kursplan fastställd 2021-02-17 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 52117
  • 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.  Utöver det, ingår individueller skriftliga inlämningsuppgifter.

      Litteratur

      Information om kurslitteratur hittas på kursens hemsida.

      Examination inklusive obligatoriska moment

      Examinationen består av två delar: en individuell skriftlig rapport uppgift (1,5 hp) och ett grupprojekt (6 hp). Projektet betygssätts individuellt, där hänsyn tagits till gruppens resultat samt studentens individuella bidrag till gruppens arbete.

      Kursens examinator får examinera enstaka studenter på annat sätt än vad som anges ovan om särskilda skäl föreligger, till exempel om en student har ett beslut från Chalmers om pedagogiskt stöd på grund av funktionsnedsättning.