Hvordan lager du god programvare?

Hvordan lager du god programvare? IMS-blogg
IMS-teamet Kai-Uwe Schiffer
Bidrag av: Kai-Uwe Schiffer

Kai-Uwe Schiffer er leder for programvareutvikling. Med teamet sitt er han ansvarlig for implementering av kundekrav og innovasjoner i robuste og attraktive løsninger. Konstant modernisering av dagens produktlinjer er hans spesielle bekymring.

Hvordan lager du god programvare? Bortsett fra at kvinner også lager god programvare (i hvert fall her kl IMS) spørsmålet er ikke så lett å svare på. Fordi programvare er sammensatt. Og god programvare? Paradoksalt nok er det mindre sammensatt. Å skape dem er imidlertid mer sammensatt. For for god programvare er det mye mer å gjøre enn bare å skrive kode.

Tenk først

Programvaren er litt som overalt i livet: tenk først, deretter handling - og selvfølgelig kode. Så at koden forblir ren og så fleksibel som mulig, må alle slags hensyn tas i forkant av hver utvikling:

  • Hva bør programvaren gjøre?
  • Hva er kjernen i løsningen?
  • Hvilke elementer må programmeres så robust som mulig?
  • Hvilke elementer må programmeres så fleksibelt som mulig?
  • Hva må kobles til, leses inn og sendes ut?
  • Hvordan kombinerer jeg de fleste elementer til en funksjonell enhet mest fornuftig?

Alle er opptatt av spørsmål av denne typen Programvareutvikler mye før du skriver den første linjen. Forresten, disse spørsmålene kan besvares enda bedre i et team, da hjelper prinsippet om fire (eller seks- eller åtte-) øyne til å identifisere og eliminere mulige snublesteiner i designet på et tidlig tidspunkt.

Hodet som et verktøy

Selvfølgelig trenger programmereren verktøy. En god programmerer kan mestre hvert verktøy. Prinsippet ligner det for den universelle håndverkeren: han kan også jobbe med hvilket som helst verktøy, men må også ha den nødvendige kunnskapen for hvert verktøy.

Det virkelige verktøyet er imidlertid hodet. Her lages de abstrakte konstruksjonene av all programvare. Og gode konstruksjoner er fine! Gleden over skjønnheten i programvare er en sjelden bonus innen det profesjonelle programvareutviklere. Så både språkferdigheter på den ene siden og ferdigheter for mønstergjenkjenning og kapasitet til abstraksjon på den andre er viktige. I detalj betyr dette:

språk

Enten C#, Java, Python, HTML5, Grunnleggende, Ruby - hvis du vil programmere, må du kjenne språket (e). Det er som på ferie: ingen ord uten ord. Kunnskap om språk er derfor elementær. Jeg kan ikke uttrykke det jeg ikke vet. Jeg kan ikke programmere det jeg ikke kan uttrykke.

Gjenkjenne mønstre

Hvis ordforrådet er riktig, er neste trinn mønstergjenkjenning. Det er mønstre i helt andre former. Et veldig enkelt, men veldig viktig poeng er for eksempel "Ikke gjenta deg selv"! Alt som er likt eller lignende trenger bare å programmeres en gang, men må deretter utformes slik at det kan få tilgang til og brukes av alle elementer som krever denne funksjonen.

abstrakt tenkning

Mønstergjenkjenning inkluderer også å gjenkjenne relaterte funksjonelle sekvenser og å kunne implementere dem deretter. Samtidig krever dette kapasitet for abstraksjon, dvs. muligheten til å bygge strukturen til hele produktet i hodet ditt. Fordi bare de som har full oversikt over oppgaven sin, er i stand til å definere den beste løsningen.

Logikk med og uten matematikk

Et annet stikkord bør nevnes her: logikk. Hvis du vil programmere, må du kunne tenke logisk, fordi spørsmålet alltid henger over alt: hvilken handling har hvilke konsekvenser? Den grunnleggende strukturen for logisk tenking læres på skolen i matematikk, som derfor kan være viktig for programvareutviklere - men er ikke obligatorisk, fordi selv om tankegangen er lik, er den ikke den samme. Og det er også kompleks logikk, for eksempel i filosofi (og ikke bare i Ludwig Wittgenstein, heller) Tractatus logico philosophicus).

designprinsipper

Neste trinn er å følge designprinsippene. Disse prinsippene for utforming av god programvare har knapt endret seg i løpet av årene til tross for enorme tekniske endringer og fremskritt. En generell teoretisk tilnærming er allerede funnet i objektorientert programmering, og mange av funnene gjelder også for arbeid med ikke-objektorienterte språk.

Noen eksempler er:

  • Kapsel det som er annerledes.
  • Adressegrensesnitt i stedet for å programmere en implementering.
  • Hver klasse i søknaden din bør bare ha en grunn til å endre.
  • Klassene skal være åpne for utvidelser, men bør ekskludere modifikasjoner (OCP).
  • Unngå duplikater i koden ved å abstrahere hvilken kjernefunksjon som må oppfylles (TØRK-prinsipp)
  • Hvert objekt skal bare ha én funksjon, og hver metode for et objekt skal hovedsakelig ha som mål å utføre denne funksjonen (SRP)
  • Underklasser skal kunne brukes som gjenstander i baseklassen (LSP)

Det største ikke i denne sammenhengen er fremdeles: Ikke skriv en monolitisk blokk. Det største gjøret er følgelig: Skriv strukturerte og i meningsfulle funksjonelle enheter.

Og et annet prinsipp er viktig når det kommer til programvaredesign: Vær fleksibel med endringer! Endringer skjer kontinuerlig. Av denne grunn, når du designer programvare, er det viktig å være oppmerksom på hvilke deler som vil endre seg og hvilke ikke. De som vil endre, må være designet slik at endringene er enkle å implementere og funksjonalitetene deres er robuste for endringer.

derfor:

Det er ikke noe bra med mindre du gjør det, sier de. Det gjelder også programvare - jo mer sammensatt, jo mer. Og hva med den gode programvaren nå?

Hos IMS holder vi alltid øynene åpne, slik at programvaren vår fungerer så pålitelig som mulig, yter optimal, er enkel å bruke og skaper fordeler på lang sikt.

Fokuset er på moderne programmeringsstandarder så vel som den siste utviklingen innen språk og tredjepartssystemer. En 3-lags arkitektur er like obligatorisk som brukervennlighet. Og mobilvennlig design er like mye en del av det som weboptimalisering og mye mer.

Dette er sannsynligvis grunnen til at IMSWARE er så vellykket på markedet.

 

Vennlig hilsen

ksc Hvordan lage god programvare »IMSWARE.de

PS-programvareutvikling er din greie? Så se på vår nåværende ledige stillinger i løpet av ...

 

Din vurdering?

gjennomsnittlig 4.9 / 5. Antall stemmer: 8

Bli den første til å rangere :-)

Stor, tusen takk!

Kanskje du vil følge oss på ...

Vi beklager at du ikke likte dette innlegget.

Hvordan kan vi forbedre det?

Nyheter blog
Forrige lesing
IMS på ServParc i juni 2019
Neste lesing
51. årsmøte i ATA