عنوان پایان‌نامه

معماری نرم افزار در متدولوژی های چابک توسعه نرم افزار



    دانشجو در تاریخ ۲۳ خرداد ۱۳۹۰ ، به راهنمایی ، پایان نامه با عنوان "معماری نرم افزار در متدولوژی های چابک توسعه نرم افزار" را دفاع نموده است.


    محل دفاع
    کتابخانه دانشکده برق و کامپیوتر شماره ثبت: E1914;کتابخانه مرکزی -تالار اطلاع رسانی شماره ثبت: 49342
    تاریخ دفاع
    ۲۳ خرداد ۱۳۹۰
    دانشجو
    عاطفه موفقی
    استاد راهنما
    رامتین خسروی

    معماری به عنوان یک فرآورده تضمین‌کننده کیفیت نرم‌افزار اهمیت زیادی در مهندسی نرم‌افزار دارد. همین امر سبب شده است که در متدولوژی‌های جدید توسعه نرم‌افزار، توجه خاصی به آن صورت بگیرد. این موضوع به خصوص در متدولوژی‌های مبتنی بر برنامه به نحو کامل‌تری مورد توجه قرار گرفته است. اما در مورد متدولوژی‌های چابک، هنوز به بلوغ کافی نرسیده است و تیم‌های چابک به خصوص در مورد پروژه‌هایی که از مخاطرات فنی بالایی برخوردار است با مشکل روبه‌رو هستند. متدولوژی‌های چابک، ماهیتاً با طراحی زودهنگام مخالفند و همین امر باعث شده که روش‌های موجود برای معماری نرم‌افزار نتوانند به خوبی با متدولوژی‌های چابک تطابق پیدا کنند. رویارویی با این چالش‌ها در پروژه‌های واقعی، مهندسین نرم‌افزار در تیم‌های چابک را بر آن داشته است که به صورت پراکنده پیشنهادها و راهکارهایی برای حل این مسئله ارائه دهند. این راهکارها به دلیل پراکندگی و عدم انسجام قابل استفاده نیستند و نیازمند یک مطالعه جامع است تا اهداف هر یک از این روش‌ها و راهکارها تعیین شود و تأثیر متقابل هر یک از آن‌ها بر روی دیگر جنبه‌های معماری تحلیل و بررسی شود. در این پژوهش تلاش شده است که اولاً معماری نرم‌افزار به عنوان یک فرآیند به صورت رسمی مورد بررسی قرار گیرد تا ابعاد و جنبه‌های مختلف آن از بعد فرآیندی مشخص گردد. ثانیاً متدولوژی‌های چابک از نظر میزان پوشش فرآیند معماری مورد تحلیل قرار گرفته‌اند تا ضعف‌ها و کمبودهای آن‌ها به صورت دقیق‌تر و رسمی‌تری مشخص گردد. این تحلیل بر اساس یک چارچوب عمومی فرآیندهای چابک و همچنین دو فرآیند مشخص صورت گرفته است. به این ترتیب تعیین راهکارها و راه‌حل‌هایی برای بهبود فرآیند این متدولوژی‌ها از بعد معماری ممکن می‌گردد، همان‌گونه که در این پژوهش نمونه‌هایی از این راهکارها ارائه شده است. واژه‌های کلیدی: معماری نرم‌افزار، متدولوژی چابک، الگوی فرآیند
    Abstract
    Software architecture is one of the most important artifacts in software development process which addresses quality aspects of the final software product. Traditionally, this artifact is the result of a complete process of software architecture development which is often performed early in the software development lifecycle of plan-driven methodologies. On the other hand, agile methodologies, which obey the principles of Agile Manifesto, do not prescribe upfront design which leads to generation of comprehensive and hardly-maintainable documents that prevents software development team to deliver working and valuable software to customer. However, these methodologies lack of practical guides about software architecture development and do not support architecture design activities very well. Therefore, existing software architecture development methods do not adapt to these methodologies very well. This has resulted into technical problems in agile teams especially in technically high-risk projects. Consequently, software engineers and practitioners have come to propose solutions to cope with this problem, which are not complete and comprehensive. The solutions have to put together and their effects on development of architecture in agile methodologies have to be analyzed. Accordingly, in this research, software architecture is formally studied as a stand-alone process which helps understanding its various dimensions and aspects. Moreover, using the former results and a general agile process framework as basis, agile methodologies are cross-analyzed in detail, to identify their strengths and shortcomings on supporting various dimensions of architecture development process. This analysis is augmented by more detailed discussions on two well-known agile methodologies. Additionally, several novel practices are introduced as sample solutions which help agile teams enhance their applied agile methodologies from architecture development perspective. These practices are the outcome of experiencing software development by the researcher in several agile projects and thus are practically applicable. Additionally, they are analytically assessed by the use of an agility-measurement framework. Keywords: Software architecture, agile methodologies, process pattern.