Scrum Task Board

اولین بار که اینجا از متدولوژی Agile نوشته شد هفت سال می‌گذرد. در این هفت سال روش‌های چابکی در صنعت نرم افزار ایران بسیار رایج تر شده اند و بسیاری از سازمان‌ها هم از روش‌های سنتی کمی دورتر شده اند. اسکرام بوردها یا تابلوهای وظایف اسکرام هر چند نقش بنیادینی در پیاده سازی روش اسکرام ندارند، اما به خاطر تغییری که در محیط کار ایجاد می‌کنند می‌توانند انگیزه‌ای برای توجه بیشتر به روش‌های چابکی شوند.

من قالب اسکرام بورد زیر را برای سایز A0 (118 cm x 84cm)  آماده کرده‎ام. می‌توانید با کلیک بر روی تصویر سایز اصلی آن را داشته باشید و در دفاتر فنی چاپ کنید. برای استفاده با ماژیک می‌توانید از دفتر چاپ بخواهید آن را لمینت مات کند.

Scrum Task Board

چابکی در غول آبی

اینکه بعد از این همه مدت چیزی بنویسم به تجربه‌های قبلی و تلاش‌های گذشته در مورد Agile‌ بر می‌گردد. من زمان‌های زیادی رو در سال‌های گذشته برای قانع کردن مدیران پروژه بزرگ به استفاده از متدهای چابک و تغییر عادت‌های قدیمی و پرخرج سپری کرده‌ام. تا دو یا سه سال پیش پس از همه بحث‌ها و قانع نشدن‌ها این جملات احمقانه رو می‌شنیدم که اگر خوب بود IBM‌ هم استفاده می‌کرد. در آن زمان اگر چه بلاگر‌های زیادی از IBM‌ و SAP در این مورد می‌نوشتند، اما مدرک خوب (بخوانید Case Study مناسب) در این مورد نبود. برای قسمت زیادی از مدیران قدیمی و پر سن و سال، هیچ چیزی بهتر از توجیه اقتصادی نیست و این هم کمکی است که آی بی ام کرده است:

Agile transformation helps IBM Software Group save USD300 million

“We now have 57,000 employees within 346 product areas using Rational Team Concert software, and they have adopted it on their own, which I think is a very, very strong statement.” – Julie King, vice president of consumability, IBM Software Group, IBM

حفاظت در مقابل درخواست های دوگانه

Response Cache: Double Request Protection

(کش پاسخ: حفاظت در مقابل درخواست های دوگانه)

یک مشکل استاندارد در web-application ها پردازش مناسب درخواست های دوگانه (چندگانه) با دیتای یکسان است. سناریوهای ممکن عبارتند از:
۱- refresh کردن صفحه جاری
۲- انجام bakc-forward در صفحات وب
۳ – کلیک کردن بیش از یکبار دکمه submit

درخواست های چندگانه می تواند اثرات جدی بر روی برخی application ها مانند خرید و فروش اینترنتی داشته باشد. راه حل های client-side برای رفع این مشکل، کامل نیستند. به عنوان مثال می توان توسط JavaScript، double click را بر روی submit غیرفعال کرد، مشروط بر اینکه کاربر JavaScript را در مرورگر خود فعال کرده باشد.
هر چند مشکل در مورد refresh و back- forward به قوه خود باقی است. و یا تنظیم هدرهای HTML تنها منجر به اعلام warning به کاربر می شود که می تواند از آن صرف نظر کند. تنها متد قابل اعتماد، حفاظت در طرف سرور است. راه حل ساده و اولیه، تولید شناسه های یکتا در پاسخ به درخواست های یک کاربر (هر session) و ارسال یه سرور توسط hidden fields و  مقایسه آن با id ذخیره شده در session است. در صورت یکسان بودن هر دو id، کاربر به صفحه خطا هدایت می شود. اما نمایش صفحه خطا چندان مطلوب نیست چون کاربر گزارش وضعیتی مناسبی در مورد عمل قبلی خود دریافت نمی کند. Response cache یک راه حل کلی مبتنی بر Servlet Filter است. کلیه درخواست ها به یک فیلتر ارسال می شود. در صورتی که درخواست برای اولین بار ارسال شده باشد پردازش توسط سرولت های مقصد انجام شده و نتیجه به کاربر ارسال و ضمنا در کش ذخیره می گردد. در صورت تکراری بودن، نتیجه قبلی از کش ارسال می شود.

– این library را می توانید از اینجا دانلود کنید.
منبع از گروه FINGO
– اطلاعات بیشتر در مورد Servlet Filter را می توانید در The Essentials of Filters بیابید.

BinDiff، ابزار مقایسه فایل های باینری

 SABRE BinDiff allows you to:

  • – Identify identical and similar functions in different binaries 
  • Port function names, anterior and  posterior comment lines, standard  comments and local names from one disassembly to the other
  • Detect & highlight changes between two variants of the same function

BinDiff v2.0 is significantly faster than previous versions and is now bundled with a easy-to-use UI which allows less experienced reverse engineers to analyse code quickly as well as boosting the productivity of more experienced analysts.

توضیح زیادی لازم ندارد. به این لیست Free File Comparison Utilities هم مراجعه کنید.

همکاری SAP و ناول


SAP AG and
Novell announced on May 15 that they have extended their relationship to offer a new joint support solution for customers who run SAP applications on SUSE Linux Enterprise Server.

These customers now have a single support entry point for the entire software stack — from the operating system through the application — to streamline resolution of support incidents, reduce complexity and lower the total cost of ownership.
MORE

خبر جالبی است،
تصمیم
ناول
و


SAP
برای ارایه محصولات در یک بستر مشترک. البته بلافاصله بعد
از این تصمیم،
SAP و مایکروسافت هم

تفاهمی برای استفاده بهتر از SQL Server 2005
اعلام کردند.

Q: Does your company
run its core business logic on SAP?
 

If the answer is yes,
then your company is (check all that apply):
[ ] Stuck in the 90’s
[ ] Wondering why its IT staff is so large
[ ] Circling the drain
[ ] all of the above

کارت های CRC

یکی از ارزشمندترین تکنیک ها در یک طراحی شی گرای خوب مرور تعاملات اشیاست که بر رفتار به جای دیتا متمرکز است.دیاگرام های CRC (سر واژه Class Responsibilities Collaboration) در اواخر دهه ۱۹۸۰ ابداع شده و هر چند جز UML نیست به عنوان یک تکنیک بسیار رایج در میان طراحان شی گرا شناخته شده است.
هر کارت CRC نماینده یک کلاس است که responsibilityها و collaboratorهای کلاس در آن بیان می شود.
یک responsibility یک عبارت کوتاه است که یکی از وظایف شی را خلاصه می کند: عملیاتی که انجام می دهد، دانشی که نگهداری می کند و تصمیمات مهمی که شی اتخاذ می نماید.ایده این است که طراح باید قادر باشد هر کلاس را در قالب تعدادی responsibility خلاصه کند. Responsibility ممکن است متناظر با یک operation، یک attribute و یا مجموعه نامشخصی از operationها و attributeها باشد.
برای هر کلاس collaboratorها کلاس های دیگری هستند که این کلاس نیاز به کار با آنها دارد.تعیین collaboratorها ایده هایی در مورد لینک های بین کلاس ها به دست می دهد.
برای استفاده از این متد اعضای تیم گردهم آمده و سناریوهای متفاوت را با استفاده از کارت ها مرور می کنند. به این صورت که کارت اشیای فعال بالا نگه داشته شده و برای نشان دادن نحوه ارسال پیغام به یکدیگر حرکت داده می شوند.
مهم ترین مزیت کارت های CRC امکان بررسی سریع گزینه های مختلف است، در حالی که این کار به وسیله نمودارهای UML بسیار زمان بر و ناکاراست. دیگر اینکه فکر کردن در مورد responsibilityهای یک کلاس ذهن طراح را از طرح یک کلاس به عنوان نگهدارنده دیتا دور و فهم رفتار سطح بالاتر یک کلاس را ممکن می سازد.

منبع / مطالعه بیشتر: The Original Paper On CRC By Beck
Object Design: Roles, Responsibilities, and Collaborations

ORM – Object Relational Mapping

data persistence به پایدار کردن داده بعد از به پایان رسیدن پروسه ای که آن را ایجاد کرده -به منظور بازیابی در آینده- اطلاق می شود. رایج ترین روش persistence استفاده از پایگاه داده رابطه ایست، چون ایجاد و دستیابی به آنها -بوسیله Sql- راحت است. با این وجود هنگام پیاده سازی یک application شی گرا ممکن است persistence کردن اشیا به یک مدل رابطه ای دشوار باشد. به تفاوت های میان دو مدل شی گرا و رابطه ای impedance mismatch گفته می شود مانند identity (مشکل در درج ۲ شی متفاوت با مقدار یکسان) inheritance و association. به عبارتی تلفیق اشیا با شمای رابطه ای به راحتی امکان پذیر نیست.

ORM برای حل این مشکل ابداع شده است. ORM پروسه پایدار کردن اشیا در یک پایگاه داده رابطه ایست و این امکان را به application می دهد که اشیا را مستقیما و بدون نیاز به تبدیل به/از فرمت رابطه ای persist کند.

همچنین در یک enterprise application به جنبه های دیگری -علاوه بر قابلیت های پایه زبان برنامه نویسی برای دسترسی به پایگاه داده- نیاز است مانند:

– Lazy Loading: عدم بازیابی کل اشیای مرتبط هنگامی که گراف اشیا پیچیده باشد.
– Eager Fetching: بازیابی کل گراف اشیا با یک operation.
– Caching: عدم نیاز به بازیابی شی ای که بیشتر خوانده می شود و کمتر تغییر می کند در هر بار دستیابی.
– Cascading: انجام خودکار update منتشر شونده در پایگاه داده.

از جمله ORM Framework ها می توان Hibernate را برای جاوا نام برد. نمونه ای از فایل تنظیم Hibernate که یک کلاس جاوا را به یک جدول پایگاه داده تصویر می کند در زیر آورده شده است. در این مورد کلاس Event با فیلد id به عنوان کلید اولیه به جدول events تصویر می شود. Event با کلاس های Speaker و Attendee رابطه one-to-many و با Location رابطه many-to-one دارد.

منبع: Hibernate Quickly Book | ORM in Detail