DOMAINDRIVENDESIGN_IR Telegram 239
“Specification by Example” by Example

آن یکی شیر است که آدم میخورد
آن یکی شیر است که آدم میخورد

کان یکی شیر است اندر بادیه
کان یکی شیر است اندر بادیه

ابیات بالا منتسب به حضرت مولانا و از مجموعه داستان طوطی و بقال برگزیده شده.

اگر به اعجاز ابیات بالا نگاه کنیم میبینیم که کلمات شیر در دو مصرع اول، و بادیه(معنای کاسه) در دو‌ مصرع دوم، چگونه به زیبایی بکار گرفته شده اند.

شاعر در اینجا به زیبایی از صنایع ادبی استفاده کرده و شاهکاری ادبی خلق کرده.

از زاویه‌ای دیگر اما، با نگاهی دقیق‌تر به شعر بالا، این شعر بهمون نشون می‌ده که برای جلوگیری از اشتباه و ابهام، باید مفاهیم رو دقیق و واضح تعریف کنیم. همونطور که "شیر" در این شعر دو معنی کاملاً متفاوت داره، ایضا “بادیه”، در تعریف ویژگی‌های محصول باید از بکار بردن عمدی یا سهوی این صنایع ادبی جدا خودداری کنیم.


رویکرد Specification by Example با همین هدف به وجود اومده: به جای تعریف‌های انتزاعی، با مثال‌های ملموس و قابل فهم، رفتار سیستم رو مشخص می‌کنیم و نشون میدیم که دقیقاً چطور باید کار کنه تا از هرگونه ابهامی جلوگیری بشه. ما از با کمک ارائه مثال‌های ملموس، ساده، و مشخص، ویژگی(specification) و بصورت کلی چیزی که در ذهن داریم رو مشخص میکنیم.

فرض کنید میخوایم یک ماشین حساب ساده را طراحی کنیم. اسم این ماشین حساب را "حسابچی" میذاریم. "حسابچی" باید عملیات اصلی ریاضی مثل جمع، تفریق، ضرب و تقسیم رو انجام بده.

برای تعریف دقیق نحوه عملکرد جمع در "حسابچی"، از رویکرد Specification by Example استفاده میکنیم. به این ترتیب، با ارائه مثالهای مشخص، انتظاراتمون رو از ویژگی جمع بیان میکنیم. این کار رو به صورت یک مکالمه بین دو نفر، تقی و نقی، نشون میدم:

مکالمه بین تقی و نقی:


تقی: خب، برای جمع تو "حسابچی" اول از یه چیز خیلی ساده شروع کنیم: ۲ + ۲، جوابش میشه ۴، درسته؟

نقی: آره، این که خیلی واضحه. جمع دو تا عدد صحیح و مثبت.

تقی: حالا یه کم بزرگترش کنیم: ۲ + ۱۰، میشه ۱۲.

نقی: اوکی، اینم مثل قبلیه. فقط اعداد بزرگتر شدن.

تقی: حالا ۲ + ۱۲۵۰ رو امتحان کن.

نقی: خب، اینم میشه ۱۲۵۲. پس "حسابچی" باید از اعداد صحیح بزرگ هم پشتیبانی کنه.

تقی: دقیقاً. حالا فرض کن بخوایم اعداد اعشاری رو هم جمع کنیم. مثلاً ۲ + ۱۰.۲.

نقی: خب، این میشه ۱۲.۲. پس "حسابچی" باید اعداد اعشاری رو هم در نظر بگیره.

تقی: عالیه. حالا یه کم پیچیده‌ترش کنیم. ۲ + ۱۰.۲ + ۲۵ چی؟ یعنی سه تا عدد رو با هم جمع کنیم.

نقی: این میشه ۳۷.۲. پس "حسابچی" باید بتونه چند تا عدد رو هم با هم جمع کنه، حتی اگه اعشاری باشن.

تقی: آفرین. حالا یه چیز دیگه. ۲ + ۲ + (۲ * ۲) رو حساب کن. اینجا یه عبارت ریاضی داریم که هم جمع داره و هم ضرب.

نقی: خب، طبق قواعد ریاضی، اولویت با ضربه، پس ۲ ضربدر ۲ میشه ۴، بعدش با ۲ و ۲ جمع میشه که میشه ۸. پس "حسابچی" باید از عبارات ریاضی (expressions) و تقدم عملگرها هم پشتیبانی کنه. یعنی بدونه اول ضرب رو حساب کنه بعد جمع رو.

تقی: دقیقاً همینطوره.



همانطور که مشاهده کردید، در این روش با ارائه مثالهای ملموس و گام به گام، ویژگیهای سیستم را مشخص کردیم.

هر مثال، بر پایه مثال قبلی بنا شده و جنبه جدیدی از رفتار سیستم رو آشکار کرد. همین کار باعث شد که که همگی ذینفعان درک مشترکی از چیزی که قرار تولید کنند داشته باشند. این مثالها همینطور حکم proof-of-work کار نهایی رو هم دارند.
یعنی قبل از پیاده‌سازی هر خط کدی ما مکانیزم نهایی اعتبار سنجی سیستم رو بهش دست پیدا کردیم.
6👍1



tgoop.com/DomainDrivenDesign_ir/239
Create:
Last Update:

“Specification by Example” by Example

آن یکی شیر است که آدم میخورد
آن یکی شیر است که آدم میخورد

کان یکی شیر است اندر بادیه
کان یکی شیر است اندر بادیه

ابیات بالا منتسب به حضرت مولانا و از مجموعه داستان طوطی و بقال برگزیده شده.

اگر به اعجاز ابیات بالا نگاه کنیم میبینیم که کلمات شیر در دو مصرع اول، و بادیه(معنای کاسه) در دو‌ مصرع دوم، چگونه به زیبایی بکار گرفته شده اند.

شاعر در اینجا به زیبایی از صنایع ادبی استفاده کرده و شاهکاری ادبی خلق کرده.

از زاویه‌ای دیگر اما، با نگاهی دقیق‌تر به شعر بالا، این شعر بهمون نشون می‌ده که برای جلوگیری از اشتباه و ابهام، باید مفاهیم رو دقیق و واضح تعریف کنیم. همونطور که "شیر" در این شعر دو معنی کاملاً متفاوت داره، ایضا “بادیه”، در تعریف ویژگی‌های محصول باید از بکار بردن عمدی یا سهوی این صنایع ادبی جدا خودداری کنیم.


رویکرد Specification by Example با همین هدف به وجود اومده: به جای تعریف‌های انتزاعی، با مثال‌های ملموس و قابل فهم، رفتار سیستم رو مشخص می‌کنیم و نشون میدیم که دقیقاً چطور باید کار کنه تا از هرگونه ابهامی جلوگیری بشه. ما از با کمک ارائه مثال‌های ملموس، ساده، و مشخص، ویژگی(specification) و بصورت کلی چیزی که در ذهن داریم رو مشخص میکنیم.

فرض کنید میخوایم یک ماشین حساب ساده را طراحی کنیم. اسم این ماشین حساب را "حسابچی" میذاریم. "حسابچی" باید عملیات اصلی ریاضی مثل جمع، تفریق، ضرب و تقسیم رو انجام بده.

برای تعریف دقیق نحوه عملکرد جمع در "حسابچی"، از رویکرد Specification by Example استفاده میکنیم. به این ترتیب، با ارائه مثالهای مشخص، انتظاراتمون رو از ویژگی جمع بیان میکنیم. این کار رو به صورت یک مکالمه بین دو نفر، تقی و نقی، نشون میدم:

مکالمه بین تقی و نقی:


تقی: خب، برای جمع تو "حسابچی" اول از یه چیز خیلی ساده شروع کنیم: ۲ + ۲، جوابش میشه ۴، درسته؟

نقی: آره، این که خیلی واضحه. جمع دو تا عدد صحیح و مثبت.

تقی: حالا یه کم بزرگترش کنیم: ۲ + ۱۰، میشه ۱۲.

نقی: اوکی، اینم مثل قبلیه. فقط اعداد بزرگتر شدن.

تقی: حالا ۲ + ۱۲۵۰ رو امتحان کن.

نقی: خب، اینم میشه ۱۲۵۲. پس "حسابچی" باید از اعداد صحیح بزرگ هم پشتیبانی کنه.

تقی: دقیقاً. حالا فرض کن بخوایم اعداد اعشاری رو هم جمع کنیم. مثلاً ۲ + ۱۰.۲.

نقی: خب، این میشه ۱۲.۲. پس "حسابچی" باید اعداد اعشاری رو هم در نظر بگیره.

تقی: عالیه. حالا یه کم پیچیده‌ترش کنیم. ۲ + ۱۰.۲ + ۲۵ چی؟ یعنی سه تا عدد رو با هم جمع کنیم.

نقی: این میشه ۳۷.۲. پس "حسابچی" باید بتونه چند تا عدد رو هم با هم جمع کنه، حتی اگه اعشاری باشن.

تقی: آفرین. حالا یه چیز دیگه. ۲ + ۲ + (۲ * ۲) رو حساب کن. اینجا یه عبارت ریاضی داریم که هم جمع داره و هم ضرب.

نقی: خب، طبق قواعد ریاضی، اولویت با ضربه، پس ۲ ضربدر ۲ میشه ۴، بعدش با ۲ و ۲ جمع میشه که میشه ۸. پس "حسابچی" باید از عبارات ریاضی (expressions) و تقدم عملگرها هم پشتیبانی کنه. یعنی بدونه اول ضرب رو حساب کنه بعد جمع رو.

تقی: دقیقاً همینطوره.



همانطور که مشاهده کردید، در این روش با ارائه مثالهای ملموس و گام به گام، ویژگیهای سیستم را مشخص کردیم.

هر مثال، بر پایه مثال قبلی بنا شده و جنبه جدیدی از رفتار سیستم رو آشکار کرد. همین کار باعث شد که که همگی ذینفعان درک مشترکی از چیزی که قرار تولید کنند داشته باشند. این مثالها همینطور حکم proof-of-work کار نهایی رو هم دارند.
یعنی قبل از پیاده‌سازی هر خط کدی ما مکانیزم نهایی اعتبار سنجی سیستم رو بهش دست پیدا کردیم.

BY کانال مکتب‌خانه DDD


Share with your friend now:
tgoop.com/DomainDrivenDesign_ir/239

View MORE
Open in Telegram


Telegram News

Date: |

During the meeting with TSE Minister Edson Fachin, Perekopsky also mentioned the TSE channel on the platform as one of the firm's key success stories. Launched as part of the company's commitments to tackle the spread of fake news in Brazil, the verified channel has attracted more than 184,000 members in less than a month. With Bitcoin down 30% in the past week, some crypto traders have taken to Telegram to “voice” their feelings. The public channel had more than 109,000 subscribers, Judge Hui said. Ng had the power to remove or amend the messages in the channel, but he “allowed them to exist.” Add up to 50 administrators Commenting about the court's concerns about the spread of false information related to the elections, Minister Fachin noted Brazil is "facing circumstances that could put Brazil's democracy at risk." During the meeting, the information technology secretary at the TSE, Julio Valente, put forward a list of requests the court believes will disinformation.
from us


Telegram کانال مکتب‌خانه DDD
FROM American