6.1 Pagkabulok

Sa kabila ng iba't ibang pamantayan, ang pangunahing gawain sa pagbuo ng malalaking sistema ay ang gawain ng pagbawas sa pagiging kumplikado ng system . Upang mabawasan ang pagiging kumplikado, wala pang naimbento kundi ang paghahati sa mga bahagi.

Minsan, para sa pagiging simple, ito ay tinatawag na prinsipyo ng "divide and conquer", ngunit, mula sa punto ng view ng software architect, pinag-uusapan natin ang hierarchical decomposition .

Ang isang kumplikadong sistema ay dapat na binuo mula sa isang maliit na bilang ng mga mas simpleng subsystem, na ang bawat isa, sa turn, ay binuo mula sa mas maliliit na bahagi, at iba pa hanggang sa ang pinakamaliit na bahagi ay sapat na simple upang direktang maunawaan at malikha.

Pagkabulok

Ang magandang balita ay ang solusyon na ito ay hindi lamang ang kilala, ngunit pangkalahatan din. Bilang karagdagan sa pagbabawas ng pagiging kumplikado, sabay-sabay itong nagbibigay ng flexibility ng system , mahusay na scalability , at mas mataas na resiliency sa pamamagitan ng pagdo-duplicate ng mga kritikal na bahagi.

Alinsunod dito, pagdating sa pagbuo ng arkitektura ng programa, paglikha ng istraktura nito, nangangahulugan ito ng pag-decomposing ng programa sa mga subsystem, serbisyo, layer, subroutine at functional module at pag-aayos ng kanilang pakikipag-ugnayan sa isa't isa at sa labas ng mundo.

At ang pinakamahalagang bagay dito ay ito: mas independyente ang mga subsystem, mas ligtas na tumuon sa pagbuo ng bawat isa sa kanila nang hiwalay sa isang partikular na punto ng oras at huwag mag-alala tungkol sa lahat ng iba pang bahagi.

6.2 Mga pakinabang ng modular na arkitektura

Ang paggamit ng prinsipyo ng hierarchical decomposition ay nagbibigay-daan sa iyo upang mapupuksa ang kaguluhan sa libu-libong mga klase ng iyong code. Tandaan na ang iyong code ay nahahati sa mga pakete (package) at mga subpackage? Ito ay isa sa mga expression para sa hierarchical decomposition.

Ang iyong programa ay lumiliko mula sa isang grupo ng mga klase sa isang hanay ng mga aklatan at mga module na nakikipag-ugnayan sa isa't isa ayon sa mahusay na tinukoy at simpleng mga panuntunan. Ito, sa turn, ay nagbibigay-daan sa iyo upang makontrol ang pagiging kumplikado nito, at nagbibigay din sa iyo ng pagkakataong makuha ang lahat ng mga benepisyo na karaniwang nauugnay sa konsepto ng isang mahusay na arkitektura.

Narito ang mga pinakapangunahing:

  • Scalability - ang kakayahang palawakin ang system at pataasin ang pagganap nito sa pamamagitan ng pagdaragdag ng mga bagong module.
  • Pagpapanatili - ang pagpapalit ng isang module ay hindi nangangailangan ng pagbabago ng iba pang mga module.
  • Swapability ng mga module (Swappability) - ang module ay madaling mapalitan ng isa pa.
  • Pagsubok sa Yunit – Maaaring ihiwalay ang isang unit sa lahat ng iba at masuri/ayusin .
  • Reusability - ang module ay maaaring magamit muli sa ibang mga programa at iba pang kapaligiran.
  • Pagpapanatili - isang programa na nahahati sa mga module ay mas madaling maunawaan at mapanatili.

Masasabing ang paghiwa-hiwalay ng isang kumplikadong problema sa mga simpleng fragment ay ang layunin ng lahat ng mga diskarte sa disenyo . At ang terminong "arkitektura" sa karamihan ng mga kaso ay tumutukoy lamang sa resulta ng naturang dibisyon kasama ang "ilang mga desisyon sa disenyo na, kapag pinagtibay, ay mahirap baguhin" (Martin Fowler "Arkitektura ng Mga Aplikasyon ng Software ng Enterprise").

Samakatuwid, karamihan sa mga kahulugan sa isang anyo o iba pa ay bumabagsak sa mga sumusunod:

" Tinutukoy ng arkitektura ang mga pangunahing bahagi ng system at kung paano sila nakikipag-ugnayan. Ito rin ay ang pagpili ng mga naturang desisyon na binibigyang kahulugan bilang pangunahing at hindi maaaring magbago sa hinaharap ."

" Ang arkitektura ay ang organisasyon ng isang sistema, na nakapaloob sa mga bahagi nito, ang kanilang kaugnayan sa isa't isa at sa kapaligiran. Ang sistema ay isang hanay ng mga bahagi na pinagsama upang maisagawa ang isang partikular na function . "

Kaya, ang isang mahusay na arkitektura ay, una sa lahat, isang modular / block architecture . Upang makakuha ng isang mahusay na arkitektura, kailangan mong malaman kung paano maayos na mabulok ang system. Nangangahulugan ito na kinakailangang maunawaan kung aling agnas ang itinuturing na "tama" at kung paano ito pinakamahusay na isakatuparan.