معماری نرمافزار و تحلیل سیستم
Software architecture & system analysisمعماری یعنی تصمیمهایی که عوض کردنشان بعداً گران است. این مسیر یادت میدهد کدام تصمیمها اینطورند، چطور بگیریشان، و چطور کدی بنویسی که شش ماه بعد هم بشود عوضش کرد. مثالها در C#، پایتون، تایپاسکریپت و Go میآیند.
پیشرفت تو
درصد هر فصل از دو چیز میآید: چقدر از بخشهایش را خواندهای (۵۵٪) و چند تمرینش را تیک زدهای (۴۵٪). همهچیز داخل مرورگر خودت میماند.
فصل
فصلها به هم وابستهاند و ترتیبشان معنا دارد. هر مسیر با پروژههای نهایی تمام میشود: ساده، متوسط، پیچیده.
معماری چیست و کدام تصمیم معماری است
تفاوت تصمیم معماری با تصمیم پیادهسازی، و معیار «گران برای تغییر».
در نوبت نوشتنتحلیل سیستم: از نیاز تا مدل
استخراج نیاز، use case و اولین مدل دامنه.
در نوبت نوشتنکیفیتها و trade-off
تغییرپذیری، تستپذیری، کارایی — نمیشود همه را با هم داشت.
در نوبت نوشتنوابستگی و جهت آن
coupling، cohesion، و اینکه چرا جهت وابستگی مهمتر از وجودش است.
در نوبت نوشتنSOLID ۱: SRP و OCP
با کد واقعی، نه مثال دایره و مربع.
در نوبت نوشتنSOLID ۲: LSP، ISP، DIP
و اینکه DIP چطور کل جهت معماری را برمیگرداند.
در نوبت نوشتنمعماری لایهای کلاسیک
presentation، business، data — و جایی که به گِل مینشیند.
در نوبت نوشتنمشکل معماری لایهای
چرا لایهٔ دامنه به پایگاهداده وابسته میشود و تستپذیری میمیرد.
در نوبت نوشتنوارونگی وابستگی در عمل
همان کد لایهای، با یک تغییر جهت — و اثرش بر تست.
در نوبت نوشتنمعماری ششضلعی
port و adapter: دامنه در مرکز، همهچیز دیگر افزونه.
در نوبت نوشتنششضلعی، قدمبهقدم
یک سرویس واقعی از صفر با port و adapter، با کد کامل.
در نوبت نوشتنمعماری Onion
لایههای هممرکز، و قاعدهٔ وابستگی رو به مرکز.
در نوبت نوشتنClean Architecture
entity، use case، adapter، framework — و قاعدهٔ وابستگی.
در نوبت نوشتنClean، قدمبهقدم
همان سرویس، اینبار با ساختار Clean کامل و مرزهای صریح.
در نوبت نوشتنلایهای، ششضلعی، Onion، Clean
چهار نام برای یک ایدهٔ مشترک — تفاوتهای واقعی و ماتریس انتخاب.
در نوبت نوشتنهزینهٔ معماری تمیز
کِی ارزشش را دارد و کِی فقط پوشههای خالی میسازی.
در نوبت نوشتنالگوهای ساختنی
Factory، Builder، Prototype — و چرا Singleton معمولاً دام است.
در نوبت نوشتنالگوهای ساختاری
Adapter، Decorator، Facade، Proxy، Composite.
در نوبت نوشتنالگوهای رفتاری ۱
Strategy، Observer، Command.
در نوبت نوشتنالگوهای رفتاری ۲
State، Template Method، Chain of Responsibility، Mediator.
در نوبت نوشتنRepository و Unit of Work
کِی مفیدند و کِی فقط یک لایهٔ اضافهاند.
در نوبت نوشتنCQRS
جدا کردن خواندن از نوشتن، با هزینههایش.
در نوبت نوشتنمعماری رویدادمحور
رویداد در برابر فراخوانی مستقیم، و سازگاری نهایی.
در نوبت نوشتنهرم تست
unit، integration، contract — تستی که اجازهٔ تغییر بدهد.
در نوبت نوشتنrefactoring بهسمت معماری
از کد موجود شروع کن، نه از دیاگرام.
در نوبت نوشتنمستندسازی معماری
C4 و ADR: تصمیم را ثبت کن، نه فقط نتیجه را.
در نوبت نوشتنپروژهٔ ۱ — بازطراحی یک CRUD به لایهای
از یک فایل هزارخطی به لایههایی با مسئولیت روشن.
در نوبت نوشتنپروژهٔ سادهپروژهٔ ۲ — همان سیستم، ششضلعی
دامنه را از پایگاهداده و وب جدا کن و تست کامل بنویس.
در نوبت نوشتنپروژهٔ متوسطپروژهٔ ۳ — Clean با CQRS و رویداد
مرزهای صریح، مدل خواندن جدا، و سازگاری نهایی.
در نوبت نوشتنپروژهٔ پیچیده