Programvara [1] [2] [3] (uttalsprogramvara [ 3] [4] [5] [6] är också acceptabel ) ( mjukvara ) är ett program eller en uppsättning program som används för att styra en dator ( ISO/IEC 26514: 2008 ) [7] .
Det finns andra definitioner från internationella och ryska standarder:
Programvara är en av typerna av datorsystemprogramvara , tillsammans med tekniskt (hårdvara), matematiskt, informativt, språkligt, organisatoriskt, metodologiskt och juridiskt stöd [13] .
De akademiska områdena som studerar programvara är datavetenskap och programvaruteknik .
I datorslang används ordet " mjuk " ofta , härlett från det engelska ordet " mjukvara ", som först användes i denna mening i en artikel i American Mathematical Monthly av matematikern John Tukey från Princeton University 1958 [14] .
Det första programmet skrevs av Ada Lovelace för Charles Babbages Difference Engine , men eftersom denna maskin aldrig blev färdig, förblev Lady Lovelaces utveckling rent teoretisk [15] .
Den första teorin om mjukvara föreslogs av den engelske matematikern Alan Turing 1936 i hans essä "On computable numbers with an application to the Entscheidungsproblem" [ 16 ] [17] [18] . Han skapade vad som är känt som en Turing-maskin , en matematisk modell av en abstrakt maskin som kan utföra sekvenser av rudimentära operationer som tar maskinen från ett fast tillstånd till ett annat. Huvudidén var att matematiskt bevisa det faktum att vilket som helst förutbestämt tillstånd i systemet alltid kan uppnås genom sekventiell exekvering av en ändlig uppsättning elementära kommandon (program) från en fast uppsättning kommandon.
De första elektroniska datorerna på 1940- och 1950-talen omprogrammerades genom att byta vippomkopplare och återansluta kablar, vilket krävde en djup förståelse av deras interna struktur. Dessa maskiner inkluderade i synnerhet ENIAC (som dock senare modifierades så att den åtminstone delvis kunde programmeras med hjälp av hålkort ) [19] .
Ett viktigt steg mot moderna datorer var övergången till John von Neumann-arkitekturen , först förkroppsligad i Storbritannien , i den dator som utvecklades under ledning av J. R. Womersley och med deltagande av Alan Turing , känd som Mark I. Det första programmet som lagrades i datorns minne lanserades den 21 juni 1941. För att underlätta programmeringen av denna maskin kom Turing med ett stenografikodningssystem där en sekvens av teletypsymboler som matas ut till ett hålband användes för att representera en binär maskinkod [20] .
En av Turings anställda, John Mauchly , som senare (tillsammans med John Presper Eckert ) blev chef och grundare av Eckert-Mauchly Computer Corporation , som utvecklade datorer som BINAC och UNIVAC , instruerade sina anställda att skapa en översättare av algebraiska formler. Även om detta ambitiösa mål inte uppnåddes på 1940-talet, under ledning av Mauchly, utvecklades den så kallade " Short Code ", där operationer och variabler kodades med tvåteckenkombinationer. Den korta koden implementerades med hjälp av tolken [21] . Grace Hopper , som arbetade sedan tidigt 1950-tal med en uppsättning matematiska subrutiner för UNIVAC I , uppfann länkprogrammet " A -0 " som, givet en identifierare , hämtade den önskade subrutinen från ett bibliotek lagrat på magnetband och skrev den ner till den tilldelade platsen i RAM [22] .
De första programmeringsspråken på hög nivå dök upp på 1950-talet, med John Backus som utvecklade FORTRAN och Grace Hopper som utvecklade COBOL . Sådan utveckling förenklade avsevärt skrivningen av applikationsprogramvara, som sedan skrevs av varje företag som köper en dator [23] .
I början av 1950-talet hade begreppet mjukvara ännu inte utvecklats. Så ingenting sades om honom i Fortune- artikeln från januari 1952 "Office Robots", som beskrev Univac-datorer. Även om artikeln redan talar om datorn som en universell enhet, beskrevs programmeringsprocessen i denna artikel anakronistiskt som "växling av vippomkopplare" [24] . Men i mitten av 1950-talet var anpassad mjukvaruutveckling [25] redan väletablerad , även om termen "mjukvara" i sig ännu inte användes, då talade de helt enkelt om " programmering på beställning " eller " programmeringstjänst " [26] . Det första mjukvaruföretaget var System Development Corporation , etablerat 1956 från det amerikanska regeringsägda RAND Corporation [27] . I detta skede var kunderna för mjukvara (unika och icke-replikerbara) stora företag och statliga myndigheter, och kostnaden för en miljon dollar för programmet var inte ovanlig [28] .
Själva termen "mjukvara" har kommit till stor användning sedan början av 1960-talet, då det blev relevant att skilja mellan kommandona som styr en dator och dess fysiska komponenter - hårdvara [29] . Samtidigt började bildandet av mjukvaruindustrin som en oberoende industri . Det första företaget för mjukvaruutveckling var Computer Sciences Corporation , grundat 1959 av Roy Nutt och Fletcher Jones med ett startkapital på $100. CSC:s första kunder, och mjukvaruföretagen som följde det, var superstora företag och statliga organisationer som NASA [30] , och företaget fortsatte att verka på marknaden för anpassad mjukvara, liksom andra tidiga privata mjukvarustartups som Computer Usage Company (CUC ) [27] .
De första självutgivna mjukvaruprodukterna som inte levererades med datorhårdvara var datordokumentationsgeneratorn AUTOFLOW , som automatiskt ritar flödesscheman , släppt av Applied Data Research 1965, och MARK-IV programmeringsspråksöversättaren , utvecklad 1960-1967 år. på Informatics, Inc. [26] [31] Framväxten av företagsprogramvarumarknaden är nära kopplad till tillkomsten av IBM System/360 -familjen av datorer . Tillräckligt massiva, relativt billiga datorer, kompatibla med varandra på nivån av programkod, öppnade vägen för replikerad programvara [32] .
Efter hand utökades kretsen av mjukvarukunder, vilket stimulerade utvecklingen av nya typer av mjukvara. Således dök de första företagen som specialiserade sig på utveckling av datorstödda designsystem upp [30] .
I november 1966 tog Business Week upp ämnet mjukvaruindustrin för första gången. Artikeln hette "Software Gap - A Growing Crisis for Computers" och talade om både utsikterna för denna verksamhet och krisen i samband med brist på programmerare [24] . Typiska mjukvaruprodukter från den tiden tjänade till att automatisera vanliga affärsuppgifter som löner eller automatisera affärsprocesserna i ett medelstort företag som en fabrik eller en affärsbank . Kostnaden för sådan mjukvara var vanligtvis mellan $5 000 och $100 000 [26] .
Uppkomsten på 1970-talet av de första persondatorerna (som Altair 8800 ) skapade förutsättningarna för uppkomsten av en massprogramvarumarknad. Ursprungligen distribuerades program för persondatorer i "förpackad" form genom köpcentra eller via post och prissattes till $ 100-500 [26] .
Betydande för den begynnande massmarknaden för mjukvara var sådana produkter som kalkylbladet VisiCalc , vars idé kom till Daniel Bricklin , när han som MIT -examen och mjukvaruingenjör vid DEC tog kurser vid Harvard Business School och ville lätta på sig själv med tråkiga ekonomiska beräkningar [33] , och ordbehandlaren WordStar , som utvecklades av Seymour Rubinstein , efter att noggrant studerat marknadens behov [34] . VisiCalc talades först om som en mördarapplikation , det vill säga en datorapplikation som, genom att den existerar, bevisar behovet (och ofta behovet av att köpa) plattformen för vilken ett sådant program är implementerat. För VisiCalc och WordStar har persondatorer blivit en sådan plattform, som tack vare dem har blivit ett arbetsverktyg från en rik leksak för nördar . De startade mikrodatorrevolutionen , och dessa program har konkurrenter: SuperCalc-kalkylblad , Lotus 1-2-3 , dBase II- databashanteringssystem , WordPerfect -ordbehandlare , etc. [35] Ordbehandlare, kalkylblad, databashanteringssystem, såväl som grafik redaktörer , blev snart häftklamrar på marknaden för persondatorprogramvara [36] .
I mitten av 1990-talet gjorde massreplikering det möjligt att sänka kostnaden för mjukvara för persondatorer till etthundra till femhundra dollar [26] , samtidigt som mjukvaruproducenternas verksamhet fick en viss likhet med ljudinspelningsföretagens verksamhet [35 ] .
Tillvägagångssätt för klassificering av programvara formaliseras tillräckligt detaljerat i den internationella standarden ISO/IEC 12182 [37] . Den första versionen av standarden förutsatte särskilt 16 kriterier för klassificering av mjukvaruverktyg:
Exempel på PS-funktionsklasser är:
Exempel på applikationsdomänklasser är:
Exempel på PS-skalklasser är:
Exempel på kritikalitetsklasser är:
Exempel på användarklasser är:
Exempel på stabilitetsklasser är:
Beroende på graden av portabilitet delas program in i
Enligt distributions- och användningssätt delas program in i
Beroende på syftet med programmet är de indelade i:
Beroende på typen av program är de indelade [38] i:
Klassificeringen av programvara efter branschsektor innefattar flera tillvägagångssätt. Generellt sett delas mjukvara in i anpassad , det vill säga skapad för en specifik kund, och produkt , det vill säga skapad för försäljning på marknaden. I sin tur, beroende på typen av konsument, delas mjukvara in i Business-to-Business ( B2B ), det vill säga för företag och organisationer, och Business-to-Consumer ( B2C ), det vill säga för individer [39] .
Ett av alternativen för att klassificera efter branschsektor är uppdelningen i programvara för en företagskund ( engelska företagsprogramvaruleverantörer ), programvara för masskonsumenter ( engelska massmarknadsmjukvaruleverantörer ) och IT-tjänster [40] .
Ett annat tillvägagångssätt är att dela upp mjukvaruindustrin i tre sektorer: affärsprodukter för allmänna ändamål ( Engelska Business Function Software ), specialiserade affärsprodukter ( English Industrial Business Software ) och produkter för privatlivet ( Engelska Consumer Software ). Allmänna affärsprodukter är utformade för att stödja företags och organisationers funktion och inkluderar redovisningssystem, finansiella system, personalregistersystem etc. Specialiserade affärsprodukter är inriktade på uppgifterna för en specifik typ av verksamhet: geografiska informationssystem, medicinska system , logistiksystem, etc. n. Integritetsprodukter inkluderar antivirus- och informationssäkerhetsprogram, olika användbara verktyg, utbildningsprogram, multimediaprogramvara, etc. [39]
En uppsättning program som ger kontroll över datorsystemkomponenter , såsom en processor , RAM , input-out-enheter , nätverksutrustning , som fungerar som ett "mellanskiktsgränssnitt", på vars ena sida finns hårdvaran, och på den andra, användaren applikationer. Till skillnad från applikationsprogramvara löser inte systemprogramvara specifika praktiska problem, utan säkerställer endast driften av andra program, förser dem med servicefunktioner som abstraherar detaljerna i hårdvaru- och firmwareimplementeringen av datorsystemet, hanterar hårdvaruresurserna i datorsystemet . Tilldelningen av denna eller den mjukvaran till systemet är villkorad och beror på de konventioner som används i ett visst sammanhang. Som regel inkluderar systemprogramvara operativsystem , verktyg , databashanteringssystem , en bred klass av mellanprogram .
Tillämpningsprogram är ett program utformat för att utföra vissa användaruppgifter och är utformat för direkt interaktion med användaren.
Användaren får programvaran tillsammans med en licens , som ger honom rätt att använda mjukvaruprodukten, i enlighet med villkoren i licensen. Som regel begränsar dessa villkor användarens möjlighet att överföra mjukvaruprodukten till andra användare, ändra koden.
En del av programvaran kommer med en gratis licens. Sådana licenser tillåter dig att distribuera programvaran samt modifiera den.
En del av programvaran distribueras som gratisprogram. Det finns också shareware. I det här fallet får användaren vanligtvis en gratis demoversion av mjukvaruprodukten med något begränsade funktioner under en viss provperiod, och efter att den är slut är han skyldig att antingen köpa produkten eller avinstallera den.
Ordböcker och uppslagsverk | ||||
---|---|---|---|---|
|
Mjukvaruutveckling | |
---|---|
Bearbeta | |
Koncept på hög nivå | |
Vägbeskrivning |
|
Utvecklingsmetoder _ | |
Modeller |
|
Anmärkningsvärda siffror |
|
_ | Mjukvarudistribution|
---|---|
Licenser | |
Inkomstmodeller | |
Leveransmetoder |
|
Bedrägligt/olagligt | |
Övrig |
|