وضعیت 90% پروژه

در بعضی از پروژه ها  و در اغلب پروژهای نرم افزاری در ایران پیش می آیدکه نرم افزار مثلا در مدت 3 ماه به وضعیت 90% می رسد  و چون پروژه در وضعیت 90% است برنامه نویس ها شروع به انجام دادن ریزه کاری هایی که از قبل مانده بود می کنند (مانند تکمیل چینش کنترها بر روی فرم ها )  ولی 10% باقی مانده بیش از 3 ماه به طول می انجامد !  چرا ؟ محصول 90% باعث به عقب افتادن Release محصول می شود و بالطبع نارضایتی مشتری و هزینه های اضافی را برای تیم توسعه دربرداشته خواهد...
Continue reading...

آیا Agile در پروژه های بزرگ جواب خواهد داد ؟

یکی از اساسی ترین بحث هایی که در محافل Agile مطرح می شود این است که آیا Agile  قابلیت کار در پروژهای بزرگ را دارد ؟ بعضی ها می گویند نه و اعتقاد دارند که که Agile فقط یک راه حل کوچک و فنی می باشد . عدم وجود برنامه ریزی از قبل تعیین شده باعث به وجود آمدن موانع در راه پروژه می شود . و بعضی دیگر می گویند بلی و اذعان دارند که فرآیند قابل گسترش می باشد اما این عمل طول می کشد. و اشتباه از کسانی است که نمی توانند این عمل را درست انجام...
Continue reading...

چگونه کدهای تست نشده را رفاکتور نماییم؟

معمولا در مرحله Bug-fixing یا رفع خطاها فرصتهای مغتنمی برای رفاکتور کردن کدهای تست نشده به وجود می‌آید . به عبارت دیگر شما کدهایی دارید که مشکل دار هستند و این فرصت را دارید تا با ساختاری بهتر کدها را بازسازی نمایید . بعنوان یک قاعده کلی ، به ازای هر کسی که یک مشکل (Problem) را به شما اطلاع می دهد بین 10 تا 100 نفر دیگر وجود دارد که با همین مشکل مواجه شده است ولی به شما اطلاع نداده است . زمانی که می خواهید به مسائل بالای کیفیت دست پیدا کنید در واقع می خواهید کدهای...
Continue reading...

اسکرام ساده شده

در طی مقالاتی که بنده در مورد Scrum به رشته تحریر درآوردم , اشکالی که وارد می باشد این است که کل مقالات به صورت بریده های روزنامه می باشد که خواننده نمی تواند جمع بندی بکند . در این پست قصد دارم کل اسکرام را به صورت کامل و با بیان ساده تشریح نمایم . امید بر انجام این مهم است . قسمت اول – توضیحات تکمیلی اسکرام چیست ؟ در روش‌های قدیمی و معمول ساخت نرم‌افزار، طراحان نرم‌افزار معمولاً  ابتدا فرض می‌کنند که تمامی نیازهای کاربران سیستم را درک کرده‌اند. اما همیشه نیازهای کاربران سیستم در ابتدا مشخص...
Continue reading...

ابزار تفکری که Agile نامیده می شود

بعضی از مردم هستند که همیشه در مقابل تغیرات مقاومت از خود نشان می دهند و برای اینکه سوییچ نکنند شروع به انتقاد از مورد جدید می کنند . Agile هم از این قاعدع مستثنی نمی باشد ,  کسانی که با Water Fall و یا RUP کار میکنند Agile را مورد حمله قرار می دهند و به این اذعان دارند که Agile ابزار خوبی نیست و باید مورد استفاده قرار نگیرد. ابزاری با عنوان بد یا خوب وجود ندارد . این ما هستیم که با استفاده نادرست از این ابزار باعث ناکارآمد شدن این ابزار می شویم . همیشه مردم...
Continue reading...

کار با User Story ها

در بخش آموزش پیاده سازی SCRUM قسمتی با عنوان نحوه ساخت Product Backlog وجود دارد که در این پست می خواهیم با نحوه جمع آوری User Stories  برای ساخت Product Backlog  آشنا بشویم . User Story چیست ؟ عبارتست از توضیح کوتاهی در مورد عملیاتی که مد نظر کاربر و یا مشتری (صاحب محصول – Product Owner) می باشد . User Stories  منبع و در واقع تغذیه کننده اصلی Product Backlog ما هستند . بهترین حالت ساخت این Backlog در حالت Just-in-Time است یعنی همان زمانی که با صاحب محصول (Product Owner) در حال بحث روی محصول می باشید ....
Continue reading...

پیاده سازی SCRUM – قسمت دوم

این آموزش قسمت دوم پیاده سازی SCRUM – قسمت اول می باشد . اگر شما توانسته باشید اولین قدم (آموزش قسمت اول) را با موفقیت برداشته باشید ,  تبریک عرض میکنم چراکه این قدم مهمترین قدم در اسکرام می باشد . در این قسمت شما مطالبی در مورد ” چگونگی برآورد Backlog محصول ” فراخواهید گرفت . برآورد در سطوح بالا برای اینکه بتوان اندازه هر آیتم Back log محصول را فهمید نیاز داریم تا بر آورد در سطوح بالا انجام بپذیرد . فهمیدن این موضوع برای ما بسیار سودمند است زیرا این مورد ما را در اولویت بندی ها...
Continue reading...

Fail سریع خوب است

یکی از مزایای سوییچ کردن به روش چابک، رویارویی سریع با شکست است (منظور از شکست احتمال دارد به جایی برسید که کل پروژه تعطیل شود) برای روشن شدن مطلب ,  در مورد نحوه کار پروژه های waterfall فکر کنید. نیازهای کسب‌کار به ویژگی نرم افزار تبدیل می شود. تیم توسعه این ویژگی ها را بررسی و شروع به طراحی و ساخت نرم افزار می کند. چند ماه بعد گروه توسعه با جلال و شکوه و طی مراسم شیرینی خورانی نرم افزار را به مشتری نشان می دهند .  تاریخ نشان داده است که معمولا این شادی به طول نخواهد...
Continue reading...

تست نرم‌افزار در Agile Software Development

همان‌طور که می‌دانید Unit Testing به معنای تست کردن قسمت کوچکی از برنامه است که ماجول یا یونیت برنامه نام دارد و می‌تواند در پیدا کردن اشکالات برنامه بسیار مؤثر واقع شود، اما در حقیقت نوشتن یک Unit Test بیشتر عملی است که در قسمت طراحی نرم‌افزار به کار می‌رود تا در قسمت Verification یا اشکال‌یابی، و می‌تواند نظرات کاربران را بگیرد.  به این معنا که وقتی کاربری در مورد سیستم نظر داد که مشکلی در Unit وجود دارد و آن مشکل در Unit Testing حل شد، در قسمت‌های بعدی نمی‌توان از او برای آن قسمت از برنامه نظرخواهی کرد. علاوه بر...
Continue reading...