Kuo skiriasi programinės įrangos inžinerija ir programinės įrangos architektūra?


Atsakymas 1:
  • Programinės įrangos inžinieriai, be programavimo, atlieka ir kitas užduotis. Jie taip pat užsiima kitais programinės įrangos kūrimo aspektais, tokiais kaip projektavimas ir testavimas. Programinės įrangos architektai dirba daug aukštesniame lygyje - jų darbas prasideda nuo aukšto lygio architektūrinių sprendimų, tokių kaip platforma, aplinka ir verslo sumetimai. Tada jie suskaido šiuos dalykus ir nusako sistemos orkestravimą bei tam reikalingas posistemes ir modulius. Nuspręskite, kurias technologijas ar sistemas naudoti pagrindiniams komponentams, apibrėždami kodavimo standartus projektui ir pan. Tada programinės įrangos architektų sukurtas darbas naudojamas programinės įrangos inžinieriams išsiaiškinti detales. Kita vertus, programinės įrangos architektas paprastai taip pat palaiko ryšius su verslu ir turi juos informuoti apie savo sprendimų padarinius (ty ko negalima pakeisti, nes tam reiktų iš esmės pertvarkyti sistemą).

Atsakymas 2:

Paprastai kalbama apie taikymo sritį ir detales. Kadangi vis daugiau ir daugiau IT peizažų ar taikomųjų sistemų yra labai sudėtingesni, o norint išnaudoti atsirandančias paskirstytojo skaičiavimo koncepcijas ir pakartotinai naudoti esamas paslaugas, arba kurti naujas, arba naudoti sudėtingesnes komponentų paslaugas, tokias kaip „NoSQL“ ir „Reliaciniai“ duomenų šaltiniai, reikia programinės įrangos Sistemų architektūra, skirtinga nuo dizaino, tampa vis svarbesnė.

Bendra nykščio taisyklė man yra ta, kad komponentų lygmenyje reikalingas dizainas, o kai naudojami keli komponentai - architektūra. Tačiau aš manau, kad norint gerai atlikti architektūrą, pirmiausia reikėjo atlikti projektavimą, ypač sistemų ir programinės įrangos inžinerijos srityse. Architektūra iš tikrųjų reikalauja tam tikros mąstysenos, kuri ne visada akivaizdi tose, kurios yra geros dizaino. Kai kuriose architektūros formose būtinas gebėjimas atskirti ar suskirstyti į dalis ir visiškai įvertinti skirtingas taksonomijas. Galimybė įvertinti sistemos naudojimą (atsižvelgiant į vartotojo norų ar verslo tikslų supratimą) ir paversti juos patobulinta sąveika ir reikiamomis funkcijomis taip pat yra architekto atsargoje. Aš kartais galvoju, kad verslo analitikai mano, kad tai yra jų vaidmuo, todėl gali susidaryti tam tikra įtampa tarp tų, kurie nustato reikalavimus, ir tų, kurie daro tai, kas vadinama konceptualiu dizainu - sąvokų, modeliuojančių tai, ką vartotojas nori padaryti, kūrimu ir kaip sistema ar programa turi veikti.

Taigi, norėdami pateikti pavyzdį programinės įrangos architektūros ar programinės įrangos projektavimo srityje: sudėtingo daugiasluoksnio sprendimo programinės įrangos architektūroje gali būti atkreiptas dėmesys į galutinio vartotojo funkcionalumo (ir, tarkime, jo pritaikymą naršyklėje) išsiskyrimą ir kaip bendra programa gali veikti saugumo, kelių formų, bendro stiliaus, rėmelių ar skydelių ir pan. atžvilgiu. Jie taip pat gali pažvelgti į tai, kas dedama į tarpinę programinę įrangą ar paslaugų sluoksnį, ir kokio bendro modelio gali prireikti (pvz., modelio peržiūros valdiklis), kokie yra dideli objektai (pvz., klientas, produktas, inventorius, užsakymas ir kt.) ir kokie duomenų subjektai gali patekti į kokį duomenų šaltinį (pvz., informacija apie klientą viename duomenų šaltinyje, istorija kitame, tarkime, veikla kitame, tarkime), kas Patvarumo metodas gali būti geriausias (pvz., objektas, duomenų rinkinys, grafikas ir kt.) ir bendrosios sistemos priemonės, tokios kaip registravimas, prietaisai, prieigos kontrolė ir kt.

Tada dizaineris perkels tai į kitą lygį ir išsiaiškins arba net sujungs ir patobulins dizainą įgyvendinimo tikslais; visos klasės modeliai, ekrano išdėstymai ir sąveikos, įvykių modeliai, pastovumas ir vientisumas (pvz., susiję objektai, raktų generavimas, atributų vientisumo patikrinimas, talpyklos kaupimas ir tt). Žingsnis nuo projektavimo iki diegimo būtų mažesnis žingsnis nei perėmimas nuo konceptualaus ir logiško, o tai dažnai lemia prielaidas ir nesuderinamumus tarp kūrėjų ar didesnių sistemų, ištisų kūrimo komandų.

Asmeniškai aš nenorėčiau sukurti didelės atskirties tarp architektūros ir dizaino, nes matau, kad jie yra susieti, tačiau greičiausiai taip yra todėl, kad aš palaikau labiau meniškai šališką dizaino apibrėžimą: imtis problemos ir kurti sprendimą, kuris išspręstų problema ir turi didesnę naudą, jei įmanoma, (kartais vadinama nefunkcionaliomis ar savybėmis - nė vienas terminas nepateisina TJO). Taigi gerai suprojektuota programa ne tik suteikia vartotojui funkcionalumo, bet ir leidžia lengvai ir patogiai naudotis, ir atrodo gražiai, todėl bendra patirtis teikia džiaugsmą. Jei tai skamba kaip „Apple“ (bent jau taip, kaip buvo), tada atsiprašau tų, kurie yra iš „Microsoft“ stovyklos. Atminkite, kad ką tik pamatę „Surface Studio“, stalai gali pasisukti.

Atsiprašome čia pateiktų asmeninių nuomonių ir tikiuosi, kad perskaitėte jas anksčiau, kad sužinotumėte, kur gali sustoti programinės įrangos architektūra ir prasideda programinės įrangos kūrimas. Visos tokios sąvokos yra plačios, dažnai perkrautos ir joms priklauso nuomonė; tai tik dar vienas dalykas, kuris, tikiuosi, bus įvertintas.


Atsakymas 3:

Paprastai kalbama apie taikymo sritį ir detales. Kadangi vis daugiau ir daugiau IT peizažų ar taikomųjų sistemų yra labai sudėtingesni, o norint išnaudoti atsirandančias paskirstytojo skaičiavimo koncepcijas ir pakartotinai naudoti esamas paslaugas, arba kurti naujas, arba naudoti sudėtingesnes komponentų paslaugas, tokias kaip „NoSQL“ ir „Reliaciniai“ duomenų šaltiniai, reikia programinės įrangos Sistemų architektūra, skirtinga nuo dizaino, tampa vis svarbesnė.

Bendra nykščio taisyklė man yra ta, kad komponentų lygmenyje reikalingas dizainas, o kai naudojami keli komponentai - architektūra. Tačiau aš manau, kad norint gerai atlikti architektūrą, pirmiausia reikėjo atlikti projektavimą, ypač sistemų ir programinės įrangos inžinerijos srityse. Architektūra iš tikrųjų reikalauja tam tikros mąstysenos, kuri ne visada akivaizdi tose, kurios yra geros dizaino. Kai kuriose architektūros formose būtinas gebėjimas atskirti ar suskirstyti į dalis ir visiškai įvertinti skirtingas taksonomijas. Galimybė įvertinti sistemos naudojimą (atsižvelgiant į vartotojo norų ar verslo tikslų supratimą) ir paversti juos patobulinta sąveika ir reikiamomis funkcijomis taip pat yra architekto atsargoje. Aš kartais galvoju, kad verslo analitikai mano, kad tai yra jų vaidmuo, todėl gali susidaryti tam tikra įtampa tarp tų, kurie nustato reikalavimus, ir tų, kurie daro tai, kas vadinama konceptualiu dizainu - sąvokų, modeliuojančių tai, ką vartotojas nori padaryti, kūrimu ir kaip sistema ar programa turi veikti.

Taigi, norėdami pateikti pavyzdį programinės įrangos architektūros ar programinės įrangos projektavimo srityje: sudėtingo daugiasluoksnio sprendimo programinės įrangos architektūroje gali būti atkreiptas dėmesys į galutinio vartotojo funkcionalumo (ir, tarkime, jo pritaikymą naršyklėje) išsiskyrimą ir kaip bendra programa gali veikti saugumo, kelių formų, bendro stiliaus, rėmelių ar skydelių ir pan. atžvilgiu. Jie taip pat gali pažvelgti į tai, kas dedama į tarpinę programinę įrangą ar paslaugų sluoksnį, ir kokio bendro modelio gali prireikti (pvz., modelio peržiūros valdiklis), kokie yra dideli objektai (pvz., klientas, produktas, inventorius, užsakymas ir kt.) ir kokie duomenų subjektai gali patekti į kokį duomenų šaltinį (pvz., informacija apie klientą viename duomenų šaltinyje, istorija kitame, tarkime, veikla kitame, tarkime), kas Patvarumo metodas gali būti geriausias (pvz., objektas, duomenų rinkinys, grafikas ir kt.) ir bendrosios sistemos priemonės, tokios kaip registravimas, prietaisai, prieigos kontrolė ir kt.

Tada dizaineris perkels tai į kitą lygį ir išsiaiškins arba net sujungs ir patobulins dizainą įgyvendinimo tikslais; visos klasės modeliai, ekrano išdėstymai ir sąveikos, įvykių modeliai, pastovumas ir vientisumas (pvz., susiję objektai, raktų generavimas, atributų vientisumo patikrinimas, talpyklos kaupimas ir tt). Žingsnis nuo projektavimo iki diegimo būtų mažesnis žingsnis nei perėmimas nuo konceptualaus ir logiško, o tai dažnai lemia prielaidas ir nesuderinamumus tarp kūrėjų ar didesnių sistemų, ištisų kūrimo komandų.

Asmeniškai aš nenorėčiau sukurti didelės atskirties tarp architektūros ir dizaino, nes matau, kad jie yra susieti, tačiau greičiausiai taip yra todėl, kad aš palaikau labiau meniškai šališką dizaino apibrėžimą: imtis problemos ir kurti sprendimą, kuris išspręstų problema ir turi didesnę naudą, jei įmanoma, (kartais vadinama nefunkcionaliomis ar savybėmis - nė vienas terminas nepateisina TJO). Taigi gerai suprojektuota programa ne tik suteikia vartotojui funkcionalumo, bet ir leidžia lengvai ir patogiai naudotis, ir atrodo gražiai, todėl bendra patirtis teikia džiaugsmą. Jei tai skamba kaip „Apple“ (bent jau taip, kaip buvo), tada atsiprašau tų, kurie yra iš „Microsoft“ stovyklos. Atminkite, kad ką tik pamatę „Surface Studio“, stalai gali pasisukti.

Atsiprašome čia pateiktų asmeninių nuomonių ir tikiuosi, kad perskaitėte jas anksčiau, kad sužinotumėte, kur gali sustoti programinės įrangos architektūra ir prasideda programinės įrangos kūrimas. Visos tokios sąvokos yra plačios, dažnai perkrautos ir joms priklauso nuomonė; tai tik dar vienas dalykas, kuris, tikiuosi, bus įvertintas.