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

1606683296_1_0.gif

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

مطلب پیشنهادی

برای شروع آموزش برنامه‌نویسی؛ این ده مطلب را بخوانید!

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

http://www.wavemaker.com/rapid-application-development-model/ مراجعه کنید، مشاهده می‌کنید این سایت اعلام می‌دارد برای ساخت برنامه‌های موبایل، وب و ترکیبی (هیبریدی) از مدل توسعه سریع نرم‌افزار (RAD) به‌منظور فراهم آوردن زیرساخت توسعه سریع نرم‌افزار در ارتباط با ساخت‌ این‌ گونه برنامه‌ها استفاده می‌کند. در شماره گذشته، متدولوژی‌های افزایشی و تکرارشونده که باعث می‌شوند نرم‌افزارهای کاربردی به‌موقع و مطابق با نیازهای مشتریان و هماهنگ با تغییراتی که آن‌ها مد نظر دارند تحویل داده شوند را مورد بررسی قرار دادیم، بر همین اساس در این مقاله تصمیم گرفتیم نگاهی کلی به رویکرد توسعه سریع نرم‌افزار داشته باشیم.

مطلب پیشنهادی

اگر در کدنویسی تازه کار هستید، اول این زبان برنامه نویسی را یاد بگیرید
سکوی پرتاب تبدیل شدن به یک برنامه نویس حرفه‌ای

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

مطلب پیشنهادی

برنا‌مه‌نویسی را بر فراز ابرها تجربه کنید

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

مطلب پیشنهادی

Cross Cloud چیست و چه مزایایی برای کسب‌وکارها دارد

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

مطلب پیشنهادی

بابا مامان؛ دوست دارم به جای زبان فرانسه برنامه‌نویسی پایتون یاد بگیرم!
استقبال از برنامه‌نویسی در میان کودکان و مدارس

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

شکل 1- چرخه ساخت نرم‌افزارها بر مبنای مدل توسعه سریع نرم‌افزار 

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

مطلب پیشنهادی

تکنیک‌های کاربردی استخراج داده‌ها با لینک (بخش پنجم)

آیا فرآیند توسعه سریع عاری از مشکل است؟ 

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

مطلب پیشنهادی

متدولوژی‌های افزایشی و تکاملی در طراحی نرم‌افزار
مدل‌های توسعه تکرارشونده و افزایشی

مدیریت مشکلات

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

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

مشکلات مرتبط با اعتبارسنجی

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

مشکلات تعمیر و نگهداری
تغییرات پیوسته و ممتد ممکن است هر نرم‌افزاری را به‌سمت خراب شدن ساختارها سوق دهند. یک راهکار مؤثر برای کاهش این مشکلات بازبینی و تغییر کدها (Refactoring) است. جایی که ساختار نرم‌افزار به‌طور مداوم در طول فرآیند توسعه بهبود پیدا می‌کند. 

مطلب پیشنهادی

۹ روش به دست آوردن یک وب‎سایت پرسرعت
هیچ‌چیز برای یک کاربر اینترنت ناامیدکننده‌تر از یک وب‎سایت کند نیست

درنهایت

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

ماهنامه شبکه را از کجا تهیه کنیم؟
ماهنامه شبکه را می‌توانید از کتابخانه‌های عمومی سراسر کشور و نیز از دکه‌های روزنامه‌فروشی تهیه نمائید.

ثبت اشتراک نسخه کاغذی ماهنامه شبکه     
ثبت اشتراک نسخه آنلاین

 

کتاب الکترونیک +Network راهنمای شبکه‌ها

  • برای دانلود تنها کتاب کامل ترجمه فارسی +Network  اینجا  کلیک کنید.

کتاب الکترونیک دوره مقدماتی آموزش پایتون

  • اگر قصد یادگیری برنامه‌نویسی را دارید ولی هیچ پیش‌زمینه‌ای ندارید اینجا کلیک کنید.

ایسوس

نظر شما چیست؟