Hopp til hovedinnhold

Fagskole

Software Architecture and Design Patterns - PRO2002 (7,5 sp)

Vil du lære hvordan moderne programvaresystemer bygges for å være robuste, skalerbare og enkle å vedlikeholde? I dette emnet lærer du hvordan utviklere jobber med programvarearkitektur, designmønstre og moderne utviklingspraksis for å bygge løsninger som fungerer over tid. Du får praktisk erfaring med objektorientert programmering, SOLID-prinsipper, REST API-er, testing, Docker og CI/CD; samtidig som du lærer hvordan arkitekturvalg påvirker både kodekvalitet, samarbeid og videre utvikling av systemer. 

Opptakskrav:Generell studiekompetanse, fagbrev/svennebrev eller realkompetanse
Studiested:Nettstudier
Studiestart:Høst eller vår
Studieomfang:Heltid eller deltid. Må fullføres innen ett semester.
Lånekassen:Godkjent
Vurderingsform:Nettbasert eksamen og arbeidskrav
Fysisk oppmøte:Nei
Undervisningsspråk:Engelsk

Med dette emnet får du en praktisk innføring i hvordan moderne programvare utvikles og struktureres i profesjonelle utviklingsmiljøer. Du lærer hvordan arkitektur, designmønstre og gode utviklingsprinsipper brukes for å bygge systemer som er enklere å vedlikeholde, videreutvikle og skalere over tid.

Emnet passer for deg som ønsker å gå fra å «bare få koden til å fungere» til å forstå hvordan større programvaresystemer faktisk designes og organiseres i praksis. 

Hva lærer du?

I Software Architecture and Design Patterns lærer du hvordan moderne programvare designes, struktureres og videreutvikles på en profesjonell måte.

Etter å ha fullført emnet vil du:

  • Forstå og anvende objektorienterte prinsipper og SOLID-design i praksis
  • Bruke design patterns for å løse vanlige utfordringer innen programvareutvikling
  • Designe og utvikle RESTful API-er med fokus på struktur, sikkerhet og vedlikeholdbarhet
  • Forstå hvordan mikrotjenestearkitektur fungerer
  • Arbeide med testing, TDD, Docker og CI/CD 
     

Hva kan du jobbe med? 

Med ferdighetene du utvikler i emnet, vil du være bedre rustet til å delta i utvikling og videreutvikling av moderne programvareløsninger. Du vil kunne bidra med:

  • Programvarearkitektur og systemdesign
  • Backend- og fullstackutvikling
  • API-utvikling og integrasjoner
  • Refaktorering og vedlikehold av eksisterende systemer
  • Moderne utviklingsflyt med Git, Docker og CI/CD 

Hvem kan dette emnet passe for?

Emnet passer for deg som ønsker å utvikle deg videre innen programvareutvikling og lære hvordan profesjonelle systemer designes og struktureres.

Du bør ha grunnleggende erfaring med programmering fra før, men trenger ikke å ha jobbet med arkitektur eller design patterns tidligere.

Emnet er fleksibelt, og du bestemmer selv når og hvor du vil studere. Det er ingen krav om å møte opp fysisk eller delta på bestemte tidspunkter. Studer i ditt eget tempo, akkurat når det passer deg.  

Vi legger ut hele pensumlisten ved semesterstart, så alt du trenger vil være lett tilgjengelig for en god start på studiene.

Knowledge

Upon completing Software Architecture and Design Patterns, the candidate...

  • has knowledge of object-oriented programming (OOP) concepts, including classes, inheritance, polymorphism, encapsulation, and abstraction.
  • understands the SOLID design principles and how they contribute to robust and maintainable software architectures.
  • has insight into common design patterns (e.g., Factory, Singleton, Strategy) and how to apply them in software development.
  • understands microservices architecture, including its principles, benefits, and challenges.
  • has knowledge of strategies for managing and refactoring legacy codebases using design patterns and best practices.
  • understands the principles of building robust RESTful APIs, including authentication, authorization, rate limiting, and versioning.
  • has insight into testing methodologies such as test-driven development (TDD), integration testing, and performance benchmarking.
  • understands containerization concepts and practices using Docker, including images, containers, volumes, container security, and basic awareness of Docker Compose.
  • has knowledge of advanced version control practices, including branching strategies, CI/CD, and collaboration tools (e.g., GitHub Actions, GitLab CI).

Skills 

Upon completing Software Architecture and Design Patterns, the candidate...

  • can apply OOP principles and SOLID design patterns to create maintainable and scalable software solutions.
  • can utilize design patterns effectively to solve common development challenges and improve code quality.
  • can design and implement microservices architectures, considering scalability, maintainability, and performance.
  • can refactor legacy codebases using design patterns and refactoring techniques to improve maintainability.
  • can develop robust RESTful APIs, ensuring proper authentication, authorization, and adherence to design principles.
  • can apply test-driven development (TDD) and other testing methodologies to ensure software quality.
  • can containerize applications using Docker and apply security best practices.
  • has basic familiarity with Docker Compose and its role in multi-container setups.
  • can manage version control processes, utilize CI/CD pipelines, and collaborate effectively using tools like GitHub and GitLab.

General Competence

Upon completing Software Architecture and Design Patterns, the candidate...

  • understands best practices in software architecture, including maintainability, security, and stakeholder value.
  • applies critical thinking to identify appropriate design patterns and architectural approaches, delivering solutions that meet user and stakeholder needs.
  • can carry out software development tasks based on defined specifications, demonstrating proficiency in architecture and design pattern application.
  • can contribute to interdisciplinary teams, discussing architectural decisions and collaborating on software design.

Arbeidskrav

I løpet av emnet leverer du obligatoriske arbeidskrav med faste frister, som vurderes som godkjent eller ikke godkjent. Hovedmålet med arbeidskravene er å forsterke og utdype konseptene du har lært, og du vil få tilbakemelding fra lærer.

Eksamen

 Eksamen er en prosjektoppgave som vurderes med karakter A til F, der A er høyeste karakter og F betyr at du ikke har bestått.