Hvad er softwareudvikling? Karakteristika, definition

⚡ Smart opsummering

Software Engineering er den disciplinerede proces med at analysere krav og derefter designe, bygge og teste software, der opfylder dem. Denne ressource forklarer dens definitioner, softwarekrisen, der skabte den, dens popularitet, relaterede discipliner, udfordringer og karakteristikaene for god software.

  • 📘 Kernedefinition: Softwareudvikling anvender systematiske, disciplinerede ingeniørprincipper til at udvikle, drive og vedligeholde pålidelig software.
  • ⚠️ Softwarekrise: Projektfiaskoer og stigende omkostninger i slutningen af ​​1960'erne skabte behovet for en struktureret ingeniørdisciplin.
  • 📈 Hvorfor det drejer sig om: Det muliggør stor, skalerbar, tilpasningsdygtig og omkostningseffektiv software med ensartet kvalitetsstyring.
  • 🔗 Relaterede discipliner: Det trækker på datalogi, ledelsesvidenskab, økonomi og systemteknik.
  • God software: Kvalitetssoftware er operationel, overgangsdygtig og vedligeholdelsesvenlig på tværs af skiftende miljøer.

Hvad er softwareudvikling

Hvad er software engineering?

Softwareudvikling er defineret som processen med at analysere brugerkrav og derefter designe, bygge og teste en softwareapplikation, der opfylder disse krav.

Lad os se på de forskellige definitioner af softwareudvikling:

  • IEEE definerer i sin standard 610.12-1990 softwareudvikling som anvendelsen af ​​en systematisk, disciplineret og beregningsbar tilgang til udvikling, drift og vedligeholdelse af software.
  • Fritz Bauer definerede det som "etablering og brug af standardtekniske principper. Det hjælper dig med økonomisk set at opnå software, der er pålidelig og fungerer effektivt på rigtige maskiner".
  • Boehm definerer softwareudvikling som "den praktiske anvendelse af videnskabelig viden til kreativt design og opbygning af computerprogrammer. Det omfatter også den tilhørende dokumentation, der er nødvendig for udvikling".ping, drift og vedligeholdelse af dem.”

Hvorfor Software Engineering? Softwarekrise og dens løsning

Hvad var softwarekrisen?

  • Det var i slutningen af ​​1960'erne, da mange softwareprojekter mislykkedes.
  • Meget software overskred budgettet. Resultatet var upålidelig software, der var dyr at vedligeholde.
  • Større software var vanskelig og ret dyr at vedligeholde.
  • Meget software kunne ikke opfylde kundernes voksende behov.
  • Kompleksiteten af ​​softwareprojekter steg, når deres hardwarekapacitet steg.
  • Efterspørgslen efter ny software steg hurtigere sammenlignet med evnen til at generere ny software.

Alle ovenstående problemer førte til 'softwarekrisen'.

Løsningen

Løsningen på problemet var at omdanne uorganiseret kodningsindsats til en softwareudviklingsdisciplin. Disse ingeniørmodeller hjalp virksomheder med at strømline driften og levere software, der opfyldte kundernes krav.

  • I slutningen af ​​1970'erne oplevede man en udbredt anvendelse af softwareudviklingsprincipper.
  • I 1980'erne automatiseredes softwareudviklingsprocessen og computerstøttet softwareudvikling (CASE) voksede.
  • I 1990'erne blev der lagt øget vægt på 'ledelses'-aspekter af projekter og standarder for kvalitet og processer, ligesom i ISO 9001.

Hvorfor er softwareteknologi populært?

Her er vigtige årsager bag populariteten af ​​software engineering:

Hvorfor Software Engineering er populær

  • Stor software – I virkeligheden er det meget nemmere at bygge en mur end et hus eller en bygning. På samme måde, når softwareudvikling bliver større, hjælper softwareudvikling dig med at bygge softwaren.
  • Skalerbarhed – Hvis softwareudviklingsprocessen er baseret på videnskabelige og tekniske koncepter, er det lettere at genskabe ny software for at skalere eksisterende software.
  • Tilpasningsevne – Når softwareprocessen er baseret på videnskabelige og tekniske principper, er det nemt at genskabe ny software ved hjælp af softwareudvikling.
  • Pris – Hardwareindustrien har vist sine evner, og enorm produktion har sænket prisen på computere og elektronisk hardware.
  • Dynamisk natur – Softwarens konstant voksende og tilpasningsdygtige natur. Det afhænger af det miljø, brugeren arbejder i.
  • Quality Management – Tilbyder en bedre metode til softwareudvikling for at levere softwareprodukter af høj kvalitet.

Software Engineerings forhold til andre discipliner

Sådan forholder softwareudvikling sig til andre discipliner:

  • Computer videnskab: Giver det videnskabelige grundlag for software, ligesom fysik er fundamentet for elektroteknik.
  • Ledelsesvidenskab: Softwareudvikling er arbejdskrævende arbejde, der kræver både teknisk og ledelsesmæssig kontrol. Derfor er det meget anvendt inden for ledelsesvidenskab.
  • Økonomi: I denne sektor hjælper softwareudvikling dig med ressourceestimering og omkostningskontrol. Der skal udvikles et computersystem, og data skal vedligeholdes regelmæssigt inden for et givet budget.
  • Systemteknik: Det meste software er en komponent i et meget større system, for eksempel softwaren i et industrielt overvågningssystem eller flysoftwaren på et fly. Softwareudviklingsmetoder bør anvendes til studiet af disse typer systemer.

Udfordringer ved Software Engineering

Her er nogle kritiske udfordringer, som softwareingeniører står over for:

  • Inden for sikkerhedskritiske områder som rumfart, luftfart og atomkraftværker kan omkostningerne ved softwarefejl være enorme, fordi liv er i fare.
  • Øgede markedskrav til hurtig ekspeditionstid.
  • Håndtering af den øgede kompleksitet af software, der er nødvendig til nye applikationer.
  • Mangfoldigheden af ​​softwaresystemer, der skal kommunikere med hinanden.

Attributter til softwareprodukter

Karakteristikaene for ethvert softwareprodukt omfatter funktioner, der vises af produktet, når det installeres og tages i brug.

Det er ikke de tjenester, som produktet leverer. I stedet er de relateret til produktets dynamiske adfærd og den anvendelse, produktet gør.

Eksempler på disse attributter er:

Efficiency, reliability, robustness, maintainability, etc.

Imidlertid varierer den relative betydning af disse egenskaber fra et softwaresystem til et andet.

Produktresuméet Beskrivelse
Maintainability Softwaren skal udvikle sig for at imødekomme kundernes skiftende krav.
Driftssikkerhed Pålidelighed omfatter forskellige egenskaber. Pålidelig software bør aldrig forårsage fysisk eller økonomisk skade på tidspunktet for systemfejl.
Effektivitet Softwareapplikationen bør ikke overforbruge systemressourcer som hukommelse og processorcyklusser.
Usability Softwareapplikationen skal have en passende brugergrænseflade og dokumentation.

Det er meget udfordrende at optimere ovenstående attributter. For eksempel kan det at tilbyde en bedre brugergrænseflade reducere systemets effektivitet.

Karakteristika for god software

Enhver software bør bedømmes ud fra, hvad den tilbyder, og de metoder, der hjælper dig med at bruge den.

Enhver software skal opfylde følgende attributter:

  • Operanale
  • Transitional
  • Vedligeholdelse

Her er nogle vigtige karakteristika ved god software udviklet af softwareprofessionelle.

Operanale

Denne egenskab fortæller os, hvor godt software fungerer i operationer, hvilket kan måles på:

  • budget
  • Effektivitet
  • Usability
  • Driftssikkerhed
  • Korrekthed
  • Funktionalitet
  • Sikkerhed
  • Sikkerhed

Transitional

Dette er et væsentligt aspekt, når softwaren flyttes fra en platform til en anden:

  • Interoperabilitet
  • Reus Evne
  • Overførsel
  • Tilpasningsevne

Vedligeholdelse

Dette aspekt handler om, hvor godt software har evnen til at tilpasse sig et hurtigt skiftende miljø:

  • Fleksibilitet
  • Maintainability
  • modularitet
  • Skalerbarhed

Ofte Stillede Spørgsmål

AI hjælper med kodegenerering, automatiseret testning og fejlfinding. Den håndterer rutineopgaver, så ingeniører kan fokusere på design, arkitektur og kompleks problemløsning, samtidig med at den stadig kræver menneskelig gennemgang af kvalitet og korrekthed.

Nej. AI øger produktiviteten, men kan ikke erstatte menneskelig dømmekraft i forbindelse med indsamling af krav, design af arkitektur, afvejning af etiske afvejninger og træffelse af komplekse beslutninger. Ingeniører vejleder og validerer i stigende grad det output, som AI-værktøjer genererer.

Programmering fokuserer på at skrive kode. Softwareudvikling anvender disciplinerede processer på tværs af hele livscyklussen, herunder krav, design, test og vedligeholdelse, for at levere pålidelig software i stor skala inden for budget- og tidsbegrænsninger.

Kernelivscyklussen omfatter kravanalyse, design, kodning, test, implementering og vedligeholdelse. Hver fase bygger videre på den foregående for at sikre, at den endelige software er pålidelig, vedligeholdelsesvenlig og opfylder brugernes behov.

Opsummer dette indlæg med: