مناسبترين روش براي توليد نرمافزارهاي كوچك
اشاره :
در حقيقت ساختن يك نرمافزار فقط نوشتن كدهاي برنامه نيست. رويه ساخت نرمافزارها مراحل متعددي را دربرميگيرد؛ از جمع آوري نيازهاي كاربران گرفته تا طراحي، نوشتن كد و در آخر امتحان نرم افزار. روش توليد نرمافزارهاي كوچك با نرمافزارهاي بزرگ متفاوت است و طبعاً رويه توليد نرمافزارهاي كوچك نيز متفاوت خواهد بود. البته اين رويه نبايد سنگين و حجيم باشد، بايد مستقيماً به تمامي فعاليتهاي لازم براي توليد نرمافزاري با كيفيت بالا نظارت داشته باشد و از تمامي رويههاي آسان و متمركز استفاده كند. با استفاده از تكنيكهايي مفيد، از روشهايي مانند XP،Scrum و RUP ميتوان رويهاي مناسب براي توليد نرمافزارهاي كوچك بهوجود آورد. همچنين ميتوان از روشهايPSP و TSP نيز كه براي توليد نرمافزارهاي كوچك مناسب هستند استفاده نمود و بهوسيله اين روشها كيفيت و قابليتهاي نرمافزارها را بالا برد و در حداقل زمان ممكن نرمافزار را تهيه نمود. اين مقاله با بررسي روشهاي جديد و متداول امروزي در توليد نرمافزار، بهترين و مناسبترين روش توليد نرمافزارهاي كوچك را به شما نشان خواهد داد. گفتني است نوشتار حاضر نتايج تحقيقات من در گروه تحقيقاتي مهندسي نرمافزار دانشگاه ساندرلند انگلستان است و آمار و نتيجهگيريهاي آن براساس مصاحبههاي انجام شده با چندين شركت كوچك و بزرگ توليد نرمافزار آن كشور است.
فرايند توليد نرمافزار
پيروي از يك رويه منظم توليد نرمافزار به توليدكنندگان نرمافزار كمك ميكند امور مربوط بهتوليد نرمافزار را منظم و پروژه را در حداقل زمان ممكن و با كارايي بالايي انجام دهند. در حقيقت يك رويه يا Process از مراحل مختلفي تشكيل شده است. اين مراحل فعاليتهاي مربوط به رويه را مشخص مينمايند و تعيين ميكنند كه اين فعاليتها بايد چگونه انجام شوند. پيروي از اين مراحل به اعضاي پروژه دريابند ياري ميرساند كه چه كاري را چه موقع و چگونه انجام دهند همچنين اين كار ميان اعضاي گروه نيز هماهنگي به وجود ميآورد. از آن جايي كه منابع موجود و نيازهاي كاربران هر نرمافزار با ديگري تفاوت دارد، فرايند توليد نرمافزارهاي گوناگون نيز متفاوت است.
انجمن IEEE رويه يا فرايند توليد نرمافزار را اين گونه تعريف ميكند: رويه توليد نرمافزار در واقع شامل مراحلي مانند جمعآوري نيازهاي كاربران ، طراحي سيستم با استفاده از تحليل اين نيازها و نوشتن كدهاي نرمافزار با استفاده از طرح نرمافزار است. همچنين بر اينباور است كه از آن جايي كه كيفيت و بهرهوري نيروي كار با كيفيت روند توليد نرمافزار ارتباط مستقيم دارد، طراحي و مديريت رويه توليد نرمافزار از اهميت شاياني برخوردار است.
براي طراحي يك رويه توليد نرمافزار مي توان از روشهاي متفاوتي استفاده نمود و از آن جايي كه هر پروژه نرمافزاري با ديگر پروژهها متفاوت است، ميتوان گفت كه رويه توليد آن پروژه نيز با ديگر پروژهها تفاوت دارد. در واقع ميتوان گفت: انتخاب اين روشها رابطه مستقيمي با اندازه گروه در پروژه دارد و نرمافزارهاي بزرگ و كوچك نياز به رويههاي توليد متفاوت دارند.
در ادامه اين مقاله روشهاي توليد نرمافزارها، به خصوص نرمافزارهاي نسبتاً كوچك كه از گروههاي توليد نرمافزاري كوچكتري استفاده ميكنند، بررسي ميشوند و مورد ارزيابي قرار ميگيرند.
روش SCRUM
در روشهاي قديمي و معمول ساخت نرمافزار، طراحان نرمافزار معمولاً ابتدا فرض ميكنند كه تمامي نيازهاي كاربران سيستم را درك كردهاند. اما هميشه نيازهاي كاربران سيستم در ابتدا مشخص نيست و كاربران ممكن است در همان مراحل ابتدايي، نيازهاي خود را تغيير دهند و اين چيزي است كه برنامهنويسان و طراحان سيستم هميشه از آن شكايت ميكنند و به دنبال راهحلي براي رفع اين موضوع ميگردند. بهعنوان مثال مدل قديمي آبشاري (waterfall) را در نظر بگيريد.
اين مدل حاوي مشكلات فراواني است كه به صورت مستقيم به غيرقابل انعطافبودن اين مدل ارتباط دارد. اين مدل مانند يك جاده يك طرفه ميباشد كه وقتي اتومبيل در آن حركت ميكند، نميتواند مسير خود را تغيير دهد و در جهت ديگري حركت كند. در ابتداي كار كاربر سيستم ممكن است نظراتي در مورد سيستم داشته باشد ولي نميتواند ببيند كه سيستم چگونه كار خواهد كرد و در نتيجه ممكن است وقتي كه سيستم آماده شد، از ساختار و كارايي آن راضي نباشد و تقاضاي تغيير در سيستم را بنمايد. در نتيجه اگر بتوانيم كاربر را از ابتدا در جريان ساخت نرمافزار قرار دهيم، ممكن است كه اين مشكل حل شود؛ زيرا ميتواند نظرات خود را در طول مدت ساخت و قبل از اتمام كار اعلام كنند و در نتيجه از نرمافزار تهيه شده راضي باشد.
امروزه يكي از روشهاي توليد نرمافزار كه به خصوص براي پروژههاي نرمافزاري كوچك مورد استفاده قرار ميگيرد و توسط بسياري از اساتيد و صاحبنظران مورد تأييد قرار گرفته است، روش SCRUM است. با استفاده از اين روش كه روشي به اصطلاح (iterative تكراري يا چرخشي) ميباشد، ميتوان نرمافزارهاي كوچك را با كيفيت بالا تهيه نمود.