logo

Objektorientert analyse og design (OOAD)

Objektorientert analyse og design (OOAD) er en programvareingeniørmetodikk som bruker objektorienterte prinsipper for å modellere og designe komplekse systemer. Det innebærer å analysere problemdomenet, representere det ved hjelp av objekter og deres interaksjoner, og deretter utforme en modulær og skalerbar løsning. Det bidrar til å skape systemer som er enklere å forstå, vedlikeholde og utvide ved å organisere funksjonalitet i gjenbrukbare og sammenkoblede komponenter.



Viktige emner for objektorientert analyse og design

Viktige aspekter ved OOAD

Her er noen viktige aspekter ved OOAD:

  • Objektorientert programmering: Objektorientert programmering innebærer å modellere virkelige objekter som programvareobjekter, med egenskaper og metoder som representerer oppførselen til disse objektene. OOAD bruker denne tilnærmingen til å designe og implementere programvaresystemer.
  • Designmønstre: Designmønstre er gjenbrukbare løsninger på vanlige problemer innen programvaredesign. OOAD bruker designmønstre for å hjelpe utviklere med å lage mer vedlikeholdbare og effektive programvaresystemer.
  • UML-diagrammer: Unified Modeling Language (UML) er en standardisert notasjon for å lage diagrammer som representerer ulike aspekter av et programvaresystem. OOAD bruker UML-diagrammer for å representere de forskjellige komponentene og interaksjonene til et programvaresystem.
  • Brukstilfeller: Brukstilfeller er en måte å beskrive de ulike måtene brukere samhandler med et programvaresystem på. OOAD bruker brukstilfeller for å hjelpe utviklere med å forstå kravene til et system og til å designe programvaresystemer som oppfyller disse kravene.

Objektorientert analyse

Objektorientert analyse (OOA) er den første tekniske aktiviteten som utføres som en del av objektorientert programvareutvikling. OOA introduserer nye konsepter for å undersøke et problem. Den er basert på et sett med grunnleggende prinsipper, som er som følger:



  • Informasjonsdomenet er modellert:
    • La oss si at du bygger et spill. OOA hjelper deg med å finne ut alt du trenger å vite om spillverdenen – karakterene, funksjonene deres og hvordan de samhandler. Det er som å lage et kart over alt viktig.
  • Atferd er representert:
    • OOA hjelper deg også å forstå hva spillkarakterene dine vil gjøre. Hvis en karakter hopper når du trykker på en knapp, hjelper OOA med å beskrive handlingen. Det er som å skrive ned et manus for hver karakter.
  • Funksjonen er beskrevet:
    • Hvert program har spesifikke oppgaver eller jobber det må gjøre. OOA hjelper deg med å liste opp og beskrive disse jobbene. I spillet vårt kan det være oppgaver som å flytte karakterer eller å holde poeng. Det er som å lage en oppgaveliste for programvaren din.
  • Data, funksjonelle og atferdsmodeller er delt inn for å avdekke større detaljer:
    • OOA er smart når det gjelder å dele opp ting i forskjellige deler. Den deler jobben inn i tre kategorier: ting spillet ditt vet (som poeng), ting spillet ditt gjør (som hopping), og hvordan ting i spillet ditt oppfører seg (som karakterer som beveger seg rundt). Dette gjør det lettere å forstå.
  • Starte enkelt, bli detaljert:
    • OOA vet at du først vil bare forstå det store bildet. Så det starter med en enkel versjon av spillet eller programmet ditt. Senere legger du til flere detaljer for å få det til å fungere perfekt. Det er som å skissere en rask tegning før du legger til alle fargene og detaljene.

De ovennevnte prinsippene danner grunnlaget for OOA-tilnærmingen.

Objektorientert design

I den objektorienterte programvareutviklingsprosessen gjennomgår analysemodellen, som i utgangspunktet dannes gjennom objektorientert analyse (OOA), en transformasjon under objektorientert design (OOD). Denne utviklingen er avgjørende fordi den former analysemodellen til en detaljert designmodell, som i hovedsak fungerer som en blåkopi for å konstruere programvaren.

Resultatet av objektorientert design, eller OOD, manifesterer seg i en designmodell preget av flere nivåer av modularitet. Denne modulariteten kommer til uttrykk på to sentrale måter:



  • Delsystempartisjonering:
    • På et høyere nivå er hovedkomponentene i systemet organisert i undersystemer.
    • Denne praksisen ligner på å lage moduler på systemnivå, og gir en strukturert og organisert tilnærming til å administrere kompleksiteten til programvaren.
  • Objektinnkapsling:
    • En mer granulær form for modularitet oppnås gjennom innkapsling av datamanipulasjonsoperasjoner i objekter. Det er som å legge spesifikke oppgaver (eller operasjoner) og dataene de trenger i små bokser kalt objekter.
    • Hvert objekt gjør jobben sin pent og holder ting organisert. Så hvis spillet vårt har en karakter som hopper, legger vi alle hopptingene pent inne i en gjenstand.
    • Det er som å ha en boks for hver oppgave, noe som gjør alt enklere å håndtere og forstå.

Videre, som en del av den objektorienterte designprosessen, er det viktig å definere spesifikke aspekter:

  • Dataorganisering av attributter:
    • OOD innebærer å spesifisere hvordan dataattributter er organisert i objektene. Dette inkluderer å bestemme hvilke typer data hvert objekt skal inneholde og hvordan de forholder seg til hverandre, og sikrer en sammenhengende og effektiv datastruktur.
  • Prosedyrebeskrivelse av operasjoner:
    • OOD krever en prosedyrebeskrivelse for hver operasjon som et objekt kan utføre. Dette innebærer å detaljere trinnene eller prosessene som er involvert i å utføre spesifikke oppgaver, sikre klarhet og presisjon i implementeringen av funksjonalitet.

Diagrammet nedenfor viser en designpyramide for objektorienterte systemer. Den har følgende fire lag.

  1. Undersystemlaget: Det representerer delsystemet som gjør det mulig for programvare å oppnå brukerkrav og implementere tekniske rammeverk som møter brukerbehov.
  2. Klasse- og objektlaget: Det representerer klassehierarkiene som gjør det mulig for systemet å utvikle seg ved hjelp av generalisering og spesialisering. Dette laget representerer også hvert objekt.
  3. Meldingslaget: Dette laget omhandler hvordan objekter samhandler med hverandre. Den inkluderer meldinger som sendes mellom objekter, metodeanrop og kontrollflyten i systemet.
  4. Ansvarslag: Den fokuserer på ansvaret til individuelle objekter. Dette inkluderer å definere oppførselen til hver klasse, spesifisere hva hvert objekt er ansvarlig for, og hvordan det reagerer på meldinger.

Fordeler med objektorientert analyse og design (OOAD)

  • Forbedret modularitet: OOAD oppfordrer til å lage små gjenbrukbare objekter som kan kombineres for å lage mer komplekse systemer, noe som forbedrer modulariteten og vedlikeholdsevnen til programvaren.
  • Bedre abstraksjon: OOAD gir en abstrakt representasjon på høyt nivå av et programvaresystem, noe som gjør det enklere å forstå og vedlikeholde.
  • Forbedret gjenbruk: OOAD oppfordrer til gjenbruk av objekter og objektorienterte designmønstre, reduserer mengden kode som må skrives og forbedrer kvaliteten og konsistensen til programvaren.
  • Forbedret kommunikasjon: OOAD gir et felles vokabular og metodikk for programvareutviklere, og forbedrer kommunikasjon og samarbeid i team.
  • Gjenbrukbarhet: OOAD legger vekt på bruk av gjenbrukbare komponenter og designmønstre, som kan spare tid og krefter i programvareutvikling ved å redusere behovet for å lage ny kode fra bunnen av.
  • Skalerbarhet: OOAD kan hjelpe utviklere med å designe programvaresystemer som er skalerbare og kan håndtere endringer i brukerbehov og forretningskrav over tid.
  • Vedlikehold: OOAD legger vekt på modulær design og kan hjelpe utviklere med å lage programvaresystemer som er enklere å vedlikeholde og oppdatere over tid.
  • Fleksibilitet: OOAD kan hjelpe utviklere med å designe programvaresystemer som er fleksible og kan tilpasse seg endrede forretningskrav over tid.
  • Forbedret programvarekvalitet: OOAD legger vekt på bruk av innkapsling, arv og polymorfisme, noe som kan føre til programvaresystemer som er mer pålitelige, sikre og effektive.

Utfordringer ved objektorientert analyse og design (OOAD)

  • Kompleksitet: OOAD kan legge til kompleksitet til et programvaresystem, ettersom objekter og deres relasjoner må modelleres og administreres nøye.
  • Overhead: OOAD kan resultere i ekstra overhead, ettersom objekter må instansieres, administreres og samhandles med, noe som kan redusere ytelsen til programvaren.
  • Bratt læringskurve: OOAD kan ha en bratt læringskurve for nye programvareutviklere, da det krever en sterk forståelse av OOP-konsepter og -teknikker.
  • Kompleksitet: OOAD kan være komplekst og kan kreve betydelig ekspertise for å implementere effektivt. Det kan være vanskelig for nybegynnere å forstå og bruke OOAD-prinsippene.
  • Tidkrevende: OOAD kan være en tidkrevende prosess som involverer betydelig forhåndsplanlegging og dokumentasjon. Dette kan føre til lengre utviklingstider og høyere kostnader.
  • Stivhet: Når et programvaresystem først er designet med OOAD, kan det være vanskelig å gjøre endringer uten betydelig tid og kostnader. Dette kan være en ulempe i raskt skiftende miljøer der nye teknologier eller forretningskrav kan kreve hyppige endringer i systemet.
  • Koste: OOAD kan være dyrere enn andre programvareteknikker på grunn av planleggingen og dokumentasjonen som kreves på forhånd.

Virkelige applikasjoner for objektorientert analyse og design (OOAD)

Objektorientert analyse og design (OOAD) har blitt mye brukt på tvers av ulike bransjer for å forbedre programvareutviklingsprosesser, forbedre vedlikeholdsmuligheter og fremme gjenbrukbarhet av kode. Her er noen virkelige applikasjoner av OOAD:

  1. Finansielle systemer: Bankprogramvare: OOAD brukes ofte i banksystemer for å modellere komplekse finansielle strukturer, transaksjoner og kundeinteraksjoner. Den modulære og skalerbare naturen til OOAD hjelper til med å designe fleksible og robuste bankapplikasjoner.
  2. Helsesystemer: Elektroniske helsejournalsystemer (EPJ): OOAD brukes til å modellere pasientdata, medisinske journaler og arbeidsflyter for helsetjenester. Objektorienterte prinsipper gjør det mulig å lage modulære og tilpasningsdyktige helseapplikasjoner som kan utvikle seg med endrede krav.
  3. Luftfart og forsvar: Flight Control Systems: OOAD er avgjørende for å designe flykontrollsystemer for fly. Den hjelper til med å modellere interaksjonene mellom ulike komponenter som navigasjonssystemer, sensorer og kontrolloverflater, og sikrer sikkerhet og pålitelighet.
  4. Telekommunikasjon: Telecom Billing Systems: OOAD brukes til å modellere og designe faktureringssystemer i telekommunikasjonsindustrien. Det gir mulighet for representasjon av komplekse faktureringsregler, abonnementsplaner og kundedata på en modulær og skalerbar måte.
  5. E-handel: Online shoppingplattformer: OOAD brukes ofte i utviklingen av e-handelssystemer. Det hjelper med å modellere produktkataloger, brukerprofiler, handlekurver og betalingsprosesser, noe som gjør det enklere å vedlikeholde og utvide funksjonaliteten til plattformen.