وظیفه مهندسی نرمافزار مجموعه اقداماتی است که به صحت و کیفیت مرتبط است و اینکه نرمافزار به موقع و با بودجه و مطابق با نیازهای ذینفعان تحویل داده شود.[1] مهندسی نرمافزار به عنوان یک رشته تحقیقاتی با هدف رسیدگی به این چالش ها و سایر چالش های توسعه با رویکردی سیستماتیک به تجزیه و تحلیل، طراحی، پیاده سازی، تست و نگهداری نرمافزار می باشد.[2]
بسیاری از شرکت ها از یادگیری ماشین، داده کاوی برای بهبود محصولات و فرآیندهای خود استفاده می کنند. افزایش استفاده از یادگیری ماشین، مساله ای را نشان میدهد که حل مساله آن با مهندسی نیازمندیها، که از اصول معماری مهندسی نرمافزار محسوب میشود، را می توان پرسشها و چالشهای که در بهبوهه کار برای تیم پیش می آید،[3] به شمار آورد و اهمیت موضوع را نشان میدهد.
تعیین نیازمندیها برای سیستمهای تجزیه و تحلیل دادهها یک کار پیچیده است. تجزیه و تحلیل نیازها در مراحل اولیه پروژه ها نامشخص و ناقص هستند، این در حالی است که کاربران تجاری اغلب درک روشنی از اهداف استراتژیک خود دارند (به عنوان مثال، بهبود کمپین های بازاریابی، کاهش سطح موجودی)، آنها در مورد چگونگی تجزیه و تحلیل جهت دستیابی به هدف، دارای مسیر مشخص نیستند. این امر تا حد زیادی به دلیل فاصله مفهومی زیاد بین استراتژی های کسب و کار، فرآیندهای تصمیم گیری و عملکرد سازمانی از یک سو و پیاده سازی سیستمهای تحلیلی از نظر پایگاه های داده، فعالیت های پیش پردازش و الگوریتم های یادگیری ماشینی از سوی دیگر است.[4]
در سیستم های هوشمند بخش یادگیر و بخش غیریادگیر وجود دارد که مهندسی نرم افزار سیستم های هوشمند با بقیه سیستم ها که فقط بخش غیریادگیر دارند، روش و راهکاری متناسب ارائه کند. از این رو بررسی مهندسی یا معماری نرمافزار برای سیستمهای هوشمند که شامل یادگیری ماشین، داده کاوی، Deep learning و اطلاعات برای IoT می باشد که همگی intelligent systems محسوب می شوند، امری آشکار است و با توجه به تفاوت در نیازهای نرمافزارهای کاربردی و سیستمهای هوشمند، ساختار معماری متفاوتی برای تعیین نیازمندیهای آن وجود دارد.
سیستمهای هوشمند با توانمندسازی برنامهها برای یادگیری، انطباق و اتخاذ تصمیمات مستقل، در حال تغییر شکل نرمافزارهای مدرن هستند. این سیستمها که بر پایه یادگیری ماشین (ML)، یادگیری عمیق (DL) و هوش مصنوعی (AI) ساخته شدهاند، میتوانند دادههای پیچیده را پردازش کرده، الگوها را شناسایی و عملکرد را در طول زمان بهینه کنند—که اغلب از محدودیتهای نرمافزارهای سنتی مبتنی بر قانون فراتر میروند.
مهندسی نرمافزار سنتی، همانطور که توسط پرسمن و مکزیم [5]شرح داده شده است، بر فرآیندهای مشخص، روششناسیهای ساختیافته، و راهبردهای اعتبارسنجی دقیق تأکید دارد. با این حال، این رویکردها هنگام بهکارگیری در سیستمهای هوشمند با محدودیتهایی مواجه میشوند، زیرا رفتار نرمافزار در این سیستمها از طریق یادگیری حاصل میشود نه برنامهنویسی صریح. به عنوان مثال، در سیستمهای یادگیری ماشین، عملکردهای اصلی مانند تصمیمگیری درون مدلهایی که بر اساس دادهها آموزش دیدهاند جای گرفتهاند، که این امر منجر به چالشهای جدیدی در تعیین نیازمندیها، اعتبارسنجی و راستیآزمایی میشود.
سیستمهای هوشمند در حال دگرگون ساختن نرمافزارهای مدرن هستند، چرا که به برنامهها امکان میدهند بیاموزند، تطبیق یابند و تصمیمگیریهای خودمختار انجام دهند. این سیستمها که بر پایهی یادگیری ماشین (ML)، یادگیری عمیق (DL) و هوش مصنوعی (AI) ساخته شدهاند، قادرند دادههای پیچیده را پردازش کنند، الگوها را شناسایی نمایند و عملکرد خود را در طول زمان بهینه سازند—و اغلب فراتر از محدودیتهای نرمافزارهای سنتی مبتنی بر قوانین عمل میکنند.
این تحول، تأثیر چشمگیری بر مهندسی نرمافزار گذاشته است. بهطور سنتی، مهندسی نرمافزار طبق دیدگاه پرسمن، شامل فرآیندهای مشخص، رفتار قطعی و شفافیت در نیازمندیها است. [5]اما سیستمهای هوشمند با ویژگیهایی چون غیرقطعی بودن، وابستگی به داده و قابلیت عملکرد متغیر، پیچیدگیهای جدیدی را وارد فرآیند مهندسی میکنند.
برای مثال، “ونجینگ” (2025) استفاده از رباتهای مجازی مبتنی بر یادگیری عمیق را در سیستمهای مالی سازمانی نشان میدهد و ادغام عوامل هوشمند در وظایفی مانند پیشبینی مالی و تشخیص نفوذ را به تصویر میکشد. این سیستمها بهصورت بلادرنگ تطبیق مییابند و با بهرهگیری از شبکههای عصبی لایهای، دقت و پاسخگویی خود را افزایش میدهند. [6]
از دیدگاه کلانتر، “شهـاب” و همکاران (2020) بر رابطهی متقابل میان هوش مصنوعی و مهندسی نرمافزار تأکید دارند: نه تنها هوش مصنوعی با ابزارهایی مانند پیشبینی باگ و تولید تست به مهندسی نرمافزار کمک میکند، بلکه مهندسی نرمافزار نیز باید برای مدیریت نظاممند طراحی، توسعه و چرخهی عمر سیستمهای مجهز به هوش مصنوعی تکامل یابد. [7]
در همین راستا، رحمان و همکاران (2023) [8] مطالعهای در زمینه توسعهی برنامههای یادگیری ماشین انجام دادند و شکافهایی را میان جریانهای کاری ML و شیوههای مرسوم مهندسی نرمافزار شناسایی کردند. آنها تأکید داشتند که فعالیتهای مهندسی نیازمندیها (RE) در پروژههای یادگیری ماشین اغلب بهصورت غیررسمی انجام میشوند یا بهکلی نادیده گرفته میشوند، که این موضوع ناشی از ماهیت آزمایشمحور و دادهمحور این پروژههاست. این امر موجب تضعیف قابلیت ردگیری، مسئولیتپذیری و نگهداشتپذیری میشود—که همگی از دغدغههای حیاتی در حوزههای حساس به ایمنی یا اخلاق هستند.
بر همین اساس، سادوسکی و همکاران (2024) [9] یک چارچوب مبتنی بر هستیشناسی را برای پشتیبانی از مهندسی نیازمندیها در سیستمهای هوشمند پیشنهاد کردند. رویکرد آنها از مدلهای معنایی برای تسهیل استخراج و مشخصسازی نیازمندیهای پیچیدهی مرتبط با هوش مصنوعی بهره میبرد، و راهکاری ساختیافته برای ثبت دانش حوزه و پر کردن شکافهای ارتباطی میان ذینفعان ارائه میدهد. این رویکرد با روند کلی حرکت بهسوی رسمیسازی و ابزارسازی در مهندسی نیازمندیهای سیستمهای هوشمند همراستا است.
منابع
[1] I. Sommerville and I. Sommerville, TENTH edition Tenth Edition.
[2] A. Serban, K. van der Blom, H. Hoos, and J. Visser, “Software engineering practices for machine learning — Adoption, effects, and team assessment,” J. Syst. Softw., vol. 209, Mar. 2024, doi: 10.1016/j.jss.2023.111907.
[3] A. Vogelsang and M. Borg, “Requirements Engineering for Machine Learning: Perspectives from Data Scientists,” 2019, doi: 10.6084/m9.figshare.8067593.v1.
[4] S. N. B, E. Yu, and R. Ramani, “A Conceptual Modeling Framework,” vol. 1, pp. 35–49, 2016, doi: 10.1007/978-3-319-46397-1.
[5] R. S. Pressman and B. R. Maxim, “Software Engineering,” 2020.
[6] C. Wenjing, “Simulation application of virtual robots and artificial intelligence based on deep learning in enterprise financial systems,” Entertain. Comput., vol. 52, Jan. 2025, doi: 10.1016/j.entcom.2024.100772.
[7] M. Shehab, L. Abualigah, M. I. Jarrah, O. A. Alomari, and M. S. Daoud, “(AIAM2019) Artificial Intelligence in Software Engineering and inverse: Review,” Int. J. Comput. Integr. Manuf., vol. 33, no. 10–11, pp. 1129–1144, 2020, doi: 10.1080/0951192X.2020.1780320.