توسعه، به معنای خلق مکرر چیزی جدید و مفید است.
وقتی صحبت از «توسعه» میشود، اغلب توسعه محصول جدید به ذهن میآید. این با ساخت محصولات منفرد متفاوت است؛ به اصطلاح، به معنای خلق طرحها یا قالبهای محصول است.
بنابراین، طرحها و قالبهایی که از طریق توسعه محصول جدید ایجاد میشوند، بارها در کارخانهها برای تولید انبوه محصولات یکسان به کار گرفته میشوند.
کاربردهای دیگری از واژه «توسعه» نیز وجود دارد، مانند توسعه قابلیتهای فردی، یا توسعه یک جامعه و ملت. اینها به معنای صرفاً افزایش آنچه در اختیار است نیست، بلکه به معنای توانایی استفاده مکرر و بهرهمندی از قابلیتهای توسعه یافته است.
در حالی که قدرت اقتصادی افراد و جوامع ممکن است با شرایط اقتصادی نوسان داشته باشد، قابلیتهای توسعه یافته عموماً دائمی هستند.
حتی اگر کاهش یابند، این کاهش به عنوان یک افول دیده میشود، نه یک نوسان مانند رونق اقتصادی.
علاوه بر این، توسعه فناوری و دانش نیز وجود دارد. برخلاف قابلیتهای افراد یا جوامع خاص، اینها ویژگی اشتراکپذیری آسان را دارند.
و در میان نتایج این توسعهها—محصولات، قابلیتها، دانش و فناوریها—برخی میتوانند برای توسعههای بعدی مفید باشند.
با توسعه چنین نتایج مفیدی، دامنه توسعه گسترش مییابد و کارایی و کیفیت نیز بهبود مییابد.
توسعه نرمافزار مبتنی بر هوش مصنوعی
بهطور کلی، توسعه نیازمند زمان و تلاش قابل توجهی بود. به ویژه با پیشرفت جامعه و پیچیدهتر شدن امور مختلف، خلق چیزهای جدید به طور فزایندهای دشوار میشود.
اما با ظهور هوش مصنوعی مولد، این وضعیت در حال تغییر است. در حال حاضر، توسعه نرمافزار تحت یک تحول چشمگیر قرار گرفته و از قابلیتهای برنامهنویسی بالای هوش مصنوعی مولد بهرهمند میشود.
چشمانداز آیندهای که در آن عوامل خودمختار مبتنی بر هوش مصنوعی مولد، به عنوان مهندسان نرمافزار، در کانون توسعه نرمافزار قرار میگیرند، هماکنون در حال تبدیل شدن به واقعیت است.
ما در حال حاضر در یک دوره گذار هستیم. در حالی که نمیتوانیم توسعه را به طور کامل به هوش مصنوعی مولد واگذار کنیم، استفاده ماهرانه از آن میتواند توسعه نرمافزار را به شدت پیش ببرد.
این رویکرد به عنوان توسعه نرمافزار مبتنی بر هوش مصنوعی شناخته میشود.
توسعه مبتنی بر توسعه
هنگامی که هوش مصنوعی مولد، توسعه نرمافزار را سادهتر میکند، نه تنها میتواند توسعه نرمافزار نهایی مورد نظر را کارآمدتر سازد، بلکه توسعه نرمافزاری را که به خود توسعه کمک میکند نیز افزایش میدهد.
همانطور که قبلاً ذکر شد، نتایج کمککننده به توسعه، دامنه توسعه را گسترش میدهند و به افزایش کارایی و کیفیت کمک میکنند. علاوه بر این، اگر به طور موثر ایجاد شوند، میتوانند در پروژههای توسعه دیگر نیز مورد استفاده مجدد قرار گیرند.
بنابراین، با توسعه نرمافزارهای مفید در طول فرآیند توسعه نرمافزار، کارایی کلی در نهایت افزایش یافته و این داراییها میتوانند برای توسعههای آتی نیز به کار گرفته شوند.
به طور سنتی، توسعه چنین نرمافزارهای کمککننده به توسعه یک رویه معمول در این حوزه بود، اما خود نیازمند زمان و تلاش توسعه بود و مستلزم ارزیابی دقیق و اجرای هدفمند بود.
با استفاده از هوش مصنوعی مولد، نرمافزارهای سادهای برای خودکارسازی وظایف کوچک و بداهه میتوانند به سرعت ایجاد شوند. برای وظایفی با فرآیندهای مشخص، هوش مصنوعی مولد میتواند برنامههای دقیقی را تقریباً بدون خطا تولید کند.
این امر توسعه نرمافزاری را که به توسعه در طول توسعه نرمافزار کمک میکند، آسانتر از همیشه کرده است.
و با تأمل عمیقتر، سبکی از توسعه پدیدار میشود که در آن ابزارهای مفید به طور مستمر در طول فرآیند توسعه ساخته میشوند و بدین ترتیب، خود روش توسعه را تغییر میدهند.
ما این را توسعه مبتنی بر توسعه مینامیم.
برای پیادهسازی توسعه مبتنی بر توسعه، نیاز به عادت مشاهده عینی توسعه نرمافزار خود است تا در نظر گرفته شود کدام بخشها را میتوان به نرمافزار واگذار کرد و کدام بخشها را فقط انسانها میتوانند انجام دهند، به همراه مهارت توسعه چنین نرمافزارهای کمککننده به توسعه.
علاوه بر این، هوش مصنوعی مولد میتواند در این ابزارهای نرمافزاری ادغام شود. با جاسازی آن در نرمافزار، بر خلاف یک عامل هوش مصنوعی مولد مستقل، دامنه پردازش را میتوان محدود کرد و مسیری روشن را تا حدودی تعریف نمود.
در حالی که عوامل هوش مصنوعی میتوانند نتایج مشابهی را از طریق دستورات به دست آورند، نرمافزاری که هوش مصنوعی مولد را یکپارچه میکند، میتواند با ترکیب برنامهها و دستورات، دقت را به راحتی افزایش دهد.
اگر توسعه مبتنی بر توسعه قابل اجرا باشد، پروژه دوم در مقایسه با پروژه اول بهبودهایی در کیفیت و هزینه خواهد داشت. علاوه بر این، با هر پروژه بعدی—سوم، چهارم و غیره—بهبودها همچنان افزایش خواهند یافت.
این رویکرد کاملاً با صرفاً توسعه نرمافزار با استفاده از هوش مصنوعی مولد متفاوت است. شکاف قابل توجهی در طول زمان بین تیمهایی که صرفاً بر ابزارهای هوش مصنوعی مولد تسلط دارند و تیمهایی که توسعه مبتنی بر توسعه را انجام میدهند، پدیدار خواهد شد.
تست مبتنی بر بازآرایی کد
مفهومی به نام توسعه مبتنی بر تست (TDD) وجود دارد که شامل طراحی ابتدا تستها بر اساس مشخصات و سپس توسعه نرمافزار برای گذراندن آن تستها است.
در ابتدا، من نیز فکر میکردم که با هوش مصنوعی مولد که توسعه برنامههای تست را برای تست خودکار آسان میکند، توسعه مبتنی بر تست ممکن است عملی باشد.
با این حال، با شروع به تمرین توسعه مبتنی بر توسعه، به این باور رسیدم که رویکرد طراحی تستها قبل از پیادهسازی همیشه مناسب نیست.
به خصوص برای نرمافزارهایی مانند برنامههای وب که شامل جنبههای ذهنی مانند قابلیت استفاده و طراحی بصری هستند و میتوان با تعامل با آنها تجربه کرد، متوجه شدم که اجرای واقعی و تعامل با نرمافزار بر تستهای جزئی اولویت دارد.
این به این دلیل است که اگر هنگام تعامل، نارضایتیهای قابل توجهی در سطح UI/UX وجود داشته باشد، این احتمال وجود دارد که بخشهای اساسی مانند چارچوب، معماری پایه، مدل داده یا موارد استفاده نیاز به تغییر داشته باشند.
در پروژه توسعه نرمافزار شخصی فعلیام، من نیز متوجه مشکلاتی در انعطافپذیری عملکردی و عملکرد شدم که منجر به تعویض دو چارچوب با چارچوبهای متفاوت شد.
بخشی نیز وجود داشت که کارایی مصرف حافظه پایینی داشت و نیازمند بازنگری کامل پردازش بود.
در این نقاط بازآرایی کد است که تست برای اولین بار به یک ملاحظه آگاهانه تبدیل میشود.
اگر این در مراحل اولیه توسعه باشد، یا اگر ویژگیها و مشخصات به هر حال قرار است به طور قابل توجهی تغییر کنند، ممکن است تستها ضروری نباشند.
با این حال، اگر توسعه به خوبی پیش رفته باشد و موارد زیادی برای بررسی وجود داشته باشد، تستها احتمالاً در طول بازآرایی کد برای اطمینان از عدم وجود نقص یا کمبود عملکردی مورد نیاز خواهند بود.
بنابراین، ایده ایجاد برنامههای تست در نقطهای که توسعه تا حدی پیشرفت کرده و بازآرایی کد ضروری میشود، ایده بدی نیست.
در این مرحله، نکته کلیدی این است که تستها برای تمام کدها ایجاد نشود، بلکه تستها بر روی بخشهای پختهای که بعید است در آینده زیاد تغییر کنند، متمرکز شوند و بخشهای هنوز سیال بدون تست خودکار باقی بمانند.
این میتواند تست مبتنی بر بازآرایی کد نامیده شود.
نتیجهگیری
هوش مصنوعی مولد به طور چشمگیری در حال تغییر و تحول توسعه نرمافزار است.
در مقالات قبلی، من در مورد اهمیت هدفگذاری برای تبدیل شدن به یک مهندس همهجانبه نوشتم، کسی که میتواند فراتر از نقش سنتی مهندس فولاستک عمل کند تا سیستمهای همهجانبهای را توسعه دهد که حوزههای مختلف، زیرساخت و محیطهای اجرایی را با هم ترکیب میکنند.
همچنین مقالهای نوشتم که نشان میدهد در حال ورود به عصر توسعه مبتنی بر تجربه و رفتار هستیم، که بر ارتقای تجربه کاربری از طریق رفتار نرمافزار تمرکز دارد، نه رویکرد سنتی توسعه نرمافزار که مشخصات را با پیادهسازی همسو میکند.
توسعه مبتنی بر توسعه و تست مبتنی بر بازآرایی کد دقیقاً همان رویکردهایی هستند که ما را به سمت این افقهای جدید در توسعه نرمافزار سوق خواهند داد.