- Konceptualna ločitev med strojna oprema in navodila so omogočila, da se programska oprema obravnava kot neodvisno sredstvo.
- Med 60. in 70. leti se je profesionalizirala: programska kriza, programsko inženirstvo in ločeno obračunavanje.
- Procesi in modeli (slap, inkrementalni, spiralni) podpirajo kakovost nematerialnega izdelka.

Razumevanje, kdaj in zakaj smo začeli obravnavati programsko opremo kot izdelek Zahteva prehoditi pot, ki se začne z mehanskimi izračuni in doseže vrhunec v storitvah v oblaku. V samo nekaj desetletjih smo prešli od ogromnih strojev s fizičnimi navodili do nematerialnih programov, ki so licencirani, posodobljeni in celo uporabljeni kot storitev.
Na tem potovanju boste s primeri in zgodovinskim kontekstom videli, kako sta bila pojma strojne opreme in navodil ločenaKaj je sprožilo idejo o neodvisni prodaji programske opreme, kako se je njena proizvodnja profesionalizirala in kateri poslovni in licenčni modeli so oblikovali panogo, od lastniške programske opreme do brezplačne programske opreme in SaaS.
Od stroja do programa: od fizičnega sveta do navodil
Stoletja so bili izračuni avtomatizirani s fizičnimi napravami: od abakusa in analognih mehanizmov do strojev, kot je žakardov statvekjer so luknjane kartice določale vedenje brez popolnega ločevanja strukture in navodil.
Konceptualna ločitev se je začela oblikovati z Charles Babbage in Ada LovelaceBabbage si je analitični mehanizem zamislil kot programabilno napravo, Lovelace pa je opisal, kako različne kartice vsebujejo različne programe; to je bil začetek ideje, da je mogoče razlikovati med tem, kaj storiti, in tem, s čim to storiti.
Velik preskok se je zgodil v 20. stoletju z Alan Turing in von Neumannova arhitekturaTuring je formaliziral univerzalni stroj, ki je sposoben izvajati kateri koli algoritem; von Neumann je predlagal shranjevanje programov in podatkov v istem pomnilniku, kar je omogočilo spreminjanje navodil brez dotikanja strojne opreme.
Že v 40. in 50. letih prejšnjega stoletja, asemblerje in visokonivojske jezike, kot sta Fortran in Cobol Utrdili so idejo: kdorkoli bi lahko napisal program, ki bi deloval na družinah združljivih strojev, ne da bi pri tem preoblikoval fizične komponente.
Kaj je programska oprema in kaj pravzaprav zajema?
Beseda programska oprema je postala priljubljena v poznih petdesetih letih prejšnjega stoletja in pod to oznako so bili združeni vse neoprijemljivo, kar računalniški sistem obdelujeProgrami, podatki in z njimi povezana dokumentacija. John W. Tukey je izraz v tem smislu uporabil že leta 1957.
Ta pojem presega izvedljivo datoteko: Programska oprema vključuje tudi priročnike, specifikacije, podatke za obdelavo in uporabniške informacije.Navsezadnje je prav nefizični vidik tisti, ki daje strojni opremi pomen in funkcionalnost.
Tradicionalno se razvršča v tri glavne vrste: sistemska programska oprema (OS(krmilniki, pripomočki in strežniki), programske opreme programiranje (urejevalniki, prevajalniki, interpreterji, povezovalniki, razhroščevalniki in integrirana razvojna okolja (IDE) in aplikacijska programska oprema (poslovni, izobraževalni, medicinski, CAD, podatkovnih baz, Igratelekomunikacije itd.).
Od dodatka do izdelka: obdobja programske opreme in prelomna točka
V prvo obdobje, 1950–1965Programska oprema je bila obravnavana kot dodatek. Programiranje je potekalo po principu »kodiraj in popravi«, pri čemer je malo ali nič dokumentacije, omejene metode ter poskusi in napakeRazvoj je bil narejen po meri, avtor pa je sam uporabljal in vzdrževal svoj program.
La drugo obdobje, 1965–1972To pomeni odločilno spremembo: pojavita se večprogramska in večuporabniška okolja, in to se uveljavi. čas resničen in postati priljubljen prvi sistemi za upravljanje baz podatkovPredvsem pa se programska oprema začenja dojemati kot izdelek, ki ga je mogoče distribuirati stotinam ali tisočim strankam, in Začne se tako imenovana programska kriza saj kompleksnost in stroški vzdrževanja strmo naraščajo.
V tem kontekstu je Programsko inženirstvo leta 1968Inženirstvo, disciplina, ki uporablja inženirska načela pri načrtovanju, gradnji, delovanju in vzdrževanju programov. Pojavlja se tudi Jezik C leta 1972 za sisteme splošnega namena z nizko stopnjo učinkovitosti in zmogljivosti.
La tretje obdobje, 1972–sredina 80. letPrinaša porazdeljene sisteme, lokalna in globalna omrežja ter uporabo mikroprocesorjev. To povzroča mikroračunalniki in osebno računalništvokot tudi jeziki, kot je Basic, ki demokratizirajo učenje in programiranje.
V četrto obdobje, 1985–2000, prevladuje kolektivni vpliv: globalna omrežja, arhitekture odjemalec-strežnik, objektno usmerjene tehnologije, ekspertni sistemi, nevronske mreže e IAPojavi se Java v zgodnjih 90. letih z objektno usmerjenim oblikovanjem in prenosljivostjo ter mejniki, kot so Deep Blue Prikazujejo preskok v računalniški moči in programski opremi ter izdelkih, kot so Microsoft Encarta Ponazarjajo trženje programske opreme.
La peta doba, 2000–danesSplet, mobilni telefoni in ogromnih količin podatkov. Vseprisotnost interneta in pametnih telefonov pospešuje neprekinjeno dostavo, storitve v oblaku in umetna inteligencas čimer postane programska oprema osrednji del digitalnega gospodarstva.
Vzporedno so proizvajalci, kot je IBM, prešli od prodaje strojev in programske opreme kot celote k zaračunavajo ločeno za strojno in programsko opremoIn podjetja, ki so se izključno posvečala ustvarjanju in distribuciji programskih izdelkov, so zacvetela. Ta korak je utrdil programsko opremo kot tržno blago z lastnimi licencami, posodobitvami in podporo.
Kako izdelati programski izdelek: procesi in modeli
Izdelava zanesljivega izdelka zahteva postopek. Zajem in specifikacija zahtev To pomeni začetek: treba je ugotoviti, se dogovoriti in dokumentirati, kaj mora sistem početi in pod kakšnimi omejitvami, s čimer se ustvari SRS ali specifikacija zahtev programske opreme.
Sledijo faze, načrtovanje, kodiranje, testiranje, namestitev in vzdrževanjeČeprav se imena lahko razlikujejo, te faze obstajajo fleksibilno, odvisno od uporabljene metodologije. In tukaj pridejo na vrsto procesni modeli.
Model kaskadno Zaporedni linearni pristop vključuje napredovanje skozi faze z malo prostora za vrnitev, kar je uporabno pri togih projektih z jasnimi zahtevami, čeprav se redko uporablja v svoji čisti obliki. Praksa v resničnem svetu vključuje povratne informacije med fazami prilagoditi zasnovo in zahteve, ko se pojavijo dvoumnosti ali spremembe.
Da bi pojasnili evolucijsko naravo programske opreme, so se pojavili modeli iterativni inkrementalni in spiralniInkrementalni pristop predlaga dobavo delnih, a delujočih različic, od katerih je vsaka zgrajena na prejšnji, tako da stranka pridobi zgodnjo uporabnost in se zmanjša tveganje za velike predelave.
El Boehmov spiralni model Združuje iteracijo z eksplicitnim upravljanjem tveganj. Opredeljuje področja nalog, kot so komunikacija, načrtovanje, analiza tveganj, gradnja in zbiranje povratnih informacij, ter je navdihnila različice, kot je spirala Win-Win, ki uvaja pogajanja o pogojih zmage tako za stranko kot za dobavitelja.
Podatki sektorja poudarjajo izziv: Precejšnje število velikih projektov propade ali pa pride do velikih zamudPogosto ne zaradi tehničnih težav, temveč zaradi slabih metodologij ali slabega upravljanja zahtev in tveganj, zato so disciplinski postopki tako pomembni.
Od kode do dobave: artefakti, testiranje in namestitev
Med programiranjem izdelek prehaja skozi različna stanja. izvorno kodo To piše razvijalec. Prevajalnik lahko to pretvori v objektna koda vmesni program, ki se kasneje poveže s knjižnicami za generiranje izvedljivČe se jezik izvaja na interpretiran način, morda pred tem ni objektne kode ali izvedljive datoteke.
La Odpravljanje napak spremlja kodiranjeIn po tem pridejo formalni testi. Enotnimi testi se preverijo majhni deli, integracijski testi pa preverijo, ali moduli in podsistemi pravilno delujejo. Kasneje sledi obdobje beta testiranje v resničnih pogojih, da bi odkrili napake, ki so ušle prejšnjim fazam.
Namestitev prenese programsko opremo v ciljno okolje: uvajanje, konfiguracija in operativno preverjanjeKompleksni izdelki lahko zahtevajo strokovnjake in porazdeljene topologije, medtem ko ima potrošniška programska oprema vodene monterje za končnega uporabnika.
Nato pride najdaljša faza: vzdrževanjeZajema korektivne, izpopolnjujoče, prilagoditvene in evolucijske spremembe. Kakovost zasnove in dokumentacije določa njene stroške; s slabo dokumentacijo je lahko vzdrževanje tako drago, kot če bi začeli iz nič.
Neprekinjena evolucija: Lehmanovi zakoni
Uporabljena programska oprema se spreminja ali poslabša. Lehmanovi zakoni evolucije Zgoščajo opažanja o sistemih v uporabi: spremembe so nenehne, kompleksnost se ponavadi povečuje, razen če vlagate vanjo, funkcionalnost pa je treba razširiti, da se ohrani zadovoljstvo uporabnikov.
Med drugim navajajo, da Kakovost se zmanjša, če se ne prilagodiTe predpostavke so, da evolucijski procesi vključujejo povratne informacije in da organizacija dosega relativno konstantne ravni razvoja. Te predpostavke pomagajo pri načrtovanju različic in proračuniranju vzdrževalnih naporov.
Zahteve: srce tega, kar se gradi
Inženiring zahtev zagotavlja metode in orodja za Razumeti problem, preveriti s stranko in zagotoviti specifikacijeRazlikujemo uporabniške in sistemske zahteve, pa tudi funkcionalne, nefunkcionalne in domenske zahteve, s podtipi, kot so organizacijske ali zunanje pravne in etične zahteve.
Dobre prakse vključujejo definirati univerzum diskurzaPripravite delavnice za izvabljanje informacij, določite prioritete ciljev in odkrijte dvoumnosti. Obstaja več pristopov: od razširjenih leksikonov in scenarijev do bolj ortodoksnih metodologij, ki jih zajemajo standardi, kot so IEEE 830-1998 ali ogrodja za izboljšave tipa CMMI.
Poslovni modeli in licenciranje: od lastniške do odprtokodne in SaaS
Ko se je programska oprema uveljavila kot izdelek, se je pojavilo naslednje modeli licenciranja Različno. Lastniško licenciranje določa pogoje uporabe, dodelitev pravic in obseg veljavnosti. Nasprotno pa odprto licenciranje omogoča kopiranje, spreminjanje in redistribucijo, kar ustvarja odprte skupnosti in ekosisteme.
Od 80. in 90. let prejšnjega stoletja so bili vojne za standarde v operacijskih sistemih in platformah: Unix in njegove različice, Windows, vzpon proste programske opreme s projektom GNU in Linuxin krepitev uporabnikove vloge pri izbiri ne le strojne opreme, temveč tudi sistema in aplikacij.
Najnovejši preskok v modelu dostave je Programska oprema kot storitev, SaaSNjegove korenine segajo v sisteme deljenja časa v šestdesetih letih prejšnjega stoletja, sodobna priljubljenost pa je prišla z internetom in oblakom. Prej, v osemdesetih letih prejšnjega stoletja, so se pojavili prvi CRM-ji, ki so delili podatke o strankah, v devetdesetih letih prejšnjega stoletja pa je rast programske opreme včasih prehitela razpoložljivo strojno opremo, kar je povzročilo umik k centraliziranemu gostovanju.
Z novim tisočletjem je kombinacija vseprisotni spletni in oblačni podatki Zaradi tega je SaaS postal prevladujoča možnost: plačila naročnin, stalne posodobitve, elastično skaliranje in dostop, neodvisen od naprave. Danes obstaja skupaj s tradicionalnimi licencami, freemium modeli, mikrotransakcijami in oglaševanjem.
Ekonomski in družbeni vpliv: zakaj je bila pomembna pretvorba v izdelek
Dovoljeno je obravnavanje programske opreme kot samostojnega izdelka specializacija, ekonomija obsega in vrednostne verige Specifično. Čista programska podjetja so postala vredna več kot mnogi proizvajalci strojne opreme, življenjski cikli, API-ji in ogrodja pa so omogočili celotne ekosisteme tretjih oseb.
Pojavila pa so se tudi tveganja. Slab razvoj bi lahko imel milijonski stroški ali resne poslediceOd napak v rezervacijskih sistemih, ki povzročajo izgube, do okvar v kritičnih okoljih z lažnimi alarmi ali napačnimi odločitvami, ki vplivajo na ljudi, profesionalizacija procesa ni muhavost, temveč nuja.
V odgovor se je industrija okrepila dobre prakse, strogo testiranje in obvladovanje tveganjV okoljih z visokim tveganjem ali visoko stopnjo varnosti so še posebej primerni modeli, kot je spiralni, s poudarkom na tveganjih in standardih kakovosti; v drugih pa iterativni in inkrementalni pristopi uravnotežijo hitrost in nadzor.
Da bi ostala uporabna, mora programska oprema razvijajo se skupaj s svojim okoljemPrilagajanje novim platformam, izboljšanje delovanja, vključevanje novih funkcij in odzivanje na regulativne spremembe. In seveda vzdrževanje natančne dokumentacije, da vzdrževanje ne postane labirint.
Celotna ta zgodovinska, tehnična in ekonomska pot pojasnjuje, zakaj se programska oprema danes prodaja. Je licencirano ali ponujeno kot storitevz metrikami o uspehu, podpori, različicah in načrtovani upokojitvi. Razlika med strojno in programsko opremo je temelj za to, kako zasnujemo in tržimo sodobno tehnologijo.
Če pogledamo nazaj, postane jasno, da Prehod na programsko opremo kot izdelek se je oblikoval med šestdesetimi in sedemdesetimi leti prejšnjega stoletja.Zaradi naraščajoče kompleksnosti, potrebe po metodologijah, ločenega oblikovanja cen v primerjavi s strojno opremo in pojava specializiranih podjetij je industrija od takrat rasla. Jeziki, kot so Fortran, Cobol, C, Basic in Java, mejniki, kot so mikroprocesorji, internet, osebno računalništvo in umetna inteligenca, ter procesni modeli, kot so slap, inkrementalni in spiralni, so utrdili industrijo, ki zdaj uspeva tudi v oblaku in na mobilnih napravah.
Strasten pisec o svetu bajtov in tehnologije nasploh. Rad delim svoje znanje s pisanjem in to je tisto, kar bom počel v tem blogu, saj vam bom pokazal vse najbolj zanimive stvari o pripomočkih, programski opremi, strojni opremi, tehnoloških trendih in še več. Moj cilj je, da vam pomagam krmariti po digitalnem svetu na preprost in zabaven način.
