Programinės įrangos ir programinės įrangos kūrimas

Ar kas nors gali paaiškinti skirtumą tarp programinės įrangos kūrimo ir programinės įrangos architektūros?

Tiksliau; jei pasakysite, kad kas nors supažindins Jus su „dizainu“ - ką tikitės iš jų? Tas pats pasakytina ir apie „architektūrą“.

Mano tikras supratimas yra:

  • Dizainas: UML diagrama / blokinė diagrama / paprastieji rėmeliai (vartotojo sąsajai) konkrečiam moduliui / sistemos daliai.
  • Architektūra: komponento diagrama (parodo, kaip skirtingi sistemos moduliai sąveikauja vienas su kitu ir kitomis sistemomis), kokia kalba turėtų būti naudojama, šablonai ...?

Ištaisykite mane, jei aš neteisingai. Aš paminėjau Vikipediją, kur yra straipsniai apie http://en.wikipedia.org/wiki/Software_design ir http://en.wikipedia.org/wiki/Software_architecture , bet nesu įsitikinęs, ar juos teisingai supratau.

342
01 апр. rinkinys Mads Mobæk 01 Bal. 2009-04-01 13:00 '09 13:00 val. 2009-04-01 13:00
ответ 41 atsakymas
  • 1
  • 2

Jūs teisus, taip. Sistemos architektūra yra jos „skeletas“. Tai aukščiausias sistemos paėmimo lygis. Kokios duomenų saugyklos yra, kaip moduliai tarpusavyje sąveikauja, kokios yra atkūrimo sistemos. Be dizaino modelių, yra architektūriniai modeliai: MVC, trijų lygių daugiapakopis dizainas ir kt.

Programinės įrangos kūrimas yra atskirų modulių / komponentų projektavimas. Kokie yra x modulio uždaviniai ir funkcijos? Nuo Y klasės? Ką jis gali padaryti ir kas ne? Kokius dizaino modelius galiu naudoti?

Taigi, trumpai tariant, programinės įrangos architektūra labiau susijusi su visos sistemos dizainu, o programinės įrangos dizainas pabrėžia modulio / komponento / klasės lygį.

329
01 апр. atsakymas pateikiamas Razzie 01 balandžio. 2009-04-01 13:19 '09, 13:19, 2009-04-01 13:19

Kai kuriuose SDLC aprašymuose (programinės įrangos kūrimo gyvavimo ciklas) jie yra tarpusavyje keičiami, tačiau jie yra skirtingi. Jie vienu metu yra skirtingi (1) etapai, (2) atsakomybės sritys ir (3) sprendimų priėmimo lygiai.

  • Architektūra yra bendresnis vaizdas: rėmų, kalbų, sričių, tikslų ir aukšto lygio metodikų pasirinkimas ( racionalus , krioklys , judrus ir kt.).
  • Dizainas yra mažesnis paveikslėlis: kodo organizavimo planas; kokios bus skirtingų sistemos dalių sutartys; nuolatinis projektų metodikų ir tikslų įgyvendinimas. Specifikacija parašyta šiame etape.

Atrodo, kad šie du etapai derinami dėl įvairių priežasčių.

  • Mažesni projektai dažnai neturi pakankamai pajėgumų, kad planavimas būtų skirstomas į etapus.
  • Projektas gali būti įtrauktas į didesnį projektą, todėl dalys iš abiejų etapų jau buvo išspręstos. (Yra jau esančių duomenų bazių, susitarimų, standartų, protokolų, sistemų, pakartotinio naudojimo kodų ir tt).
  • Naujesni mąstymo būdai apie SDLC (žr. Agile metodologijas ) šiek tiek atkuria šį tradicinį požiūrį. Dizainas (architektūra mažiau) vyksta visoje SDLC. Dažnai yra daugiau iteracijų, kuriose visas procesas vyksta vėl ir vėl.
  • Programinės įrangos kūrimas bet kuriuo atveju yra sudėtingas ir sudėtingas, tačiau klientai / vadovai / pardavėjai paprastai apsunkina tikslų ir reikalavimų keitimą srauto viduryje. Vėliau projekte turėtų būti naudojami projektavimo ir net architektūriniai sprendimai, neatsižvelgiant į tai, ar tai yra planas, ar ne.

Net jei atsakomybės etapai ar sritys yra derinami ir vyksta visur, visada gerai žinoti, kokio lygio sprendimų priėmimas vyksta. (Mes galime tęsti visam laikui. Bandau ją laikyti santraukoje.) Baigsiu: Net jei atrodo, kad jūsų projektas neturi oficialaus architektūros ar projekto etapo / AOR / documentaiton, ar kas nors sąmoningai tai daro ar ne. Jei niekas nenusprendžia kurti architektūros, įvyksta numatytoji klaida, kuri tikriausiai yra prasta. Tas pats ir dizainui. Šios sąvokos yra beveik svarbesnės, jei nėra oficialių jų pateikimo etapų.

80
24 дек. Patrick Karcher atsakymas gruodžio 24 d 2009-12-24 18:39 '09, 18:39, 2009-12-24 18:39

Architektūra yra strateginė, o dizainas yra taktinis.

Architektūra apima sistemas, įrankius, programavimo paradigmas, komponentų programinės įrangos kūrimo standartus ir aukšto lygio principus.

Nors dizainas yra veikla, susijusi su vietiniais suvaržymais, pvz., Dizaino modeliais, programavimo idėjomis ir refaktoriais.

55
24 дек. Chris Kannon atsakymas, pateiktas gruodžio 24 d 2009-12-24 18:44 '09 18:44 2009-12-24 18:44

Radau tai, kai ieškojau paprasto architektūros ir dizaino atskyrimo.
Ką manote apie tokį požiūrį į juos:

  • Architektūra
  • - „ką“ statome;
  • dizainas „kaip“ mes statome;
38
28 марта '12 в 20:36 2012-03-28 20:36 atsakymą pateikė George S. kovo 28 d., 12 val. 20:36 2012-03-28 20:36
  • Architektūra - tai kompiuterinės ar kompiuterinės sistemos koncepcinė struktūra ir loginis organizavimas.

    Dizainas - tai planas arba brėžinys, sukurtas siekiant parodyti sistemos ar objekto išvaizdą ir funkciją, ar prieš jį sukuriant.

  • Jei „archyvuojate“ komponentą, apibrėžiate, kaip ji veikia didesnėje sistemoje.

    Jei „projektuojate“ tą patį komponentą, nurodote, kaip jis elgiasi.

Visa architektūra yra dizainas, bet ne visas dizainas yra architektūra.

What dalis yra dizainas, How konkretus įgyvendinimas ir What ir How yra susikerta architektūra.

Architektūros ir dizaino diferenciacijos vaizdas :

2019

21
19 дек. Atsakyti atsižvelgiant į „ TryinHard“ 19 d. 2013-12-19 07:56 '13, 7:56, 2013-12-19 07:56

Sakyčiau, kad, mano nuomone, esate teisus

Architektūra - sistemos elementų sistemos reikalavimų paskirstymas. Keturi teiginiai apie architektūrą:

  • Jame gali būti nustatyti nefunkciniai reikalavimai, pvz., Kalba ar modeliai.
  • Apibrėžia komponentų, sąsajų, laiko ir kt. Sąveiką
  • Ji neturėtų įvesti naujų funkcijų,
  • Ji išryškina (inžinerijos) funkcijas, kurias sistema turi atlikti elementams.

Architektūra yra svarbus žingsnis. kai sistemos sudėtingumas yra suskirstytas.

Pavyzdys: pagalvokite apie savo namus, jums nereikia savo virtuvės architekto (tik vienas elementas), bet visam pastatui reikalingi tam tikri sąveikos apibrėžimai, pvz., Durys ir stogas.

Dizainas yra informacinis pristatymas apie (siūlomą) funkcijos įgyvendinimą. Jis skirtas gauti atsiliepimus ir diskusijas su suinteresuotomis šalimis. Tai gali būti gera praktika, tačiau tai nėra svarbus vystymosi žingsnis .

Būtų malonu matyti, kad virtuvės dizainas pateikiamas prieš įrengiant virtuvę, tačiau tai nėra svarbu maisto ruošimui:

Jei manau apie tai, galite nurodyti:

  • Architektūra
  • suprojektuoti visuomenei / inžinieriams išsamesniu abstrakcijos lygiu.
  • dizainas skirtas visuomenei mažiau išsamią abstrakcijos lygį.
15
16 марта '11 в 13:03 2011-03-16 13:03 atsakymą pateikė user662182 kovo 16 '11, 13:03 2011-03-16 13:03

Mano priminimas:

  • Mes galime pakeisti dizainą neprašydami nieko.
  • Jei pakeisime architektūrą, turime tai perduoti kam nors (komandai, klientui, suinteresuotosioms šalims, ...)
14
24 нояб. Atsakymą pateikė Peter Gfader . 2012-11-24 02:31 '12, 2:31 am 2012-11-24 02:31

Manau, kad turėtume naudoti šią taisyklę, kad nustatytume, kada kalbame apie dizainą ir architektūrą: jei sukurtos programinės įrangos elementai gali būti suderinti vienas su programavimo kalbos sintaksė, tada tai yra dizainas, jei nėra architektūros.

Pavyzdžiui, jei matote klasės diagramą ar sekos schemą, galite susieti klasę ir jos santykius su objekto programavimo kalba, naudodami klasės sintaksę. Tai aiškiai yra dizainas. Be to, tai gali lemti tai, kad ši diskusija yra susijusi su programavimo kalba, kurią naudosite programinės įrangos diegimui. Jei naudojate „Java“, taikomas ankstesnis pavyzdys, nes „Java“ yra į objektą orientuota programavimo kalba. Jei pateikiate schemą, rodančią paketus ir jų priklausomybę, tai taip pat yra dizainas. Šiuo atveju elementą (paketą) galite suderinti su „Java“ sintaksė.

Dabar daroma prielaida, kad jūsų „Java“ programa yra padalinta į modulius, ir kiekvienas modulis yra paketų rinkinys (pateikiamas kaip jar failo diegimo vienetas), ir jums pateikiama diagrama, kurioje yra moduliai ir jų priklausomybės, o tada architektūra „Java“ (bent jau prieš „Java 7“ nėra galimybės susieti modulį (paketų rinkinį) į sintaksę. Taip pat galite pastebėti, kad ši schema yra žingsnis virš jūsų programinės įrangos modelio abstrakcijos lygio. Bet kuri aukščiau pateikta diagrama (šiurkščia granuliuota) yra paketo schema, kuri yra architektūrinis pavaizdavimas, sukurtas Java programavimo kalba. Kita vertus, jei kuriate 2 modulį, modulio schema yra dizainas.

(fragmentas http://www.copypasteisforword.com/notes/software-architecture-vs-software-design )

6
14 июля '11 в 5:58 2011-07-14 05:58 atsakymą pateikė Enrique Molinari, liepos 14 d., 11 val. 5:58 2011-07-14 05:58

Asmeniškai man tai patinka:

„Dizaineris rūpinasi tuo, kas atsitinka, kai vartotojas nuspaudžia mygtuką ir architektas daro tai, kas atsitinka, kai dešimt tūkstančių vartotojų nuspaudžia mygtuką.“

„SCEA“ pamoka „Java ™ EE“, kurią sukūrė Markas Cade ir Humphrey Sheila

5
12 апр. Tavi atsakymas, pateiktas balandžio 12 d 2010-04-12 20:04 '10, 08:04 PM 2010-04-12 20:04

Sutinku su daugeliu paaiškinimų; iš tiesų pripažįstame skirtumą tarp architektūrinio projektavimo ir detalios programinės įrangos kūrimo.

Nors dizainerio tikslas turėtų būti toks pat tikslus ir konkretus, kaip jis bus reikalingas vystymuisi; Architektas iš esmės siekia apibrėžti sistemos struktūrą ir pasaulinį elgesį taip pat, kaip jis reikalingas detaliam projektavimui.

Geras architektas užkirs kelią hiper-specifikacijoms - architektūra neturėtų būti pernelyg tiksliai apibrėžta, bet pakankamai (architektūriniai) sprendimai, sukurti tik tiems aspektams, kurie kelia brangiausią apdorojimo riziką ir efektyviai suteikia struktūrą („bendruomenę“), kurioje išsamus dizainas, t.y. vietos funkcionalumo kintamumas.

Iš tiesų, architektūros procesas arba gyvavimo ciklas paprasčiausiai seka šia tema - tinkamas abstrakcijos lygis, kad būtų galima apibūdinti (architektūriniu) prasmingų verslo reikalavimų struktūrą, o projektavimo etape - daugiau specifinių rezultatų.

5
17 июня '12 в 0:54 2012-06-17 00:54 atsakymą pateikė Ajay Shendye birželio 17 d., 12 val. 0:54 2012-06-17 00:54

Architektūra yra dizainas, bet ne visas dizainas yra architektūrinis. Todėl, griežtai kalbant, būtų patartina atskirti architektūrinį projektavimą ir ne architektūrinį projektavimą. Ir koks skirtumas? Tai priklauso nuo! Kiekvienas programinės įrangos architektas gali turėti kitokį atsakymą (ymmv!). Siekdami gauti atsakymą, mes rengiame savo heuristiką, pavyzdžiui, „klasės diagramos yra architektūros ir sekos schemos yra dizainas“. Daugiau informacijos rasite DSA knygoje .

Yra gerai žinoma, kad architektūra yra aukštesnio lygio, nei projektavimas, arba architektūra yra logiška, o dizainas yra fizinis. Tačiau ši koncepcija, nors ir visuotinai pripažinta, praktiškai nenaudinga. Kur nubrėžiate liniją tarp didelio arba mažo abstrakcijos, tarp loginio ir fizinio? Tai priklauso nuo!

Taigi mano pasiūlymas yra:

  • sukurti vieną projekto dokumentą.
  • pavadinkite šį projekto dokumentą taip, kaip norite, arba, geriau, nes skaitytojai yra labiau įpratę. Pavyzdžiai: „Programinės įrangos architektūra“, „Programinės įrangos specifikacija“.
  • Šį dokumentą padalinkite į pastabas ir nepamirškite, kad galite sukurti pateikimą kaip kito pateikimo patobulinimą.
  • įtraukdami kryžmines nuorodas arba hipersaitus, pateikite dokumento rodinius
  • tada turėsite aukštesnio lygio pristatymus, kuriuose matysite platų, bet seklią vaizdą apie dizainą ir arčiau pristatymo realizavimo.
  • Galite pažvelgti į architektūros dokumento su keliais vaizdais pavyzdį ( čia ).

Visa tai pasakiusi ... turime užduoti dar svarbesnį klausimą: kiek dizaino pakanka? Tai yra, kada turėčiau nustoti aprašyti dizainą (diagramose ar prozose) ir turėčiau pereiti prie kodavimo?

5
24 апр. Paulo Merson atsakymas, pateiktas balandžio 24 d 2013-04-24 21:34 '13, 9:34 val. 2013-04-24 21:34

... seniai tolimoje vietoje, filosofai nerimavo dėl vieno ir daugelio skirtumų. Architektūra - tai ryšys, kurio paklausa daug. Architektūra turi komponentų. Dizainas yra turinys, kurio reikia. Dizainas pasižymi savybėmis, savybėmis, savybėmis. Mes paprastai manome, kad dizainas yra architektūroje. Dualistinis mąstymas suteikia daug originalo. Tačiau architektūra taip pat yra dizaino. Tai yra viskas, ką mes pasirenkame, kad pamatytume, kas yra priešais mus - vieną ar kitą.

3
05 апр. atsakymas duotas buzzcoda 05 Bal 2012-04-05 18:44 '12, 18:44, 2012-04-05 18:44

Man labai patiko šis straipsnis dėl nykščio taisyklės dėl architektūros atskyrimo nuo dizaino:

http://www.eden-study.org/articles/2006/abstraction-classes-sw-design_ieesw.pdf

Jis pavadino įtampos / vietovės hipotezę. Pareiškimai apie ne vietos ir intensyvios programinės įrangos pobūdį yra architektūriniai. Vietiniai ir intensyvūs pareiškimai yra konstruktyvūs.

3
23 янв. atsakymą pateikė LindsayBradfordas . 2012-01-23 07:58 '12 at 7:58 2012-01-23 07:58

Programinės įrangos architektūra "yra susijusi su problemomis ... be algoritmų ir skaičiavimų duomenų struktūrų ribų.

Architektūra konkrečiai nenagrinėja ... įgyvendinimo detalių (pvz., Algoritmų ir duomenų struktūros). Architektūrinis dizainas apima turtingesnį abstrakcijų rinkinį, nei paprastai teikiamas OOD (objektinis dizainas).

Dizainas orientuotas į moduliavimo ir detalių dizaino elementų, jų algoritmų ir procedūrų sąsajas bei duomenų tipus, reikalingus architektūrai paremti ir reikalavimams patenkinti.

„architektūra“ dažnai vartojama kaip paprastas „dizaino“ sinonimas (kartais prieš tai yra „būdvardis“ aukštas lygis). Ir daugelis žmonių naudoja terminą „architektūros modeliai“ kaip „dizaino modelių“ sinonimą.

Peržiūrėkite šią nuorodą.

Terminų apibrėžimas Architektūra, projektavimas ir įgyvendinimas

3
24 дек. Atsakymas suteiktas Tebo 24 d. 2009-12-24 18:50 '09, 18:50, 2009-12-24 18:50

Gana subjektyvus, bet aš:

Architektūra Bendras sistemos projektavimas, įskaitant sąsajas su kitomis sistemomis, aparatūros reikalavimai, bendras komponentų projektavimas ir duomenų srautas.

Projektavimas Komponento organizavimas ir srautas bendroje sistemoje. Tai taip pat apims komponento API sąveikai su kitais komponentais.

3
24 дек. Atsakymą pateikė Jesse Vogt . 2009-12-24 18:46 '09, 06:46 PM 2009-12-24 18:46

Programinės įrangos ar skaičiavimo sistemos programinė architektūra yra sistemos, turinčios programinės įrangos komponentus, struktūra arba struktūros, išoriškai matomos šių komponentų savybės ir jų tarpusavio ryšys.

(iš Wikipedia, http://en.wikipedia.org/wiki/Software_architecture )

Programinės įrangos kūrimas yra problemų sprendimas ir programinės įrangos sprendimo planavimas. Apibrėžę programinės įrangos tikslus ir charakteristikas, programinės įrangos kūrėjai sukurs ar naudos dizainerius, kad sukurtų sprendimų planą. Ji apima problemas, susijusias su komponentu ir žemo lygio algoritmu, taip pat architektūros išvaizda.

(iš Wikipedia, http://en.wikipedia.org/wiki/Software_design )

Nepavyko pasakyti geriau :)

3
24 дек. Atsakymą pateikė Larry Watanabe . 2009-12-24 18:45 '09 18:45 2009-12-24 18:45

Geras klausimas ... Nors linija tarp jų vargu ar yra ryški, ryški linija, imho, jei naudojate abu terminus, tai Architektūra apima daugiau techninių ar struktūrinių sprendimų, kaip kurti ar statyti kažką, ypač tuos, kurie yra bus sunku (ar sunkiau) keisti po įgyvendinimo, o Dizainas apima sprendimus, kuriuos galima lengvai keisti vėliau (pvz., metodų pavadinimai, klasės organization failų organizavimo struktūra, dizaino modeliai, ar naudoti atskirus ar statinius klasė, skirta išspręsti konkrečią problemą ir tt) ir (arba) tie, kurie turi įtakos sistemos ar taikymo išvaizdai ar estetiniams aspektams (žmogaus sąsaja, naudojimo paprastumas, išvaizda ir tt).

3
24 дек. Charles Bretana atsakymas gruodžio 24 d. 2009-12-24 18:42 '09 18:42 2009-12-24 18:42

Taip, tai skamba man. Dizainas yra tai, ką ketinate daryti, o architektūra - tai būdas sujungti bitus ir dizaino dalis. Tai gali būti agnostinė kalba, tačiau paprastai nurodomos naudojamos technologijos, t. Y. LAMP v Windows žiniatinklio paslauga v RPC.

3
01 апр. Atsakymas pateikiamas p. Telly balandžio 1 d. 2009-04-01 13:05 '09 13:05 val. 2009-04-01 13:05

Architektūrą žiūriu kaip Patrick Carcher - didelį vaizdą. Pavyzdžiui, galite pateikti pastato architektūrą, peržiūrėti jos struktūrinę paramą, >

Taigi, pastatydami pastatą, neparengėte kiekvieno biuro plano. Manau, tas pats pasakytina ir apie programinę įrangą.