Facebook Pixel
Searching...
فارسی
EnglishEnglish
EspañolSpanish
简体中文Chinese
FrançaisFrench
DeutschGerman
日本語Japanese
PortuguêsPortuguese
ItalianoItalian
한국어Korean
РусскийRussian
NederlandsDutch
العربيةArabic
PolskiPolish
हिन्दीHindi
Tiếng ViệtVietnamese
SvenskaSwedish
ΕλληνικάGreek
TürkçeTurkish
ไทยThai
ČeštinaCzech
RomânăRomanian
MagyarHungarian
УкраїнськаUkrainian
Bahasa IndonesiaIndonesian
DanskDanish
SuomiFinnish
БългарскиBulgarian
עבריתHebrew
NorskNorwegian
HrvatskiCroatian
CatalàCatalan
SlovenčinaSlovak
LietuviųLithuanian
SlovenščinaSlovenian
СрпскиSerbian
EestiEstonian
LatviešuLatvian
فارسیPersian
മലയാളംMalayalam
தமிழ்Tamil
اردوUrdu
97 Things Every Software Architect Should Know

97 Things Every Software Architect Should Know

توسط Richard Monson-Haefel 2009 220 صفحات
3.62
500+ امتیازها
گوش دادن

نکات کلیدی

1. معمار برای کسب‌وکار، نه رزومه‌تان

همیشه نیازهای بلندمدت مشتری را در اولویت قرار دهید و هرگز اشتباه نخواهید کرد.

ارزش کسب‌وکار را در اولویت قرار دهید. به‌عنوان یک معمار، مسئولیت اصلی شما ایجاد راه‌حل‌هایی است که نیازهای سازمان را برآورده کند، نه اینکه رزومه‌تان را با جدیدترین فناوری‌ها پر کنید. بر روی ارائه سیستم‌هایی تمرکز کنید که مشکلات واقعی کسب‌وکار را حل کرده و مزایای ملموسی ارائه دهند. این ممکن است به معنای انتخاب فناوری‌های ساده‌تر و اثبات‌شده به‌جای گزینه‌های پیشرفته‌ای باشد که با اهداف پروژه هم‌راستا نیستند.

از مهندسی بیش از حد پرهیز کنید. وسوسه نشوید که برای مشکلات ساده، راه‌حل‌های پیچیده‌ای پیاده‌سازی کنید. مهندسی بیش از حد می‌تواند منجر به افزایش زمان توسعه، هزینه‌های بالاتر و نگهداری دشوارتر شود. در عوض، به سادگی زیبا که نیازهای فعلی را برآورده می‌کند و امکان مقیاس‌پذیری در آینده را فراهم می‌آورد، تلاش کنید.

  • فناوری‌ها را بر اساس نیازهای پروژه انتخاب کنید، نه ترجیحات شخصی
  • به‌طور منظم تصمیمات معماری را با اهداف کسب‌وکار اعتبارسنجی کنید
  • آماده باشید تا انتخاب‌های فنی را از منظر ارزش کسب‌وکار توجیه کنید

2. پیچیدگی را ساده کنید و تغییر را بپذیرید

پیچیدگی اساسی نمایانگر دشواری ذاتی در هر مشکل است.

پیچیدگی اساسی را تشخیص دهید. در هر پروژه، پیچیدگی ذاتی وجود دارد که نمی‌توان از آن اجتناب کرد. وظیفه شما به‌عنوان یک معمار این است که این پیچیدگی اساسی را شناسایی کرده و راه‌هایی برای مدیریت مؤثر آن پیدا کنید. در عین حال، تلاش کنید تا پیچیدگی تصادفی – پیچیدگی‌های غیرضروری ناشی از انتخاب‌های طراحی ضعیف یا مهندسی بیش از حد – را حذف یا کاهش دهید.

برای تغییر طراحی کنید. به این نکته توجه کنید که نیازها تکامل خواهند یافت و فناوری‌ها پیشرفت خواهند کرد. معماری‌هایی ایجاد کنید که انعطاف‌پذیر و قابل تطبیق با تغییرات باشند. این شامل طراحی سیستم‌های مدولار با مرزها و رابط‌های واضح است که به اجزا اجازه می‌دهد با حداقل تأثیر بر سیستم کلی به‌روزرسانی یا جایگزین شوند.

  • از انتزاع و کپسوله‌سازی برای مدیریت پیچیدگی استفاده کنید
  • بین اجزای سیستم ارتباط آزاد برقرار کنید
  • به‌طور منظم کد را بازنویسی کنید تا کدبیس تمیز و قابل نگهداری باشد
  • از رویکردهای توسعه تکراری برای سازگاری با نیازهای در حال تغییر استفاده کنید

3. ارتباطات برای معماری مؤثر حیاتی است

ارتباطات پادشاه است؛ وضوح و رهبری، خدمتگزاران فروتن آن.

مهارت‌های ارتباطی قوی توسعه دهید. به‌عنوان یک معمار، توانایی شما در بیان ایده‌های پیچیده به‌طور واضح و قانع‌کننده بسیار مهم است. شما باید بتوانید دیدگاه خود را به ذینفعان فنی و غیر فنی منتقل کنید و اطمینان حاصل کنید که همه افراد تصمیمات معماری و پیامدهای آن را درک می‌کنند.

از طریق تأثیر رهبری کنید. معماران مؤثر فقط راه‌حل‌ها را دیکته نمی‌کنند؛ بلکه اجماع ایجاد کرده و تیم‌ها را به پذیرش اصول معماری ترغیب می‌کنند. مهارت‌های رهبری را پرورش دهید که به شما اجازه می‌دهد تیم‌های توسعه را هدایت کنید، انتظارات ذینفعان را مدیریت کنید و در سیاست‌های سازمانی حرکت کنید.

  • تمرین کنید تا مفاهیم فنی را به زبان ساده و قابل درک توضیح دهید
  • از ابزارهای بصری مانند نمودارها و مدل‌ها برای توضیح مفاهیم معماری استفاده کنید
  • به‌طور فعال به بازخورد و نگرانی‌های تمام ذینفعان گوش دهید
  • مهارت‌های مذاکره و حل تعارض را توسعه دهید

4. توازن بین تخصص فنی و درک کسب‌وکار

حوزه کسب‌وکار را درک کنید.

دانش عمیق حوزه را کسب کنید. برای ایجاد راه‌حل‌های واقعاً مؤثر، معماران باید درک کاملی از حوزه کسب‌وکاری که در آن کار می‌کنند داشته باشند. این دانش به شما این امکان را می‌دهد که تصمیمات آگاهانه‌ای بگیرید که با اهداف کسب‌وکار هم‌راستا باشد و نیازهای آینده را پیش‌بینی کنید.

فاصله بین فناوری و کسب‌وکار را پر کنید. خود را به‌عنوان مترجمی بین تیم‌های فنی و ذینفعان کسب‌وکار قرار دهید. قادر باشید مفاهیم فنی را به مخاطبان غیر فنی توضیح دهید و نیازهای کسب‌وکار را به تصمیمات معماری ترجمه کنید.

  • به‌طور منظم با ذینفعان کسب‌وکار در ارتباط باشید تا اهداف و چالش‌های آن‌ها را درک کنید
  • از روندهای صنعتی و چشم‌اندازهای رقابتی مطلع باشید
  • دانش عملی از فرآیندها و معیارهای کسب‌وکار را توسعه دهید
  • تصمیمات معماری را بر اساس تأثیر آن‌ها بر اهداف کلیدی کسب‌وکار ارزیابی کنید

5. طراحی برای نگهداری و تکامل آینده

مشکلات پایدار راه‌حل‌های باکیفیت را به همراه دارند.

بر روی پایداری بلندمدت تمرکز کنید. در حالی که ارائه راه‌حل‌هایی که نیازهای فعلی را برآورده می‌کند مهم است، معماران بزرگ سیستم‌هایی طراحی می‌کنند که می‌توانند در طول زمان تکامل یابند و سازگار شوند. به این فکر کنید که معماری شما چگونه می‌تواند رشد آینده، ویژگی‌های جدید و فناوری‌های در حال تغییر را در بر گیرد.

نگهداری را در اولویت قرار دهید. یک سیستم به‌خوبی طراحی‌شده باید آسان برای درک، اصلاح و گسترش باشد. کد تمیز، مستندات واضح و طراحی مدولار را در اولویت قرار دهید تا اطمینان حاصل کنید که توسعه‌دهندگان آینده می‌توانند به‌طور مؤثر با معماری شما کار کنند.

  • جداسازی واضح نگرانی‌ها را در طراحی خود پیاده‌سازی کنید
  • مستندات جامع و به‌روز ایجاد کنید
  • برای تست‌پذیری طراحی کنید تا از قابلیت اطمینان بلندمدت اطمینان حاصل کنید
  • از ابتدا برای مقیاس‌پذیری برنامه‌ریزی کنید

6. درک و مدیریت بدهی فنی

میانبرها اکنون با بهره در آینده پرداخت می‌شوند.

تأثیر بدهی فنی را شناسایی کنید. هر تصمیمی برای انتخاب میانبر یا تأخیر در پیاده‌سازی صحیح، بدهی فنی ایجاد می‌کند. در حالی که برخی از بدهی‌ها ممکن است برای دستیابی به اهداف کوتاه‌مدت ضروری باشد، درک پیامدهای بلندمدت و داشتن برنامه‌ای برای رسیدگی به آن بسیار مهم است.

به‌طور فعال بدهی را مدیریت کنید. فرآیندهایی برای شناسایی، پیگیری و رسیدگی به بدهی فنی ایجاد کنید. به‌طور منظم زمان و منابعی را برای بازنویسی و بهبود سیستم‌های موجود اختصاص دهید، نه اینکه فقط بر روی ویژگی‌های جدید تمرکز کنید.

  • ذینفعان را در مورد مفهوم و تأثیر بدهی فنی آموزش دهید
  • کاهش بدهی را به‌عنوان بخشی از برنامه‌ریزی و برآورد پروژه خود در نظر بگیرید
  • از ابزارها و معیارهای کیفیت کد برای شناسایی نواحی نیازمند بهبود استفاده کنید
  • نیاز به تحویل سریع را با نگهداری بلندمدت متعادل کنید

7. از ابتدا بر روی داده و عملکرد تمرکز کنید

همه چیز درباره داده‌هاست.

معماری داده را در اولویت قرار دهید. ساختار و مدیریت داده‌ها برای موفقیت هر سیستمی بنیادی است. زمان خود را برای طراحی مدل‌های داده‌ای قوی سرمایه‌گذاری کنید و از ابتدا به مسائلی مانند یکپارچگی داده، مقیاس‌پذیری و عملکرد توجه کنید.

عملکرد را از ابتدا بسازید. عملکرد نباید یک فکر بعدی باشد. تأثیرات عملکردی را در تصمیمات طراحی اولیه خود در نظر بگیرید و استراتژی‌های نظارت و بهینه‌سازی را در طول فرآیند توسعه پیاده‌سازی کنید.

  • مدل‌های داده‌ای انعطاف‌پذیر و مقیاس‌پذیر طراحی کنید که بتوانند با کسب‌وکار تکامل یابند
  • تدابیر مناسب حاکمیت و امنیت داده را پیاده‌سازی کنید
  • از تکنیک‌های بهینه‌سازی مانند کش، ایندکس‌گذاری و غیره به‌طور پیشگیرانه استفاده کنید
  • معیارهای عملکرد را تعیین کرده و به‌طور منظم آن‌ها را آزمایش کنید

8. فناوری‌های متنوع و یادگیری مداوم را بپذیرید

یک زبان جدید یاد بگیرید.

از نظر فناوری متنوع بمانید. در حالی که تخصص جایگاه خود را دارد، معماران بزرگ درک وسیعی از فناوری‌ها و پارادایم‌های مختلف دارند. این تنوع به شما این امکان را می‌دهد که بهترین ابزارها را برای هر کار انتخاب کرده و سیستم‌های مختلف را به‌طور مؤثر ادغام کنید.

به یادگیری مادام‌العمر متعهد شوید. چشم‌انداز فناوری به‌طور مداوم در حال تحول است. عادت کنید که به‌طور مداوم یاد بگیرید و فناوری‌ها، روش‌ها و بهترین شیوه‌های جدید را کشف کنید. این آموزش مداوم به شما کمک می‌کند تا تصمیمات آگاهانه بگیرید و در زمینه خود مرتبط بمانید.

  • به‌طور منظم با زبان‌ها، فریم‌ورک‌ها و ابزارهای جدید آزمایش کنید
  • در کنفرانس‌ها، کارگاه‌ها و گردهمایی‌ها شرکت کنید تا به‌روز بمانید
  • در پروژه‌های جانبی شرکت کنید تا تجربه عملی با فناوری‌های نوظهور کسب کنید
  • دانش خود را از طریق مربی‌گری، نوشتن یا سخنرانی به اشتراک بگذارید

9. تیم‌های توسعه قوی بسازید و حفظ کنید

حل‌کنندگان مشکل پرشور را پیدا کنید و حفظ کنید.

استعدادها را پرورش دهید. به‌عنوان یک معمار، موفقیت شما به‌طور عمده به قدرت تیم توسعه شما بستگی دارد. زمان خود را برای شناسایی، جذب و پرورش توسعه‌دهندگان بااستعداد که به حل مشکلات پیچیده علاقه‌مند هستند، سرمایه‌گذاری کنید.

فرهنگ تیمی مثبت را پرورش دهید. محیطی ایجاد کنید که نوآوری، همکاری و بهبود مستمر را تشویق کند. کار خوب را شناسایی و پاداش دهید، فرصت‌های رشد فراهم کنید و به‌طور سازنده به تعارضات رسیدگی کنید.

  • در طول فرآیند استخدام به دنبال مهارت‌های حل مسئله و اشتیاق باشید
  • بازخورد منظم و فرصت‌های توسعه حرفه‌ای فراهم کنید
  • به اشتراک‌گذاری دانش و آموزش متقابل درون تیم تشویق کنید
  • فرهنگی ایجاد کنید که به هر دو مشارکت فردی و موفقیت تیمی ارزش قائل باشد

10. راه‌حل‌های انعطاف‌پذیر و کاربرمحور ایجاد کنید

سیستم‌ها را به‌گونه‌ای بسازید که در دسترس باشند.

برای کاربرپسندی طراحی کنید. معماری بزرگ باید در نهایت به کاربران نهایی خدمت کند. تلاش کنید سیستم‌هایی ایجاد کنید که شهودی، کارآمد و لذت‌بخش باشند. عوامل تجربه کاربری را در تصمیمات معماری خود در نظر بگیرید.

انعطاف‌پذیری را بپذیرید. به این نکته توجه کنید که نیازها تغییر خواهند کرد و نیازهای کاربران تکامل خواهند یافت. سیستم‌هایی طراحی کنید که بتوانند به نیازهای جدید بدون نیاز به بازسازی کامل سازگار شوند.

  • کاربران را در مراحل اولیه و به‌طور مکرر در فرآیند طراحی درگیر کنید
  • از معماری‌های مدولار و مبتنی بر اجزا برای به‌روزرسانی‌های آسان‌تر استفاده کنید
  • از سوئیچ‌های ویژگی و رفتار مبتنی بر پیکربندی استفاده کنید
  • به‌طور منظم بازخورد کاربران را جمع‌آوری کرده و بر اساس آن عمل کنید تا سیستم را بهبود بخشید

آخرین به‌روزرسانی::

نقد و بررسی

3.62 از 5
میانگین از 500+ امتیازات از Goodreads و Amazon.

کتاب 97 نکته‌ای که هر معمار نرم‌افزار باید بداند نظرات متفاوتی دریافت می‌کند. خوانندگان از مجموعه مقالات کوتاه آن که دیدگاه‌های متنوعی در مورد معماری نرم‌افزار ارائه می‌دهد، قدردانی می‌کنند. بسیاری آن را برای بینش‌های سریع و تأملات، به ویژه برای معماران نوپا، مفید می‌دانند. با این حال، منتقدان به کمبود عمق، تکراری بودن و سازماندهی پراکنده آن اشاره می‌کنند. برخی از مشاوره‌های عملی و رویکرد فلسفی آن تمجید می‌کنند، در حالی که دیگران آن را بیش از حد کلی یا بدیهی می‌دانند. قالب کتاب که شامل 97 مقاله دو صفحه‌ای است، هم به دلیل دسترسی آسان و هم به دلیل سطحی بودن مورد تحسین و انتقاد قرار می‌گیرد. به طور کلی، به عنوان یک نقطه شروع مناسب دیده می‌شود اما نه به عنوان یک راهنمای جامع.

درباره نویسنده

ریچارد مانسون-هفل یک معمار نرم‌افزار با تجربه و نویسنده‌ای است که به خاطر مشارکت‌هایش در زمینه توسعه نرم‌افزار سازمانی شناخته می‌شود. او چندین کتاب درباره جاوا و فناوری‌های مرتبط، از جمله "Enterprise JavaBeans" و "J2EE Web Services" نوشته است. مانسون-هفل با شرکت‌ها و سازمان‌های مختلف همکاری کرده و تخصص خود را در معماری و طراحی نرم‌افزار به اشتراک گذاشته است. رویکرد او اغلب بر کاربردهای عملی و واقعی فناوری‌های پیچیده تأکید دارد. به عنوان ویراستار کتاب "97 چیزی که هر معمار نرم‌افزار باید بداند"، او بینش‌هایی از متخصصان مختلف صنعت گردآوری کرده است تا دیدگاهی متنوع و جامع از بهترین شیوه‌ها و اصول معماری نرم‌افزار ارائه دهد.

0:00
-0:00
1x
Dan
Andrew
Michelle
Lauren
Select Speed
1.0×
+
200 words per minute
Create a free account to unlock:
Bookmarks – save your favorite books
History – revisit books later
Ratings – rate books & see your ratings
Unlock unlimited listening
Your first week's on us!
Today: Get Instant Access
Listen to full summaries of 73,530 books. That's 12,000+ hours of audio!
Day 4: Trial Reminder
We'll send you a notification that your trial is ending soon.
Day 7: Your subscription begins
You'll be charged on Dec 1,
cancel anytime before.
Compare Features Free Pro
Read full text summaries
Summaries are free to read for everyone
Listen to summaries
12,000+ hours of audio
Unlimited Bookmarks
Free users are limited to 10
Unlimited History
Free users are limited to 10
What our users say
30,000+ readers
“...I can 10x the number of books I can read...”
“...exceptionally accurate, engaging, and beautifully presented...”
“...better than any amazon review when I'm making a book-buying decision...”
Save 62%
Yearly
$119.88 $44.99/yr
$3.75/mo
Monthly
$9.99/mo
Try Free & Unlock
7 days free, then $44.99/year. Cancel anytime.
Settings
Appearance