سلام همکارانو.
نن ورځ موږ ستاسو د غور لپاره د Tugberk Ugurlu لخوا د یوې مقالې ژباړه وړاندیز کوو، چا چې په نسبتا کوچني حجم کې د عصري سافټویر سیسټمونو ډیزاین کولو اصول په ګوته کړي. دلته هغه څه دي چې لیکوال یې په لنډیز کې د ځان په اړه وايي:
څرنګه چې د هابرو په مقاله کې د 2019 پورې د معمارۍ نمونو + ډیزاین نمونو په څیر پراخه موضوع پوښل بالکل ناممکن دي ، نو موږ نه یوازې پخپله د ښاغلي اوروګلو متن وړاندیز کوو ، بلکه ډیری لینکونه چې هغه یې په مهربانۍ سره پکې شامل کړي دي. که تاسو دا خوښ کړئ، موږ به د توزیع شوي سیسټمونو ډیزاین په اړه یو ډیر لوړ ځانګړی متن خپور کړو.
سنیپ شاټ
که تاسو هیڅکله د داسې ننګونو سره مخ شوي نه یاست لکه د سکریچ څخه د سافټویر سیسټم ډیزاین کول ، نو کله چې دا ډول کار پیل کوئ ، ځینې وختونه دا هم روښانه نه وي چې چیرې یې پیل کړئ. زه باور لرم چې تاسو لومړی باید حدونه رسم کړئ ترڅو تاسو د دې په اړه لږ یا لږ باوري نظر ولرئ چې واقعیا تاسو څه ډیزاین کوئ ، او بیا خپل آستینونه پورته کړئ او په دې حدودو کې کار وکړئ. د پیل ټکي په توګه، تاسو کولی شئ یو محصول یا خدمت واخلئ (مثالی یو چې تاسو واقعیا خوښوي) او معلومه کړئ چې څنګه یې پلي کړئ. تاسو شاید حیران شئ چې دا محصول څومره ساده ښکاري، او په حقیقت کې څومره پیچلتیا لري. هېر مو نشي:
زما په اند ترټولو غوره مشوره چې زه یې هرچا ته د سیسټم ډیزاین کولو پیل کولی شم دا دی: هیڅ انګیرنه مه کوئ! له پیل څخه، تاسو اړتیا لرئ د دې سیسټم په اړه پیژندل شوي حقایق او د هغې سره تړلې هیلې مشخص کړئ. دلته ځینې ښه پوښتنې دي چې تاسو سره ستاسو د ډیزاین سره پیل کولو کې مرسته کولو لپاره پوښتنه وکړئ:
- کومه ستونزه ده چې موږ یې د حل کولو هڅه کوو؟
- د کاروونکو لوړ شمیر څومره دی چې زموږ سیسټم سره اړیکه ونیسي؟
- د معلوماتو لیکلو او لوستلو کومې نمونې به موږ وکاروو؟
- د متوقع ناکامۍ قضیې کومې دي، موږ به یې څنګه اداره کړو؟
- د سیسټم دوام او شتون لپاره تمه څه دي؟
- ایا تاسو باید د کار کولو پرمهال د بهرني تصدیق او مقرراتو پورې اړوند کوم اړتیاوې په پام کې ونیسئ؟
- موږ کوم ډول حساس معلومات ذخیره کوو؟
دا یوازې یو څو پوښتنې دي چې زما او هغه ټیمونو لپاره ګټورې وې چې ما د کلونو مسلکي فعالیت په اوږدو کې برخه اخیستې ده. که تاسو د دې پوښتنو ځوابونه پیژنئ (او نور کوم چې د هغه شرایطو سره تړاو لري چې تاسو پکې کار کوئ) نو تاسو کولی شئ په تدریجي ډول د ستونزې تخنیکي توضیحاتو ته لاړ شئ.
لومړنۍ کچه تنظیم کړئ
زه دلته د "بیس لاین" څخه څه معنی لرم؟ په حقیقت کې ، زموږ په وختونو کې ، د سافټویر صنعت کې ډیری ستونزې د موجوده میتودونو او ټیکنالوژیو په کارولو سره حل کیدی شي. په دې اساس، د دې منظرې په نیولو سره، تاسو یو مشخص سر پیل ترلاسه کوئ کله چې د ستونزو سره مخ شئ چې بل څوک یې ستاسو څخه مخکې حل کړي. مه هېروئ چې پروګرامونه د سوداګرۍ او کاروونکي ستونزې حل کولو لپاره لیکل شوي، نو موږ هڅه کوو چې ستونزه په خورا ساده او ساده ډول حل کړو (د کارونکي له نظره). ولې دا مهمه ده چې یاد وساتئ؟ شاید ستاسو د همغږۍ سیسټم کې تاسو غواړئ د ټولو ستونزو لپاره ځانګړي حلونه وپلټئ، ځکه چې تاسو فکر کوئ، "که زه هرچیرې نمونې تعقیب کړم نو زه څه ډول پروګرامر یم"؟ په حقیقت کی، دلته هنر د دې په اړه پریکړه کوي چې چیرته او څه وکړي. البته، موږ هر یو باید وخت په وخت د ځانګړو ستونزو سره مخ شو، چې هر یو یې ریښتینې ننګونه ده. په هرصورت، که زموږ لومړنۍ کچه په روښانه توګه تعریف شي، نو موږ پوهیږو چې خپله انرژي په څه مصرف کړو: زموږ په وړاندې د ستونزې حل کولو لپاره د چمتو شوي انتخابونو لټون کول، یا نور مطالعه کول او ژوره پوهه ترلاسه کول.
زه فکر کوم چې زه توانیدلی وم چې تاسو قانع کړم چې که یو متخصص په ډاډ سره پوه شي چې د ځینې عالي سافټویر سیسټمونو معمارۍ برخه څه ده ، نو دا پوهه به د معمار هنر کې مهارت ترلاسه کولو او پدې برخه کې قوي اساس رامینځته کولو لپاره لازمي وي.
ښه، نو له کوم ځای څخه پیل کول؟ یو
په هرصورت، مخکې له دې چې دې موادو ته لاړ شئ، راځئ چې ترټولو مهم معماري ننګونو ته نږدې کتنه وکړو چې موږ په عمل کې ورسره مخ یو. دا مهمه ده ځکه چې تاسو باید د یوې سختې او څو اړخیزې ستونزې ډیری اړخونه مشخص کړئ، او بیا یې د مقرراتو په چوکاټ کې په ټاکل شوي سیسټم کې حل کړئ.
د معلوماتو ذخیره کولو او ترلاسه کولو په اړه پوهه رامینځته کړئ
عموما، ستاسو پریکړه په دې اړه چې تاسو څنګه د اوږدې مودې لپاره خپل ډاټا ذخیره او بیرته ترلاسه کوئ د سیسټم فعالیت باندې خورا مهم اغیزه لري. له همدې امله، تاسو باید لومړی د خپل سیسټم تمه شوي لیکلو او لوستلو ځانګړتیاو باندې پوه شئ. بیا تاسو اړتیا لرئ د دې شاخصونو ارزونه وکړئ او د ترسره شوي ارزونو پراساس انتخاب وکړئ. په هرصورت، تاسو کولی شئ په مؤثره توګه د دې کار سره مقابله وکړئ یوازې هغه وخت چې تاسو د موجوده ډیټا ذخیره کولو نمونو پوهیږئ. په اصل کې، دا د اړونده پوهه معنی لري
ډیټابیسونه د ډیټا جوړښتونو په توګه فکر کیدی شي چې خورا پیمانه او دوامدار دي. نو ځکه، د ډیټا جوړښتونو پوهه باید ستاسو لپاره خورا ګټور وي کله چې یو ځانګړي ډیټابیس غوره کړئ. د مثال په ډول،
سنیپ شاټ
یوځل چې تاسو د ډیټا ذخیره کولو مختلف نمونو په اړه کافي پوهه ولرئ ، د معلوماتو دوام او شتون مطالعې ته لاړشئ. لومړی، تاسو باید پوه شئ
په نهایت کې ، د ډیټا ذخیره کولو مسلو په اړه خبرو اترو پای ته رسولو ، موږ باید د کیچ کولو یادونه هم وکړو. ایا دا باید په پیرودونکي او سرور کې په ورته وخت کې وګرځي؟ ستاسو په زیرمه کې به کوم معلومات وي؟ او ولې؟ تاسو څنګه د کیچ باطلول تنظیم کوئ؟ ایا دا به په منظمه توګه ترسره شي، په ځینو وقفو کې؟ که هو، څو ځله؟ زه وړاندیز کوم چې د دې موضوعاتو سره مطالعه پیل کړئ
د اړیکو نمونې
سیسټمونه د مختلفو برخو څخه جوړ دي؛ دا کیدای شي مختلف پروسې وي چې په ورته فزیکي نوډ کې پرمخ ځي، یا مختلف ماشینونه ستاسو د شبکې په مختلفو برخو کې روان دي. ستاسو په شبکه کې ځینې دا سرچینې ممکن شخصي وي، مګر نور باید عامه وي او د مصرف کونکو لپاره خلاص وي چې دوی ته له بهر څخه لاسرسی ومومي.
دا اړینه ده چې د یو بل سره د دې سرچینو ارتباط ډاډمن کړي، او همدارنګه د ټول سیسټم او بهرنۍ نړۍ ترمنځ د معلوماتو تبادله. د سیسټم ډیزاین په شرایطو کې، دلته بیا موږ د یو لړ نوي او ځانګړي ننګونو سره مخ یو. راځئ وګورو چې دوی څنګه ګټور کیدی شي
سنیپ شاټ
کله چې د بهرنۍ نړۍ سره د اړیکو تنظیم کول، دا تل خورا مهم وي
د پیوستون توزیع
زه ډاډه نه یم چې دا موضوع په جلا برخه کې اچول به هرچا ته توجیه ښکاري. په هرصورت، زه به دا مفکوره دلته په تفصیل سره وړاندې کړم، او زه باور لرم چې پدې برخه کې مواد د "اړیکو ویش" اصطلاح لخوا خورا دقیق بیان شوي.
سیسټمونه د ډیری برخو په سمه توګه وصل کولو سره رامینځته کیږي ، او د دوی اړیکې د یو بل سره ډیری وختونه د تاسیس شوي پروتوکولونو پراساس تنظیم کیږي ، د مثال په توګه ، TCP او UDP. په هرصورت، دا پروتوکولونه اکثرا د عصري سیسټمونو ټولو اړتیاو پوره کولو لپاره ناکافي دي، کوم چې ډیری وختونه د لوړ بار لاندې کار کوي او د کاروونکي اړتیاوو پورې هم خورا ډیر تړاو لري. دا ډیری وختونه اړین دي چې په سیسټم کې د دومره لوړ بارونو سره د مقابلې لپاره د ارتباطاتو توزیع کولو لارې ومومئ.
دا ویش د ښه پیژندلو پر بنسټ دی
تاسو باید په اړه هم پوه شئ
راځئ چې د سوداګرۍ منطق په اړه خبرې وکړو. د سوداګرۍ منطق، د کار جریان او اجزاو جوړښت
نو، موږ د سیسټم مختلف زیربنایي اړخونو په اړه بحث وکړ. ډیری احتمال، کاروونکي حتی ستاسو د سیسټم ټولو عناصرو په اړه فکر نه کوي او په ریښتیا سره، د دوی په اړه هیڅ پروا نه کوي. کارونکي علاقه لري چې ستاسو د سیسټم سره تعامل څه شی دی ، د دې کولو سره څه ترلاسه کیدی شي ، او دا هم چې سیسټم څنګه د کارونکي امرونه پلي کوي ، څه او څنګه د کارونکي ډیټا سره ترسره کوي.
لکه څنګه چې د دې مقالې سرلیک وړاندیز کوي، زه د سافټویر جوړښت او سیسټم ډیزاین په اړه خبرې کوم. په دې اساس، ما پالن نه درلود چې د سافټویر ډیزاین نمونې پوښي چې دا تشریح کوي چې څنګه د سافټویر برخې رامینځته کیږي. په هرصورت، هرڅومره چې زه د دې په اړه فکر کوم ، هومره ماته داسې ښکاري چې د سافټویر ډیزاین نمونو او معمارۍ نمونو ترمینځ کرښه خورا تیاره ده ، او دوه مفکورې نږدې سره تړاو لري. راځئ چې د مثال په توګه واخلو
د سولیډ اصول - مفهومونه
د ډومین لخوا پرمخ وړل شوي ډیزاین ، په تېره بیا،واحدونه ,ټیمونه او پیښې د مسدس معمارۍ په امرونو او غوښتنو کې د مسؤلیتونو جلا کول (CQRS) د پیښې ثبت کول د اداکار ماډل MVC، MVVM او MVP ډیزاین نمونې
د همکارۍ لارې چارې
دا خورا امکان نلري چې تاسو به خپل ځان په یوه پروژه کې د ګډون کونکي په توګه ومومئ چې یوازې د سیسټم ډیزاین پروسې مسؤلیت لري. برعکس، تاسو به ډیری احتمال د هغه همکارانو سره اړیکه ونیسئ چې ستاسو د دندې دننه او بهر کار کوي. پدې حالت کې، تاسو اړتیا لرئ د همکارانو سره د ټاکل شوي ټیکنالوژۍ حلونو ارزونه وکړئ، د سوداګرۍ اړتیاوې وپیژنئ او پوه شئ چې څنګه د دندو سره موازي کولو لپاره غوره وي.
سنیپ شاټ
لومړی ګام د دې په اړه دقیق او شریک پوهه رامینځته کول دي چې د سوداګرۍ هدف چې تاسو یې د ترلاسه کولو هڅه کوئ هغه څه دي او کوم حرکت کونکي برخې به تاسو ورسره معامله وکړئ. د ګروپ ماډلینګ تخنیکونه، په ځانګړې توګه
شاید پدې موضوع کې بل بالغ ټیکنالوژي شتون ولري چې د ډومین چلونکي ډیزاین څخه لږ ګټور ندي. په هرصورت، موږ یو څه د موضوع ساحې پوهیدو ته راستانه شو، نو په ساحه کې پوهه او تجربه
سرچینه: www.habr.com