Software architecture
સોફ્ટવેર આર્કિટેક્ચર એ સોફ્ટવેર સિસ્ટમ અને આવી રચનાઓ અને સિસ્ટમો બનાવવાની શિસ્ત વિશે તર્ક કરવા માટે જરૂરી માળખાઓનો સમૂહ છે. દરેક માળખામાં સોફ્ટવેર તત્વો, તેમની વચ્ચેના સંબંધો અને બંને તત્વો અને સંબંધોના ગુણધર્મોનો સમાવેશ થાય છે. સોફ્ટવેર સિસ્ટમનું આર્કિટેક્ચર એક રૂપક છે, જે બિલ્ડિંગના આર્કિટેક્ચર જેવું જ છે. તે સિસ્ટમ અને વિકાસ પ્રોજેક્ટ માટે નકશા તરીકે કાર્ય કરે છે, જેનો ઉપયોગ પ્રોજેક્ટ મેનેજમેન્ટ પછીથી ટીમો અને તેમાં સામેલ લોકો દ્વારા અમલમાં મૂકવા માટે જરૂરી કાર્યોને વિસ્તૃત કરવા માટે કરી શકે છે. સોફ્ટવેર આર્કિટેક્ચર મૂળભૂત માળખાકીય પસંદગીઓ કરવા વિશે છે જે એકવાર અમલમાં મૂક્યા પછી બદલવા માટે ખર્ચાળ છે. સોફ્ટવેર આર્કિટેક્ચર પસંદગીઓમાં સોફ્ટવેરની ડિઝાઇનમાં શક્યતાઓમાંથી ચોક્કસ માળખાકીય વિકલ્પોનો સમાવેશ થાય છે. ઉદાહરણ તરીકે, સ્પેસ શટલ પ્રક્ષેપણ વાહનને નિયંત્રિત કરતી પ્રણાલીઓમાં ખૂબ જ ઝડપી અને ખૂબ જ વિશ્વસનીય હોવાની જરૂર હતી. તેથી, યોગ્ય રીઅલ-ટાઇમ કમ્પ્યુટિંગ ભાષા પસંદ કરવાની જરૂર પડશે. વધુમાં, વિશ્વસનીયતાની જરૂરિયાતને સંતોષવા માટે પ્રોગ્રામની બહુવિધ બિનજરૂરી અને સ્વતંત્ર રીતે ઉત્પાદિત નકલો રાખવાની પસંદગી કરી શકાય છે, અને પરિણામોની ક્રોસ-ચેકિંગ કરતી વખતે આ નકલોને સ્વતંત્ર હાર્ડવેર પર ચલાવી શકાય છે. દસ્તાવેજીકરણ સોફ્ટવેર આર્કિટેક્ચર હિસ્સેદારો વચ્ચે સંદેશાવ્યવહારની સુવિધા આપે છે, ઉચ્ચ-સ્તરની ડિઝાઇન વિશે પ્રારંભિક નિર્ણયો મેળવે છે અને પ્રોજેક્ટ્સ વચ્ચે ડિઝાઇન ઘટકોના ફરીથી ઉપયોગની મંજૂરી આપે છે. સોફ્ટવેર આર્કિટેક્ચરના અવકાશ અંગે અભિપ્રાયો અલગ અલગ છેઃ મેક્રોસ્કોપિક સિસ્ટમ માળખુંઃ આ આર્કિટેક્ચરને સોફ્ટવેર સિસ્ટમના ઉચ્ચ-સ્તરના અમૂર્ત તરીકે ઉલ્લેખ કરે છે જેમાં કોમ્પ્યુટેશનલ ઘટકોના સંગ્રહનો સમાવેશ થાય છે જે આ ઘટકો વચ્ચેની ક્રિયાપ્રતિક્રિયાને વર્ણવે છે. મહત્વની સામગ્રી-તે ગમે તે હોયઃ આ એ હકીકતનો ઉલ્લેખ કરે છે કે સોફ્ટવેર આર્કિટેક્ટ્સે તે નિર્ણયો સાથે પોતાને ચિંતિત કરવા જોઈએ જે સિસ્ટમ અને તેના હિસ્સેદારો પર વધુ અસર કરે છે. જે તેના પર્યાવરણમાં સિસ્ટમને સમજવા માટે મૂળભૂત છે તે વસ્તુઓ કે જેને લોકો બદલવા માટે મુશ્કેલ માને છેઃ કારણ કે આર્કિટેક્ચરની રચના સોફ્ટવેર સિસ્ટમના જીવનચક્રની શરૂઆતમાં થાય છે, તેથી આર્કિટેક્ટએ એવા નિર્ણયો પર ધ્યાન કેન્દ્રિત કરવું જોઈએ જે પ્રથમ વખત યોગ્ય હોવા જોઈએ. આ વિચારધારાને અનુસરીને, એકવાર તેમની અપરિવર્તનીયતાને દૂર કરી શકાય તે પછી સ્થાપત્ય રચનાના મુદ્દાઓ બિન-સ્થાપત્ય બની શકે છે. આર્કિટેક્ચરલ ડિઝાઇનના નિર્ણયોનો સમૂહઃ સોફ્ટવેર આર્કિટેક્ચરને માત્ર મોડેલ્સ અથવા માળખાઓનો સમૂહ ન ગણવો જોઈએ, પરંતુ તેમાં એવા નિર્ણયો શામેલ હોવા જોઈએ જે આ ચોક્કસ માળખા તરફ દોરી જાય છે, અને તેમની પાછળના તર્કનો સમાવેશ થવો જોઈએ. આ આંતરદૃષ્ટિ સોફ્ટવેર આર્કિટેક્ચર જ્ઞાન વ્યવસ્થાપનમાં નોંધપાત્ર સંશોધન તરફ દોરી ગઈ છે. સોફ્ટવેર આર્કિટેક્ચર વિરુદ્ધ ડિઝાઇન અને આવશ્યકતાઓ ઇજનેરી વચ્ચે કોઈ તીવ્ર તફાવત નથી (નીચે સંબંધિત ક્ષેત્રો જુઓ). તે બધા ઉચ્ચ-સ્તરના ઇરાદાઓથી માંડીને નિમ્ન-સ્તરની વિગતો સુધીની "ઇરાદાપૂર્વકની સાંકળ" નો ભાગ છે. લાક્ષણિકતાઓ સોફ્ટવેર માળખું નીચે મુજબ દર્શાવે છેઃ સંખ્યાબંધ હિતધારકોઃ સોફ્ટવેર સિસ્ટમોએ વ્યવસાય સંચાલકો, માલિકો, વપરાશકર્તાઓ અને સંચાલકો જેવા વિવિધ હિતધારકોની જરૂરિયાતો પૂરી કરવી પડે છે. આ તમામ હિતધારકોની સિસ્ટમના સંદર્ભમાં તેમની પોતાની ચિંતાઓ છે. આ ચિંતાઓને સંતુલિત કરવી અને તેમને સંબોધિત કરવામાં આવે છે તે દર્શાવવું એ સિસ્ટમની રચનાનો એક ભાગ છે. આ સૂચવે છે કે સ્થાપત્યમાં વિવિધ પ્રકારની ચિંતાઓ અને હિતધારકો સાથે વ્યવહાર કરવાનો સમાવેશ થાય છે, અને તે બહુશાખાકીય પ્રકૃતિ ધરાવે છે. ચિંતાઓને અલગ કરવીઃ આર્કિટેક્ટ્સ માટે જટિલતા ઘટાડવાનો સ્થાપિત માર્ગ એ છે કે ડિઝાઇનને ચલાવતી ચિંતાઓને અલગ કરવી. આર્કિટેક્ચર દસ્તાવેજીકરણ દર્શાવે છે કે તમામ હિસ્સેદારોની ચિંતાઓને મોડેલિંગ દ્વારા સંબોધવામાં આવે છે અને વિવિધ હિસ્સેદારોની ચિંતાઓ સાથે સંકળાયેલા અલગ દ્રષ્ટિકોણથી આર્કિટેક્ચરનું વર્ણન કરવામાં આવે છે. આ અલગ અલગ વર્ણનોને સ્થાપત્ય દૃશ્યો કહેવામાં આવે છે (ઉદાહરણ તરીકે 4 + 1 સ્થાપત્ય દૃશ્ય મોડેલ જુઓ). ગુણવત્તા આધારિતઃ ક્લાસિક સોફ્ટવેર ડિઝાઇન અભિગમ (દા. ત. જેક્સન સ્ટ્રક્ચર્ડ પ્રોગ્રામિંગ) જરૂરી કાર્યક્ષમતા અને સિસ્ટમ દ્વારા ડેટાના પ્રવાહ દ્વારા સંચાલિત હતા, પરંતુ વર્તમાન આંતરદૃષ્ટિ એ છે કે સોફ્ટવેર સિસ્ટમની રચના તેના ગુણવત્તા લક્ષણો જેમ કે ખામી-સહિષ્ણુતા, પછાત સુસંગતતા, વિસ્તરણક્ષમતા, વિશ્વસનીયતા, જાળવણીક્ષમતા, ઉપલબ્ધતા, સુરક્ષા, ઉપયોગીતા અને આવી અન્ય ક્ષમતાઓ સાથે વધુ નજીકથી સંબંધિત છે. હિતધારકોની ચિંતાઓ ઘણીવાર આ ગુણવત્તા વિશેષતાઓ પરની આવશ્યકતાઓમાં પરિવર્તિત થાય છે, જેને વિવિધ રીતે બિન-કાર્યાત્મક આવશ્યકતાઓ, વધારાની કાર્યાત્મક આવશ્યકતાઓ, વર્તણૂકીય આવશ્યકતાઓ અથવા ગુણવત્તા વિશેષતા આવશ્યકતાઓ કહેવામાં આવે છે. પુનરાવર્તિત શૈલીઓઃ બિલ્ડિંગ આર્કિટેક્ચરની જેમ, સોફ્ટવેર આર્કિટેક્ચર શાખાએ પુનરાવર્તિત ચિંતાઓને સંબોધવા માટે પ્રમાણભૂત રીતો વિકસાવી છે. આ "પ્રમાણભૂત રીતો" ને અમૂર્તતાના વિવિધ સ્તરે વિવિધ નામોથી ઓળખવામાં આવે છે. પુનરાવર્તિત ઉકેલો માટેના સામાન્ય શબ્દો સ્થાપત્ય શૈલી, યુક્તિ, સંદર્ભ સ્થાપત્ય અને સ્થાપત્ય પેટર્ન છે. વિભાવનાત્મક અખંડિતતાઃ ફ્રેડ બ્રૂક્સ દ્વારા તેમના 1975 ના પુસ્તક ધ મિથિકલ મેન-મન્થમાં રજૂ કરાયેલ શબ્દ એ વિચારને દર્શાવવા માટે કે સોફ્ટવેર સિસ્ટમનું આર્કિટેક્ચર તે શું કરવું જોઈએ અને તે કેવી રીતે કરવું જોઈએ તેની એકંદર દ્રષ્ટિ રજૂ કરે છે. આ વિઝનને તેના અમલીકરણથી અલગ કરવું જોઈએ. આર્કિટેક્ટ "દ્રષ્ટિના રક્ષક" ની ભૂમિકા ધારણ કરે છે, ખાતરી કરે છે કે સિસ્ટમમાં ઉમેરાઓ આર્કિટેક્ચર સાથે સુસંગત છે, તેથી વૈચારિક અખંડિતતા જાળવી રાખે છે. જ્ઞાનાત્મક અવરોધોઃ કમ્પ્યુટર પ્રોગ્રામર મેલ્વિન કોનવે દ્વારા 1967 ના પેપરમાં સૌપ્રથમ અવલોકન કરવામાં આવ્યું હતું કે જે સંસ્થાઓ સિસ્ટમોની રચના કરે છે તે આ સંસ્થાઓના સંચાર માળખાઓની નકલો હોય તેવી ડિઝાઇન બનાવવા માટે મર્યાદિત છે. વૈચારિક અખંડિતતાની જેમ, તે ફ્રેડ બ્રૂક્સ હતા જેમણે તેને વ્યાપક પ્રેક્ષકો સમક્ષ રજૂ કર્યું હતું જ્યારે તેમણે તેમના ભવ્ય ક્લાસિક ધ મિથિકલ મેન-મન્થમાં પેપર અને વિચારનો ઉલ્લેખ કર્યો હતો, તેને "કોનવેનો કાયદો" ગણાવ્યો હતો. પ્રેરણા સોફ્ટવેર આર્કિટેક્ચર એ જટિલ પ્રણાલીનું "બૌદ્ધિક રીતે સમજી શકાય તેવું" અમૂર્ત છે. આ અમૂર્ત સંખ્યાબંધ લાભો પૂરા પાડે છેઃ તે સિસ્ટમ બનાવવામાં આવે તે પહેલાં સોફ્ટવેર સિસ્ટમ્સના વર્તનનું વિશ્લેષણ કરવા માટે એક આધાર આપે છે. ભવિષ્યની સોફ્ટવેર સિસ્ટમ તેના હિસ્સેદારોની જરૂરિયાતોને વાસ્તવમાં નિર્માણ કર્યા વિના પૂર્ણ કરે છે કે કેમ તે ચકાસવાની ક્ષમતા નોંધપાત્ર ખર્ચ-બચત અને જોખમ-ઘટાડાનું પ્રતિનિધિત્વ કરે છે. આવા વિશ્લેષણ કરવા માટે સંખ્યાબંધ તકનીકો વિકસાવવામાં આવી છે, જેમ કે એ. ટી. એ. એમ. અથવા સોફ્ટવેર સિસ્ટમની દ્રશ્ય રજૂઆત બનાવીને. તે તત્વો અને નિર્ણયોના પુનઃઉપયોગ માટે આધાર પૂરો પાડે છે. સંપૂર્ણ સોફ્ટવેર આર્કિટેક્ચર અથવા તેના ભાગો, જેમ કે વ્યક્તિગત આર્કિટેક્ચરલ વ્યૂહરચનાઓ અને નિર્ણયો, બહુવિધ સિસ્ટમોમાં ફરીથી ઉપયોગમાં લઈ શકાય છે, જેમના હિસ્સેદારોને સમાન ગુણવત્તાના લક્ષણો અથવા કાર્યક્ષમતાની જરૂર હોય છે, ડિઝાઇન ખર્ચની બચત થાય છે અને ડિઝાઇન ભૂલોના જોખમને ઘટાડે છે. તે પ્રારંભિક ડિઝાઇન નિર્ણયોને ટેકો આપે છે જે સિસ્ટમના વિકાસ, જમાવટ અને જાળવણી જીવનને અસર કરે છે. સમયપત્રક અને બજેટમાં વધઘટને રોકવા માટે વહેલા, ઉચ્ચ અસરવાળા નિર્ણયોને યોગ્ય રીતે લેવા મહત્વપૂર્ણ છે. તે હિતધારકો સાથે સંવાદની સુવિધા આપે છે, એવી વ્યવસ્થામાં યોગદાન આપે છે જે તેમની જરૂરિયાતોને વધુ સારી રીતે પૂર્ણ કરે છે. હિતધારકોના દૃષ્ટિકોણથી જટિલ પ્રણાલીઓ વિશે વાતચીત કરવાથી તેમને તેમની જણાવેલી જરૂરિયાતો અને તેમના આધારે ડિઝાઇન નિર્ણયોના પરિણામોને સમજવામાં મદદ મળે છે. આર્કિટેક્ચર સિસ્ટમ લાગુ થાય તે પહેલાં ડિઝાઇન નિર્ણયો વિશે વાતચીત કરવાની ક્ષમતા આપે છે, જ્યારે તેઓ હજુ પણ અનુકૂલન માટે પ્રમાણમાં સરળ હોય છે. તે જોખમ વ્યવસ્થાપનમાં મદદ કરે છે. સોફ્ટવેર આર્કિટેક્ચર જોખમો અને નિષ્ફળતાની શક્યતા ઘટાડવામાં મદદ કરે છે. તેનાથી ખર્ચમાં ઘટાડો થાય છે. સોફ્ટવેર આર્કિટેક્ચર એ જટિલ આઇટી પ્રોજેક્ટ્સમાં જોખમ અને ખર્ચનું સંચાલન કરવાનું એક સાધન છે. સોફ્ટવેર ડિઝાઇન અને (નાગરિક) આર્કિટેક્ચર વચ્ચેની સરખામણી સૌપ્રથમ 1960 ના દાયકાના અંતમાં કરવામાં આવી હતી, પરંતુ "સોફ્ટવેર આર્કિટેક્ચર" શબ્દનો 1990 ના દાયકા સુધી વ્યાપક ઉપયોગ જોવા મળ્યો ન હતો. કોમ્પ્યુટર વિજ્ઞાનના ક્ષેત્રે તેની રચના થઈ ત્યારથી જ જટિલતા સાથે સંકળાયેલી સમસ્યાઓનો સામનો કરવો પડ્યો હતો. અગાઉની જટિલતાની સમસ્યાઓ વિકાસકર્તાઓ દ્વારા યોગ્ય માહિતી માળખા પસંદ કરીને, અલ્ગોરિધમ્સ વિકસાવીને અને ચિંતાઓને અલગ કરવાની વિભાવનાને લાગુ કરીને હલ કરવામાં આવતી હતી. "સોફ્ટવેર આર્કિટેક્ચર" શબ્દ ઉદ્યોગ માટે પ્રમાણમાં નવો હોવા છતાં, આ ક્ષેત્રના મૂળભૂત સિદ્ધાંતો 1980ના દાયકાના મધ્યથી સોફ્ટવેર એન્જિનિયરિંગના અગ્રણીઓ દ્વારા છૂટાછવાયા રીતે લાગુ કરવામાં આવ્યા છે. સિસ્ટમના સોફ્ટવેર આર્કિટેક્ચરને કેપ્ચર કરવા અને સમજાવવાના પ્રારંભિક પ્રયાસો અચોક્કસ અને અવ્યવસ્થિત હતા, જે ઘણીવાર બોક્સ-એન્ડ-લાઇન આકૃતિઓના સમૂહ દ્વારા વર્ગીકૃત કરવામાં આવતા હતા. એક ખ્યાલ તરીકે સોફ્ટવેર આર્કિટેક્ચરની ઉત્પત્તિ 1968માં એડસ્ગર ડિજક્સ્ટ્રા અને 1970ના દાયકાની શરૂઆતમાં ડેવિડ પાર્નાસના સંશોધનમાં થઈ છે. આ વૈજ્ઞાનિકોએ ભારપૂર્વક જણાવ્યું હતું કે સોફ્ટવેર સિસ્ટમનું માળખું મહત્વનું છે અને માળખું યોગ્ય રીતે મેળવવું મહત્વપૂર્ણ છે. 1990 ના દાયકા દરમિયાન સ્થાપત્ય શૈલીઓ (પેટર્ન), સ્થાપત્ય વર્ણન ભાષાઓ, સ્થાપત્ય દસ્તાવેજીકરણ અને ઔપચારિક પદ્ધતિઓ પર કેન્દ્રિત સંશોધન કાર્ય સાથે શિસ્તના મૂળભૂત પાસાઓને વ્યાખ્યાયિત કરવા અને સંહિતાબદ્ધ કરવા માટે એક નક્કર પ્રયાસ કરવામાં આવ્યો હતો. સંશોધન સંસ્થાઓએ સોફ્ટવેર આર્કિટેક્ચરને એક શાખા તરીકે આગળ વધારવામાં અગ્રણી ભૂમિકા ભજવી છે. કાર્નેગી મેલોનના મેરી શો અને ડેવિડ ગાર્લેને 1996માં સોફ્ટવેર આર્કિટેક્ચરઃ પર્સ્પેક્ટિવ્સ ઓન એન ઇમર્જિંગ ડિસિપ્લિન શીર્ષક ધરાવતું પુસ્તક લખ્યું હતું, જેણે ઘટકો, કનેક્ટર્સ અને શૈલીઓ જેવી સોફ્ટવેર આર્કિટેક્ચર વિભાવનાઓને પ્રોત્સાહન આપ્યું હતું. સોફ્ટવેર આર્કિટેક્ચર સંશોધનમાં યુનિવર્સિટી ઓફ કેલિફોર્નિયા, ઇર્વિન ઇન્સ્ટિટ્યૂટ ફોર સોફ્ટવેર રિસર્ચના પ્રયાસો મુખ્યત્વે આર્કિટેક્ચરલ શૈલીઓ, આર્કિટેક્ચર વર્ણન ભાષાઓ અને ગતિશીલ આર્કિટેક્ચરમાં નિર્દેશિત છે. IEEE 1471-2000, "સોફ્ટવેર-સઘન સિસ્ટમોના આર્કિટેક્ચર વર્ણન માટે ભલામણ કરાયેલ પ્રેક્ટિસ", સોફ્ટવેર આર્કિટેક્ચરના ક્ષેત્રમાં પ્રથમ ઔપચારિક ધોરણ હતું. તેને 2007માં ISO દ્વારા ISO/IEC 42010:2007 તરીકે અપનાવવામાં આવ્યું હતું. નવેમ્બર 2011માં, IEEE 1471-2000 નું સ્થાન ISO/IEC/IEEE 42010:2011, "સિસ્ટમ્સ એન્ડ સોફ્ટવેર એન્જિનિયરિંગ-આર્કિટેક્ચર ડિસ્ક્રિપ્શન" (IEEE અને ISO દ્વારા સંયુક્ત રીતે પ્રકાશિત) દ્વારા લેવામાં આવ્યું હતું. જ્યારે IEEE 1471 માં, સોફ્ટવેર આર્કિટેક્ચર "સોફ્ટવેર-સઘન સિસ્ટમો" ના આર્કિટેક્ચર વિશે હતું, જેને "કોઈપણ સિસ્ટમ જ્યાં સોફ્ટવેર સમગ્ર સિસ્ટમની ડિઝાઇન, બાંધકામ, જમાવટ અને ઉત્ક્રાંતિમાં આવશ્યક પ્રભાવોમાં ફાળો આપે છે" તરીકે વ્યાખ્યાયિત કરવામાં આવી હતી, 2011 ની આવૃત્તિ સિસ્ટમની ISO/IEC 15288 અને ISO/IEC 12207 વ્યાખ્યાઓનો સમાવેશ કરીને એક પગલું આગળ વધે છે, જેમાં માત્ર હાર્ડવેર અને સોફ્ટવેર જ નહીં, પણ "મનુષ્યો, પ્રક્રિયાઓ, પ્રક્રિયાઓ, સુવિધાઓ, સામગ્રી અને કુદરતી રીતે બનતી સંસ્થાઓ" પણ સામેલ છે. આ સોફ્ટવેર આર્કિટેક્ચર, એન્ટરપ્રાઇઝ આર્કિટેક્ચર અને સોલ્યુશન આર્કિટેક્ચર વચ્ચેના સંબંધને પ્રતિબિંબિત કરે છે. આર્કિટેક્ચર પ્રવૃત્તિઓ એવી ઘણી પ્રવૃત્તિઓ છે જે સોફ્ટવેર આર્કિટેક્ટ કરે છે. સોફ્ટવેર આર્કિટેક્ટ સામાન્ય રીતે પ્રોજેક્ટ મેનેજરો સાથે કામ કરે છે, હિસ્સેદારો સાથે સ્થાપત્યની નોંધપાત્ર જરૂરિયાતોની ચર્ચા કરે છે, સોફ્ટવેર આર્કિટેક્ચર ડિઝાઇન કરે છે, ડિઝાઇનનું મૂલ્યાંકન કરે છે, ડિઝાઇનર્સ અને હિસ્સેદારો સાથે વાતચીત કરે છે, આર્કિટેક્ચરલ ડિઝાઇનનું દસ્તાવેજીકરણ કરે છે અને વધુ. સોફ્ટવેર આર્કિટેક્ચર ડિઝાઇનમાં ચાર મુખ્ય પ્રવૃત્તિઓ છે. આ મુખ્ય સ્થાપત્ય પ્રવૃત્તિઓ પુનરાવર્તિત રીતે અને પ્રારંભિક સોફ્ટવેર વિકાસ જીવન-ચક્રના વિવિધ તબક્કાઓ પર તેમજ સિસ્ટમના ઉત્ક્રાંતિ પર કરવામાં આવે છે. આર્કિટેક્ચરલ એનાલિસિસ એ પર્યાવરણને સમજવાની પ્રક્રિયા છે જેમાં સૂચિત સિસ્ટમ કાર્ય કરશે અને સિસ્ટમ માટેની જરૂરિયાતો નક્કી કરશે. વિશ્લેષણ પ્રવૃત્તિ માટે ઇનપુટ અથવા જરૂરિયાતો કોઈપણ સંખ્યાબંધ હિસ્સેદારો પાસેથી આવી શકે છે અને તેમાં નીચેની વસ્તુઓનો સમાવેશ થાય છેઃ જ્યારે સિસ્ટમ કાર્યરત હોય ત્યારે શું કરશે (કાર્યાત્મક જરૂરિયાતો) સિસ્ટમ કેટલી સારી રીતે રનટાઇમ બિન-કાર્યાત્મક જરૂરિયાતો જેમ કે વિશ્વસનીયતા, કાર્યક્ષમતા, પ્રદર્શન કાર્યક્ષમતા, સુરક્ષા, ISO/IEC 25010:2011 પ્રમાણભૂત વિકાસ-સમયની બિન-કાર્યાત્મક જરૂરિયાતો જેમ કે ISO 25010:2011 પ્રમાણભૂત વ્યવસાય જરૂરિયાતોમાં વ્યાખ્યાયિત જાળવણીક્ષમતા અને સ્થાનાંતરણક્ષમતા અને સિસ્ટમના પર્યાવરણીય સંદર્ભો કે જે સમય જતાં બદલાઈ શકે છે, જેમ કે કાનૂની, સામાજિક, નાણાકીય, સ્પર્ધાત્મક અને તકનીકી ચિંતાઓ વિશ્લેષણ પ્રવૃત્તિના પરિણામો તે જરૂરિયાતો છે જે સોફ્ટવેર સિસ્ટમના માળખા પર માપી શકાય તેવી અસર કરે છે, જેને સ્થાપત્યની રીતે નોંધપાત્ર જરૂરિયાતો કહેવાય છે. આર્કિટેક્ચરલ સંશ્લેષણ અથવા ડિઝાઇન એ આર્કિટેક્ચર બનાવવાની પ્રક્રિયા છે. વિશ્લેષણ દ્વારા નિર્ધારિત સ્થાપત્યની નોંધપાત્ર જરૂરિયાતો, ડિઝાઇનની વર્તમાન સ્થિતિ અને કોઈપણ મૂલ્યાંકન પ્રવૃત્તિઓના પરિણામોને ધ્યાનમાં રાખીને, ડિઝાઇન બનાવવામાં આવે છે અને તેમાં સુધારો કરવામાં આવે છે. આર્કિટેક્ચર મૂલ્યાંકન એ નક્કી કરવાની પ્રક્રિયા છે કે વર્તમાન ડિઝાઇન અથવા તેનો એક ભાગ વિશ્લેષણ દરમિયાન મેળવેલી જરૂરિયાતોને કેટલી સારી રીતે સંતોષે છે. જ્યારે પણ કોઈ આર્કિટેક્ટ ડિઝાઇનના નિર્ણય પર વિચાર કરી રહ્યો હોય ત્યારે મૂલ્યાંકન થઈ શકે છે, તે ડિઝાઇનનો અમુક ભાગ પૂર્ણ થયા પછી થઈ શકે છે, તે અંતિમ ડિઝાઇન પૂર્ણ થયા પછી થઈ શકે છે અથવા તે સિસ્ટમના નિર્માણ પછી થઈ શકે છે. કેટલીક ઉપલબ્ધ સોફ્ટવેર આર્કિટેક્ચર મૂલ્યાંકન તકનીકોમાં આર્કિટેક્ચર ટ્રેડઓફ એનાલિસિસ મેથડ (ATAM) અને TARA નો સમાવેશ થાય છે. તકનીકોની સરખામણી કરવા માટેના માળખાઓની ચર્ચા સારા અહેવાલ અને આર્કિટેક્ચર સમીક્ષાઓઃ પ્રેક્ટિસ અને અનુભવ જેવા માળખામાં કરવામાં આવી છે. આર્કિટેક્ચર ઉત્ક્રાંતિ એ જરૂરિયાતો અને પર્યાવરણમાં ફેરફારોને પહોંચી વળવા માટે હાલની સોફ્ટવેર આર્કિટેક્ચરની જાળવણી અને અનુકૂલન કરવાની પ્રક્રિયા છે. જેમ કે સોફ્ટવેર આર્કિટેક્ચર સોફ્ટવેર સિસ્ટમનું મૂળભૂત માળખું પ્રદાન કરે છે, તેની ઉત્ક્રાંતિ અને જાળવણી તેના મૂળભૂત માળખાને આવશ્યકપણે અસર કરશે. જેમ કે, આર્કિટેક્ચર ઉત્ક્રાંતિ નવી કાર્યક્ષમતા ઉમેરવા તેમજ હાલની કાર્યક્ષમતા અને સિસ્ટમ વર્તણૂક જાળવવા સાથે સંબંધિત છે. સ્થાપત્યને નિર્ણાયક સહાયક પ્રવૃત્તિઓની જરૂર છે. આ સહાયક પ્રવૃત્તિઓ મુખ્ય સોફ્ટવેર આર્કિટેક્ચર પ્રક્રિયામાં થાય છે. તેમાં જ્ઞાન વ્યવસ્થાપન અને સંદેશાવ્યવહાર, ડિઝાઇન તર્ક અને નિર્ણય લેવા અને દસ્તાવેજીકરણનો સમાવેશ થાય છે. આર્કિટેક્ચર સહાયક પ્રવૃત્તિઓ સોફ્ટવેર આર્કિટેક્ચર સહાયક પ્રવૃત્તિઓ મુખ્ય સોફ્ટવેર આર્કિટેક્ચર પ્રવૃત્તિઓ દરમિયાન હાથ ધરવામાં આવે છે. આ સહાયક પ્રવૃત્તિઓ સોફ્ટવેર આર્કિટેક્ટને વિશ્લેષણ, સંશ્લેષણ, મૂલ્યાંકન અને ઉત્ક્રાંતિ હાથ ધરવા માટે મદદ કરે છે. દાખલા તરીકે, આર્કિટેક્ટને વિશ્લેષણના તબક્કા દરમિયાન જ્ઞાન એકત્રિત કરવું પડે છે, નિર્ણયો લેવા પડે છે અને દસ્તાવેજીકરણ કરવું પડે છે. જ્ઞાન વ્યવસ્થાપન અને સંદેશાવ્યવહાર એ જ્ઞાનનું અન્વેષણ અને સંચાલન કરવાની ક્રિયા છે જે સોફ્ટવેર આર્કિટેક્ચરની રચના કરવા માટે જરૂરી છે. સોફ્ટવેર આર્કિટેક્ટ અલગથી કામ કરતું નથી. તેઓ વિવિધ હિતધારકો પાસેથી ઇનપુટ, કાર્યાત્મક અને બિન-કાર્યાત્મક જરૂરિયાતો અને ડિઝાઇન સંદર્ભો મેળવે છે; અને હિતધારકોને આઉટપુટ પ્રદાન કરે છે. સોફ્ટવેર આર્કિટેક્ચરનું જ્ઞાન ઘણીવાર મૌન હોય છે અને તે હિતધારકોના વડાઓમાં જાળવી રાખવામાં આવે છે. સોફ્ટવેર આર્કિટેક્ચર જ્ઞાન વ્યવસ્થાપન પ્રવૃત્તિ એ જ્ઞાન શોધવા, વાતચીત કરવા અને જાળવી રાખવા વિશે છે. સોફ્ટવેર આર્કિટેક્ચર ડિઝાઇનના મુદ્દાઓ જટિલ અને પરસ્પરાવલંબી હોવાથી, ડિઝાઇન તર્કમાં જ્ઞાનનું અંતર ખોટી સોફ્ટવેર આર્કિટેક્ચર ડિઝાઇન તરફ દોરી શકે છે. જ્ઞાન વ્યવસ્થાપન અને સંદેશાવ્યવહાર પ્રવૃત્તિઓના ઉદાહરણોમાં ડિઝાઇન પેટર્નની શોધ, પ્રોટોટાઇપિંગ, અનુભવી વિકાસકર્તાઓ અને આર્કિટેક્ટ્સને પૂછવું, સમાન સિસ્ટમોની ડિઝાઇનનું મૂલ્યાંકન કરવું, અન્ય ડિઝાઇનરો અને હિસ્સેદારો સાથે જ્ઞાન વહેંચવું અને વિકિ પૃષ્ઠ પર અનુભવનું દસ્તાવેજીકરણ કરવું શામેલ છે. ડિઝાઇન તર્ક અને નિર્ણય લેવાની પ્રક્રિયા એ ડિઝાઇન નિર્ણયોના મૂલ્યાંકનની પ્રવૃત્તિ છે. આ પ્રવૃત્તિ ત્રણેય મુખ્ય સોફ્ટવેર આર્કિટેક્ચર પ્રવૃત્તિઓ માટે મૂળભૂત છે. તેમાં નિર્ણયના સંદર્ભોને એકત્રિત કરવા અને જોડવા, ડિઝાઇન નિર્ણય સમસ્યાઓ ઘડવા, ઉકેલ વિકલ્પો શોધવા અને નિર્ણયો લેતા પહેલા સમાધાનનું મૂલ્યાંકન કરવું શામેલ છે. નોંધપાત્ર સ્થાપત્ય જરૂરિયાતો અને સોફ્ટવેર આર્કિટેક્ચર નિર્ણયો, અને સોફ્ટવેર આર્કિટેક્ચર વિશ્લેષણ, સંશ્લેષણ અને મૂલ્યાંકનનું મૂલ્યાંકન કરતી વખતે આ પ્રક્રિયા નિર્ણય ગ્રાન્યુલારિટીના વિવિધ સ્તરે થાય છે. તર્ક પ્રવૃત્તિઓના ઉદાહરણોમાં ગુણવત્તાના લક્ષણો પર જરૂરિયાત અથવા ડિઝાઇનની અસરોને સમજવી, ડિઝાઇન જે મુદ્દાઓનું કારણ બની શકે છે તેના પર સવાલ ઉઠાવવો, સંભવિત ઉકેલ વિકલ્પોનું મૂલ્યાંકન કરવું અને ઉકેલો વચ્ચેના સમાધાનનું મૂલ્યાંકન કરવું શામેલ છે. દસ્તાવેજીકરણ એ સોફ્ટવેર આર્કિટેક્ચર પ્રક્રિયા દરમિયાન પેદા થયેલ ડિઝાઇનને રેકોર્ડ કરવાની ક્રિયા છે. સિસ્ટમ ડિઝાઇનને ઘણા દૃશ્યોના ઉપયોગથી વર્ણવવામાં આવે છે જેમાં વારંવાર સિસ્ટમની કોડ માળખું દર્શાવતું સ્થિર દૃશ્ય, અમલ દરમિયાન સિસ્ટમની ક્રિયાઓ દર્શાવતું ગતિશીલ દૃશ્ય અને અમલ માટે હાર્ડવેર પર સિસ્ટમ કેવી રીતે મૂકવામાં આવે છે તે દર્શાવતું જમાવટ દૃશ્યનો સમાવેશ થાય છે. ક્રુચટેનનું 4 + 1 દૃશ્ય સોફ્ટવેર આર્કિટેક્ચરના દસ્તાવેજીકરણ માટે સામાન્ય રીતે ઉપયોગમાં લેવાતા દૃશ્યોનું વર્ણન સૂચવે છે; દસ્તાવેજીકરણ સોફ્ટવેર આર્કિટેક્ચરઃ વ્યૂઝ એન્ડ બિયોન્ડમાં દૃશ્ય વર્ણનમાં ઉપયોગમાં લઈ શકાય તેવા સંકેતોના પ્રકારોનું વર્ણન છે. દસ્તાવેજીકરણ પ્રવૃત્તિઓના ઉદાહરણોમાં સ્પષ્ટીકરણ લખવું, સિસ્ટમ ડિઝાઇન મોડેલ રેકોર્ડ કરવું, ડિઝાઇન તર્કનું દસ્તાવેજીકરણ કરવું, દૃષ્ટિકોણ વિકસાવવો, મંતવ્યોનું દસ્તાવેજીકરણ કરવું. સોફ્ટવેર આર્કિટેક્ચર વિષયો સોફ્ટવેર આર્કિટેક્ચર વર્ણન સોફ્ટવેર આર્કિટેક્ચર વર્ણનમાં આર્કિટેક્ચર વર્ણન ભાષાઓ, આર્કિટેક્ચર દૃષ્ટિકોણ અને આર્કિટેક્ચર માળખા જેવી પદ્ધતિઓનો ઉપયોગ કરીને મોડેલિંગ અને આર્કિટેક્ચરનું પ્રતિનિધિત્વ કરવાના સિદ્ધાંતો અને પ્રથાઓનો સમાવેશ થાય છે. આર્કિટેક્ચર વર્ણન ભાષાઓ આર્કિટેક્ચર વર્ણન ભાષા (ADL) એ સોફ્ટવેર આર્કિટેક્ચર (ISO/IEC/IEEE 42010) નું વર્ણન કરવા માટે ઉપયોગમાં લેવાતી અભિવ્યક્તિનું કોઈપણ સાધન છે. 1990ના દાયકાથી ઘણા વિશેષ હેતુના એ. ડી. એલ. વિકસાવવામાં આવ્યા છે, જેમાં એ. એ. ડી. એલ. (એસ. એ. ઈ. ધોરણ), રાઈટ (કાર્નેગી મેલોન દ્વારા વિકસાવવામાં આવેલ), એક્મે (કાર્નેગી મેલોન દ્વારા વિકસાવવામાં આવેલ), એક્સ. એ. ડી. એલ. (યુ. સી. આઈ. દ્વારા વિકસાવવામાં આવેલ), ડાર્વિન (ઇમ્પિરિયલ કોલેજ લંડન દ્વારા વિકસાવવામાં આવેલ), ડી. એ. ઓ. પી.-એ. ડી. એલ. (મલાગા યુનિવર્સિટી દ્વારા વિકસાવવામાં આવેલ), એસ. બી. સી.-એ. ડી. એલ. (નેશનલ સન યાત-સેન યુનિવર્સિટી દ્વારા વિકસાવવામાં આવેલ) અને બી. એ. ડી. એલ. (યુનિવર્સિટી ઓફ લ 'એક્વિલા, ઇટાલી) નો સમાવેશ થાય છે. આર્કિટેક્ચર દૃષ્ટિકોણ સોફ્ટવેર આર્કિટેક્ચરનું વર્ણન સામાન્ય રીતે દૃશ્યોમાં ગોઠવવામાં આવે છે, જે બિલ્ડિંગ આર્કિટેક્ચરમાં બનાવવામાં આવેલા વિવિધ પ્રકારનાં નકશાને અનુરૂપ છે. દરેક દૃષ્ટિકોણ તેના દૃષ્ટિકોણના સંમેલનોને અનુસરીને પ્રણાલીની ચિંતાઓના સમૂહને સંબોધિત કરે છે, જ્યાં દૃષ્ટિકોણ એ એક સ્પષ્ટીકરણ છે જે સંકેતો, મોડેલિંગ અને વિશ્લેષણ તકનીકોનું વર્ણન કરે છે જેનો ઉપયોગ આપેલ સમૂહના પરિપ્રેક્ષ્યમાં કરવામાં આવે છે. દ્રષ્ટિકોણ માત્ર ઘડવામાં આવેલી ચિંતાઓ (એટલે કે, સંબોધવામાં આવશે) જ નહીં પરંતુ પ્રસ્તુતિ, ઉપયોગમાં લેવાતા મોડેલ પ્રકારો, ઉપયોગમાં લેવાતા સંમેલનો અને અન્ય મંતવ્યો સાથે સુસંગત રાખવા માટે કોઈપણ સુસંગતતા (પત્રવ્યવહાર) નિયમોને સ્પષ્ટ કરે છે. આર્કિટેક્ચર માળખું એક આર્કિટેક્ચર માળખું "એપ્લિકેશન અને/અથવા હિસ્સેદારોના સમુદાયના ચોક્કસ ક્ષેત્રમાં સ્થાપિત આર્કિટેક્ચરના વર્ણન માટેના સંમેલનો, સિદ્ધાંતો અને પદ્ધતિઓ" (ISO/IEC/IEEE 42010) ને મેળવે છે. માળખું સામાન્ય રીતે એક અથવા વધુ દ્રષ્ટિકોણ અથવા એ. ડી. એલ. ની દ્રષ્ટિએ અમલમાં મૂકવામાં આવે છે. આર્કિટેક્ચરલ શૈલીઓ અને પેટર્ન આર્કિટેક્ચરલ પેટર્ન એ આપેલ સંદર્ભમાં સોફ્ટવેર આર્કિટેક્ચરમાં સામાન્ય રીતે બનતી સમસ્યાનું સામાન્ય, ફરીથી વાપરી શકાય તેવું સમાધાન છે. આર્કિટેક્ચરલ પેટર્નને ઘણીવાર સોફ્ટવેર ડિઝાઇન પેટર્ન તરીકે દસ્તાવેજીકરણ કરવામાં આવે છે. પરંપરાગત બિલ્ડિંગ આર્કિટેક્ચરને અનુસરીને, 'સોફ્ટવેર આર્કિટેક્ચરલ સ્ટાઇલ' એ બાંધકામની એક ચોક્કસ પદ્ધતિ છે, જે તેને નોંધપાત્ર બનાવે છે તે લક્ષણો દ્વારા વર્ગીકૃત થયેલ છે. તેમાંની ઘણી માન્યતા પ્રાપ્ત આર્કિટેક્ચરલ પેટર્ન અને શૈલીઓ છેઃ બ્લેકબોર્ડ ક્લાયન્ટ-સર્વર (2-સ્તર, 3-સ્તર, એન-સ્તર, ક્લાઉડ કમ્પ્યુટિંગ આ શૈલીનું પ્રદર્શન કરે છે) ઘટક-આધારિત ડેટા-સેન્ટ્રીક ઇવેન્ટ-સંચાલિત (અથવા ગર્ભિત આહ્વાન) સ્તર (અથવા બહુસ્તરીય આર્કિટેક્ચર) માઇક્રોસર્વિસીસ આર્કિટેક્ચર મોનોલિથિક એપ્લિકેશન પીઅર-ટુ-પીઅર (પી 2 પી) પાઇપ અને ફિલ્ટર્સ પ્લગ-ઇન્સ રિએક્ટિવ આર્કિટેક્ચર રિપ્રેઝન્ટેશનલ સ્ટેટ ટ્રાન્સફર (આરઇએસટી) નિયમ-આધારિત સર્વિસ-ઓરિએન્ટેડ શેર્ડ નથિંગ આર્કિટેક્ચર સ્પેસ-આધારિત આર્કિટેક્ચર સર્વરલેસ આર્કિટેક્ચર કેટલાક આર્કિટેક્ચરલ પેટર્ન અને આર્કિટેક્ચરલ શૈલીઓને સમાન માને છે, કેટલાક શૈલીઓને પેટર્નની વિશેષતા તરીકે માને છે. તેમની પાસે જે સામાન્ય બાબત છે તે એ છે કે નમૂનાઓ અને શૈલીઓ બંને આર્કિટેક્ટ્સ માટે ઉપયોગ કરવા માટેના રૂઢિપ્રયોગો છે, તેઓ "એક સામાન્ય ભાષા" અથવા "શબ્દભંડોળ" પ્રદાન કરે છે જેની સાથે પ્રણાલીઓના વર્ગોનું વર્ણન કરે છે. સોફ્ટવેર આર્કિટેક્ચર અને ચપળ વિકાસ એવી પણ ચિંતા છે કે સોફ્ટવેર આર્કિટેક્ચર ખૂબ મોટી ડિઝાઇન તરફ દોરી જાય છે, ખાસ કરીને ચપળ સોફ્ટવેર વિકાસના સમર્થકોમાં. અપ-ફ્રન્ટ ડિઝાઇન અને ચપળતાના વિનિમયને સંતુલિત કરવા માટે સંખ્યાબંધ પદ્ધતિઓ વિકસાવવામાં આવી છે, જેમાં ચપળ પદ્ધતિ ડી. એસ. ડી. એમ. નો સમાવેશ થાય છે, જે "પાયો" તબક્કાને ફરજિયાત બનાવે છે, જે દરમિયાન "માત્ર પૂરતો" સ્થાપત્ય પાયો નાખવામાં આવે છે. IEEE સોફ્ટવેરે ચપળતા અને સ્થાપત્ય વચ્ચેની ક્રિયાપ્રતિક્રિયા માટે એક વિશેષ મુદ્દો સમર્પિત કર્યો હતો. સોફ્ટવેર આર્કિટેક્ચર ધોવાણ સોફ્ટવેર આર્કિટેક્ચર ધોવાણ (અથવા "સડો") એ સોફ્ટવેર સિસ્ટમના આયોજિત અને વાસ્તવિક આર્કિટેક્ચર વચ્ચે જોવા મળતા અંતરનો ઉલ્લેખ કરે છે જે તેના અમલીકરણમાં અનુભવાય છે. સોફ્ટવેર આર્કિટેક્ચરનું ધોવાણ ત્યારે થાય છે જ્યારે અમલીકરણના નિર્ણયો આર્કિટેક્ચર-એ-પ્લાન્ડને સંપૂર્ણપણે પ્રાપ્ત કરતા નથી અથવા અન્યથા તે આર્કિટેક્ચરના અવરોધો અથવા સિદ્ધાંતોનું ઉલ્લંઘન કરે છે. ઉદાહરણ તરીકે, કડક સ્તરવાળી પ્રણાલીને ધ્યાનમાં લો, જ્યાં દરેક સ્તર તેની નીચે તરત જ સ્તર દ્વારા પૂરી પાડવામાં આવતી સેવાઓનો જ ઉપયોગ કરી શકે છે. કોઈપણ સ્રોત કોડ ઘટક કે જે આ અવરોધને અનુસરતો નથી તે સ્થાપત્યના ઉલ્લંઘનને રજૂ કરે છે. જો સુધારવામાં ન આવે તો, આવા ઉલ્લંઘનો સ્થાપત્યને એક અખંડ અવરોધમાં પરિવર્તિત કરી શકે છે, જે સમજણ, જાળવણીક્ષમતા અને વિકાસક્ષમતા પર પ્રતિકૂળ અસરો ધરાવે છે. ધોવાણને પહોંચી વળવા માટે વિવિધ અભિગમોની દરખાસ્ત કરવામાં આવી છે. આ અભિગમો, જેમાં સાધનો, તકનીકો અને પ્રક્રિયાઓનો સમાવેશ થાય છે, તેને મુખ્યત્વે ત્રણ સામાન્ય વર્ગોમાં વર્ગીકૃત કરવામાં આવે છે જે સ્થાપત્યના ધોવાણને ઘટાડવા, અટકાવવા અને સુધારવાનો પ્રયાસ કરે છે. આ વ્યાપક વર્ગોમાં, દરેક અભિગમને વધુ વિભાજિત કરવામાં આવે છે જે ધોવાણને પહોંચી વળવા માટે અપનાવવામાં આવેલી ઉચ્ચ-સ્તરની વ્યૂહરચનાઓને પ્રતિબિંબિત કરે છે. આ પ્રક્રિયા-લક્ષી આર્કિટેક્ચર અનુરૂપતા, આર્કિટેક્ચર ઉત્ક્રાંતિ વ્યવસ્થાપન, આર્કિટેક્ચર ડિઝાઇન અમલીકરણ, આર્કિટેક્ચરથી અમલીકરણ જોડાણ, સ્વ-અનુકૂલન અને આર્કિટેક્ચર પુનઃસ્થાપન તકનીકો છે જેમાં પુનઃપ્રાપ્તિ, શોધ અને સમાધાનનો સમાવેશ થાય છે. સ્થાપત્યના ઉલ્લંઘનને શોધવા માટે બે મુખ્ય તકનીકો છેઃ પ્રતિબિંબ નમૂનાઓ અને ક્ષેત્ર-વિશિષ્ટ ભાષાઓ. રિફ્લેક્શન મોડેલ (આર. એમ.) તકનીકો સિસ્ટમના આર્કિટેક્ટ્સ દ્વારા પ્રદાન કરવામાં આવેલા ઉચ્ચ-સ્તરના મોડેલની સરખામણી સ્રોત કોડ અમલીકરણ સાથે કરે છે. સ્થાપત્યની મર્યાદાઓને સ્પષ્ટ કરવા અને તપાસવા પર ધ્યાન કેન્દ્રિત કરતી ક્ષેત્ર-વિશિષ્ટ ભાષાઓ પણ છે. સોફ્ટવેર આર્કિટેક્ચર પુનઃપ્રાપ્તિ સોફ્ટવેર આર્કિટેક્ચર પુનઃપ્રાપ્તિ (અથવા પુનર્નિર્માણ, અથવા રિવર્સ એન્જિનિયરિંગ) માં તેના અમલીકરણ અને દસ્તાવેજીકરણ સહિત ઉપલબ્ધ માહિતીમાંથી સોફ્ટવેર સિસ્ટમના આર્કિટેક્ચરને ઉજાગર કરવાની પદ્ધતિઓ, તકનીકો અને પ્રક્રિયાઓનો સમાવેશ થાય છે. અપ્રચલિત અથવા જૂની દસ્તાવેજીકરણ અને સ્થાપત્યના ધોવાણ સામે માહિતીસભર નિર્ણયો લેવા માટે આર્કિટેક્ચર પુનઃપ્રાપ્તિ ઘણીવાર જરૂરી છેઃ અમલીકરણ અને જાળવણીના નિર્ણયો કલ્પના કરેલ સ્થાપત્યથી અલગ પડે છે. સ્થિર પ્રોગ્રામ વિશ્લેષણ તરીકે સોફ્ટવેર આર્કિટેક્ચરને પુનઃપ્રાપ્ત કરવા માટે પ્રથાઓ અસ્તિત્વમાં છે. આ સોફ્ટવેર ઇન્ટેલિજન્સ પ્રેક્ટિસ દ્વારા આવરી લેવામાં આવતા વિષયોનો એક ભાગ છે. સંબંધિત ક્ષેત્રો ડિઝાઇન આર્કિટેક્ચર એ ડિઝાઇન છે પરંતુ તમામ ડિઝાઇન આર્કિટેક્ચરલ નથી. વ્યવહારમાં, આર્કિટેક્ટ તે છે જે સોફ્ટવેર આર્કિટેક્ચર (આર્કિટેક્ચરલ ડિઝાઇન) અને વિગતવાર ડિઝાઇન (બિન-આર્કિટેક્ચરલ ડિઝાઇન) વચ્ચેની રેખા ખેંચે છે. એવા કોઈ નિયમો અથવા માર્ગદર્શિકા નથી કે જે તમામ કેસોમાં બંધબેસે, જો કે તફાવતને ઔપચારિક બનાવવાના પ્રયાસો કરવામાં આવ્યા છે. ઈન્ટેન્શન/લોકાલીટી હાયપોથેસિસ અનુસાર, આર્કિટેક્ચરલ અને વિગતવાર ડિઝાઇન વચ્ચેનો તફાવત લોકાલીટી ક્રાઈટીરીયન દ્વારા વ્યાખ્યાયિત કરવામાં આવે છે, જે મુજબ સોફ્ટવેર ડિઝાઇન વિશેનું નિવેદન બિન-સ્થાનિક (આર્કિટેક્ચરલ) હોય છે જો અને માત્ર ત્યારે જ જો તેને સંતોષતા પ્રોગ્રામને પ્રોગ્રામમાં વિસ્તૃત કરી શકાય જે નથી કરતો. ઉદાહરણ તરીકે, ક્લાયન્ટ-સર્વર શૈલી સ્થાપત્ય (વ્યૂહાત્મક) છે કારણ કે આ સિદ્ધાંત પર બનેલા પ્રોગ્રામને એવા પ્રોગ્રામમાં વિસ્તૃત કરી શકાય છે જે ક્લાયન્ટ-સર્વર નથી-ઉદાહરણ તરીકે, પીઅર-ટુ-પીઅર નોડ્સ ઉમેરીને. જરૂરિયાતો ઇજનેરી જરૂરિયાતો ઇજનેરી અને સોફ્ટવેર આર્કિટેક્ચરને પૂરક અભિગમો તરીકે જોઈ શકાય છેઃ જ્યારે સોફ્ટવેર આર્કિટેક્ચર 'સોલ્યુશન સ્પેસ' અથવા 'કેવી રીતે' ને લક્ષ્ય બનાવે છે, ત્યારે જરૂરિયાતો ઇજનેરી 'પ્રોબ્લેમ સ્પેસ' અથવા 'શું' ને સંબોધિત કરે છે. જરૂરિયાતો ઇજનેરીમાં સ્પષ્ટતા, વાટાઘાટો, સ્પષ્ટીકરણ, માન્યતા, દસ્તાવેજીકરણ અને જરૂરિયાતોનું સંચાલન સામેલ છે. એન્જિનિયરિંગ અને સોફ્ટવેર આર્કિટેક્ચર બંને જરૂરિયાતો હિસ્સેદારોની ચિંતાઓ, જરૂરિયાતો અને ઇચ્છાઓની આસપાસ ફરે છે. એન્જિનિયરિંગ અને સોફ્ટવેર આર્કિટેક્ચરની જરૂરિયાતો વચ્ચે નોંધપાત્ર ઓવરલેપ છે, ઉદાહરણ તરીકે પાંચ ઔદ્યોગિક સોફ્ટવેર આર્કિટેક્ચર પદ્ધતિઓના અભ્યાસ દ્વારા પુરાવા મળે છે જે નિષ્કર્ષ કાઢે છે કે "ઇનપુટ્સ (લક્ષ્યો, અવરોધો, વગેરે). તેઓ સામાન્ય રીતે ખોટી રીતે વ્યાખ્યાયિત હોય છે, અને જેમ જેમ સ્થાપત્ય ઉભરી આવવાનું શરૂ કરે છે તેમ જ શોધાય છે અથવા વધુ સારી રીતે સમજી શકાય છે "અને જ્યારે" મોટાભાગની સ્થાપત્યની ચિંતાઓ સિસ્ટમ પરની જરૂરિયાતો તરીકે વ્યક્ત કરવામાં આવે છે, ત્યારે તેમાં ફરજિયાત ડિઝાઇન નિર્ણયો પણ શામેલ હોઈ શકે છે ". ટૂંકમાં, જરૂરી વર્તણૂક ઉકેલ માળખાને અસર કરે છે, જે બદલામાં નવી જરૂરિયાતો રજૂ કરી શકે છે. ટ્વીન પીક્સ મોડેલ જેવા અભિગમોનો હેતુ જરૂરિયાતો અને સ્થાપત્ય વચ્ચેના સહક્રિયાત્મક સંબંધનો ઉપયોગ કરવાનો છે. કમ્પ્યુટર આર્કિટેક્ચરના અન્ય પ્રકારો કમ્પ્યુટર આર્કિટેક્ચર કમ્પ્યુટર સિસ્ટમના આંતરિક માળખાને લક્ષ્ય બનાવે છે, જેમ કે સીપીયુ-અથવા પ્રોસેસર-બસ અને મેમરી જેવા હાર્ડવેર ઘટકોના સહયોગની દ્રષ્ટિએ. સર્વરલેસ આર્કિટેક્ચર સર્વરલેસ આર્કિટેક્ચર એ ક્લાઉડ કમ્પ્યુટિંગનો દાખલો છે જેને ઘણીવાર સર્વર-મુક્ત તરીકે ગેરસમજ થાય છે. તે અનિવાર્યપણે સર્વર વ્યવસ્થાપન જવાબદારીઓને વિકાસકર્તાઓથી ક્લાઉડ સેવા પ્રદાતાઓ તરફ ખસેડે છે. આ વ્યવસાયોને ક્લાઉડ ઇન્ફ્રાસ્ટ્રક્ચર પર તેમના બેકએન્ડ કોડને ચલાવવાની મંજૂરી આપે છે, ભૌતિક સર્વર વ્યવસ્થાપનની જરૂરિયાતને દૂર કરે છે. સર્વરલેસ આર્કિટેક્ચરનો ઇવેન્ટ-સંચાલિત અભિગમ નાના, કાર્ય-વિશિષ્ટ કાર્યો પર આધાર રાખે છે જે માંગ પર ચલાવવામાં આવે છે. આ કાર્યોને ફંક્શન એઝ અ સર્વિસ (એફ. એ. એ. એસ.) તરીકે ઓળખવામાં આવે છે, અને તેઓ એપ્લિકેશન માંગના આધારે પે-એઝ-યુ-ગો બિલિંગ મોડેલ અને ડાયનેમિક રિસોર્સ સ્કેલિંગ દ્વારા ખર્ચ-કાર્યક્ષમતા પ્રદાન કરે છે. સિસ્ટમ આર્કિટેક્ચર શબ્દ સિસ્ટમ આર્કિટેક્ચર મૂળરૂપે સિસ્ટમના આર્કિટેક્ચર પર લાગુ કરવામાં આવ્યો છે જેમાં હાર્ડવેર અને સોફ્ટવેર બંનેનો સમાવેશ થાય છે. સિસ્ટમ આર્કિટેક્ચર દ્વારા સંબોધવામાં આવતી મુખ્ય ચિંતા એ છે કે સંપૂર્ણ, યોગ્ય રીતે કાર્યરત ઉપકરણમાં સોફ્ટવેર અને હાર્ડવેરનું એકીકરણ. અન્ય સામાન્ય-વધુ વ્યાપક-અર્થમાં, આ શબ્દ કોઈપણ જટિલ પ્રણાલીના માળખાને લાગુ પડે છે જે તકનીકી, સામાજિક-તકનીકી અથવા સામાજિક પ્રકૃતિનો હોઈ શકે છે. એન્ટરપ્રાઇઝ આર્કિટેક્ચર એન્ટરપ્રાઇઝ આર્કિટેક્ચરનો ધ્યેય "વ્યવસાયિક દ્રષ્ટિ અને વ્યૂહરચનાને અસરકારક એન્ટરપ્રાઇઝમાં અનુવાદિત કરવાનો" છે. એન્ટરપ્રાઇઝ આર્કિટેક્ચર માળખા, જેમ કે ટી. ઓ. જી. એ. એફ. અને ઝેકમેન માળખા, સામાન્ય રીતે વિવિધ એન્ટરપ્રાઇઝ આર્કિટેક્ચર સ્તરો વચ્ચે તફાવત કરે છે. જોકે પરિભાષા માળખાથી માળખામાં અલગ પડે છે, ઘણા વ્યવસાય સ્તર, એપ્લિકેશન (અથવા માહિતી) સ્તર અને તકનીકી સ્તર વચ્ચેના ઓછામાં ઓછા તફાવતનો સમાવેશ કરે છે. એન્ટરપ્રાઇઝ આર્કિટેક્ચર અન્ય લોકો વચ્ચે આ સ્તરો વચ્ચેના સંરેખણને સંબોધિત કરે છે, સામાન્ય રીતે ટોપ-ડાઉન અભિગમમાં. વધુ વાંચન-આ પુસ્તક શિસ્તની મૂળભૂત વિભાવનાઓને આવરી લે છે. આ થીમ સિસ્ટમના ગુણવત્તાયુક્ત લક્ષણો હાંસલ કરવા પર કેન્દ્રિત છે. - આ પુસ્તક સોફ્ટવેર આર્કિટેક્ચર શું છે તેનું વર્ણન કરે છે અને દર્શાવે છે કે યુ. એમ. એલ. અને અન્ય સંકેતોનો ઉપયોગ કરીને તેને બહુવિધ દૃશ્યોમાં કેવી રીતે દસ્તાવેજીકરણ કરવું. તે વર્તન, સોફ્ટવેર ઇન્ટરફેસ અને તર્કસંગત દસ્તાવેજીકરણ સાથે આર્કિટેક્ચર દૃશ્યોને કેવી રીતે પૂરક બનાવવું તે પણ સમજાવે છે. પુસ્તકની સાથે એક વિકી છે જેમાં સોફ્ટવેર આર્કિટેક્ચર દસ્તાવેજીકરણનું ઉદાહરણ છે. - આર્કિટેક્ચરલ ડિઝાઇન અને વિગતવાર ડિઝાઇન વચ્ચેના તફાવત પર. બાહ્ય કડીઓ આઇબીએમ ડેવલપર્સવર્ક પર સમજૂતી સોફ્ટવેર એન્જિનિયરિંગ ઇન્સ્ટિટ્યૂટ (એસઇઆઈ), કાર્નેગી મેલોન યુનિવર્સિટી (સીએમયુ) ખાતે સોફ્ટવેર આર્કિટેક્ચર વ્યાખ્યાઓનો સંગ્રહ ઇન્ટરનેશનલ એસોસિએશન ઑફ આઇટી આર્કિટેક્ટ્સ (આઇએએસએ ગ્લોબલ), જે અગાઉ ઇન્ટરનેશનલ એસોસિએશન ફૉર સોફ્ટવેર આર્કિટેક્ટ્સ (આઇએએસએ) તરીકે જાણીતું હતું, <આઇડી 2>-આઇએફઆઇપી વર્કિંગ ગ્રુપની વેબસાઇટ 2.10 સોફ્ટવેર આર્કિટેક્ચર પર-સોફ્ટવેર આર્કિટેક્ચર વિષય પર માહિતીનો એક સ્વતંત્ર સ્રોત <આઇડી 1>, રોય ફિલ્ડિંગના આરઇએસટી નિબંધના પ્રકરણ 1 જ્યારે સારું આર્કિટેક્ચર ખરાબ થાય છે ત્યારે સર્પાકાર આર્કિટેક્ચર સંચાલિત વિકાસ-સર્પાકાર મોડેલ પર આધારિત એસડીએલસીનો હેતુ બિનઅસરકારક આર્કિટેક્ચર સોફ્ટવેર આર્કિટેક્ચર વાસ્તવિક જીવન કેસ સ્ટડીઝના જોખમોને ઘટાડવાનો છે.