نکات کلیدی
- ایجاد یک معماری مؤثر برای یک MVP به زمانی نیاز دارد که تیمها معمولاً در اختیار ندارند؛ هوش مصنوعی به آنها کمک میکند تا زمان بخرند و به نتایج بهتری دست یابند.
- هوش مصنوعی معماران نرمافزار را جایگزین نمیکند، بلکه با آگاهسازی بهتر تصمیمهای آنها و خودکارسازی کارهای تکراری، به آنها کمک میکند تا وقت بیشتری برای یافتن راهحلهای خلاقانه در مواجهه با چالشهای معماری داشته باشند.
- هوش مصنوعی نمیتواند معماری ایجاد کند، زیرا قادر به تصمیمگیری نیست؛ اما در صورتی که زمینهٔ کافی در پرامپت ارائه شود، میتواند گزینههای جایگزین پیشنهاد دهد.
- هوش مصنوعی میتواند به تیمهایی که تجربهٔ کمتری در معماری نرمافزار دارند کمک کند تا با معرفی گزینههایی که شاید به آنها فکر نکردهاند، فرآیند معماری را بهتر یاد بگیرند.
- در حالی که هوش مصنوعی برخی از وظایف معماری را سادهتر میکند، اهمیت معمارانی را که میتوانند تصمیمهای درست و مبتنی بر شواهد تجربی دربارهٔ بدهبستانها بگیرند، بیشتر میکند.
معماری یک MVP همواره تحت محدودیتهای زمانی شدید انجام میشود. هوش مصنوعی میتواند با پیشنهاد گزینههایی مبتنی بر تجربهٔ دیگران، بخشی از این فشار زمانی را کاهش دهد. هرچند نمیتواند تصمیم بگیرد، اما میتواند به تیمها کمک کند تا برای تصمیمگیری آگاهتر باشند. تیمها همچنان باید تصمیمهای خود را بهصورت تجربی اعتبارسنجی کنند، اما هوش مصنوعی در اینجا نیز میتواند با تولید بخشی از کدهای لازم برای اجرای آزمایشها کمککننده باشد.
مزایای بالقوهٔ هوش مصنوعی برای معماری نرمافزار
در مقالهای پیشین، ما تعریف خود از «معماری نرمافزار» را اینگونه بیان کردیم:
«معماری نرمافزار دربارهٔ ثبت تصمیمهاست، نه توصیف ساختار. فعالیت اصلی در معماری، شکلدادن فرضیههایی دربارهٔ این است که سیستم چگونه به اهداف ویژگیهای کیفی دست خواهد یافت، سپس استفاده از تجربهگرایی برای آزمودن اینکه آیا سیستم به این اهداف میرسد یا نه، و تکرار این چرخه تا زمانی که سیستم به اهداف کیفی خود دست یابد.»
و مهمترین تصمیمهای معماری، مربوط به بدهبستانها میان الزامات ویژگیهای کیفی هستند.
معماران نرمافزار چگونه این بدهبستانها را انجام میدهند و هوش مصنوعی چگونه میتواند در این مسیر به آنها کمک کند؟ جدول زیر روشهایی را خلاصه میکند که بهنظر ما هوش مصنوعی میتواند در انجام وظایفی که برای معماری نرمافزار مهم هستند، به تیمها کمک کند. ستون «آیا هوش مصنوعی میتواند کمک کند» میزان نسبی توانایی هوش مصنوعی در کمک به هر وظیفه را نشان میدهد، بهطوری که بخش سایهخوردهٔ شکل بیانگر میزان کمکی است که ما انتظار داریم هوش مصنوعی ارائه دهد. اگرچه هوش مصنوعی نمیتواند هیچیک از این وظایف را بهطور کامل انجام دهد، اما میتواند برخی از آنها را بیش از بقیه بهصورت جزئی پشتیبانی کند.

هر یک از این موارد در بخشهای بعدی با جزئیات بررسی میشوند.
درک الزامات ویژگیهای کیفی که راهحل باید برآورده کند
یکی از جنبههای کلیدی معماری یک MVP، شکلدادن و آزمودن فرضیههایی دربارهٔ این است که سیستم چگونه الزامات ویژگیهای کیفی خود را برآورده میکند. درک و اولویتبندی این الزامات کار سادهای نیست، بهویژه برای تیمهایی که تجربهٔ معماری زیادی ندارند.
هوش مصنوعی میتواند زمانی کمک کند که تیمها با توصیف الزامات ویژگیهای کیفی سیستم در یک پرامپت، از مدل زبانی بخواهند الزامات مرتبط دیگری را پیشنهاد دهد. مدل زبانی ممکن است الزامات ویژگی کیفی اضافیای را پیشنهاد دهد که تیم به آنها توجه نکرده است. برای مثال، اگر عملکرد، امنیت و قابلیت استفاده سه الزام اصلی مورد توجه تیم باشند، مدل زبانی ممکن است پیشنهاد کند که مقیاسپذیری و تابآوری نیز بررسی شوند. این موضوع بهویژه برای افرادی که تازه وارد حوزهٔ معماری نرمافزار شدهاند، بسیار مفید است.
برای نمونه، برآوردهکردن الزامات مقیاسپذیری یکی از چالشهای مهم اما اغلب نادیدهگرفتهشده در پیادهسازی MVP است. این الزامات واقعاً وجود دارند، اما تشخیص آنها دشوار است. هر سیستم یک توجیه تجاری دارد و این توجیه تجاری شامل الزامات مقیاسپذیری ضمنی است. استفاده از مدلهای زبانی میتواند به تیم کمک کند تا الزامات مقیاسپذیریای را که ممکن است نادیده گرفته باشند، شناسایی کنند، بهویژه هنگام ساخت یک MVP.
هدایت تصمیمهای معماری
یکی از چالشهای اولیهٔ معماری، محدودکردن سریع دامنهٔ جستوجو برای چارچوبها و فناوریهای مناسب است. اگرچه مدل زبانی نمیتواند دربارهٔ اینکه از چه فناوریهایی استفاده شود تصمیم بگیرد، اما میتواند با شناسایی گزینههای بالقوه و گردآوری مزایا و معایب گزارششدهٔ آنها، دامنهٔ انتخاب را محدود کند.
درک این نکته مهم است که هوش مصنوعی نمیتواند دربارهٔ بدهبستانها تصمیم بگیرد؛ بلکه میتواند گزینههایی پیشنهاد دهد که تصمیمگیری را آگاهانهتر میکند، اما متعادلسازی بدهبستانها بر عهدهٔ تیم توسعه است. برای بهرهبردن حداکثری از یک مدل زبانی، تیمها باید هنگام طرح پرسش، جزئیات مشخصی از زمینهٔ مسئله را ارائه دهند.
برای مثال، اگر عملکرد یکی از الزامات ویژگیهای کیفی سیستم باشد، درخواست توصیههایی برای «سریعکردن سیستم» بهاحتمال زیاد به پیشنهادهای مفیدی منجر نمیشود. مشخصبودن دربارهٔ الزامات زمان پاسخ، تأخیر، زمان پردازش یا توان عملیاتی، در کنار ارائهٔ ویژگیهای کلیدی سیستم، مجموعهٔ بسیار بهتری از توصیهها را از مدل زبانی بهدنبال خواهد داشت. این کار همچنین ممکن است تیم را وادار کند عمیقتر دربارهٔ دامنهٔ مسئله فکر کند تا بتواند توضیحی مختصر و دقیق از الزامات ارائه دهد.
بهنوعی، خودِ عمل مهندسی پرامپت و ارائهٔ زمینهٔ مهم میتواند بهاندازهٔ نتایج تولیدشده توسط مدل زبانی مفید باشد. دستیابی به نتایج خوب نیازمند الزامات مشخص، ارتباط شفاف و درک نتیجهٔ مطلوب است. این موضوع چه از مدل زبانی استفاده شود و چه نشود، صادق است. این همان مفهوم «آهستهتر رفتن برای سریعتر رسیدن» است؛ زیرا صرف زمان برای فکرکردن عمیقتر دربارهٔ مسئله، امکان بهرهبردن از نتایج سریع مدل زبانی را فراهم میکند.
استفاده از آزمایشها برای بهدستآوردن نتایج تجربی پشتیبان تصمیمها
هوش مصنوعی میتواند با کمک به توسعهدهنده در تولید کد برای حل یک مسئلهٔ خاص بسیار قدرتمند باشد، اما توسعهدهندگان باید نتایج تولیدشده توسط هوش مصنوعی را اعتبارسنجی کنند؛ همانطور که نقلقول زیر نشان میدهد:
«در حالی که هوش مصنوعی میتواند کد تولید کند، همچنان به تخصص انسانی برای اطمینان از درستی، کارایی و قابلیت نگهداری آن نیاز است.»
جوانا پارک
مدیر ارشد استعداد و عملیات، تاتورکس
گاهی اعتبارسنجی نتایج هوش مصنوعی به مهارتهایی بیش از آنچه برای ایجاد راهحل از ابتدا لازم بود نیاز دارد؛ درست مانند زمانی که کد شخص دیگری را میبینید و متوجه میشوید از آنچه خودتان مینوشتید بهتر است. این میتواند روشی مؤثر برای ارتقای مهارتهای توسعهدهندگان باشد، بهشرط آنکه کد باکیفیت باشد. هوش مصنوعی همچنین میتواند به یافتن و رفع باگهایی کمک کند که ممکن است از چشم شما پنهان بمانند.
فراتر از بازبینی سادهٔ کد، آزمایشها ابزاری برای اعتبارسنجی نتایج تولیدشده توسط هوش مصنوعی فراهم میکنند. در واقع، آزمایش تنها راه واقعی برای اعتبارسنجی این نتایج است؛ همانگونه که برخی پژوهشگران دریافتهاند.
در مقالات پیشین، ما بر لزوم استفاده از آزمایش برای آزمون و اعتبارسنجی معماری تأکید کردهایم. اینکه بخشهایی از یک معماری توسط هوش مصنوعی تولید شده باشند، این حقیقت بنیادی را تغییر نمیدهد: معماریها فقط بهصورت تجربی قابل ارزیابی هستند و نمیتوان آنها را صرفاً از مجموعهای از اصول استخراج کرد.
علاوه بر این، مدلهای زبانی میتوانند به تیمها کمک کنند تا بهسرعت رابطهای کاربری ساده اما کافی برای آزمودن فرضیههای کسبوکاری و معماری ایجاد کنند. MVPهای اولیه نیازی به رابطهای کاربری بسیار پرداختشده ندارند؛ در واقع، سرمایهگذاری زودهنگام روی یک رابط کاربری پیچیده میتواند اتلاف منابع باشد. راهبرد بهتر میتواند استفاده از مدل زبانی برای تولید سریع کد رابط کاربریای باشد که برای بررسی مسائل حیاتی در مراحل اولیه کافی است.
در نهایت، هوش مصنوعی میتواند در انجام برخی از وظایف تکراری اما مهم کدنویسی، مانند ایجاد مجموعهای از تستهای واحد، کمک کند. بسیاری از تیمها برای ایجاد پوشش مناسب تستهای واحد با کمبود زمان مواجهاند و سادگی نسبی تست واحد، آن را به گزینهای مناسب برای کمکگیری از هوش مصنوعی تبدیل میکند.
مستندسازی و ارتباط معماری
مستندسازی و انتقال تصمیمهای معماری و نحوهٔ پیادهسازی آنها بخش مهمی از وظایف معماران است. اگر تیمهایی که در آینده از سیستم پشتیبانی میکنند، تصمیمهایی را که تیم توسعهدهنده گرفته است درک نکنند، تغییرات آنها باعث افت کیفیت سیستم خواهد شد. هوش مصنوعی میتواند در حین توسعهٔ سیستم به این موضوع کمک کند و پایداری سیستم را در طول زمان بهبود دهد. برخی نمونهها عبارتاند از:
- استفاده از ابزارهای ضبط صدا و تبدیل گفتار به متن هنگام بحث تیم دربارهٔ تصمیمهای معماری و خلاصهسازی این گفتگوها، تا در آینده هنگام بهچالشکشیدهشدن تصمیمها یا نیاز به بازنگری یا حتی بازگشت از آنها، زمینهٔ لازم فراهم باشد.
- تبدیل متن به نمودارهای معماری و مستندسازی نمودارهای موجود.
- تولید مستندات استاندارد کد، مانند توصیفهای رابطهای برنامهنویسی.
- بهروزرسانی مستندات طراحی برای بازتاب آنچه واقعاً پیادهسازی شده و علامتگذاری بخشهایی از پیادهسازی که از طراحی اولیه منحرف شدهاند. گاهی پیادهسازی، نقصهای طراحی را اصلاح میکند و گاهی از طراحی فاصله میگیرد؛ دانستن هر دو مفید است.
درک رابطها با سیستمهای دیگر
پیادهسازیهای MVP تقریباً همیشه به سیستمهای دیگر متکی هستند؛ هیچ تیمی کار را کاملاً از صفر شروع نمیکند. به همین دلیل، آنها ممکن است زمان زیادی را صرف درک رابطهای ارائهشده توسط این سیستمها کنند، بهویژه زمانی که این رابطها بهخوبی مستندسازی نشدهاند. اگر این سیستمها چند دهه پیش و با زبانهای قدیمی مانند کوبول نوشته شده باشند که افراد کمی هنوز آنها را میفهمند و استفاده میکنند، این کار ممکن است تقریباً غیرممکن باشد.
در توسعهٔ MVP، تیمها هرگز زمان کافی برای انجام چنین کاری ندارند. هوش مصنوعی میتواند با اسکن کد و تولید مستندات، مانند توصیف رابطهای برنامهنویسی سیستمهای موجود (حتی سیستمهای قدیمی و کمنگهداریشده)، به آنها کمک کند. همچنین میتواند وابستگیهای بالقوهٔ نادیدهگرفتهشده میان سیستمها را مستندسازی کند؛ مثلاً زمانی که یک سیستم از طریق رابطی مستندنشده یا بهصورت ضمنی از طریق دادهٔ مشترک، سیستم دیگری را فراخوانی میکند. این کار کیفیت معماری حداقلی قابلقبول و شانس موفقیت MVP را افزایش میدهد.
درک و مدیریت بدهی فنی سیستم
مدیریت مؤثر بدهی فنی برای پایداری یک سیستم حیاتی است. کاهش بدهی فنی خود یک بدهبستان چالشبرانگیز است و بسیاری از سازمانها در مدیریت آن ناکام میمانند. آنها همواره تحت فشارند تا در هر MVP افزایشی، قابلیتهای بیشتری ارائه دهند، اما در این مسیر معمولاً بدهی فنی مرتبط با معماریهای حداقلی قابلقبول را نیز انباشته میکنند.
هوش مصنوعی میتواند به شناسایی بخشهایی از کد که ممکن است بدهی فنی را افزایش دهند کمک کند، اما از آنجا که بدهی فنی نتیجهٔ بدهبستانهای تصمیمگیریشده در گذشته است، هوش مصنوعی فقط میتواند نمونههای آشکار کد بیکیفیت را که نیاز به بهبود دارند شناسایی کند و نمیتواند بدهبستانهای لازم برای کاهش یا حذف منابع اصلی بدهی فنی را انجام دهد.
در مقابل، هنگام اتخاذ یک تصمیم جدید، هوش مصنوعی میتواند به خلاصهسازی بدهی فنی مرتبط با آن تصمیم و تفاوت آن با گزینههای دیگر کمک کند. اگر تیمها در مستندسازی بدهی فنی ایجادشده (از طریق ثبت تصمیمهای معماری) بهتر عمل کنند، میتوانند از این مستندات برای هدایت تصمیمهای آینده دربارهٔ «پرداخت بدهی فنی» استفاده کنند. این مستندات میتوانند شامل نمونههایی باشند که در آینده به مدلهای زبانی ارائه میشوند.
باز هم، ارائهٔ حداکثر زمینهٔ ممکن در پرامپت تضمین میکند که مدل زبانی اطلاعات مرتبطتری ارائه دهد. برای مثال، تیم میتواند نمونههای شناختهشدهای از بدهی فنی، مانند استفادهٔ موقت از یک رابط همگام بهجای رابط ناهمگامِ مشخصشده، را ارائه کند.
پیادهسازی حلقههای بازخورد
آزمایش، همانطور که پیشتر بحث شد، یک نوع بازخورد برای بهبود معماری سیستم فراهم میکند. هوش مصنوعی میتواند به روشهای دیگر نیز کمک کند؛ مثلاً با یاری در ارزیابی تصمیمها از طریق تستها، بازبینیهای معماری و بازبینیهای خودکار کد. هوش مصنوعی میتواند به تولید تستهای خودکار کمک کند و همچنین با انجام بازبینی خودکار کد، مسائل احتمالی را علامتگذاری کند تا توسط تیم بررسی شوند.
شناسایی و کاهش ریسک
ریسکهای معماری یک سیستم بهشدت وابسته به زمینهٔ آن هستند. مشابه کمک هوش مصنوعی در درک الزامات ویژگیهای کیفی، این فناوری میتواند یک چکلیست عمومی از ریسکها و راهکارهای کاهش آنها ارائه دهد، اما نمیتواند پیشبینی کند که آیا سیستم شما واقعاً با آنها مواجه خواهد شد یا نه. این قابلیت میتواند برای طوفان فکری و فهرستکردن ریسکهای بالقوهٔ سیستم مفید باشد، بهشرط آنکه جزئیات مرتبط به هوش مصنوعی داده شود. این کار ممکن است تیم را به گفتگویی دربارهٔ ریسکها وادار کند که در نهایت به تصمیمهای بهتر منجر شود.
جمعبندی
اگرچه معماران نرمافزار با هوش مصنوعی جایگزین نخواهند شد، اما لازم است بیاموزند که چگونه و در کجا میتوانند از هوش مصنوعی برای تصمیمگیری بهتر و دستیابی به بدهبستانهای مناسبتر استفاده کنند. بررسی کارهایی که معماران نرمافزار انجام میدهند، بینشهایی دربارهٔ محل و نحوهٔ کمک هوش مصنوعی ارائه میدهد. تمرکز بر اینکه هوش مصنوعی چگونه به تولید MVP کمک میکند، این موضوع را روشنتر میسازد: هوش مصنوعی به تیمها امکان میدهد برخی از محدودیتهای توسعهٔ یک معماری پایدار را کاهش دهند، در حالی که همچنان محدودیتهای زمانی MVP را رعایت میکنند. این امر تیمها را آزاد میگذارد تا راهحلهای خلاقانهتری برای پاسخ به چالشهای معماری بیابند.
