programvareutvikling _ | ||
---|---|---|
kunnskapsområder | Databehandling | |
omfang |
Utvikling av applikasjonsprogramvare , systemprogramvareutvikling , webutvikling , mobilapplikasjonsutvikling , grafisk programvareutvikling , desktop applikasjonsutvikling , chatbotutvikling , blokkjedeutvikling , beregningsfysikk programvareutvikling , beregningsbasert kjemi programvareutvikling , maskinsynsutvikling , robotprogramvareutvikling , biomedisinsk programvareutvikling , Industriell operativ programvareutvikling , Ingeniørprogramvareutvikling , Anvendelser av kunstig intelligens | |
delområde av | Datavitenskap | |
Software Engineering er en av grenene innen informatikk som studerer etableringen av pålitelig programvare av høy kvalitet, basert på tekniske metoder og teknikker, og som gir drifts- og vedlikeholdsstøtte . Studieretningen programvareteknikk [ 1 ] integrerer informatikk , anvendt vitenskap og de grunnleggende vitenskapene som ingeniørfaget er basert på . [ 2 ]
De mest anerkjente definisjonene er sitert, formulert av følgende prestisjetunge forfattere:
I 2004 talte US Bureau of Labor Statistics 760 840 programvareingeniører . [ 4 ] [ oppdatering ]
Begrepet " programvareingeniør " brukes imidlertid generisk i forretningsmiljøet, og ikke alle i programvareingeniørstillingen har faktisk ingeniørgrader fra anerkjente universiteter. [ 5 ]
Noen forfattere anser " programvareutvikling " for å være et mer passende begrep enn " programvareutvikling " for prosessen med å lage programvare . Folk som Pete McBreen (forfatter av Software Craftmanship ) mener at begrepet IS innebærer nivåer av strenghet og prosesstesting som ikke er passende for alle typer programvareutvikling .
Begrepene "programvareteknikk " eller " programvareteknikk " brukes om hverandre ; selv om det er mindre vanlig, blir det også ofte referert til som " software engineering ". [ 6 ] [ 7 ] [ 8 ] I Latin-Amerika er de mest brukte termene de to første.
Opprettelsen av programvare er en i seg selv kreativ prosess og programvareteknikk prøver å systematisere denne prosessen for å begrense risikoen for å ikke oppnå målet, gjennom ulike teknikker som har vist seg å være tilstrekkelig basert på erfaring.
Software engineering kan betraktes som engineering brukt på programvare , det vil si ved systematiserte midler og med forhåndsetablerte verktøy, anvende dem på den mest effektive måten for å oppnå optimale resultater; mål som ingeniør alltid søker. Det handler ikke bare om problemløsning , men heller å vurdere de forskjellige løsningene og velge den mest passende.
Programvareproduksjon bruker programvaretekniske kriterier og standarder , som gjør at det kan transformeres til et industrielt produkt ved å bruke ingeniørbaser som metoder, teknikker og verktøy for å utvikle et innovativt produkt styrt av metoder og god praksis. Dette produktet er et middel som griper inn i funksjonene til brukerne for å oppnå en mer effektiv og effektiv produksjonsprosess; i dag kunne bedrifter ikke fungere uten programvare fordi dette er et produkt av massiv bruk; derfor bestemmes nivået til et selskap av kvaliteten på dens teknologiske infrastruktur og produktene utviklet eller anskaffet i henhold til dets behov.
Da de første digitale datamaskinene dukket opp på 1940-tallet, [ 9 ] var programvareutvikling så ny at det var nesten umulig å forutsi prosjektgjennomføringsdatoer, og mange prosjekter gikk over budsjetter og over tid. Utviklere måtte skrive om alle programmene sine for å kjøre på nye maskiner som kom ut hvert eller hvert annet år, noe som gjorde eksisterende foreldet.
Begrepet programvareteknikk dukket først opp på slutten av 1950-tallet. Programvareutvikling ble stimulert av programvarekrisen på 1960- og 1980-tallet. Programvareteknikk kommer for å hjelpe til med å identifisere og korrigere prosessene for utvikling og vedlikehold av programvaresystemer gjennom prinsipper og metoder .
Bortsett fra programvarekrisen i tiårene mellom 1960 og 1980, er programvareutvikling påvirket av ulykker som førte til at tre mennesker døde; dette skjedde når strålebehandlingsmaskinen Therac-25 sender ut en massiv overdose med stråling og påvirker livene til disse menneskene. [ 10 ] Dette fremhever risikoen ved programvarekontroll , [ 11 ] som direkte påvirker navnet på programvareutvikling .
På begynnelsen av 1980-tallet [ 12 ] hadde programvareingeniør allerede dukket opp som et genuint yrke, for å stå ved siden av tradisjonell informatikk og ingeniørfag. Før dette ble jobber kjørt ved å legge hullkort som input i maskinens kortleser og avvente resultatene som ble returnert av skriveren.
På grunn av behovet for ofte å oversette gammel programvare for å betjene behovene til nye maskiner, ble det utviklet språk av høyere orden. Etter hvert som fri programvare dukket opp , ga brukerorganisasjoner den ofte ut.
I lang tid var løsningen av programvarekrisen av største betydning for forskere og selskaper som var dedikert til å produsere programvareverktøy .
På 1980-tallet var kostnadene for å eie og vedlikeholde programvare dobbelt så dyre som programvareutviklingen i seg selv , og i løpet av 1990-tallet økte kostnadene for å eie og vedlikeholde programvare med 30 % i løpet av det foregående tiåret. I 1995 var mange av utviklingsprosjektene i drift, men ble ikke ansett som vellykkede. Gjennomsnittlig programvareprosjekt overskred med 50 % av tidsestimatet tidligere gjort, i tillegg hadde 75 % av alle store programvareprodukter som ble levert til klienten så alvorlige feil at de ikke ble brukt i det hele tatt eller rett og slett ikke var i samsvar med kunden. krav.
Noen eksperter hevdet at programvarekrisen skyldtes programmerernes mangel på disiplin.
Hver ny teknologi og praksis fra 1970- til 1990-tallet ble kunngjort som den eneste løsningen på alle problemene og kaoset som førte til programvarekrisen . Sannheten er at søket etter én enkelt nøkkel til suksess aldri fungerte. Feltet programvareteknikk virker for komplekst og stort til at en enkelt løsning kan forbedre de fleste problemer, og hvert problem representerer bare en liten del av alle programvareproblemer .
Bommen i bruken av Internett førte til en svimlende vekst i etterspørselen etter internasjonale informasjonsskjermsystemer på World Wide Web. Utviklere fikk i oppgave å håndtere illustrasjoner, kart, bilder og animasjoner i en hastighet som aldri er sett før, med nesten ingen metode for å optimalisere bildevisning og lagring. Det var også nødvendig med systemer for å oversette informasjonsflyten på flere fremmedspråk til menneskelig naturlig språk, med mange programvaresystemer designet for flerspråklig bruk, basert på menneskelige oversettere.
Programvareutvikling bidro med rundt 90 milliarder dollar per år, siden Internett kom inn. Dette gjør at utviklere må håndtere bildekart og animasjoner for å optimalisere visning/lagring av bilder (som bruk av miniatyrbilder). Bruken av nettlesere og bruken av HTM L-språket endrer synet og mottaket av informasjon drastisk.
Omfattende nettverkstilkoblinger forårsaket spredning av datavirus og søppelpost eller spam i elektronisk post ( e- post ). Denne situasjonen satte utviklere i et kappløp mot tiden for å lage nye blokkerings- eller sikkerhetssystemer for nevnte dataavvik, siden de ble ekstremt kjedelige og vanskelige å fikse.
Etter en sterk og økende etterspørsel, oppstår behovet for å lage rimelige programvareløsninger, noe som fører til bruk av enklere og raskere metodikk som utvikler funksjonell programvare . Det skal bemerkes at mindre systemer hadde en enklere og raskere tilnærming til å kunne styre utviklingen av programvareberegninger og algoritmer .
Programvareteknikk bruker forskjellige standarder og metoder som gjør det mulig å oppnå bedre resultater, når det gjelder utvikling og bruk av programvare , gjennom korrekt anvendelse av disse prosedyrene er det mulig å tilfredsstille de grunnleggende målene for programvareutvikling .
Blant målene med programvareutvikling er:
De er alle de personene som er involvert i planleggingen av programvareforekomster (for eksempel: leder, erfaren programvareingeniør , etc.), Antall personer som kreves for et programvareprosjekt kan bare bestemmes etter å ha estimert innsatsen for utvikling ...
Det er miljøet til applikasjonene ( programvare og maskinvare ) maskinvaren gir de fysiske midlene til å utvikle applikasjonene ( programvare ), denne ressursen er viktig. [ 14 ]
I USA bidro programvare med en åttendedel av all BNP-vekst på 1990-tallet (omtrent 90 milliarder dollar per år), og en niendedel av all produktivitetsvekst i løpet av de siste årene av tiåret. . Programvareutvikling bidro til 1 billion dollar av økonomisk vekst og produktivitet i det tiåret. Rundt om i verden bidrar programvare til økonomisk vekst på lignende måter, selv om pålitelig statistikk er vanskelig å finne. [ referanse nødvendig ]
I tillegg finner den med språkindustrien flere og flere bruksområder på global skala.
Programvareteknikk endrer kulturen i verden på grunn av den utbredte bruken av datamaskinen . Elektronisk post (e-post), WWW og direktemeldinger lar folk samhandle på nye måter. Programvaren senker kostnadene og forbedrer kvaliteten på helsetjenester, brannvesen, offentlige etater og andre sosiale tjenester. Vellykkede prosjekter der programvareutviklingsmetoder har blitt brukt inkluderer GNU/Linux , Space Shuttle- programvare , minibanker og mange andre.
Det er et allment anerkjent og for tiden brukt modelleringsspråk som brukes til å beskrive eller spesifisere metoder. Det er også anvendelig i programvareutvikling .
Akronymet UML står for Unified Modeling Language, dette betyr at det ikke er ment å definere en standard utviklingsmodell, men kun et modelleringsspråk. [ 15 ]
Et modelleringsspråk består av synspunkter, modellelementer og et sett med syntaktiske, semantiske og pragmatiske regler som indikerer hvordan elementene skal brukes.
I denne saken finner vi flere diagrammer som kan brukes som: use cases , classes , komponenter , deployment , etc.
Målet med notasjonen for forretningsprosessmodellering er å gi en enkel måte å definere og analysere offentlige og private forretningsprosesser ved å simulere et flytskjema . Notasjonen er spesielt designet for å koordinere sekvensen av prosesser og meldinger som flyter mellom prosessdeltakere, med et sett med relaterte aktiviteter. Grunnleggende egenskaper ved BPMN-elementer
Et dataflytdiagram lar deg representere bevegelsen av data gjennom et system ved hjelp av modeller som beskriver datastrømmene, prosessene som transformerer eller endrer dataene, datadestinasjonene og datalagrene den har tilgang til systemet.
Dens oppfinner var Larry Constantine , basert på Martin og Estrins beregningsmodell: grafdataflyt. Med dataflytdiagrammer bestemmer du hvordan ethvert system kan utvikles, bistår med å identifisere transaksjonsdataene i datamodellen, og gir brukeren en fysisk ide om hvordan dataene til slutt vil slå ut. [ 16 ]
CASE Tools er beregningsverktøy ( programvare ) som er ment å bistå i livssyklusprosessene til programvare , lette produksjonen av programvare , flere er hovedsakelig basert på ideen om en grafisk modell. [ 17 ]
Et mål i flere tiår har vært å finne prosesser og metoder som er systematiske, forutsigbare og repeterbare, for å forbedre produktiviteten i utviklingen og kvaliteten på programvareproduktet , kort sagt, det bestemmer trinnene som skal følges og hvordan de skal utføres for å fullføre en hjemmelekse.
Programvareutvikling krever å utføre en rekke oppgaver gruppert i stadier, settet med disse stadiene kalles livssyklusen . Stadiene som er felles for nesten alle livssyklusmodeller er som følger:
Innhenting av kraveneDet som jobbes med må identifiseres, det vil si hovedproblemstillingen som motiverer studiestart og opprettelse av ny programvare eller modifikasjon av eksisterende. I sin tur identifisere ressursene som er tilgjengelige, dette inkluderer å kjenne til de menneskelige og materielle ressursene som deltar i utviklingen av aktivitetene. Det er viktig å forstå forretningskonteksten for å identifisere krav på riktig måte.
Du må beherske informasjonen om et problem, som inkluderer data utenfor programvaren (sluttbrukere, andre systemer eller eksterne enheter), data som kommer ut av systemet (gjennom brukergrensesnittet, nettverksgrensesnitt, rapporter, grafikk og andre medier). ) og datalagre som samler inn og organiserer vedvarende dataobjekter (for eksempel de som holdes permanent).
Det er også nødvendig å se de kritiske punktene, som betyr å ha på en klar måte de aspektene som hindrer og begrenser at gjeldende prosedyrer fungerer, de vanligste og mest relevante problemene som oppstår, årsakene som skaper misnøye og de som bør fullt dekket. For eksempel: Dekker innholdet i de genererte rapportene virkelig brukerens behov? Er responstidene tilbudt rettidig?, osv.
Det er nødvendig å definere funksjonene som programvaren skal utføre siden disse hjelper sluttbrukeren og driften av selve programmet.
Du må ta hensyn til hvordan programvaren vil oppføre seg i uventede situasjoner, for eksempel et stort antall brukere som bruker programvaren eller en stor mengde data, blant annet.
Kravanalyse Å trekke ut kravene til et programvareprodukt er det første trinnet i å lage det. Under analysefasen oppgir klienten hvilke behov som oppstår og forsøker å forklare hva programvaren eller sluttproduktet skal gjøre for å tilfredsstille nevnte behov mens utvikleren fungerer som en avhører, som den som løser problemer. Med denne analysen kan systemingeniøren velge funksjonen som programvaren skal utføre og etablere eller indikere hvilket som er best egnet grensesnitt for den. [ 18 ]Kravanalyse kan virke som en enkel oppgave, men det er ikke fordi mange ganger kunder tror de vet alt programvaren trenger for at den skal fungere, men det kreves ferdigheter og erfaring fra en spesialist for å gjenkjenne ufullstendige krav. , tvetydige eller motstridende. Disse kravene bestemmes under hensyntagen til behovene til sluttbrukeren, og introduserer teknikker som lar oss forbedre kvaliteten på systemene vi jobber med. [ 19 ]
Resultatet av kravanalysen med klienten gjenspeiles i ERS-dokumentet (systemkravspesifikasjon), hvis struktur kan defineres av ulike standarder, for eksempel CMMI . På samme måte er det definert et enhets-/relasjonsdiagram , der hovedenhetene som skal delta i utviklingen av programvaren reflekteres .
Innsamling, analyse og spesifikasjon av krav (til og med tester av dem), er en avgjørende del; Oppnåelsen av de endelige målene avhenger i stor grad av dette stadiet. Modeller og ulike metodiske arbeidsprosesser er utviklet for disse formålene. Selv om det ikke er formalisert ennå, er det allerede snakk om kravteknikk .
IEEE Std. 830-1998 standardiserer opprettelsen av programvarekravsspesifikasjoner .
Formål med kravanalyse:
Ikke alltid i «kravanalyse»-stadiet er de ulike utviklingsmetodikkene knyttet til en mulighetsstudie og/eller kostnadsestimat. Den mest kjente av programvarekostnadsberegningsmodellene er COCOMO- modellen.
Begrensninger [ 20 ]Programvare har evnen til å etterligne intelligens ved å lage en modell av visse kjennetegn ved menneskelig intelligens, men den har bare forhåndsdefinerte funksjoner som omfatter et sett med løsninger som på noen felt blir begrenset. Selv når den har evnen til å imitere visse menneskelige atferder, er den ikke i stand til å etterligne menneskelig tanke fordi den handler under forhold.
Et annet begrensende aspekt ved programvaren kommer fra den helt mekaniske prosessen som krever større innsats og høye utførelsestider, noe som fører til at man må implementere programvaren på en maskin med større kapasitet.
SpesifikasjonKravspesifikasjonen beskriver forventet oppførsel til programvaren når den er utviklet. Mye av suksessen til et programvareprosjekt vil ligge i identifiseringen av forretningsbehov (definert av toppledelsen), samt samhandlingen med funksjonelle brukere for innsamling, klassifisering, identifikasjon, prioritering og spesifikasjon av programvarekrav .
Blant teknikkene som brukes for spesifikasjon av krav er:
Å være den første mer streng og formell, den andre mer smidig og uformell.
ArkitekturIntegrasjonen av infrastruktur, applikasjonsutvikling, databaser og styringsverktøy krever kapasitet og lederskap for å kunne konseptualiseres og projiseres inn i fremtiden, og løse dagens problemer. Rollen som alle disse aktivitetene er delegert til er arkitektens.
Programvarearkitekten er personen som tilfører verdi til forretningsprosesser takket være hans verdifulle bidrag av teknologiske løsninger.
Systemarkitektur generelt er en planleggingsaktivitet, enten på maskinvare- og nettverksinfrastrukturnivå , eller på programvarenivå .
Hovedsaken på dette punktet er å avklare de logiske og fysiske aspektene ved utgangene, organisasjonsmodellene og datarepresentasjonen, innganger og prosesser som utgjør systemet, med tanke på fordelene og begrensningene til de tilgjengelige ressursene for å tilfredsstille pasifikasjonene som tilbys. for analyse.
Du må ta hensyn til arkitekturen til systemet du skal jobbe i, utarbeide en arbeidsplan med tanke på prioritering av tid og tilgjengelige ressurser. I output-designene er kravtolkningen inkludert, som er informasjonsdomenet til problemet, funksjonene som er synlige for brukeren, oppførselen til systemet og et sett med kravklasser som grupperer forretningsobjektene med metodene som betjener dem.
Programvarearkitektur består av design av applikasjonskomponenter (forretningsenheter), vanligvis ved bruk av arkitektoniske mønstre . Den arkitektoniske utformingen skal tillate visualisering av samspillet mellom forretningsenhetene og også kunne valideres, for eksempel ved hjelp av sekvensdiagrammer. Et arkitektonisk design beskriver generelt hvordan en programvareapplikasjon skal bygges . Dette er dokumentert ved hjelp av diagrammer, for eksempel:
Klasse- og databasediagrammer er det minimum som er nødvendig for å beskrive arkitekturen til et prosjekt som skal begynne å bli kodet. Avhengig av prosjektets omfang, kompleksitet og behov vil arkitekten velge hvilke av diagrammene som skal utdypes.
Verktøyene for programvaredesign og modellering kalles CASE ( Computer Aided Software Engineering ) blant dem:
Implementering av et design i kode kan være den mest åpenbare delen av programvareingeniørarbeid , men det er ikke nødvendigvis den mest arbeidskrevende eller kompliserte. Kompleksiteten og varigheten av dette stadiet er nært knyttet til programmeringsspråket( e) som brukes, samt designen som tidligere ble utført.
ApplikasjonsutviklingFor utviklingen av applikasjonen er det nødvendig å vurdere fem faser for å ha en effektiv applikasjon eller program, disse er:
Det består i å verifisere at programvaren utfører oppgavene som er angitt i problemspesifikasjonen på riktig måte. En teknikk er å teste hver programvaremodul separat ( enhetstesting ), og deretter teste den som en helhet ( integrasjonstesting ), for å nå målet. Det anses som god praksis at testing utføres av noen andre enn utvikleren som programmerte den, ideelt sett et testområde; til tross for det foregående, må programmereren gjøre sine egne tester. Generelt er det to hovedmåter å organisere et testområde på, den første er at det består av uerfarent personell og at de ikke kan emnet for testing, på denne måten blir det evaluert at dokumentasjonen som leveres er av kvalitet, at prosessene beskrevet er så tydelige at alle kan forstå dem og programvaren gjør ting som beskrevet. Den andre tilnærmingen er å ha et testområde som består av erfarne programmerere, folk som uten ytterligere indikasjoner vet under hvilke forhold en applikasjon kan mislykkes og som kan ta hensyn til detaljer som uerfarent personell ikke vil vurdere.
I følge Roger S. Pressman fokuserer testprosessen på programvarens interne logiske prosesser , og sikrer at alle utsagn er sjekket, og funksjonelle eksterne prosesser, dvs. testing for feil. Det kreves å kunne teste programvaren med reelle forsøkspersoner som kan evaluere programvarens oppførsel for å gi tilbakemelding til utviklerne. Det er viktig at under programvareutviklingsprosessen ikke tapes kontakt med interesserte parter eller søkere for programvareutvikling , på denne måten vil målene for prosjektet forbli gyldige og det vil være en klar ide om aspektene som må være testet i løpet av prøveperioden. [ 22 ]
ImplementeringEn implementering er realisering av en teknisk spesifikasjon eller algoritmer med et program, programvarekomponent eller annet datasystem. Mange spesifikasjoner er gitt i henhold til din spesifikasjon eller en standard. De anbefalte spesifikasjonene i henhold til World Wide Web Consortium og programvareutviklingsverktøyene inneholder implementeringer av programmeringsspråk. Implementeringsmodellen er en samling av komponenter og delsystemene de inneholder. Komponenter som: kjørbare filer, kildekodefiler og alle andre typer filer som er nødvendige for implementering og distribusjon av systemet.
Implementeringsfasen av programvaredesign er prosessen med å konvertere en systemspesifikasjon til et kjørbart system. Det involverer alltid programvaredesign og programmeringsprosesser , men hvis en evolusjonær tilnærming til utvikling brukes, kan det også innebære en foredling av programvarespesifikasjonen . Dette stadiet er en beskrivelse av strukturen til programvaren som skal implementeres, dataene som er en del av systemet, grensesnittene mellom komponentene i systemet, og noen ganger algoritmene som brukes. [ 23 ]
DokumentasjonDet er alt relatert til dokumentasjonen av selve programvareutviklingen og prosjektledelse, inkludert modellering ( UML ), use case diagrammer, tester, brukermanualer, tekniske manualer, etc; alt med tanke på eventuelle rettelser, brukervennlighet, fremtidig vedlikehold og systemutvidelser.
VedlikeholdFase dedikert til vedlikehold og forbedring av programvaren for å korrigere oppdagede feil og innlemme nye krav. Dette kan ta enda lengre tid enn den første programvareutviklingen . Rundt 2/3 av livssyklustiden til et prosjekt [ 14 ] er dedikert til vedlikehold. En liten del av dette arbeidet består i å eliminere feil (bugs) ; er at det meste ligger i å utvide systemet til å inkludere nye funksjoner og håndtere utviklingen .
Programvarevedlikehold , ifølge Lehman -forskning, er 80 % av vedlikeholdet ikke korrigerende tiltak. De er forbedringer av funksjonalitet (og inkorporering av nye krav), ifølge Lehman utvikler programvaren seg over tid. Tatt i betraktning, kan selve vedlikeholdsstadiet inkludere de tidligere stadiene mellom utrulling av hver ny versjon, gjenbruk av eksisterende programvare, oppussing og tilpasning av den.
Programvareteknikk , for å bestille kaoset som tidligere var programvareutvikling , har flere modeller, paradigmer og utviklingsfilosofier , vi kjenner dem hovedsakelig som modeller eller livssykluser for programvareutvikling , dette inkluderer prosessen som følger for å bygge, levere og utvikle programvare , fra unnfangelse av en idé til levering og pensjonering av systemet, og representerer alle aktivitetene og artefaktene (mellomprodukter) som kreves for å utvikle en applikasjon. [ 25 ]
Programvarens livssyklus inneholder følgende prosedyrer:
I programvareteknikk er fossefallmodellen -også kalt fossefallsutvikling eller klassisk livssyklus- basert på en metodisk tilnærming som strengt sorterer stadiene i programvarens livssyklus , dette antyder en systematisk sekvensiell tilnærming til programvareutviklingsprosessen. programvare , som begynner med spesifikasjonen av kundekrav og fortsetter gjennom planlegging, modellering, konstruksjon og distribusjon for å kulminere med støtte for den ferdige programvaren . [ 27 ]
I programvareteknikk tilhører prototypemodellen de evolusjonære utviklingsmodellene. Dette gjør at hele systemet, eller noen av dets deler, kan bygges raskt for enkelt å forstå og avklare enkelte aspekter for å sikre at utvikler, bruker, oppdragsgiver er enige om hva som trengs samt løsningen som foreslås for nevnte behov og på denne måten minimere risikoen og usikkerheten i utviklingen, denne modellen er ansvarlig for utviklingen av design slik at de blir analysert og dispenserer fra dem etter hvert som nye spesifikasjoner overholdes, den er ideell for å måle omfanget av produktet, men dets faktiske bruk er ikke sikret.
Denne modellen brukes hovedsakelig når en klient definerer et sett med generelle mål for programvaren som skal utvikles uten å definere inndata, prosessering og utdata i detalj, det vil si når den ansvarlige ikke er sikker på effektiviteten til en algoritme, av systemets tilpasningsevne eller måten menneske og maskin samhandler på.
Denne modellen er først og fremst opptatt av å hjelpe systemingeniøren og kunden til å bedre forstå hva byggeresultatet blir når kravene er tilfredsstilt. [ 28 ]
Spiralmodellen, opprinnelig foreslått av Barry Boehm i 1986, er en evolusjonær programvareprosessmodell som kombinerer den iterative karakteren til prototyping med de kontrollerte og systematiske aspektene ved fossefallsmodellen, det vil si at når denne modellen brukes, utvikles programvaren i en serie evolusjonære leveranser (sykluser eller iterasjoner), hver av disse leverer mer komplette prototyper enn den forrige, alt basert på risikoanalyse og kundebehov. Selv om spiralmodellen representerer fordeler fremfor lineær utvikling, kan beregningen av risiko være svært komplisert, og derfor er bruken i den virkelige verden svært knapp. [ 29 ]
Det er en modell der programvaren vises til klienten i suksessivt raffinerte stadier. Med denne metodikken utvikles de viktigste kapasitetene, noe som reduserer tiden som er nødvendig for konstruksjonen av et produkt; den trinnvise leveringsmodellen er nyttig for utviklingen av verktøyet fordi bruken av det anbefales for problemer som kan behandles ved å bryte dem ned i mindre problemer og er hovedsakelig preget av at spesifikasjonene ikke er kjent i detalj i begynnelsen av prosjekt og derfor utvikles de samtidig med de forskjellige versjonene av koden.
Følgende faser kan skilles i denne modellen:
Når det er trinnvis, i den globale designen kan disse fasene gjentas i henhold til antall trinn som kreves.
Blant fordelene har vi:
Iterativ og inkrementell (eller inkrementell) utvikling er en programvareutviklingsprosess , opprettet som svar på svakhetene til den tradisjonelle fossefallsmodellen, dvs. denne modellen bruker lineære sekvenser som fossefallsmodellen, men på en iterativ eller skalert måte i henhold til utviklingsprosessen As. fremskritt og med hver av disse lineære sekvensene produseres inkrementer (forbedringer) av programvaren . [ 30 ]
Det må tas i betraktning at prosessflyten til ethvert inkrement kan inkludere prototypekonstruksjonsparadigmet, siden som nevnt ovenfor, denne typen modell er iterativ av natur, men den skiller seg ved at den søker levering av et driftsprodukt med hvert inkrement laget til programvaren .
Strukturert modellDenne modellen - som navnet indikerer - bruker teknikkene for strukturert design eller strukturert programmering for utviklingen, den brukes også til å lage programmets algoritmer. Dette formatet gjør det enkelt å forstå datastrukturen og dens kontroll. [ 31 ] Blant hovedkarakteristikkene til denne modellen er følgende:
Denne modellen har også sine ulemper, blant annet kan vi nevne noen:
I den strukturerte modellen er teknikkene som vanligvis brukes:
Disse modellene har sine røtter i objektorientert programmering og som en konsekvens dreier det seg om klassekonseptet, det samme gjør kravanalyse og design. I tillegg til å introdusere nye teknikker, utnytter dette også strukturerte utviklingsteknikker og konsepter, som tilstandsdiagrammer og overganger. Den objektorienterte modellen har to hovedegenskaper, som har favorisert utvidelsen:
RAD ( rask applikasjonsutvikling): 'rask applikasjonsutvikling', er en inkrementell programvareprosessmodell , opprinnelig utviklet av James Maslow i 1980, som hovedsakelig legger vekt på en kort utviklingssyklus.
Dette er en metodikk som muliggjør konstruksjon av beregningssystemer som kombinerer CASE (Computer Aided Software Engineering) teknikker og verktøy , konstruksjon av brukersentrerte prototyper og lineær og systematisk sporing av mål, noe som øker hastigheten som resultatene produseres med. systemer ved å bruke en komponentbasert utviklingstilnærming. [ 35 ]
Hvis kravene er godt forstått og omfanget av prosjektet er begrenset, lar RAD-prosessen et utviklingsteam lage et fullt funksjonelt produkt innen en svært begrenset tidsperiode uten å redusere kvaliteten på produktet det minste. [ 36 ]
Den samtidige utviklingsmodellen er en nettverksmodell der alle menneskene handler samtidig eller samtidig. Denne typen modell kan representeres skjematisk som en serie viktige tekniske aktiviteter, oppgaver og tilstander knyttet til dem.
Den samtidige prosessmodellen definerer en serie hendelser som vil utløse tilstand-til-stat-overganger for hver av programvareutviklingsaktivitetene . For eksempel, i de tidlige stadiene av design, er en inkonsekvens av analysemodellen ikke vurdert. Dette genererer hendelsesparsemodellen, som vil utløse parsingsaktiviteten fra ferdig-tilstanden til ventende endringstilstand. Denne utviklingsmodellen brukes ofte som klient/server-applikasjonsutviklingsparadigmet. Et klient/serversystem består av et sett med funksjonelle komponenter. Når den brukes på klient/server, definerer den samtidige prosessmodellen aktiviteter i to dimensjoner: en systemdivisjon og en komponentdivisjon. Problemer på systemnivå håndteres gjennom to aktiviteter: design og implementering.
Samtidig oppnås på to måter:
Faktisk er den samtidige utviklingsmodellen anvendelig for alle typer programvareutvikling og gir et nøyaktig bilde av den nåværende tilstanden til et prosjekt. I stedet for å begrense programvareutviklingsaktiviteter til en rekke hendelser, definere et nettverk av aktiviteter, eksisterer alle aktivitetene i nettverket samtidig med hverandre. Hendelser generert innenfor en gitt aktivitet eller en annen side av aktivitetsnettverket setter i gang overganger mellom tilstander til en aktivitet.
The Unified Process er en generisk programvareprosess som kan brukes til et stort antall typer programvaresystemer , for ulike applikasjonsområder, ulike typer organisasjoner, ulike kompetansenivåer og ulike størrelser på prosjekter.
Gir en disiplinert tilnærming til å tildele oppgaver og ansvar i en utviklingsorganisasjon. Målet er å sikre produksjon av svært høykvalitets programvare som møter behovene til sluttbrukere, innenfor en forutsigbar tidsplan og budsjett. [ 37 ]
Den enhetlige prosessen har to dimensjoner:
Den første dimensjonen representerer det dynamiske aspektet av prosessen slik den utfolder seg, uttrykt i form av faser, iterasjoner og milepæler (milepæler).
Den andre dimensjonen representerer det statiske aspektet av prosessen: hvordan den beskrives i form av prosesskomponenter, disipliner, aktiviteter, arbeidsflyter, artefakter og roller.
Den mest kjente og dokumenterte foredlingen av Unified Process er RUP (Rational Unified Process).
Den enhetlige prosessen er ikke bare en prosess, men et utvidbart rammeverk som kan skreddersys til spesifikke organisasjoner eller prosjekter. På samme måte er rationals Unified Process også et utvidbart rammeverk, så det er ofte umulig å si om en spesiell foredling av prosessen har blitt avledet fra Unified Process eller fra RUP. Av denne grunn brukes de to navnene ofte for å referere til det samme konseptet. [ 38 ]
Programvare har blitt noe veldig nødvendig i vårt nåværende samfunn, det er maskinen som driver forretningsbeslutninger, den tjener moderne vitenskapelig forskning, den er en nøkkelfaktor som skiller moderne produkter og tjenester. Dette er fordi programvare er innebygd i systemer av alle slag rundt oss.
Dataprogramvare er produktet som programvareingeniører designer og bygger . Dette omfatter programmer som kjører inne i en datamaskin uansett størrelse og arkitektur, som er bygget av nesten alle i den industrialiserte verden, enten direkte eller indirekte.
Produktene kan klassifiseres i:
Disse produktene må oppfylle flere egenskaper ved levering, disse er:
Hva som utgjør sluttproduktet er forskjellig for ingeniøren og brukerne, for ingeniøren er det programmene, dataene og dokumentene som konfigurerer programvaren , men for brukeren er sluttproduktet informasjonen som på en bestemt måte løser problemet brukeren..
Software engineering er en disiplin som er orientert mot å anvende ingeniørkonsepter og metoder for utvikling av kvalitetsprogramvare .
Programmer har mange matematiske egenskaper. For eksempel er riktigheten og kompleksiteten til mange algoritmer matematiske konsepter som kan testes grundig. Bruk av matematikk i SI kalles formelle metoder .
Programmer bygges i en sekvens av trinn. Det faktum å riktig definere og utføre disse trinnene, som i et samlebånd, er nødvendig for å forbedre produktiviteten til utviklerne og den endelige kvaliteten på programmene. Dette synspunktet inspirerer de forskjellige prosessene og metodene som finnes i SI.
Stor programvareutvikling krever riktig prosjektledelse. Det er budsjetter, etablering av leveringstider, et team av fagfolk å lede. Ressurser (kontorlokaler, rekvisita, utstyr) å anskaffe. For administrasjonen er det nødvendig å ha en klar visjon og opplæring i prosjektledelse.
Utviklingen av et programvaresystem krever samarbeid fra mange mennesker med ulike ferdigheter, evner og interesser. Gruppen personer som er involvert i prosjektet er kjent som deltakere.
Settet med funksjoner og ansvar innenfor prosjektet eller systemet er kjent som roller eller roller. Rollene er knyttet til oppgavene som er tildelt deltakerne, følgelig kan en person spille en eller flere roller, samt at den samme rollen kan representeres av et team. [ 39 ]
Begrepene «brukere», «sluttbrukere» og «kunder» brukes ofte synonymt, noe som kan skape forvirring; Strengt tatt er klienten (person, bedrift eller organisasjon) den som spesifiserer systemkravene , [ 40 ] mens brukeren er den som til slutt bruker eller drifter programvareproduktet , og kan være klienten eller ikke.
Denne klassen av deltakere er involvert i alle fasetter av programvareutviklingsprosessen . Arbeidet hans inkluderer forskning, design, implementering, testing og feilsøking av programvare . [ 41 ]
I sammenheng med programvareutvikling er programvareutviklingssjefen en deltaker som rapporterer til administrerende direktør i selskapet som leverer utviklingstjenesten. Han er ansvarlig for styring og koordinering av ressurser og prosesser for korrekt levering av programvareprodukter , samtidig som han deltar i definisjonen av strategien for teamet av utviklere, og gir initiativer som fremmer visjonen til selskapet. [ 42 ]
Sluttbrukeren er den som samhandler med programvareproduktet når det er levert. [ 40 ] Det er generelt brukerne som er klar over problemet, siden de betjener systemene på daglig basis.
En programvareingeniør må ha en kode som i den grad det er mulig sikrer at innsatsen som gjøres blir brukt til gode og må være forpliktet til å gjøre programvareingeniør til et respektert og nyttig yrke. For overholdelse av denne standarden er åtte prinsipper knyttet til oppførsel og beslutninger tatt av ingeniøren tatt i betraktning; hvor disse prinsippene identifiserer de etisk ansvarlige relasjonene til individene, gruppene og organisasjonene der de deltar. Prinsippene de skal forholde seg til handler om samfunn, oppdragsgiver og arbeidsgiver, produkt, utprøving, administrasjon, profesjon, kollegaer og til slutt personalet.