በየእለቱ፣ በየኢንጂነሪንግ ህይወታችን ወቅት፣ ብዙ የተለያዩ ውስብስብ ችግሮች ያጋጥሙናል፣ እና በመረጃ እጦት ምክንያት ውሳኔ ለማድረግ ወይም ለሌላ ጊዜ የምናዘገይባቸው ሁኔታዎች ያጋጥሙናል። አዳዲስ አገልግሎቶችን ስንገነባ፣ መሠረተ ልማት ስንገነባ ወይም የእድገት ሂደቶችን ስንፈጥር፣ የተለያዩ ተግዳሮቶች ያሉበት ትልቅ ዓለምን እንነካለን።
ሁሉንም ችግሮች ለመዘርዘር አስቸጋሪ እና ምናልባትም የማይቻል ነው. ከእነዚህ ጉዳዮች ውስጥ አንዳንዶቹን የሚያጋጥሙት በአንድ የተወሰነ ቦታ ውስጥ ከሰሩ ብቻ ነው። በሌላ በኩል፣ የአይቲ ሲስተሞችን ለመገንባት ወሳኝ በመሆናቸው ሁላችንም ልንረዳቸው የሚገቡ ብዙ አሉ። በከፍተኛ ዕድል በሁሉም ፕሮጀክቶች ውስጥ ያጋጥሟቸዋል.
በዚህ ጽሑፍ ውስጥ የሶፍትዌር ፕሮግራሞችን በሚፈጥሩበት ጊዜ ካጋጠሙኝ አንዳንድ ችግሮች ጋር ልምዶቼን አካፍላለሁ።
ዊኪፔዲያን ብንመለከት የሚከተለውን ትርጉም እናገኛለን
ገጽታ-ተኮር የሶፍትዌር ልማት ውስጥ፣ ተሻጋሪ ስጋቶች በበርካታ ሞጁሎች ላይ ተጽእኖ የሚያሳድሩ የፕሮግራሙ ገጽታዎች ናቸው፣ ከእነዚህም ውስጥ በአንዱ ውስጥ መካተት አይቻልም። እነዚህ ስጋቶች ብዙውን ጊዜ በንድፍም ሆነ በአተገባበር ውስጥ ከቀሪው ስርዓት ውስጥ በንጽህና ሊበላሹ አይችሉም, እና መበታተን (የኮድ ማባዛት), መጠላለፍ (በስርዓቶች መካከል ጉልህ ጥገኛዎች) ወይም ሁለቱንም ሊያስከትሉ ይችላሉ.
እሱ ምን እንደሆነ በደንብ ይገልፃል፣ ግን ትንሽ ማራዘም እና ማቃለል እፈልጋለሁ፡-
አቋራጭ አሳሳቢ ጉዳይ የስርአቱ/ድርጅቱ ፅንሰ-ሀሳብ ወይም አካል ሌሎች በርካታ ክፍሎችን የሚነካ (ወይም 'የሚቆርጥ') ነው።
የእንደዚህ አይነት አሳሳቢ ጉዳዮች ምርጥ ምሳሌዎች የስርዓት አርክቴክቸር ፣ ሎግንግ ፣ ደህንነት ፣ የግብይት አስተዳደር ፣ ቴሌሜትሪ ፣ የውሂብ ጎታ ዲዛይን እና ሌሎች ብዙ ናቸው። በዚህ ጽሑፍ ውስጥ ብዙዎቹን በዝርዝር እንገልጻለን.
በኮድ ደረጃ፣ ተሻጋሪ ስጋቶች ብዙውን ጊዜ እንደ Aspect-Oriented Programming (AOP) ቴክኒኮችን በመጠቀም ይተገበራሉ፣ እነዚህ ስጋቶች በመተግበሪያው ውስጥ በሙሉ ሊተገበሩ በሚችሉ የተለያዩ ክፍሎች ተስተካክለዋል። ይህ የንግዱ አመክንዮ ከነዚህ ስጋቶች እንዲገለል ያደርገዋል፣ይህም ኮዱ የበለጠ ሊነበብ እና ሊቆይ የሚችል ያደርገዋል።
እንደ ስፋት፣ መጠን፣ ተግባራዊነት፣ አስፈላጊነት፣ ዒላማ እና ሌሎችን በተለያዩ ባህሪያት በመከፋፈል ገጽታዎችን እንዴት መመደብ እንደሚቻል ብዙ ሊሆኑ የሚችሉ መንገዶች አሉ፣ ነገር ግን በዚህ ጽሑፍ ውስጥ፣ ቀላል ወሰን ምደባን እጠቀማለሁ። ይህን ስል፣ ይህ ልዩ ገጽታ የሚመራበት አጠቃላይ ድርጅት፣ የተለየ ሥርዓት ወይም የዚያ ሥርዓት የተወሰነ አካል የት እንደሆነ ማለቴ ነው።
ስለዚህ, ገጽታዎችን ወደ ማክሮ እና ማይክሮ ወደ እከፍላለሁ.
በማክሮ አንፃር በአጠቃላይ እኛ የምንከተላቸው ጉዳዮችን ለጠቅላላው ስርዓት እንደ የተመረጠ የስርዓት አርክቴክቸር እና ዲዛይኑ (ሞኖሊቲክ ፣ ማይክሮ ሰርቪስ ፣ አገልግሎት-ተኮር አርክቴክቸር) ፣ የቴክኖሎጂ ቁልል ፣ የአደረጃጀት መዋቅር ፣ ወዘተ. የማክሮ ገጽታዎች በዋናነት ከስልታዊ እና ከፍተኛ-ደረጃ ጋር የተገናኙ ናቸው ። ውሳኔዎች.
እስከዚያው ድረስ, ማይክሮው ገጽታ ከኮዱ ደረጃ እና እድገት ጋር በጣም የቀረበ ነው. ለምሳሌ የትኛው ማዕቀፍ ከመረጃ ቋቱ ጋር መስተጋብር ለመፍጠር ጥቅም ላይ ይውላል፣ የአቃፊዎች እና ክፍሎች የፕሮጀክት መዋቅር፣ ወይም የተወሰኑ የነገሮች ንድፍ ቅጦች።
ይህ ምደባ ተስማሚ ባይሆንም, ሊሆኑ የሚችሉ ችግሮችን እና የመፍትሄ ሃሳቦችን አስፈላጊነት እና ተፅእኖን ለመረዳት ይረዳል.
በዚህ ጽሑፍ ውስጥ, የእኔ ዋና ትኩረቴ በማክሮ ገጽታዎች ላይ ይሆናል.
ስለ ሶፍትዌር አርክቴክቸር ገና መማር ስጀምር ስለ ኮንዌይ ህግ እና በድርጅታዊ መዋቅር ላይ ስላለው ተጽእኖ ብዙ አስደሳች መጣጥፎችን አነበብኩ። በተለይ ይህኛው ። ስለዚህ, ይህ ህግ እንዲህ ይላል
ሥርዓትን የሚቀርጽ ማንኛውም ድርጅት (በሰፊው የተገለፀ) መዋቅሩ የድርጅቱ የግንኙነት መዋቅር ቅጂ የሆነ ንድፍ ያወጣል።
ይህ ጽንሰ-ሐሳብ በእርግጥ በጣም ዓለም አቀፋዊ እና ወርቃማ ህግን እንደሚወክል ሁልጊዜ አምናለሁ.
ከዚያ የኤሪክ ኢቫንስን Domain-Driven Design (ዲዲዲ) ለሞዴሊንግ ሲስተሞች መማር ጀመርኩ። ኤሪክ ኢቫንስ የታሰረ አውድ መለያን አስፈላጊነት አፅንዖት ሰጥቷል። ይህ ጽንሰ-ሐሳብ ውስብስብ የሆነውን የዶሜይን ሞዴል ወደ ትናንሽ፣ ይበልጥ ማስተዳደር የሚችሉ፣ እያንዳንዳቸው የራሳቸው ውሱን የእውቀት ስብስብ ያላቸውን ክፍሎች መከፋፈልን ያካትታል። ይህ አካሄድ ውጤታማ የቡድን ግንኙነት እንዲኖር ይረዳል፣ ምክንያቱም የጠቅላላውን ጎራ ሰፊ ዕውቀት ፍላጎትን ስለሚቀንስ እና የአውድ መለዋወጥን ስለሚቀንስ ውይይቶችን የበለጠ ውጤታማ ያደርገዋል። የዐውደ-ጽሑፍ መቀያየር ከመቼውም ጊዜ የከፋው እና ብዙ ሀብት የሚፈጅ ነገር ነው። ኮምፒውተሮች እንኳን ከሱ ጋር እየታገሉ ነው። ምንም እንኳን የአውድ መቀያየርን ሙሉ ለሙሉ መቅረት ላይ ለመድረስ ባይቻልም፣ እኛ መትጋት ያለብን ለዚህ ነው ብዬ አስባለሁ።
ወደ የኮንዌይ ህግ ስመለስ ብዙ ጉዳዮችን አግኝቻለሁ።
ከኮንዌይ ህግ ጋር ለመጀመሪያ ጊዜ ያጋጠመኝ ጉዳይ ፣ የስርአት ዲዛይን ድርጅታዊ መዋቅርን እንደሚያመለክት፣ ውስብስብ እና ሁሉን አቀፍ የታሰሩ አውዶችን የመፍጠር አቅም ነው። ይህ ውስብስብነት የሚነሳው ድርጅታዊ መዋቅሩ ከጎራ ድንበሮች ጋር በማይጣጣምበት ጊዜ ነው, ይህም ወደ የተገደቡ አውዶች በከፍተኛ ሁኔታ እርስ በርስ የሚደጋገፉ እና በመረጃ የተጫኑ ናቸው. ለልማቱ ቡድን ተደጋጋሚ አውድ-መቀየር ይመራል።
ሌላው ጉዳይ ድርጅታዊ ቃላቶች ወደ ኮድ ደረጃ መውጣታቸው ነው። ድርጅታዊ አወቃቀሮች ሲቀየሩ የኮድቤዝ ማሻሻያዎችን ያስፈልገዋል፣ ጠቃሚ ሀብቶችን ይበላል።
ስለዚህ ኢንቨርስ ኮንዌይ ማኑቨርን መከተል ተፈላጊውን የሶፍትዌር አርክቴክቸር የሚያበረታታ ስርዓት እና ድርጅት ለመገንባት ይረዳል። ይሁን እንጂ በዚህ ደረጃ ላይ ያሉት ለውጦች ረዘም ያሉ ስለሆኑ ይህ አካሄድ ቀደም ሲል በተፈጠሩት አርክቴክቸር እና አወቃቀሮች ውስጥ በጣም ጥሩ አይሰራም፣ ነገር ግን በጅማሬዎች ላይ ለየት ያለ አፈጻጸም ያለው ነው ማለቱ ትኩረት የሚስብ ነው።
ይህ ስርዓተ-ጥለት ወይም "ፀረ-ስርዓተ-ጥለት" ያለ ምንም አርክቴክቸር ስርዓትን ይገነባል። የማይቀር እያደገ ያለውን ውስብስብነት እንዴት መቆጣጠር እንደሚቻል ላይ ምንም ደንቦች፣ ድንበሮች እና ስትራቴጂዎች የሉም። ውስብስብነት የሶፍትዌር ስርዓቶችን በመገንባት ጉዞ ውስጥ በጣም አስፈሪ ጠላት ነው.
እንዲህ ዓይነቱን ስርዓት መገንባትን ለማስወገድ የተወሰኑ ህጎችን እና ገደቦችን መከተል አለብን።
ለሶፍትዌር አርክቴክቸር ስፍር ቁጥር የሌላቸው ትርጓሜዎች አሉ። የተለያዩ ገጽታዎችን ስለሚሸፍኑ ብዙዎቹን እወዳቸዋለሁ. ሆኖም፣ ስለ አርክቴክቸር ማመዛዘን እንድንችል፣ አንዳንዶቹን በአእምሯችን መፍጠር በተፈጥሮ ያስፈልገናል። እና ይህ ፍቺ በዝግመተ ለውጥ ሊመጣ ይችላል ብሎ መናገር ጠቃሚ ነው. ስለዚህ, ቢያንስ ለአሁን, ለራሴ የሚከተለው መግለጫ አለኝ.
የሶፍትዌር አርክቴክቸር የተገነባውን ስርዓት የሚነኩ በየቀኑ ስለሚያደርጓቸው ውሳኔዎች እና ምርጫዎች ነው።
የሚነሱ ችግሮችን ለመፍታት በ"ቦርሳ"ህ ውስጥ ሊኖርህ የሚገባውን ውሳኔ ለማድረግ፣መስፈርቶቹን መረዳት የንግድ ስራ የሚፈልገውን ለመገንባት ቁልፍ መሆኑን መግለጽ አስፈላጊ ነው። ሆኖም ፣ አንዳንድ ጊዜ መስፈርቶች ግልፅ አይደሉም ወይም አልተገለፁም ፣ በዚህ ሁኔታ ፣ የበለጠ ማብራሪያ ለማግኘት መጠበቅ ወይም በተሞክሮዎ ላይ መታመን እና በአዕምሮዎ ላይ መተማመን የተሻለ ነው። ግን ለማንኛውም፣ የሚተማመኑባቸው መርሆች እና ቅጦች ከሌሉ በትክክል ውሳኔዎችን ማድረግ አይችሉም። ወደ የሶፍትዌር አርክቴክቸር ስታይል ትርጉም እየመጣሁ ነው።
የሶፍትዌር አርክቴክቸር ስታይል ሶፍትዌሮችን እንዴት መገንባት እንደሚቻል የሚጠቁሙ የመርሆች እና የስርዓተ-ጥለት ስብስብ ነው።
በታቀደው የሕንፃ ግንባታ ላይ ያተኮሩ ብዙ የተለያዩ የሕንፃ ስልቶች አሉ፣ እና ብዙዎችን በአንድ ጊዜ መተግበር የተለመደ ሁኔታ ነው።
ለምሳሌ እንደ፡-
ሞኖሊቲክ አርክቴክቸር
በጎራ የሚመራ ንድፍ
አካልን መሰረት ያደረገ
የማይክሮ አገልግሎቶች
ቧንቧ እና ማጣሪያዎች
በክስተት ላይ የተመሰረተ
ማይክሮከርነል
አገልግሎት-ተኮር
እና የመሳሰሉት…
እርግጥ ነው፣ ጥቅሞቻቸውም ጉዳቶቻቸውም አሏቸው፣ ነገር ግን የተማርኩት በጣም አስፈላጊው ነገር አርክቴክቸር በሂደት እየተሻሻለ እንደሚሄድ በተጨባጭ ችግሮች ላይ ነው። ከሞኖሊቲክ አርክቴክቸር ጀምሮ የተግባር ውስብስብ ነገሮችን ለመቀነስ ትልቅ ምርጫ ነው፣ ይህ አርክቴክቸር ምርቱን ለመገንባት የምርት-ገበያ ብቃት (PMI) ደረጃ ላይ ከደረሰ በኋላም ከፍላጎትዎ ጋር የሚስማማ ይሆናል። በሚዛን ደረጃ፣ ገለልተኛ ማሰማራትን፣ የተለያዩ የቴክኖሎጂ ቁልል አካባቢን እና ብዙም የተጣመረ አርክቴክቸር (እና እስከዚያው ድረስ ግልጽነት የጎደለው በክስተት-ተኮር እና መጠጥ ቤት-ንዑስ አቀራረቦች ምክንያት) ወደ አንድ ክስተት-ተኮር አቀራረብ እና ጥቃቅን አገልግሎቶች መሄድ ሊያስቡበት ይችላሉ። እነዚህ የማደጎ ናቸው). ቀላልነት እና ቅልጥፍና ቅርብ እና እርስ በእርሳቸው ላይ ከፍተኛ ተጽዕኖ ያሳድራሉ. ብዙውን ጊዜ፣ ውስብስብ አርክቴክቸር የአዳዲስ ባህሪያትን የእድገት ፍጥነት ላይ ተጽእኖ ያሳድራል፣ ያሉትን ይደግፋሉ እና ይጠብቃሉ፣ እና የስርዓቱን የተፈጥሮ ዝግመተ ለውጥ ይፈታተናሉ።
ይሁን እንጂ ውስብስብ ሥርዓቶች ብዙውን ጊዜ ውስብስብ እና አጠቃላይ ሥነ ሕንፃ ያስፈልጋቸዋል, ይህም የማይቀር ነው.
እንደ እውነቱ ከሆነ, ይህ በጣም ሰፊ ርዕስ ነው, እና ለተፈጥሮ ዝግመተ ለውጥ ስርዓቶችን እንዴት ማዋቀር እና መገንባት እንደሚቻል ብዙ ጥሩ ሀሳቦች አሉ. በተሞክሮዬ ላይ በመመስረት የሚከተለውን አካሄድ ሠርቻለሁ፡-
እንዲሁም እንደ DAU (ዕለታዊ ንቁ ተጠቃሚዎች)፣ MAU (ወርሃዊ ንቁ ተጠቃሚዎች)፣ RPC (ጥያቄ በሰከንድ) እና TPC (በሴኮንድ ግብይት) ያሉ ቁጥሮችን እና መለኪያዎችን መረዳት በጣም አስፈላጊ ነው ምክንያቱም አርክቴክቸር ለ 100 ንቁ ተጠቃሚዎች እና 100 ሚሊዮን ንቁ ተጠቃሚዎች የተለያዩ ናቸው።
እንደ የመጨረሻ ማስታወሻ፣ አርክቴክቸር በምርቱ ስኬት ላይ ከፍተኛ ተጽእኖ አለው እላለሁ። ለምርቶቹ በደንብ ያልተነደፈ አርክቴክቸር በመጠን ላይ ያስፈልጋል፣ ይህ ደግሞ ወደ ውድቀት ሊመራ ይችላል ምክንያቱም ደንበኞቻቸው ስርዓቱን በሚጨምሩበት ጊዜ አይጠብቁም ፣ ተፎካካሪ ይመርጣሉ ፣ ስለሆነም እምቅ ልኬትን መቅደም አለብን። ምንም እንኳን አንዳንድ ጊዜ ዘንበል ያለ አቀራረብ ሊሆን እንደማይችል አምናለሁ ፣ ሀሳቡ ሊሰፋ የሚችል ግን ቀድሞውኑ ያልተስተካከለ ስርዓት እንዲኖር ነው። በሌላ በኩል፣ በጣም የተወሳሰበ እና ቀድሞውንም የተመጣጠነ ስርዓት ያለ ደንበኛ ወይም ብዙዎቹን ለማግኘት እቅድ ማውጣቱ ለንግድ ስራዎ ያለ ምንም ዋጋ ያስወጣዎታል።
የቴክኖሎጂ ቁልል መምረጥም በቅጥር፣ በሥርዓት የተፈጥሮ ዝግመተ ለውጥ አመለካከቶች፣ ልኬታማነት እና የሥርዓት አፈጻጸም ላይ ተጽእኖ ስለሚያሳድር የማክሮ-ደረጃ ውሳኔ ነው።
የቴክኖሎጂ ቁልል ለመምረጥ የመሠረታዊ ጉዳዮች ዝርዝር ይህ ነው-
በርካታ የቴክኖሎጂ ቁልል መኖሩ የንግድ እድገትን እንዴት ሊጎዳው ይችላል?
በአንድ እይታ፣ አንድ ተጨማሪ ቁልል ማስተዋወቅ ቅጥርዎን ሊጨምር ይችላል፣ ግን በሌላ በኩል፣ ሁለቱንም ቁልል መደገፍ ስለሚያስፈልግ ተጨማሪ የጥገና ወጪዎችን ያመጣል። ስለዚህ፣ ቀደም ብዬ እንዳልኩት፣ በእኔ እይታ፣ ተጨማሪ የቴክኖሎጂ ቁልል ለማካተት ተጨማሪ ፍላጎት ብቻ ክርክር መሆን አለበት።
ግን ለአንድ የተወሰነ ችግር ምርጡን መሳሪያ የመምረጥ መርህ ምንድነው?
አንዳንድ ጊዜ ከዚህ በላይ በተጠቀሱት ተመሳሳይ ጉዳዮች ላይ በመመርኮዝ አንድን ልዩ ችግር ለመፍታት አዳዲስ መሳሪያዎችን ከማምጣት በስተቀር ሌላ ምርጫ የለህም, በእንደዚህ አይነት ጉዳዮች ላይ, በጣም ጥሩውን መፍትሄ መምረጥ ምክንያታዊ ነው.
ከአንድ የተወሰነ ቴክኖሎጂ ጋር ከፍተኛ ትስስር የሌላቸው ስርዓቶችን መፍጠር ፈታኝ ሊሆን ይችላል. ያም ሆኖ ስርዓቱ ከቴክኖሎጂ ጋር በጥብቅ ያልተጣመረበት እና ነገ አንድ የተወሰነ ማዕቀፍ ወይም መሳሪያ ለጥቃት ከተጋለለ አልፎ ተርፎም ከተቋረጠ አይሞትም.
ሌላው አስፈላጊ ግምት ከክፍት ምንጭ እና ከባለቤትነት የሶፍትዌር ጥገኛዎች ጋር የተያያዘ ነው. የባለቤትነት ሶፍትዌር ያነሰ የመተጣጠፍ እና የማበጀት እድል ይሰጥዎታል። አሁንም፣ በጣም አደገኛው ነገር የሻጭ መቆለፍ ነው፣ እርስዎ በአቅራቢ ምርቶች፣ ዋጋዎች፣ ውሎች እና የመንገድ ካርታ ላይ ጥገኛ ይሆናሉ። ሻጩ አቅጣጫውን ከቀየረ፣ ዋጋ ከጨመረ ወይም ምርቱን ካቋረጠ ይህ አደገኛ ሊሆን ይችላል። ክፍት ምንጭ ሶፍትዌር አንድ አካል ስለማይቆጣጠረው ይህን አደጋ ይቀንሳል። በሁሉም ደረጃዎች ላይ አንድ ነጠላ ውድቀትን ማስወገድ ለዕድገት አስተማማኝ ስርዓቶችን ለመገንባት ቁልፍ ነው.
አንድ ነጠላ የብልሽት ነጥብ (SPOF) የሚያመለክተው የትኛውንም የስርዓት ክፍል ነው፣ ካልተሳካ፣ አጠቃላይ ስርዓቱ ስራውን እንዲያቆም ያደርገዋል። SPOFsን በሁሉም ደረጃዎች ማስወገድ ከፍተኛ ተደራሽነት ለሚፈልግ ለማንኛውም ሥርዓት ወሳኝ ነው። እውቀትን፣ ሰራተኞችን፣ የስርዓት ክፍሎችን፣ የደመና አቅራቢዎችን እና የኢንተርኔት ገመዶችን ጨምሮ ሁሉም ነገር ሊሳካ ይችላል።
ነጠላ ነጥቦችን ለማስወገድ ልንጠቀምባቸው የምንችላቸው በርካታ መሰረታዊ ቴክኒኮች አሉ፡-
በዚህ ጽሑፍ ውስጥ በርካታ ቁልፍ የማክሮ ገጽታዎችን እና ውስብስብነታቸውን እንዴት መቋቋም እንደምንችል ተመልክተናል።
ስላነበቡ እናመሰግናለን! በሚቀጥለው እንገናኝ!