سخنرانی اول
عنوان: خلاصه کتاب کد کامل، راهنمای عملی ساخت نرمافزار
نویسنده: استیو مککانل
بهروزرسانی: ۱۶ مارس ۲۰۲۳
نکات اصلی:
مرور: کتاب "کد کامل" استیو مککانل به عنوان یکی از برترین راهنماهای عملی برای برنامهنویسی شناخته میشود. این کتاب در بیش از سه دهه گذشته به توسعهدهندگان در تولید نرمافزارهای برتر کمک بسیاری کرده است. با وجود تکامل زبانهای برنامهنویسی و انتقال از مدل آبشاری به روشهای چابک، دیدگاهها و تکنیکهای ارائهشده در این کتاب همچنان معتبر هستند. مککانل، به همراه جفری ون گوگ، مدیر مهندسی نرمافزار در گوگل، تأثیر این تغییرات بر منظر نرمافزاری را بحث میکنند. آنها همچنین به برخی از مسائل مورد اختلاف از کتاب پرداخته و نصایح ارزشمندی برای کسانی که تازه وارد این حوزه شدهاند، ارائه میدهند.
تکامل زبانهای برنامهنویسی: جفری ون گوگ، که بیش از ۲۰ سال در صنعت نرمافزار فعالیت داشته است، با استیو مککانل مصاحبه میکند. آنها در مورد تحول زبانهای برنامهنویسی در ۳۰ سال گذشته صحبت میکنند. مککانل به تحول مهم زبانها، به ویژه از زمان نسخه اول کتابش، اشاره میکند. او به طول عمر زبانهایی مانند جاوا، C# و ویژوال بیسیک اشاره میکند. در مصاحبه همچنین به تازه ترین پیشرفتها در زبانها پرداخته و ون گوگ اهمیت برنامهنویسی همزمان در زبانهای مدرن مانند کاتلین را بیان میکند.
از آبشاری به چابک: انتقال از مدل آبشاری به روشهای چابک تأثیر عمیقی بر روی روشهای کدنویسی داشته است. قبلاً کدنویسی اغلب یک فعالیت یکباره بود، اما با ظهور انتشارهای مکرر در روشهای چابک، توسعهدهندگان به طور مکرر به کد خود بازمیگردند و آن را تجدید نظر میکنند. این فرآیند تکراری به عنوان یک حلقه بازخورد ارزشمند عمل میکند و اهمیت نوشتن کدی را تأکید میکند که نه تنها عملیاتی باشد بلکه برای دیگر توسعهدهندگان هم قابل فهم باشد.
کد کامل به عنوان مستند: مککانل بیان میکند که اگرچه هیچ وقت نیت نداشته که کتاب کد کامل باید تنها شکل مستند باشد، اما اغلب به عنوان مرجع اصلی به دلیل کمک شدن به سرعت در کارهای مستندسازی خارجی، به آن میپردازد. او به اهمیت ایجاد کدی که تا حد ممکن قابل فهم باشد را در عین مستندسازی بسیار تأکید میکند.
نقش محیطهای توسعه یکپارچه: پیشرفتها در محیطهای توسعه یکپارچه (IDEs) تجربه کدنویسی را به شدت بهبود دادهاند. مککانل درباره تصویر ذهنی خود از محیط برنامهنویسی ایدهآل خود خاطرنشان میکند و اشاره میکند که بسیاری از این ویژگیها در محیطهای توسعه یکپارچه مدرن وجود دارد. این ابزارها فهم از کد را ارتقاء داده و بار ذهنی توسعهدهندگان را کاهش داده اند و به توسعهدهندگان اجازه میدهند تا بر روی جوانب اصلی کدنویسی تمرکز کنند.
پیچیدگی کد: موضوع پیچیدگی کد و قابلیت خوانایی هنوز هم یک موضوع مورد بحث است. هر دو مککانل و ون گوگ اهمیت نوشتن کد واضح و مختصر را تأیید میکنند و از ساختارهای پیچیده و تودرتویی که ممکن است کد را غیر قابل فهم کنند، پرهیز میکنند.
https://gotopia.tech/episodes/219/code-complete-a-practical-handbook-of-software-construction
سخنرانی دوم
عنوان: معماری نرمافزار برای توسعهدهندگان، بینشهای مدل C4
نویسنده: سایمون براون
بروزرسانی: 17 مارس 2021
نکات اصلی:
مقدمه: سایمون براون، خالق مدل C4، درباره اهمیت معماری نرمافزار برای توسعهدهندگان صحبت میکند. او تأکید میکند که درک معماری نرمافزار میتواند به طور قابلتوجهی به پیشرفت حرفهای توسعهدهندگان کمک کند و کار جاری آنها را بهبود ببخشد. این گفتگو توسط استفان تیلکوف مدیریت میشود.
مدل C4: مدل C4 ساختاری از چگونگی نگارش نمودارهای معماری نرمافزار توسط سایمون براون است. این مدل به عنوان یک جایگزین برای UML توسعه یافته است، به ویژه در دورهای که بسیاری از سازمانها از UML دور میشدند. مدل C4 بر روی موارد زیر تمرکز دارد:
زمینه: یک نمودار سطح بالا که سیستم در حال ساخت، کاربران، نقشها، عوامل و وابستگیهای سیستم را نشان میدهد.
کانتینرها: اینها نشاندهنده برنامهها و انبارهای داده قابل نصب و اجرا هستند. به عنوان مثال، یک برنامه وب که با یک پایگاه داده ارتباط برقرار میکند، به صورت دو جعبه با یک پیکان بین آنها نشان داده میشود.
مؤلفهها: گروهبندیهای کاراییهای مرتبط در داخل یک برنامه یا انبار داده. اینها اغلب با نحوه سازماندهی کد همخوانی دارند.
کد: یک دید عمیقتر به مؤلفهها برای نشان دادن کد سیستم.
منشأ C4 مدل: رویکرد سایمون براون به نمودارهای معماری نرمافزار همیشه با یک جعبه مرکزی نمایانگر سیستم در حال ساخت شروع میشد، که توسط کاربران، نقشها و وابستگیهای سیستم احاطه میشد. هنگامی که او معماری نرمافزار را تدریس میکرد، متوجه شد که بسیاری از دانشجویان دچار مشکلات در تولید نمودارهای قابل درک میشوند. این درک منجر به شکل گیری مدل C4 در میانه دهههای 2005 تا 2010 شد.
مقایسه با UML :مدل C4 از UML در خصوصیتهای خاصی متفاوت است. در حالی که UML مجموعه ابزار و نمادهایی عمومیتری ارائه میدهد، مدل C4 یک چارچوب ساختاری با سطوح مشخصی از انتزاع ارائه میدهد. با این حال، سایمون براون به این اعتراف میکند که UML میتواند نتایج مشابهی با مدل C4 داشته باشد. رویکرد ساختاری مدل C4 آن را دسترسیپذیرتر و کاربرپسندتر میکند.
ادغام با UML :سایمون براون پیشنهاد میدهد که مدل C4 میتواند با انواع نمودارهای دیگر UML، مانند نمودارهای توالی یا نمودارهای همکاری، ترکیب شود. قوت مدل C4 در چارچوب تصمیمگیری آن است که نیاز به انتخابهای تصادفی در نمودارسازی را از بین میبرد.
https://gotopia.tech/episodes/77/software-architecture-for-developers-c4-model
سخنرانی سوم
عنوان: کتاب معماری نرمافزار، بخشهای دشوار
بهروزرسانی شده: 9 فوریه 2023
نکات اصلی:
مقدمه: کتاب "معماری نرمافزار: بخشهای دشوار" به اجزای چالشبرانگیز معماری نرمافزار میپردازد. این کتاب به این امر اذعان میکند که در این حوزه تصمیمگیریهای آسانی وجود ندارد. به جای آن، معماران اغلب با مشکلاتی مواجه میشوند که دستورالعملهای بهینهای برای حل آنها وجود ندارد و این امر از آنها میخواهد که مزایا و معایب مختلف را مورد ارزیابی قرار دهند.
نویسندگان و همکاران: این کتاب توسط نیل فورد و مارک ریچاردز نوشته شده است و به مشارکتهای پرامود صدالاژ و ژماک دهقانی افتخار میکند. نویسندگان تجربه زیادی در زمینه معماری دارند و به عنوان مشاوران فعال در این حوزه فعالیت میکنند.
مرور محتوا: این کتاب از رویکرد روایتی استفاده میکند و یک گروه خیالی از حرفهایهای فناوری به نام "تیم سیستمعاملها" را معرفی میکند. از طریق تجربه آنها، نویسندگان به موضوعاتی مانند تعیین درجه کوچکترین خدمات، مدیریت جریانها و ارکستراسیون، جداسازی قراردادها بین خدمات، مدیریت داده در معماریهای توزیعشده و بهینهسازی ویژگیهای عملیاتی مانند قابلیت مقیاسپذیری، انعطافپذیری و عملکرد میپردازند.
منشأ و انگیزه: ایده این کتاب در حین کار نویسندگان بر روی کتاب قبلی خود به نام "اصول معماری نرمافزار" به وجود آمد. آنها اغلب با مسائل پیچیده مواجه میشدند که در دامنه کتاب اصول " جا نمیشد و این منجر به ایجاد یک کتاب جداگانه برای بخشهای دشوارتر معماری نرمافزار شد.
تمرکز بر معماریهای توزیعشده: یک بخش مهم از این کتاب به چالشهای مرتبط با معماریهای توزیعشده، به ویژه میکروسرویسها، اختصاص داده شده است. نویسندگان متوجه شدند که بسیاری از پیچیدگیها در این دامنه به مفهوم اتصالات سرویس ها مرتبط هستند. آنها اتصال را به دو نوع اتصال استاتیک و پویا تقسیم کردند.
مراحل نوشتن: نیل فورد و مارک ریچاردز تجربه منحصر به فرد خود در نوشتن این کتاب را به اشتراک میگذارند. آنها برنامه نویسی مرحله ای را که انجام دادند، مشابه توسعه نرمافزار قلمداد میکنند. نویسندگان تاکید میکنند که اهمیت تجدید نظر در ایدهها از طریق مراحل مختلف، منجر به تولید یک محصول نهایی بهتر میشود.
مفاهیم سازماندهی: ساختار کتاب بر اساس ایده "جدا کردن سرویس ها و سپس دوباره ادغام کردن آنها" است. بخش اول بر روی اتصالهای استاتیک تمرکز دارد و چگونگی اتصال اجزا در معماری نرمافزار را بررسی میکند. بخش دوم به اتصالهای پویا اختصاص دارد و چگونگی ارتباط این اجزا با یکدیگر را مورد بررسی قرار میدهد.
رویکرد مراحلی به نوشتن: نویسندگان بر رویکرد مراحلی که در نوشتن کتاب انتخاب کردند تاکید میکنند و این رویکرد را با فرآیند مراحلی در طراحی نرمافزار مقایسه میکنند. آنها در مورد چالشهای سازماندهی موارد فراوان و استراتژیهایی که برای ساختاردهی کتاب بهرهبردند را بحث میکنند.
https://gotopia.tech/episodes/213/software-architecture-the-hard-parts
سخنرانی چهارم
عنوان: کتاب پیشرفت فراتر از مونولیتیکها و میکروسرویسها
بهروزرسانی: 3 فوریه 2022
نکات اصلی:
مقدمه: میکروسرویسها با استفاده از تجرید به یک جایگزین قابل توجه برای مونولیتیکها تبدیل شده اند. این موضوع باعث میشود که ماهیت استراتژیک آنها در معماری نرمافزار بسیار موثرتر باشد. وان ورنون، نویسنده "مونولیتیکها و میکروسرویسهای استراتژیک: راهاندازی نوآوری با استفاده از معماری هدفمند"، و جیمز هیگینبوتام، نویسندهی "اصول طراحی وب API"، در مورد اهمیت معماری هدفمند و نقش رویدادها در نرمافزار بحث میکنند.
پیشزمینه وان ورنون: وان ورنون دارای بیش از 35 سال تجربه در توسعه نرمافزار و معماری در حوزههای مختلف کسبوکاری است. او یک متخصص برجسته در طراحی مبتنی بر حوزه (DDD) است و بر سادگی تأکید میکند. او بنیانگذار VLINGO XOOM است، یک پلتفرم متنباز که ابزارهای محاسبات توزیعی با DDD را روی ماشین مجازی جاوا ارائه میدهد. کتاب اخیر او به نام "مونولیتیکها و میکروسرویسهای استراتژیک" جزء مجموعه جدیدی از مجموعه Pearson و Addison-Wesley است.
مجموعه Pearson Addison-Wesley : این مجموعه به توسعهدهندگان نرمافزار کمک میکند تا بهرهوری خود را بهبود دهند، نه فقط از نظر دانش زبان برنامهنویسی بلکه از منظر تمرکز محوری بر روی کسبوکار. این مجموعه اهمیت همکاری توسعهدهندگان با ستادهای کسبوکار را در ایجاد نرمافزار ،استراتژیک می دانند. این مجموعه موضوعاتی مانند معماری مبتنی بر شیء و عملکردی، مدلسازی حوزه، طراحی مبتنی بر حوزه و معماری هدفمند مرتبط با خدمات را پوشش میدهد.
مونولیتیکها و میکروسرویسهای استراتژیک: این کتاب به پر کردن شکاف بین بخشهای کسبوکار و توسعهدهندگان میپردازد. در حالی که توسعهدهندگان علاقهمند به یادگیری طراحی مبتنی بر حوزه هستند، آنها اغلب از ارتباط مستقیم با بخش کسبوکار خودداری میکنند. این کتاب برای نقشهای مختلفی طراحی شده است، از مدیران ارشد تا توسعهدهندگان جوان. این کتاب نوشته شده تا برای مدیران ارشد، که امروزه تکنولوژیکتر از همتایان خود در دهههای گذشته هستند، قابل دسترس باشد.
منشأ عنوان: عنوان "مونولیتیکها و میکروسرویسهای استراتژیک" ترکیب نوآوری استراتژیک با معماری نرمافزار را تأکید میکند. ایده این است که ابتدا استراتژی و نوآوری مورد نیاز را درک کنیم و سپس معماری نرمافزار مورد نیاز را تعیین کنیم.
تحول دیجیتال/کسبوکار: فصول اول کتاب به تمرکز بر تحول کسب وکار، معماری نرمافزار و تغییر مداوم میپردازند. این عناصر بستری برای بقیه کتاب می باشد.
https://gotopia.tech/episodes/150/moving-beyond-monoliths-microservices
سخنرانی پنجم
عنوان: کتاب ساختن معماری تکاملی
بهروزرسانی: ۴ مهر ۲۰۲۳
نکات اصلی:
مقدمه: این گفتگو به بررسی معماری نرمافزار و زمان میپردازد و این کتاب حاصل مشارکت ربکا پارسونز، نیل فورد و جیمز لوئیس است. گفتگو حول محور اکوسیستم توسعه نرمافزار که به طور پیوسته تغییر میکند و چگونگی تکامل مهندسی برای بازنگری معماری در طول زمان میچرخد.
مرور کتاب: کتاب "ساختن معماری تکاملی" به بررسی تغییرات معماری در طول زمان و چگونگی حفظ ویژگیهای معماری در طی تکامل مرتبط است. این کتاب یک دیدگاه تازه راجع به معماری و زمان معرفی میکند و اهمیت حفظ ویژگیهای معماری در همراهی با چارچوبهای جدید را تأکید میکند.
پسزمینه نویسندگان:
ربکا پارسونز: به عنوان رئیس فناوری شرکتThoughtWorks، ربکا از دسامبر ۱۹۹۹ به این شرکت پیوسته است. او علاقه زیادی به محاسبات تکاملی دارد و در پروژه ژنوم انسان با الگوریتمهای ژنتیکی کار کرده است. ربکا به قدرت تشبیه تکاملی در زمینه معماری اعتقاد دارد. او به یادگاری یک گفتگو با نیل فورد در مورد "معماری بیرونآمده" و چگونگی تصمیمگیری درباره عبارت "ساختارهای تکاملی" اشاره میکند.
نیل فورد: نیل در سال ۲۰۰۴ به شرکت ThoughtWorks پیوسته و به طور عمیق در توسعه نرمافزار و معماری فعالیت داشته است. او به یاد میآورد که ربکا او را با ایده استفاده از توابع تناسب محاسبات تکاملی برای حاکمیت نرمافزاری آشنا کرد. نیل با تأکید بر رویکرد نوآورانه ترکیب دو حوزه متمایز برای تولید نتیجهای منحصربهفرد تأکید میکند.
تعریف معماری تکاملی: معماری تکاملی به عنوان پشتیبانی از تغییر تدریجی و راهنمایی در ابعاد مختلف توصیف میشود. عبارت "راهنمایی" به استفاده از توابع تناسب جهت تعیین ویژگیهای ضروری معماری برای موفقیت یک سیستم اشاره دارد. "تغییر تدریجی" با تأکید بر ارزیابی مداوم منظره و فناوری فعلی به منظور حفظ یا بهبود سطوح معماری تأکید دارد. "ابعاد مختلف" جنبه های مختلف معماری را تأکید میکند، به ویژه برای شرکتهای بزرگ.
اتصال پیادهسازی: نیل فورد به مشکلات تکامل معماری در طول زمان، به ویژه زمانی که جزئیات پیادهسازی به طور شدید با یکدیگر متصل هستند، میپردازد. او به یک مشتری اشاره میکند که جداول رابطهای خود را با معماری ادغام کرده است که منجر به یک سیستم شکننده شده که هر تغییری ممکن است به کل اکوسیستم اختلال وارد کند. کلید این است که شعاع تغییر را محدود کرده و اطمینان حاصل شود که معماریها به آرامی تکامل مییابند.
https://gotopia.tech/episodes/232/building-evolutionary-architectures
این مطلب، بخشی از تمرینهای درس معماری نرمافزار در دانشگاه شهیدبهشتی است