اسکلت انسان (یا هر جنبندهی دیگری) را تصور کنید که میتواند اندامش را تکان دهد و این طرف و آن طرف برود. این تصویر را به خاطر بسپارید و هر وقت که در دوراهی (گاهی هم چندراهی) تصمیمگیری برای طراحی و پیادهسازی معماری یک سیستم قرار گرفتید، چشمانتان را ببندید، آن را به یاد آورید و فقط سعی کنید یک «اسکلت متحرک» بسازید.
استعاره «اسکلت متحرک» از آنِ «الیستر کوکبرن» (Alistair Cockburn) است. اشاره به سیستمی حداقلی، که اجزای اصلی آن کنار هم قرار گرفتهاند و با هم چفت و بست شدهاند. سیستمی که میتوان به صورت سرتاسری (End-to-End) تستش کرد و ارتباط اجزای آن را بررسی نمود و به این ترتیب مطمئن شد که معماری در کل، معماری مناسبی است و کار میکند!
چنین رویکردی در معماری کردن، میتواند فرصت خوبی برای شناخت اشکالات اساسی فراهم کند و این امکان را مهیا کند که هر چه زودتر متوجه اشکالات شویم. اشکالات عمدهای که رفعشان با بزرگتر شدن سیستم و گذشت زمان، هزینهبرتر میشود.
فرض کنید که آن اسکلت، پاهای کافی برای راه رفتن ندارد. بهتر است هر چه زودتر بفهمیم این اسکلت، بر خلاف تصور اولیه ما، کتواک (Catwalk) که هیچ، راه رفتن عادی هم نمیتواند!
«اسکلت متحرک» به عنوان یک راهبرد مفید در طراحی، پیادهسازی، تست و تکامل معماری سیستم، با رویکرد توسعه تدریجی محصول (Iterative & Incremental) که در متدهای چابک مورد تاکید قرار گرفته، سازگاری کاملی دارد. این راهبرد شاید در مورد سیستمهای کوچک که تغییر در آنها کم هزینهتر است، چندان کاربردی نباشد، اما در مورد سیستمهای بزرگ که توسعه آنها به همکاری بیش از یک تیم نیازمند است، میتواند به واسطه حلقه بازخورد سریعی که ایجاد میکند، از هدر رفت منابع جلوگیری کند و نگذارد مادامی که اسکلت لنگ میزند کسی به چشم و ابروی آن فکر کند.
جمعبندی:
«اسکلت متحرک» زشت و هولناک است و تا زمانی که تبدیل به «سوفیا لورن» شود راه درازی در پیش است. اما راه همین است. اسکلتی زشت و هولناک، که راه میرود.
—الیستر کوکبرن، دانشمند علوم رایانه، از امضا کنندگان بیانیه چابک، مبدع مجموعه متدهای توسعه نرمافزار موسوم به کریستال (Crystal)، و نیز مبدع معماری شش ضلعی (Hexagonal Architecture) است.—
-روحالله دلپاک
@Break_Point