سال تولد :
1976
محل تولد :
مصر
اثر :
کاوش مخازن نرمافزاری (MSR)
معماری آینده نرم افزار
با پیشرفت فناوری های نوین، هوش مصنوعی، داده کاوی و تحلیل داده های عظیمبه ارکان اصلی تحول نرم افزاری تبدیل شده اند. در این میان، نقش پژوهشگران تأثیرگذاری چون احمد حسن بیش از پیش نمایان است. او با ترکیب اصول مهندسی نرم افزار، هوش مصنوعی و داده کاوی، به دنبال ارتقای کیفیت نرم افزار، افزایش امنیت داده ها و بهره برداری بهینه از اطلاعات عظیم در سامانه های دیجیتال است. این پژوهشگر، مطالعات خود را حول محور کاوش مخازن نرم افزاری (MSR) بنا کرده است. این حوزه مطالعاتی، بررسی داده های نرم افزاری موجود را با استفاده از الگوریتم های پیشرفته یادگیری ماشین امکان پذیر می سازد و به توسعه دهندگان نرم افزار کمک می کند تا از روندهای گذشته درس بگیرند و تصمیمات بهینه تری برای توسعه سیستم های آینده اتخاذ کنند.
در مسیر جریان های بزرگ
احمد حسن در سال 1976 در مصر متولد شد. او تحصیلات خود را تا دوران دبیرستان در کشور خود ادامه داد و سپس، مادرش با مهاجرت به کانادا، او را با یک محیط زندگی کاملا جدید روبرو ساخت. مادر او مترجم تلویزیونی در مصر بود و در آن زمان همسرش را از دست داده بود. مسئولیت بزرگ کردن فرزندانش از یک سمت و از سمت دیگر محدودیت شغلی در کانادا، چالش های بزرگی را برایش ایجاد می کردند؛ اما او همه سختی ها را برای پیشرفت دو پسرش به جان خرید. احمد دوره کارشناسی اش را در دانشگاه واترلو گذراند و بعد از آن به آمریکا رفت تا در San Jose برای پروژه IBM کار کند. از آن جایی که به دست گرفتن هدایت پروژه های تحقیقاتی، به مدارک بالاتری از کارشناسی نیاز داشت، احمد باید خود را به سطوح برتری می رساند. در همین راستا به کانادا بازگشت و دوره کارشناسی ارشد را گذراند.
از بازی تا رشد
احمد در دوران کودکی به سر می برد که اولین جرقه مسیر علمی اش به واسطه عمو و زن عمو یش زده شد. آن ها کامپیوتری را برای سرگرمی او خریدند؛ کامپیوتری بزرگ و قدیمی که کار کردن با آن به مطالعه دفترچه راهنما نیاز داشت. احمد که پیش از این از چنین سیستمی استفاده نکرده بود، کنجکاوانه در تلاش بود تا بیشتر در موردش بداند. از آن جایی که این روند، منطقی و مبتنی بر ریاضی بود و او از همان ابتدا به این رشته علاقه داشت، مسیر علمی خود را از ریاضی به سمت علوم کامپیوتر تغییر داد. با گذشت زمان و بزرگ تر شدن این پژوهشگر، علاقه او به این زمینه بیشتر شد. توجه احمد به پیشرفت زیاد فراعنه و جهان قدیم اسلام نسبت به میزان پیشرفت انسان ها در وضعیت فعلی، انگیزه حرکت رو به جلو او را دوچندان کرد. به نظر این پژوهشگر، مصر و جهان اسلام باید فاصله ایجاد شده را جبران کنند و به موقعیت قبلی شان در گذشته بازگردند.
مقصد افتخار
احمد حسن مسیر علمی و حرفه ای خود را در زمینه کامپیوتر و مهندسی نرم افزار ادامه داد و خیلی زود به پژوهشگری برجسته در این شاخه تبدیل شد. او در حال حاضر استاد دانشگاه کوئینز و مدیر آزمایشگاه هوش مصنوعی و تحلیل های نرم افزار این دانشگاه است. در کنار این مسئولیت ها، حسن به عنوان مدیر بخش تحقیقات صنعتی در شورای تحقیقات مهندسی و علوم طبیعی کانادا نیز فعالیت می کند. پیشرفت علمی او باعث شده است تا عضو برگزیده مؤسسه مهندسان برق و الکترونیک و انجمن ماشین های محاسباتی شود. همچنین جامعه کامپیوتری و مؤسسه مهندسان برق و الکترونیک، او را مبدع رشته MSR می دانند. حسن به دلیل فعالیت هایش در زمینه MSR و مهندسی نرم افزار، جوان ترین برگزیده جایزه مصطفی(ص) 2023 شد و این جایزه را یک قدردانی جهانی از تلاش هایش می داند. علاوه بر این، او اختراعات متعددی در کشورهایی چون کانادا، ایالات متحده، هند، اروپا و ژاپن به ثبت رسانده است.
تشکیل جامعه تحقیقاتی
یکی از دستاوردهای مهم احمد حسن، تشکیل یک جامعه تحقیقاتی گسترده در زمینه کاوش مخازن نرم افزاری است. او کارگاهی تخصصی راه اندازی کرد که امروز به عنوان دومین کنفرانس بزرگ در مهندسی نرم افزار شناخته می شود. او معتقد است که تشکیل چنین جامعه ای برای پیشرفت در این زمینه بسیار مهم و ضروری است و این شرایط، به توسعه دهندگان کمک می کند تا از تجربیات یکدیگر استفاده کنند. یکی از اساتید دانشگاه در حوزه مهندسی کامپیوتر، درباره چشم انداز این فناوری می گوید: «بشر هرگز نمی تواند نرم افزاری کاملا بدون ایراد تولید کند.» با افزایش نیازهای کاربران، سیستم های نرم افزاری پیچیده تر خواهند شد؛ بنابراین، وجود چنین روش هایی می تواند به توسعه دهندگان کمک کند تا نرم افزارهای بهینه تری بسازند.
در مدار همکاری
به عقیده احمد حسن ارتباطات بخش عمده ای از روند رشد و پرورش جامعه استخراج مخازن نرم افزاری در سراسر دنیا را تشکیل می دهد. افزون بر آن، متقاعد کردن مدیران و سازمان های تامین کننده منابع مالی نیز بخش مهمی از این روند رشد هستند. حسن با تلاش برای غلبه بر درونگرایی خود، توانست این مسیر را پیش بگیرد و پژوهش هایش را به ثمر برساند. به گفته او: «ارتباط برای هر دانشمندی از اهمیت بالایی برخوردار است.» یکی از عوامل موفقیت حسن، ارتباط قوی او با شرکت های بزرگ فناوری مانند Microsoft، Google، BlackBerry، IBM و Nortel است. این همکاری ها به او اجازه داده اند تا روش های مهندسی نرم افزار خود را در مقیاس جهانی پیاده سازی کند. او معتقد است که ارتباط میان دانشگاه ها و صنایع سبب می شود که تحقیقات علمی از حد تئوری فراتر رفته و در محصولات و خدمات واقعی تأثیرگذار باشند.
کانون توجه
حسن در مطالعات خود بر چند محور اساسی تأکید دارد؛ از جمله مهندسی نرم افزار داده محور که در آن با استفاده از روش های آماری و یادگیری ماشین، الگوهای بهینه در توسعه نرم افزار استخراج می شود. همان طور که پیش تر ذکر شد، او همچنین به کاوش مخازن نرم افزاری می پردازد، به طوری که با تحلیل داده های گذشته، رفتار نرم افزار را درک کرده و عملکرد آن را بهبود می بخشد. از دیگر زمینه های مورد توجه او، افزایش امنیت سیستم های نرم افزاری است که با به کارگیری هوش مصنوعی، تهدیدات امنیتی شناسایی و راهکارهایی برای مقابله با آن ها ارائه می شوند. افزون بر این، حسن بر خودکارسازی فرایند توسعه نرم افزار نیز تأکید دارد و در این راستا ابزارهایی طراحی می کند که برنامه نویسی را ساده تر و کارآمدتر می کنند.
مسیر علمی احمد حسن نشان می دهد که موفقیت در فناوری های پیشرفته، تنها به مهارت فنی محدود نمی شود. دیدگاه های بلندمدت، پاسخ گویی به نیازهای نوظهور، توانمندی در ایجاد ارتباط میان افراد و حوزه های مختلف علم، از عوامل کلیدی پیشرفت در این زمینه هستند. آینده مهندسی نرم افزار بدون شک نیازمند چنین رهبرانی خواهد بود؛ رهبرانی که علم را درک کنند و آن را به کار گیرند.
سفری در تکامل نرم افزار
کاوشگر مخازن نرم افزاری
سال ها قبل، زمانی که کامپیوتر ها فقط وسیله ای برای محاسبه معادلات ریاضی شناخته می شدند، مخترعانی که خستگی ناپذیر برای آوردن کامپیوتر به جهان کار می کردند، باید متوجه می شدند که آنچه آن ها خلق می کنند چیزی بیش از یک ماشین حساب است. در ابتدای دهه نود میلادی، اولین ماشین های محاسبه مانند ماشین تحلیلی چارلز بابیج، از کارت های پانچ برای ورود متن برنامه ها، داده ها به سامانه و ذخیره سازی اطلاعات استفاده می کردند. در این روش وجود سوراخ در بخش تعیین شده به معنای مقدار یک در جبر بولی بود. استفاده گسترده از کارت های پانچ تا سال 1950 ادامه پیدا کرد، به طوری که در سال 1937، شرکت IBM روزانه 10 میلیون از این کارت ها را تولید می کرد. با این حال هر کدام از کارت های پانچ تنها قادر به ذخیره سازی 70 بایت داده بود. از این رو تمام آن ها با هم، تنها می توانستند 679 مگابایت داده را ذخیره کنند.
شکست محدودیت ها
در دنیای امروز، حجم اطلاعات یک شرکت نرم افزاری ساده به طور میانگین می تواند بین چند ترابایت تا چند ده ترابایت باشد! در واقع به نظر می رسد پیشرفت هوش مصنوعی به بهبود های مستمر در زمینه حافظه و ذخیره سازی کامپیوتر کمک شایانی کرده است. وقتی تکنولوژی حافظه به سطحی رسید که توانست داده های عظیم را به سرعت و با کارایی بالا پردازش و ذخیره کند، الگوریتم های پیچیده یادگیری ماشین و به ویژه شاخه ای به نام یادگیری عمیق دچار انفجار رشد شدند. در واقع در گذشته، محدودیت های حافظه مانع از اجرای مدل هایی با میلیاردها پارامتر می شدند. با بهبود این بخش، توان پردازش داده های بزرگ فراهم و مرزهای نوآوری در هوش مصنوعی گسترش یافت. افزایش سرعت دسترسی به حافظه، ارتقای ظرفیت ذخیره سازی و کاهش تأخیر، در کنار استفاده روزافزون از فناوری های مدرنی مانند حافظه های نسل جدید DRAM و درایوهای NVMe، شرایطی را فراهم کرد که کامپیوترها بتوانند محاسبات زیاد و سنگین را به طور همزمان انجام دهند. از این رو، همزمانی پیشرفت های سخت افزاری و الگوریتمی، عامل اصلی تحول سریع در هوش مصنوعی بوده است.
پشت صحنه کدها
مهندسی نرم افزار، علم و هنر ایجاد سیستم های نرم افزاری پیچیده است و رویکردی ساختاریافته برای طراحی، توسعه، آزمایش، استقرار و نگهداری این سیستم ها به حساب می آید. به عبارتی، این رشته تلاش می کند تا با اعمال اصول مهندسی، نرم افزارهایی تولید کند که هم از نظر کیفیت و عملکرد و هم از نظر قابلیت نگهداری و توسعه در آینده، استانداردهای بالایی داشته باشند. در نتیجه فناوری ها و خدمات این شاخه، به کاربران برای بهبود و بهره وری یاری می رساند. احمد حسن به عنوان یک پژوهشگر مطرح در این زمینه، مهندسی نرم افزار را وسیله ای می داند که افراد زیادی را گرد هم آورد تا چیزی عالی و نوآورانه خلق کنند. نکته مهم، جمع کردن افراد در کنار هم و پیچیدگی مربوط به مدیریت آن ها است؛ زیرا مهندسی نرم افزار تنها جنبه های فنی کامپیوتر را در بر نمی گیرد. جنبه های فنی با بعدهای مدیریتی و همین طور بخش های مربوط به کاربران کامپیوتر ادغام می شوند و با هم کار می کنند تا محصولی را خلق کنند که مطمئنا تأثیر مشهودی بر جامعه دارد.
از داده تا دانایی
کاوش مخازن نرم افزار (MSR)، یک حوزه جدید، در صدد تحلیل و بررسی داده های غنی در دسترس است تا اطلاعاتی جالب توجه و البته مستند از مخازن نرم افزاری مانند مخازن کنترل نسخه، آرشیو لیست پست های الکترونیکی، سیستم ردیابی باگ ها و… درباره ی سیستم نرم افزاری ما کشف کند. همچنین این حوزه، بر آشکار کردن وابستگی ها و نظام داده های مرتبط تمرکز دارد. مخازن نرم افزاری در واقع یک پایگاه با حجم داده بالا برای نگهداری سوابق است که داده های مربوط به محصولات یک شرکت کامپیوتری را ذخیره می کند. اصولا مخازن نرم افزاری دو بخشی است؛ داده ها در یک سیستم کنترل نسخه یا کنترل منبع ذخیره می شوند و متادیتا -درباره تغییرات مربوط به هر کدام از آن داده ها- در بخش دوم نگهداری می شوند. برخی، استخراج آرشیوهای نرم افزاری را به عنوان فرایندی برای به دست آوردن مدارک اولیه از طریق استخراج داده از مخازن نرم افزاری تعریف می کنند. علاوه بر این، بعضی افراد منابع داده را به عنوان مصنوعات محصول محور مانند کد مبدا، مستندات نیازمندی ها یا آرشیوهای نسخه تعریف می کنند؛ به این معنی که این منابع، مستندات خودساخته ای بر اساس فرایند ساخت خود محصولات هستند. آن ها ادعا می کنند که این منابع تحت تاثیر واقع نشدند اما با این وجود، هنوز شامل اختلال بوده و ناقص به شمار می آیند.
از تکنیک های MSR می توان به آنالیز تغییرات جفت اشاره کرد. ایده ی تحلیل تغییرات جفت بر این مبنا استوار است که توسعه دهندگان به طور مکرر برای رفع خطا ها یا معرفی ویژگی های جدید، موجودیت های کدی را به صورت همزمان تغییر می دهند. این ارتباطات میان اجزای کد، اغلب در داخل کد یا سایر مستندات به طور صریح ذکر نمی شوند. به ویژه، توسعه دهندگان تازه وارد به پروژه ممکن است ندانند که کدام موجودیت ها باید به طور همزمان تغییر کنند. هدف آنالیز تغییرات جفت، استخراج این ارتباطات از سیستم کنترل نسخه پروژه است. با بررسی تغییرات ثبت شده در موقعیت های مختلف (commit) و زمان بندی تغییرات، ممکن است بتوان موجودیت هایی که به طور مداوم با هم تغییر می کنند را شناسایی نمود. این اطلاعات، پس از آن می توانند به توسعه دهندگان نزدیک به تغییر یکی از این موجودیت ها ارائه شوند تا در تغییرات پیش رو از آن پشتیبانی گردد.
از دیگر تکنیک های کاوش مخازن نرم افزاری می توان به آنالیز موقعیت های ثبت شده در فرایند تولید نرم افزار اشاره کرد که به commit معروف است. در سیستم های کنترل نسخه، انواع مختلفی از commit ها مانند commit های مربوط به رفع خطا ها، اضافه کردن ویژگی های جدید، مستندسازی و غیره وجود دارند. برای اتخاذ تصمیمات مبتنی بر حقایق بر اساس commit های گذشته که منجر به نتایج دقیق تری بشود، لازم است زیرمجموعه هایی از commit ها مربوط به بخش مورد نظر انتخاب شوند و غنی سازی اطلاعات صورت بگیرد. تولید آمار و مستندات نیز از دیگر تکنیک های این حوزه است؛ به این شکل که امکان تولید مستندات مفید از طریق استخراج داده های موجود در مخازن نرم افزاری را می دهد. به عنوان مثال با محاسبه آمارهای مصرف، به تازه واردان کمک می کند تا بخش های پرکاربرد را به سرعت شناسایی کنند. استخراج اصلی داده ها از سیستم های کنترل نسخه به دست می آیند.
پژوهش های احمد حسن در مهندسی نرم افزار، سرعت بخشی قابل توجهی در پیشرفت حوزه های برنامه نویسی و نرم افزار دارد. او معتقد است: «ایده کلی گردآوری این حجم داده ها به حوزه گسترده و موفقی از پژوهش در سراسر دنیا تبدیل شده است و امروزه شرکت های بزرگ بسیاری از جمله گوگل، مایکروسافت و آمازون این روش را در بستر های تولید و توسعه خود ادغام کرده و کیفیت نرم افزار های خود را افزایش داده اند.» می توان گفت پژوهش کاوش مخازن نرم افزاری به عنوان یک راهنمای تجربی، باعث دلگرمی برنامه نویسان است و آن ها را از افزونگی و تکرار اشتباهات باز می دارد. خوشبختانه با حضور پژوهشگرانی مانند حسن، این راهنما در شرکت های مطرح جهان حضور دارد و ما را به پیشرفت هوشمندانه تر و سریع تر فناوری امیدوار می کند.