طبقه‌بندي(Classification)

  • یوسف مهرداد بی‌بالان

فصل چهارم از كتاب Object-Oriented Analysis and Design with Applications نوشته گريدي بوچ، به بررسي يكي از سخت‌ترين موضوعات تفكر بشري كه تأثير شگرفي بر مدلسازي و طراحي دارد، پرداخته است. ضمن دعوت براي مطالعه اين كتاب،‌ ترجمه و خلاصه اين فصل را كه آقاي مهندس آزادكيان زحمت آن را تقبل نموده‌اند، در زير آمده است. از آقاي مهندس آزادكيان نيز سپاسگذارم كه اين متن را در اختيارم قرار دادند.

طبقه‌بندي (classification) توانايي مرتب‌سازي دانش ما نسبت به اشياء دامنه مساله است. در طراحي شي‌گراء، شناخت يكنواخت اشياء باعث مي‌شود كه وجوه اشتراك بين تجريدها و مكانيزمهاي كليدي، نمايان گشته و در نهايت برنامه‌‌‌هاي نرم افزاري جمع و جور و با معماري ساده‌تر داشته باشيم. اما مشكل اينجاست كه يك راهنماي سريع و سهل‌الاستفاده براي اين موضوع وجود ندارد. به عبارت ديگر تشخيص اشياء و دسته‌بندي آنها در غالب كلاسها يك دانش تجربي است.
اهميت طبقه‌بندي از آنجا ناشي مي‌شود كه به ما كمك مي‌كند تا سلسله مراتب ارتباط بين اشياء را شناسايي كنيم. همچنين با استفاده از طبقه‌بندي، پيمانه‌بندي سيستم راحت تر انجام پذيرد.
ماهيت طبقه‌بندي يك فرآيند تكرارشونده و فزاينده است. هرچقدر دانش و تجربه تحليلگر نسبت به دامنه مساله بيشتر مي‌شود ، دسته‌بندي بهتري از اشياء و كلاسها صورت مي‌گيرد و راه‌حل‌هاي بعدي بهتر ارائه مي‌شوند. ضمن اينكه هيچ طبقه‌بندي كامل نمي‌تواند باشد و بستگي به سمت و سوي نگاه تحليلگر به دامنه مساله دارد، كامل بودن آن بستگي به فراست و بصيرت خلاقانه تحليلگر دارد.
سه نوع ديدگاه عمومي براي طبقه‌بندي وجود دارد: در روش كلاسيك دسته‌بندي بر اساس يك يا چند ويژگي مشترك بين موجوديت‌هاي مورد مطالعه انجام مي‌گيرد. اما هميشه نمي‌توان يك دسته ويژگي را يافت نمود كه طبقه‌بندي اشياء را بر اساس آنها انجام داد. روش دوم طبقه‌بندي مفهومي اشياء است. در اين روش بخش‌بندي دسته‌ها بر اساس يك مفهوم انجام شده و سپس موجوديت‌ها با توجه به حداكثر تناسب با مفهوم ارائه شده براي هر دسته، در آن قرار مي‌گيرند. در اين روش يك موجوديت ممكن است در چند دسته قرار گيرد. در طراحي نرم‌افزارهاي پيچيده اغلب دو روش قبلي براي طبقه‌بندي اشياء قابل استفاده است. اما در برخي موارد صرفاً استفاده از دو روش مذكور كفايت نمي‌نمايد. در اين حالت روش نمونه اوليه بكار برده مي‌شود. در اين روش يك نمونه اوليه ازهر دسته مورد نظر ساخته مي‌شود و از اين پس هر شي كه بيشترين شباهت به نمونه اوليه را دارد در دسته مرتبط قرار مي‌گيرد. عملا اين سه روش اساس تئوري تحليل شي گراء مي‌باشند.
مرز بين تحليل و طراحي شيءگرا خيلي شفاف نيست. در تحليل شيءگرا تمركز بر روي بررسي كامل مسئله و مدل كردن دنياي آن مسئله بر اساس كلاسها و اشياء تشكيل‌دهنده آن است. در طراحي تجريدها و مكانيزمهايي براي فراهم ساختن شرايط حل مسئله ابداع مي‌شوند.
روشهاي اثبات شده‌اي در تحليل شيءگراء وجود دارد كه اساس آنها ديدگاه‌هاي عمومي مطرح شده در طبقه‌بندي اشياء است. اين روشها عبارتند از: تحليل كلاسيك، تحليل رفتاري، تحليل دامنه، تحليل سناريوهاي كاربردي، كارتهاي CRC، تحليل تشريح به زبان عامه و تحليل ساختيافته. در اغلب اين روشها، سناريوها نقش كليدي را ايفا مي‌نمايند.
در تحليل شيءگرا تجريدهاي كليدي كه شامل واژگان دامنه مسئله است نمايان مي‌شود. ضمن اينكه برخي تجريدهاي كليدي نيز در طي طراحي براي ساده‌تر كردن حل مسئله ايجاد مي‌شوند. مكانيزمها نيز تصميمات استراتژيك طراحي را كه نمايانگر تعامل بين اشياء مختلف دامنه مساله است مشخص مي‌نمايند.

گزيده:
اگر نمی‌‌تواني يهترين تكنسين‌ها(فني‌ها) را استخدام كني، بهترين مديران را استخدام كن! ماريا داتيز

مرجع: سايت مهندس رسول‌زادگان

Service-Orientation vs. Object-Orientation

  • یوسف مهرداد بی‌بالان
Both object oriented and service-oriented design and develop techniques have their place in modern systems development. Object oriented systems fit well in a stateful environment while a service-oriented approach requires a stateless environment.

SOA Engineering Misconceptions

  • یوسف مهرداد بی‌بالان

Misconception #1: “SOA Vendor Stacks are Service Architectures”

Misconception #2: “SOA Vendor Stacks are the Best Foundation for SOA Engineering”

Misconception #3: “An ESB Product Equals Service Infrastructure”

Misconception #4: “SOA Performance is Available Off-the-Shelf”

Misconception #5: “SOA Security Architecture is Available Off-The-Shelf”

Misconception #6: “Programmers Will Define and Build Reusable Services”

Misconception #7: “SOA is a Process-Centric Architecture”

Misconception #8: “SSL/TLS is a Good Foundation for SOA Message Security”

Misconception #9: “All You Really Need are Web Services”

Reference: SOA Engineering Misconceptions

گزيده:
هیچ کس نمی‌تواند چیزی را به شما بیاموزد جز آنچه که در افق دید و خرد شما وجود داشته و شما از آن غافل بوده‌اید . جبران خلیل جبران

درسهايي از اديسون

  • یوسف مهرداد بی‌بالان

مطلب زير بخشي از مطلبي است در اين سايت.

۱- با یک نیاز شروع کنید
«من هرگز چیزی را قبل از اینکه فکر کنم چه فایده هایی می‌تواند برای مردم داشته باشد اختراع نکردم. فکر کردم جهان چه چیزی نیاز دارد و سپس به اختراع پرداختم»

۲- گول نخورید
«مشغول بودن همیشه به معنی مفید بودن نیست ، کار واقعی وقتی مشخص می‌شود که نتیجه‌ی خوبی بدهد و برای گرفتن نتیجه خوب چیز هایی از قبیل برنامه ریزی ، هماهنگی ، ذکاوت ، شجاعت و… لازم است. با تظاهر کردن چیزی درست نمی‌شود.»

۳- سخت کوش و صبور باشید
«صبر و شکیبایی کلید موفقیت است فقط باید به آن ایمان داشته باشید.»

۴- تلاش یک الزام است
«نبوغ یک درصد ذاتی و نود و نه درصد به دست آوردنی است.»

۵- شکست شما را به موفقیت نزدیک‌تر می‌کند
«من شکست نخوردم بلکه ده هزار راه اشتباه را پیدا کردم.»

۶-ما توانایی انجام کار های فوق العاده را داریم
«اگر ما به اندازه‌ی توانمان تلاش کرده بودیم الان خیلی خیلی شگفت زده تر بودیم.»

۷- گاهی شکست شروع موفقیت است
«فقط چون چیزی کاری که شما ازش می‌خواهید را انجام نمی‌دهد به این معنی نیست که به درد نخور است.»

۸- زود تسلیم نشوید
«مهم‌ترین نقطه ضعف ما زود تسلیم شدن است ، معمول ترین راه موفقیت فقط یک بار دیگر امتحان کردن است.»

۹- از کاری که می‌کنید لذت ببرید
«من حتی یک روز هم در زندگی‌ام کار نکردم ، آنها همش تفریح بود.»

۱۰- خلاق باشید
«برای داشتن یک ایده‌ی ناب کلی ایده داشته باش.»

۱۱- وسواس نداشته باشید
«برای اختراع کردن یک قوه‌ی تصور قوی نیاز دارید و مقداری خرت و پرت!»

گزيده:
من براي شادماني به دنيا نيامده‌ام، من آمده‌ام كارهاي بزرگ انجام بدهم. بتهوون

قدرت اندیشه

  • یوسف مهرداد بی‌بالان

پیرمردی تنها در مینه‌سوتا زندگی می‌کرد . او می‌خواست مزرعه سیب زمینی‌اش را شخم بزند اما این کار خیلی سختی بود.
تنها پسرش که می‌توانست به او کمک کند در زندان بود. پیرمرد نامه‌ای برای پسرش نوشت و وضعیت را برای او توضیح داد:
پسرعزیزم من حال خوشی ندارم چون امسال نخواهم توانست سیب زمینی بکارم .من نمی‌خواهم این مزرعه را از دست بدهم، چون مادرت همیشه زمان کاشت محصول را دوست داشت. من برای کار مزرعه خیلی پیر شده‌ام. اگر تو اینجا بودی تمام مشکلات من حل می‌شد.من می‌دانم که اگر تو اینجا بودی مزرعه را برای من شخم می‌زدی .
دوستدار تو پدر

پیرمرد این تلگراف را دریافت کرد:
پدر، به خاطر خدا مزرعه را شخم نزن، من آنجا اسلحه پنهان کرده‌ام .

۴ صبح فردا ۱۲ نفر از مأموران FBI و افسران پلیس محلی تمام مزرعه را شخم زدند بدون اینکه اسلحه‌ای پیدا کنند.
پیرمرد بهت‌زده نامه دیگری به پسرش نوشت و به او گفت که چه اتفاقی افتاده و می‌خواهد چه کند؟ پسرش پاسخ داد: پدر برو و سیب زمینی‌هایت را بکار، این بهترین کاری بود که از اینجا می‌توانستم برایت انجام بدهم .
مرجع: از نامه‌هاي فرهاد عزيز
گزيده:
اگر می‌خواهی خوشبخت باشی، برای خوشبختی دیگران بکوش زیرا آن شادی که ما به‌ دیگران می‌دهیم، به ‌دل خودمان برمی‌گردد. بتهوون

تولدت مبارک

  • یوسف مهرداد بی‌بالان

امروز وبلاگ سماموس دو ساله شد.
صبح روز جمعه سیزدهم مردادماه سال 1385 ساعت 9 صیح، سماموس متولد گرديد.
در كنار همه آموزه‌ها و تجربه‌ها، بزرگترين دستاورد وبلاگ سماموس برايم، ارتباط با دوستان عزيزي است كه سعادت ديدار برخي از آنان هنوز ميسر نشده است.
هيچ‌گاه در باورم نمي‌گنجيد كه توان و وقت ادامه اين كار را داشته باشم.
فيض روح القدس ار باز مدد فرمايد ديگران هم بكنند آنچه مسيحا مى‏كرد

سماموس، تولدت مبارك.

گزيده:
هنگامی که مصمم به انجام عملي شُدید، باید درهای تردید را کاملآ مسدود سازید. نیچه

WICSA 2008: Architecture Patterns in Practice

  • یوسف مهرداد بی‌بالان

As part of the ‘Patterns and Styles’ paper presentations track, Neil B. Harrison and Paris Avgeriou presented a paper titled Analysis of Architecture Pattern Usage in Legacy System Architecture Documentation. The authors looked at different architectural and studied their usage in different application domains such as….

Here are some of their findings:

* The five most commonly used patterns are (in sequence): Layers, Shared Repository, Pipes and Filters, Broker and MVC.

* In Enterprise Systems, the most common used patterns are Layers, MVC, Presentation Abstraction Control and Broker.

* In Web-based systems, broker, layers, pipes and Filters are most prevalent. (This surprised me considering MVC is not in the list).

* One of the interesting results is that architectures are often based on 2 patterns rather than one, three or more patters.

* The authors also looked at the usage patterns of architectural view and found that out of the 4+1 views, development and process views are prevalent.

مرجع:‌Rabah’s Weblog

گزيده:
وقتي هدفمان را از دست مي‌دهيم، مجبور هستيم سعي خود را چند برابر كنيم . مارك تواين

برای خروج از جستجو کلید ESC را بفشارید