همایش نمایندگی های انستیتو ایزایران
مشهد مقدس آذر 1394
تقدیر ریاست محترم فنی و حرفه ای تهران
مرکز 8 فنی و حرفه ای اقدسیه
کارگاه های مجهز و اساتید با تجربه
انستیتو انفورماتیک فنی کار

ایزایران لپ تاپ

با اعطای مدرک بین المللی انستیتو ایزایران | با اعطای مدرک انستیتو انفورماتیک فنی کار

مرکز آموزش تخصصی و فوق تخصصی نصب و تعمیرات ماشین های اداری و سخت افزار کامپیوتر

ثبت نام  آنلاین    شهریه دوره ها 

Agile Software Development

قصد دارم یکی از مباحث جدید در مهندسی نرم‌افزار را به صورت مختصر توضیح دهم. این مدل تولیدی نرم‌افزار را بارها در پروژه‌های نرم‌افزاری‌ای که مدیریت و اجرا کرده‌ام اعمال کردم و تجربه نشان داده است که خیلی از مواقع این روش توانسته است گوی سبقت را از روش‌های معمول و متداول برباید.

در طراحی یک نرم‌افزار رعایت اصول استاندارد طراحی، استفاده از الگوهای آماده و بهره‌گیری از روش‌های نوین بسیار مهم است، ولی نکته مهم این است که در اصل کاربران، باعث می‌شوند یک پروژه نرم‌افزاری به نتیجه برسد. یعنی فناوری و پروسه استفاده شده، در حقیقت در رده دوم اهمیت قرار دارند.

بسیاری از ما با پروژه‌های نرم‌افزاری‌ای که بدون هیچ‌گونه اصولی تهیه می‌شوند، مواجه شده‌ایم و دیده‌ایم که کار با این گونه پروژه‌ها تا چه اندازه مشکل است. در این پروژه‌ها مشکلات عمده‌ای که پیش میآیند عبارتند از: عدم توانایی تولیدکنندگان در تشخیص نیازهای کاربران، وجود ایرادها و error های تکراری، تأخیر در ارائه محصول و... . از طرف دیگر، مشتریان این‌گونه نرم‌افزارها از عدم دقت در ارائه برنامه زمانبندی دقیق از طرف طراحان سیستم، کیفیت کمِ نرم‌افزارهای تولیدی و افزایش هزینه‌ها شکایت دارند.

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

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

اوایل سال ۲۰۰۱تعدادی از محققان و صاحب‌نظران نرم‌افزار، گروهی به نام Agile Alliance را تشکیل دادند که توانست راه‌حلی برای تیم‌های نرم‌افزاری پیدا کند تا به سرعت و با کیفیت بالا نرم افزار تولید کنند و بتوانند اگر تغییری در قسمتی از نرم‌افزار به وجود آمد، آن را کنترل کنند و اصلاحات لازم را اعمال نمایند. آن‌ها مدعی هستند که راه بهتری برای تولید نرم‌افزار پیشنهاد کرده‌اند که کار ما برنامه‌نویسان را آسان کرده است.

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

اهمیت نقش اعضای تیم در پروژه نرم‌افزاری‌

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

یک عضو مؤثر و قوی در تیم نیازی ندارد که یک برنامه‌نویس سطح بالا و قوی باشد. او می‌تواند یک برنامه‌نویس معمولی باشد، اما کسی باشد که با دیگر اعضای تیم به خوبی کار کند و با آنان رابطه خوبی داشته باشد. یک تیم با برنامه‌نویسان معمولی‌ای که می‌توانند به صورت منسجم کار کنند و با هم ارتباط خوبی داشته باشند، بهتر از گروهی از بهترین برنامه‌نویسان است که نمی توانند کار تیمی انجام دهند و با موفقیت پروژه‌ای را به اتمام برسانند.

البته نباید نقش مهم ابزارهای برنامه‌نویسی مناسب و ابزار CASE را در موفقیت پروژه‌های نرم‌افزاری نادیده گرفت. کامپایلرها، IDEها، سیستم‌های کنترلی سورس کدهای برنامه و ... همگی می‌توانند باعث شوند اعضای تیم به خوبی و با دقت بیشتری کار خود را انجام دهند. البته استفاده زیاد از ابزارهای برنامه‌نویسی و کمکیِ مهندسان نرم‌افزار می‌تواند اثر معکوس نیز داشته باشد. یکی از نکات قابل اهمیت که مدیران پروژه‌ها باید بدانند این است که اولین کاری که باید انجام دهند، ایجاد تیمی مناسب برای پروژه است؛ حتی قبل از این‌که محیط کاری مناسب را برای آن تیم فراهم آورند. ابتدا باید تیمی کارا و همگام با هم تشکیل داد. سپس اجازه داده شود خود اعضای آن تیم در مورد نیازهای ابزاری و محیطی خود تصمیم بگیرد.

تولید مستندات

نرم‌افزار بدون مستندات را می‌توان مانند خانه‌ای تجسم کرد که نقشه سیم‌کشی برق، لوله‌کشی و هیچ‌گونه نقشه‌ دیگری ندارد. حال تجسم کنید که اگر قسمتی از برق این ساختمان ایراد پیدا کند، چه کاری می‌توانیم انجام دهیم؟ یا باید از برقکاری که آن ساختمان را قبلاً برق کشی کرده است درخواست کنیم که به ما کمک کند (البته پیدا کردن او نیز کار آسانی نیست و ممکن است هیچ‌وقت او را پیدا نکنیم). راه‌حل بعدی این است که دیوارهای خانه را خراب کنیم تا سیم‌ها را پیدا کنیم و نقص سیم‌کشی را برطرف نماییم و به این صورت در حقیقت یک فاجعه به تمام معنی برای صاحبخانه پیش میآید.

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

کدهای برنامه نمی‌توانند به تنهایی و بدون راهنما و مستندات توسط دیگر افراد قابل فهم باشند. طراحان نرم‌افزار باید مستنداتی فراهم کنند که بتواند به کسی که بعدها به آن کدها مراجعه می‌کند نشان دهد که طراحان اولیه این سیستم چگونه ساختار برنامه را درست کرده‌اند. البته درست کردن مستنداتِ زیاد و غیرضروری کار درستی نیست و وقت تلف کردن است.

مهندسان نرم‌افزار اصطلاح خوبی برای مستندات دارند و می‌گویند: مستندات نرم‌افزار باید <کوتاه> و <ساکت> باشد. منظور از کوتاه این است که باید مختصر و دقیق باشد و منظور از ساکت این است که نباید خیلی به جزئیات غیرضروری بپردازد و خواننده را خسته نماید.

اهمیت نقش کاربران سیستم در پروژه‌

نرم‌افزار را نمی‌توان مانند اجناس دیگر سفارش داد. نمی‌توانید انتظار داشته باشید که شرح فنی نرم‌افزاری را بنویسید و از کسی بخواهید آن را در مدت زمان معین و با قیمت معین به اتمام برساند. پروژه‌های نرم‌افزاری که این‌گونه سفارش داده شده‌اند، اکثراً شکست خورده‌اند. پروژه‌های موفق پروژه‌هایی هستند که در آن کاربران به صورت مستقیم در مراحل اجرایی پروژه دخیلند و نظرات مشتریان که همان کاربران سیستم باشند، از ابتدا مورد توجه قرار گرفته است. اگر کاربران سیستم در تمامی مراحل تولید نرم‌افزار حضور داشته باشند و در مورد کار و محصول به دست آمده تا آن زمان اعلام نظر کنند، می‌توان مطمئن بود پس از اتمام کار انتظار بالاتری از سیستم نخواهد داشت.

توانایی اعمال تغییرات در نرم‌افزار و برنامه‌ریزی موقت‌

به راستی می‌توان عامل موفقیت یا عدم موفقیت یک پروژه نرم‌افزاری را در توانایی یا عدم توانایی آن در پاسخ به تغییرات دانست؟ برنامه اجرایی پروژه باید انعطاف‌پذیری مناسبی داشته باشد و بتوان آن را متناسب با تغییرات احتمالی آینده تغییر داد. معمولاً مدیران پروژه‌ها چارت و برنامه زمان‌بندی پروژه را روی دیوار نصب می‌کنند. با این کار می‌توانند تکالیف هر شخص در تیم را کنترل نمایند و قسمت‌های انجام شده را با خط قرمز روی آن برنامه مشخص کنند. اما مشکلی که در این قسمت ممکن است پیش آید این است که بعد از مدتی ساختار این برنامه به هم خواهد خورد؛ چرا که اولاً اعضای تیم در مورد پروژه اطلاعات خوبی کسب کرده‌اند و برخی از تکالیف آنان غیرضروری خواهد شد.

از طرف دیگر، مشتری و کاربران آینده سیستم نیز در جریان کار قرار می‌گیرند و ممکن است نیازهای خود را افزایش دهند و تکالیف بیشتری برای اعضای تیم به ارمغان بیاورند. با این کار تمام برنامه زمانبندی پروژه به هم خواهد خورد. راه بهتری که می‌توان پیش گرفت این است که برنامه‌ای دقیق برای مثلاً دوهفته در نظر بگیریم، برنامه‌ای تقریبی برای دو یا سه ماه آینده مشخص کنیم و برنامه‌ای باز هم تقریبی‌تر برای بعد از آن. دلیل منطقیِ این‌گونه برنامه‌ریزی این است که با این کار می‌توانیم اگر مثلاً نیازهای کاربر تغییر کرد، در مرحله بعدی برنامه خود آن تغییر را در نظر بگیریم.

اصول تولید نرم‌افزار به روش Agile Development

جلب رضایت کاربر سیستم با ارائه نرم‌افزارهای با کیفیت‌

نیازهای کاربران ممکن است عوض شود؛ حتی در مراحل پایانی پروژه. در Agile Development گروه آمادگی قبول هرگونه تغییری را در هر مرحله از پروژه دارد.

تولید سریع نرم‌افزار با تبدیل آن به چند قطعه و ارایه آن به مشتری

ایجاد محیط کاری مناسب برای اعضای تیم در پروژه

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

در پروژه‌هایی که به روش Agile تولید می‌شوند، معیار موفقیت پروژه و رویه انتخابی، میزان رضایت مشتری از نرم‌افزار تولید شده و نیازهایی است که برآورده شده‌اند.

اعضای تیم در این روش در کار خود آهسته و پیوسته عمل می‌کنند.

اعضای تیم در این روش باید بیشترین تلاش خود را برای نوشتن نرم‌افزارهایی با کیفیت بالا به عمل آورند.

انتخاب بهترین و آسان‌ترین راه برای رسیدن به هدف اصلی پروژه‌

در حقیقت هدف اصلی هر برنامه‌نویس و تمامی تیم‌های نرم‌افزاری، ارائه بهترین سرویس و محصولی با کیفیت بالا به مشتریان خود است. Agile Software Development راهی است برای رسیدن به این منظور. چندین روش مانندScrum ،Adaptive Software Development و‌ Extreme Programming) XP) می‌توانند به شما کمک کنند.

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

فرم ثبت نام

پس از تکمیل فرم پیش ثبت نام منتظر تماس مشاور آموزشی خودتان باشید . در صورت تمایل با شماره ویژه : 02188930441 تماس بگیرید

اطلاعات فردی

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

انتخاب دوره آموزشی

captcha

دوره های آموزشی

ecu fannikar.com

copier fannikar.com

fax fannikar.com

fannikar camera

انستیتو انفورماتیک فنی کار نماینده رسمی و معتبر انستیتو ایزایران مرکز آموزش تعمیرات تخصصی و آموزش تعمیرات ماشینهای اداری و آموزش تعمیرات فکس و آموزش تعمیرات تبلت و آموزش تعمیرات پرینتر و آموزش تعمیرات مادربرد و آموزش تعمیرات لپ تاپ و آموزش تعمیرات موبایل و آموزش تعمیرات چاپگر و آموزش تعمیرات کپی و آموزش شارژ کارتریج و آموزش تعمیرات ecu و آموزش تعمیر پرینتر لیزری و آموزش تعمیرات بردهای پزشکی و آموزش تعمیرات نوت بوک و آموزش تعمیرات چاپگر لیزری و آموزش تعمیر ماشین های اداری و اموزش تعمیر dvr و آموزش تعمیرات در تهران و آموزشگاه تعمیرات فنی و آموزش تعمیرات و نصب و آموزش تعمیرات چاپگر های جدید و آموزش تعمیر موبایل و آموزش تعمیرات موبایل و آموزش تعمیر تلویزیون و آموزش تعمیرات تلویزیون و آموزش تعمیر کامپیوتر و آموزش تعمیرات کامپیوتر و آموزش تعمیر ای سی یو و آموزش تعمیرات ای سی یو و آموزش تعمیر لپ تاپ و آموزش تعمیرات لپ تاپ و آموزش تعمیر لپتاپ و آموزش تعمیرات لپتاپ و آموزش تعمیر ال ای دی و آموزش تعمیرات ال ای دی و آموزش تعمیر ال سی دی و آموزش تعمیرات ال سی دی و آموزش نصب دوربین مدار بسته و آموزش نصب دوربین مداربسته و آموزش نصب کولر گازی و آموزش نصب کولرگازی و آموزش تعمیر کولر گازی و آموزش تعمیرات کولر گازی و آموزش شارژ کارتریج و آموزش شارژ کارتریج و آموزش مهندسی معکوس و اموزش مهندسی معکوس و آموزش تعمیر برد الکترونیکی و آموزش تعمیرات برد الکترونیکی و آموزش نصب دزدگیر خودرو و آموزش نصب دزدگیر ماشین و  آموزش تعمیر ماشین های اداری و آموزش تعمیرات ماشین های اداری و آموزش تعمیر ماشینهای اداری و آموزش تعمیرات ماشینهای اداری و آموزشگاه تعمیر موبایل و آموزشگاه تعمیرات موبایل و اموزش تعمیر موبایل و اموزش تعمیرات موبایل و اموزش تعمیر تلویزیون و اموزش تعمیرات تلویزیون و اموزش تعمیر کامپیوتر و اموزش تعمیرات کامپیوتر و اموزش تعمیر ای سی یو و اموزش تعمیرات ای سی یو و اموزش تعمیر لپ تاپ و اموزش تعمیرات لپ تاپ و اموزش تعمیر لپتاپ و اموزش تعمیرات لپتاپ و اموزش تعمیر ال ای دی و اموزش تعمیرات ال ای دی و اموزش تعمیر ال سی دی و اموزش تعمیرات ال سی دی و اموزش نصب دوربین مدار بسته و اموزش نصب دوربین مداربسته و اموزش نصب کولر گازی و اموزش نصب کولرگازی و اموزش تعمیر کولر گازی و اموزش تعمیرات کولر گازی و اموزش شارژ کارتریج و اموزش شارژ کارتریج و اموزش مهندسی معکوس و اموزش تعمیرات برد به روش مهندسی معکوس و اموزش تعمیر برد الکترونیکی و اموزش تعمیرات برد الکترونیکی و اموزش نصب دزدگیر خودرو و اموزش نصب دزدگیر ماشین و اموزش تعمیر ماشین های اداری و آموزش تعمیرات ماشین های اداری و اموزش تعمیر ماشینهای اداری و اموزش تعمیرات ماشینهای اداری و اموزشگاه تعمیر موبایل و اموزشگاه تعمیرات موبایل در فنیکار