چکیده
در عملکرد جهان واقعی، سیستمهای نرمافزاری اغلب بدون توسعه هیچ مدل پیشفرض صریح ایجاد میشوند. این امر میتواند مسائلی جدی ایجاد کند که ممکن است مانع تکامل تقریبا اجتنابناپذیر آینده شوند، زیرا در بهترین حالت، تنها مستندسازی درباره نرمافزار، شکلی از تفاسیر کد منبع است. برای رفع این مشکل، تحقیقات باید روی استنتاج خودکار مدلها با استفاده از الگوریتمهای یادگیری ماشین برای اجرای دستورات متمرکز باشند. با این حال، دستورات (لاگهای) تولید شده توسط سیستم نرمافزاری واقعی ممکن است بسیار بزرگ باشند و الگوریتم استنتاج میتواند از ظرفیتی پردازش کامپیوتر منفرد تجاوز کند.
این مقاله رویکرد کلی مقیاسپذیری را برای استنبتاج مدلهای رفتای ارائه میدهد که میتوانند دستورات بزرگ اجرا را از طریق الگوریتمهای موازی و توزیع شده پیادهسازی شده با استفاده از مدل برنامهنویسی MapReduce و اجرا شده روی خوشهای از گرههای اجرای متصل به هم انجام دهد. این رویکرد شامل دو مرحله توزیع شده است که ترکیب مدل و برش مسیر (برش ردیابی) را انجام میدهند. برای هر مرحله، الگوریتم توزیع شدهای با استفاده از MapReduce ایجاد میشود. با ظرفیت پردازش داده موازی MapReduce، مساله استنتاج مدلهای رفتاری از دستورات (لاگهای) بزرگ را میتوان به طور کارامدی حل کرد. این تکنیک در بالای Hadoop اجرا میشود. آزمایشهای روی خوشههای آمازون ، کارایی و مقیاسپذیری رویکرد ما را نشان میدهند.
1. پیشگفتار
مدلهای رفتار نرمافزار، نقشی حیاتی در کل چرخه عمر سیستمهای نرمافزاری ایفا میکنند. مهندسان نرمافزار ممکن است از طریق مدلها شناخت عمیقتری را از نحوه رفتار سیستم بدون مواجهه با پیچیدگیهای اجرا کسب کنند. اگرچه عملکردهای خود مهندسان نرمافزار نشان میدهند که مدلها باید به صورت پیشفرض قبل از انجام پیادهسازی توسعه یابند، حقیقت نشان میدهند که اغلب مدلها وجود ندارد یا با پیادهسازی سازگار نیستند. در حقیقت، ایجاد مدلی مناسب، پر هزینه و سخت است و نیاز به هر دوی خلاقیت و مهارتهای ریاضی دارد. علاوهبراین، حتی اگر مدلها توسعه یابند، آنها اغلب با تغییرات در پیادهسازی بروزرسانی نمیشوند و بنابراین مدلها و پیادهسازی به طور فزایندهای واگرا هستند.
Abstract
In the real world practice, software systems are often built without developing any explicit upfront model. This can cause serious problems that may hinder the almost inevitable future evolution, since at best the only documentation about the software is in the form of source code comments. To address this problem, research has been focusing on automatic inference of models by applying machine learning algorithms to execution logs. However, the logs generated by a real software system may be very large and the inference algorithm can exceed the processing capacity of a single computer.
This paper proposes a scalable, general approach to the inference of behavior models that can handle large execution logs via parallel and distributed algorithms implemented using the MapReduce programming model and executed on a cluster of interconnected execution nodes. The approach consists of two distributed phases that perform trace slicing and model synthesis. For each phase, a distributed algorithm using MapReduce is developed. With the parallel data processing capacity of MapReduce, the problem of inferring behavior models from large logs can be efficiently solved. The technique is implemented on top of Hadoop. Experiments on Amazon clusters show efficiency and scalability of our approach.
1. Introduction
Software behavior models play an important role in the whole life cycle of software systems. Through models, software engineers may gain a deep understanding of how a system behaves without dealing with the intricacies of the implementation. Although good software engineering practices suggest that models should be developed upfront, before deriving an implementation, reality shows that often models do not exist, or they are inconsistent with the implementation. In fact, building a proper model is costly, hard, and requires both mathematical skills and ingenuity. Moreover, even if models are developed, they are often not updated with the changes in the implementation and therefore the models and the implementation progressively diverge.
چکیده
1. پیشگفتار
2. مرور اجمالی
2.1. MapReduce
2.2. استنتاج مدل رفتاری
2.4. رویکرد ما
3. تعارفی رسمی
4. برش مسیر متوالی
4.1. الگوریتم
4.2. استراتژی موازیسازی ساده
5. برش مسیر توزیع شده با MapReduce
5.1. رمزگذاری داده
5.2. نگارنده
5.3. کاهنده
5.4. بهینهسازیها
6. ترکیب مدل توزیع شده با MapReduce
6.1. رمزگذاری دادهها
6.2. نگارنده و کاهنده
7. ارزیابی آزمایشی
7.1. آزمایشات روی لاگهای ترکیبی
7.2. آزمایشات روی لاگهای واقعی
8. بحث
8.1. کاوش نامتغیرها (ناورداها)
8.2. پیشپردازشگر لاگ
9. کارهای مربوطه
10. نتیجهگیری
منابع
Abstract
1. Introduction
2. Overview
2.1. MapReduce
2.2. Behavioral model inference
2.3. Running example
2.4. Our approach
3. Formal definitions
4. Sequential trace slicing
4.1. The algorithm
4.2. A naive parallelization strategy
5. Distributed trace slicing with MapReduce
5.1. Data encoding
5.2. Mapper
5.3. Reducer
5.4. Optimizations
6. Distributed model synthesis with MapReduce
6.1. Data encoding
6.2. Mapper and reducer
7. Experimental evaluation
7.1. Experiments on synthetic logs
7.2. Experiments on real logs
8. Discussion
8.1. Invariant mining
8.2. Log preprocessor
9. Related works
10. Conclusion
Acknowledgements
Appendix A. Correctness of distributed trace slicing
Appendix B. Correctness of distributed model synthesis