Tema 1 – Grunderna i objektorienterad analys och design

Tema 1 behandlar abstraktion, modularitet, inkapsling, informationsdöljning och hierarkier.

Kursmål: A1 och A3 i kursplanen.

Syfte

Temat introducerar grundläggande principer för mjukvarudesign med fokus på hur komplexitet kan hanteras genom abstraktion, modularitet, inkapsling och hierarkier. Principerna hjälper oss att förstå hur objektorienterade metoder kan användas för att strukturera och förenkla mjukvarusystem.

Föreläsningarna introducerar även objektorienterad analys och design samt hur modeller kan stödja dessa aktiviteter.

Temat har framför allt koppling till kursmål A1, genom att ge dig förståelse för centrala objektorienterade begrepp och hur de används. Det berör även kursmål A3 genom introduktionen till iterativa och inkrementella utvecklingsprocesser samt modelleringens roll för kommunikation och förståelse av ett system.

Innehåll

  • komplexitet i mjukvarusystem,
  • strategier för att hantera komplexitet,
  • abstraktion,
  • modularitet och dekomposition,
  • inkapsling och informationsdöljning,
  • hierarkier och specialisering,
  • objektorienterat tänkande med objekt, klasser och ansvar,
  • objektorienterad analys och design,
  • systemmodellering och UML:s roll,
  • introduktion till domänmodellering.

Läsanvisningar

  • Craig Larman, Applying UML and Patterns, kapitel 1–2.
  • Ben Moseley och Peter Marks, Out of the Tar Pit. Läs texten med fokus på komplexitet och abstraktion.
  • Barbara Liskov, Data Abstraction and Hierarchy. Läs texten med fokus på arv och polymorfism.

Du kan behöva vara inloggad i Moodle för att öppna artiklarna.

Studiefrågor

  1. Vad gör mjukvarusystem komplexa? Ta hänsyn till både tekniska och organisatoriska aspekter.
  2. Vad innebär abstraktion? Ge exempel på dataabstraktion, funktionsabstraktion och klassabstraktion.
  3. Hur hjälper modularitet och inkapsling oss att hantera komplexitet?
  4. Vad är skillnaden mellan inkapsling och informationsdöljning?
  5. Vad innebär en hierarki inom mjukvarudesign, och hur relaterar den till abstraktion?
  6. Beskriv hur ett Student-objekt i ett kurssystem kan abstraheras med hjälp av hierarki, modularitet och inkapsling.
  7. Vad är syftet med objektorienterad analys, och hur skiljer den sig från objektorienterad design?
  8. Hur stödjer modellering objektorienterad analys och design?
  9. Vad innebär iterativ och inkrementell utveckling i praktiken?
  10. Hur hjälper modeller oss att förstå och kommunicera systemkrav?

Frågor om temat ställs i Zulip för Kalmar campus och distans.