سود:
- توانایی تشخیص اینکه هوش مصنوعی سرعت واقعی را در چرخه عمر توسعه نرم افزار فراهم می کند و جایی که تصمیم و مسئولیت با مهندس باقی می ماند.
- امکان اعمال یک رشته مهندسی سه لایه که هر کد و طرح تولید شده از طریق گردآوری، آزمایش و بررسی را تأیید می کند.
- عادت به پاک کردن زمینه برای استفاده از هوش مصنوعی بدون به اشتراک گذاشتن کد منبع محرمانه، اعتبارنامه ها و داده های مشتری داشته باشید.
وقتی به روز یک مهندس کامپیوتر نگاه میکنید، تصویر در اکثر تیمها مشابه است: درک یک درخواست تجاری، طراحی، نوشتن کد، خواندن کد شخص دیگری، اشکالزدایی (فرآیند یافتن دلیل نادرست کار کردن یک برنامه و رفع آن)، نوشتن تست، تهیه مستندات، بررسی کد و شرکت در جلسات. به عبارت دیگر، زمانی که به «قضاوت مهندسی» واقعی اختصاص مییابد، یعنی اینکه آیا یک راهحل درست، ایمن و پایدار است یا خیر، زیر کار تکراری خرد میشود. اینجاست که هوش مصنوعی (به اختصار AI؛ نرم افزاری که روی متن و کد با مدل زبان بزرگ کار می کند) وارد عمل می شود. هوش مصنوعی به جای شما تصمیم نمی گیرد. این شما را برای تصمیم آماده می کند، یک اسکلت کد تولید می کند، باگ را محدود می کند و یک پیش نویس کار شده را در مقابل شما قرار می دهد. در سراسر این ماژول، هوش مصنوعی را نه به عنوان یک "برنامه نویس خودکار"، بلکه به عنوان یک شریک برنامه نویسی منظم که خروجی آن هر بار کامپایل، آزمایش و بررسی می شود، قرار می دهیم.
در این بخش اول، ما سه چیز را روشن میکنیم: هوش مصنوعی در چه مراحلی از چرخه عمر توسعه نرمافزار (مراحلی که یک نرمافزار از ایده تا تولید طی میکند: تجزیه و تحلیل، طراحی، کدگذاری، آزمایش، استقرار، نگهداری) ارزش واقعی اضافه میکند. کدام تصمیمات باید به شدت با مهندس باقی بماند. و انضباط راستی آزمایی و محرمانگی که باید هنگام انجام این کار رعایت کنید چیست. بدون نصب صحیح این سقف، تکنیک ها در واحدهای بعدی می توانند خطرناک شوند. زیرا یک خطا در نرم افزار به طور همزمان به میلیون ها کاربر می رسد و می تواند به یک آسیب پذیری امنیتی تبدیل شود.
مفاهیم: توهم: ساخت متقاعد کننده AI از روش، کتابخانه، API یا رفتاری که در واقع وجود ندارد. زمینه: ورودیای که به هوش مصنوعی میدهید (کد، پیام خطا، الزامات، محدودیتها). تأیید: بررسی خروجی به روشی مستقل (تدوین، آزمایش، مستندسازی). این سه مفهوم ستون فقرات کل ماژول هستند.
شتاب دهنده هوش مصنوعی در کدام کسب و کارها خطرناک است؟
مشاغل نرم افزاری از نظر نتایج در یک طیف دو وجهی قرار می گیرند. در یک انتها کار آماده سازی برگشت پذیر و کم خطر وجود دارد. از طرف دیگر، کارهایی وجود دارند که بازگشت سختی دارند که وارد محیط تولید می شوند و ممکن است باعث از بین رفتن داده ها، آسیب پذیری های امنیتی یا وقفه شوند. مقدار هوش مصنوعی بسته به جایی که شما در این طیف قرار دارید متفاوت است.
نوع کسب و کار
سهم هوش مصنوعی
نقش مهندس
اسکلت کد / دیگ بخار
تولید سریع ساختار تکراری
منطق و کنترل وضعیت لبه
اشکال زدایی
فرضیه و فهرست علل احتمالی
تولید مثل و تایید علت اصلی
تست های نوشتن
آزمایش پیش نویس و ایجاد سناریو
ادعای معنادار و بررسی دامنه
بازسازی
پیشنهاد بازسازی
حفظ رفتار از طریق آزمایش
مستندات
اولین پیش نویس و ساختار
بررسی صحت در برابر کد
تصمیمات معماری/امنیتی
لیست گزینه ها و مزایا و معایب
تصمیم نهایی و مسئولیت
قانون ساده است: خطر یک خروجی AI برابر با آسیبی است که در صورت خطای آن خروجی متحمل می شود. پیشنهاد نادرست نام متغیر بی ضرر است. احراز هویت نادرست (بررسی اینکه کاربر واقعاً همان کسی است که ادعا می کند) کل سیستم را آسیب پذیر می کند. بنابراین اولین سوالی که قبل از استفاده از خروجی باید بپرسید این است: "اگر این اشتباه باشد چه اتفاقی می افتد و چه کسی و چه زمانی متوجه آن می شود؟"
احتیاط: هوش مصنوعی کد روان و مطمئن تولید می کند. تسلط تضمینی برای صحت نیست. یک مدل زبان می تواند به طور قابل اعتمادی نام تابعی را تولید کند که در واقع وجود ندارد، یک دنباله پارامتر نادرست یا حتی یک الگوی ناامن. در نرم افزار، این روی کاغذ باقی نمی ماند. کامپایل می شود، اجرا می شود و در تولید منفجر می شود.
تصمیماتی که باید به مهندس سپرده شود
برخی از تصمیمات هرگز نباید کاملاً خودکار باشند. خطرات فنی، قانونی و اخلاقی را به همراه دارد:
- تایید برای تولید: انتشار یک کد در تولید و مسئولیت در این مورد.
- امنیت و معماری: تصمیمات گران قیمت مانند احراز هویت، مجوز، رمزگذاری و مدل داده.
- مجوز و حق چاپ: قابلیت استفاده از کد تولید شده در محصول تجاری و مطابقت با مجوز.
- کار با داده های محرمانه: معاملات با داده های مشتری، اسرار کد منبع و اطلاعات هویتی.
هشدار: حتی اگر هوش مصنوعی بگوید "این کد امن و آماده برای تولید است"، پذیرش این موضوع بدون تست امنیتی، بررسی کد و اعتبارسنجی تحت بار واقعی غیرقابل قبول است. در کارهای حیاتی ایمنی، خروجی هوش مصنوعی هرگز جایگزینی برای تایید یک مهندس شایسته نیست. هر خروجی که منجر به تصمیم می شود باید قبل از اجرا به طور مستقل توسط مهندس مجاز تأیید و تأیید شود.
رشته تأیید: کنترل سه لایه
برای استفاده از خروجی هوش مصنوعی مانند یک بازبین ارشد و نه کورکورانه، از سه لایه کنترل استفاده کنید. این رفلکس اساسی است که در طول ماژول تکرار خواهیم کرد.
- کامپایل و بررسی استاتیک: آیا کد واقعاً کامپایل/اجرا می شود؟ آیا خطاهای نوع، متغیرهای استفاده نشده، API های موجود وجود ندارد؟ ابزار تجزیه و تحلیل استاتیک (ابزاری که کد را بدون اجرای آن بررسی می کند) چه می گوید؟
- تولید مثل مستقل (تست): کد را با ورودی های کوچک و شناخته شده اجرا کنید و ببینید آیا خروجی مورد انتظار را دریافت می کنید. موارد لبه (تهی، صفر، منفی، بزرگ) را امتحان کنید.
- تأیید منبع: هر API، نسخه کتابخانه، و ویژگی زبانی که هوش مصنوعی از آن استفاده می کند باید از اسناد رسمی تأیید شود.
درخواست تأیید (بررسی خروجی را آسانتر میکند): "همه کتابخانههای خارجی، روشها و ویژگیهای زبانی را که در کد خود استفاده میکنید فهرست کنید. برای هر یک، مشخص کنید که در کدام نسخه موجود است و برچسب "باید از مستندات تایید شود". هیچ API را که در مورد آن مطمئن نیستید ایجاد نکنید؛ اگر مطمئن نیستید، به طور واضح "آدرس مطمئن نیستید" را به عنوان موارد جداگانه بنویسید."
اعلان کد خود را نقد کنید: "مثل مهندس ارشدی که شما را استخدام کرده است، به شکلی انتقادی به کدی که نوشتید نگاه کنید. موارد مشخصی را در این سه عنوان ارائه دهید: (1) خطاهای منطقی/حوزه لبه، (2) خطرات امنیتی، (3) مشکلات عملکرد یا خوانایی. برای هر مورد، بنویسید "چرا مشکل است" و "مشکل پیشنهادی نمی توانم برطرف کنم" را بگویم، "اگر مشکلی را پیدا نکردم". سعی کن آن را آراسته کنی."
اعلان ضعیف / اعلان قوی
ضعیف:"یک تابع احراز هویت کاربر را برای من بنویسید."(نتیجه: مشخص نیست کدام زبان، کدام قانون، کدام رفتار خطا؛ کد عمومی، اغلب ناامن یا خارج از زمینه.)STRONG:"یک تابع اعتبارسنجی ایمیل برای Python 3.11 بنویسید. ورودی: رشته. خروجی: درست است اگر معتبر است، غلط است. در غیر این صورت، نادرست است. در غیر این صورت، فرمت RFC کافی نیست، فرمت RFC کافی نیست، فرمت RFC کافی نیست. از کتابخانه خارجی استفاده نکنید، یک تست 5 نمونه در زیر بلوک ضمیمه تابع: معتبر، خالی، بدون «@»، دو برابر «@»، فقط حاوی فاصله است.
تفاوت در زمینه است. اعلان قدرتمند؛ این شامل زبان، نسخه، قرارداد ورودی-خروجی، محدودیتها و انتظارات آزمون است. این رشته واحد تا حد زیادی خطر توهم و کد ناامن را کاهش می دهد.
موارد کوچک
مورد 1 - روش ساختگی. یک توسعه دهنده از هوش مصنوعی می شنود که روشی به نام date.addBusinessDays(5) در یک کتابخانه تاریخ وجود دارد و به روشی مطمئن توضیح داده شده است. با نگاه کردن به مستندات، می بیند که چنین روشی وجود ندارد، راه صحیح یک حلقه دستی است. توهم قبل از اینکه تولید شود با یک راستی آزمایی 10 دقیقه ای ضبط می شود.
مورد 2 - از دست دادن حالت لبه. هوش مصنوعی تابع "میانگین محاسبه" را تولید می کند. وقتی با 1000 ردیف داده آزمایش می شود کار می کند. با این حال، زمانی که لیست خالی است، خطای تقسیم بر صفر می دهد. از آنجایی که مهندس تست ورودی خالی را اضافه کرده است، قبل از شروع به کار خطا را می بیند و رفع می کند. تست وضعیت تک لبه از زنگ تولید در ساعت 3 صبح جلوگیری می کند.
مورد 3 - خطر حفظ حریم خصوصی. یک متخصص در حال قرار دادن یک فایل با رشته اتصال پایگاه داده واقعی و کلید API در یک ابزار عمومی است. خط مشی موسسه را به خاطر می آورد. اسرار را با <REDACTED> جایگزین میکند، کد را به یک نمونه معرف کاهش میدهد و آن را درخواست میکند. به این ترتیب، او در عرض 5 دقیقه کمک می گیرد، اما اطلاعات هویتی او بیرون نمی آید.
اصل کار با کد مخفی و اطلاعات هویتی
حساس ترین قسمت نرم افزار؛ اسرار کد منبع، اطلاعات هویتی (کلید API، رمز عبور، رمز) و اطلاعات مشتری/شخصی. اصل اساسی: قبل از اشتراک گذاری پاک کنید، در صورت امکان فقط اصل مشکل را با یک مثال نماینده بپرسید.
الگوی اعلان ناشناس: "خطایی در تابع زیر وجود دارد. منطق تجاری واقعی و ثابت های پنهان را با مقادیر نماینده جایگزین کردم (کلید API، نام جدول، نام فیلدهای عمومی).
نکته: اگر شک دارید، این تست را انجام دهید: "آیا اگر من این را به صورت عمومی در یک انجمن بنویسم، سازمان من با مشکل مواجه می شود؟" حتی اگر پاسخ نامشخص است، ابتدا آن را پاک کنید. بازنشانی همیشه ارزانتر از تعقیب نشت بعداً است.
اشتباهات رایج
- استفاده از خروجی بدون کامپایل/تست. «هوش مصنوعی نوشت» یک توجیه نیست. هر کد با اجرای آن تایید می شود.
- درخواست بدون زمینه اگر زبان، نسخه، ورودی-خروجی و محدودیت ها داده نشود، کد عمومی و اغلب ناامن می شود.
- به اشتراک گذاری اطلاعات محرمانه بدون فکر کردن کلید API، رمز عبور و اطلاعات مشتری نباید بدون پاک شدن منتشر شود.
- اشتباه گرفتن زبان دقیق با دقت. هر چه هوش مصنوعی با اعتماد به نفس بیشتری صحبت کند، باید بیشتر مراقب باشید. لحن مطمئن شواهد نیست.
- تفویض تصمیم به هوش مصنوعی تصمیم برای تولید، امنیت و معماری بر عهده مهندس است. هوش مصنوعی فقط مواد تولید می کند.
به طور خلاصه
هوش مصنوعی بخش های تکراری و وقت گیر کار نرم افزار را سرعت می بخشد: کد اسکلت، پیش نویس آزمایش، باگ باگ، مستندسازی. با این حال، تصمیم و مسئولیت بر عهده مهندس است. هر خروجی باید از سه لایه کنترل (کامپایل/استاتیک، تست، منبع) عبور کند. نوشتن دستورات با متن و پاک کردن اطلاعات پنهان دو عادت کلیدی است که در هر واحد از این ماژول تکرار خواهیم کرد. وقتی با نظم و انضباط از هوش مصنوعی استفاده می کنید، سرعت بیشتری کسب می کنید. وقتی بدون انضباط از آن استفاده میکنید، خطاها و آسیبپذیریها را وارد تولید میکنید.
وظیفه کاربردی
یک کار کدگذاری کوچک از کار خود یا از یک پروژه خیالی (مثلاً یک تابع اعتبار سنجی) انتخاب کنید. ابتدا یک دستور ضعیف بنویسید و خروجی را دریافت کنید. سپس الگوی اعلان قدرتمند را از این واحد اعمال کنید: زبان/نسخه، قرارداد ورودی-خروجی، محدودیتها و انتظارات آزمون را اضافه کنید. دو پرینت را کنار هم قرار دهید و تفاوت را بنویسید. سپس خروجی قوی را کامپایل کرده و آن را با حداقل سه مورد لبه (فرمت صفر، صفر/منفی، غیرمنتظره) تست کنید و توجه داشته باشید که در کدام تست چه چیزی پیدا می کنید.
چک لیست
- [ ] زبان، نسخه و قرارداد ورودی-خروجی را به درخواست اضافه کردم.
- [ ] من نوشتم "آن را درست نکن، اگر مطمئن نیستی به من بگو" و محدودیت دامنه.
- [ ] من کد را کامپایل/اجرا کردم، برای هشدارهای ایستا بررسی کردم.
- [ ] من حداقل با سه مورد لبه تست کردم.
- [ ] من API های استفاده شده را از اسناد رسمی تأیید کردم.
- [ ] من هر کد / اعتبار مخفی را پاک کردم یا از ابزار سازمانی استفاده کردم.
- [ ] تایید کردم که تصمیم برای تولید و امنیت با انسان باقی می ماند.