جهت تماس با کارشناسان فروش کلیک نمایید

موضوع مقاله : فرايند توليد نرم‌افزار چيست؟ :

شرح : برنامه ريزي (امکان سنجي)
از مهمترين کارها در توليد نرم افزار استخراج نيازمنديها يا تحليل نيازمنديهاي آن سيستم است. مشتريان عمومي معمولا تصور مفهومي، انتزاعي و مبهمي از نتيجه نهايي خواسته هايشان دارند و نمي‌دانند به درستي نرم افزار مورد نظرشان چه کاري بايد انجام بدهد. در اين مرحله نيازمنديهاي ناتمام، پيچيده و مبهم، و حتي متضاد توسط مهندسان نرم افزار ماهر و مجرب شناسايي مي‌شوند.در اين برهه تکه نرم افزارهاي آماده و تجربه شده وفعال ممکن است براي پايين آوردن ريسک(ومشکلات) نيازمنديها کمک مي کنند. اول نيازمنديهاي عمومي از کاربران جمع آوري مي شد، و دامنه توسعه و توليد نرم افزار که بايد توليد شود شناسايي و تحليل مي شود، و مستندات بصورت شفاف نوشته مي شود.معمولا به اين مستند، مستنددامنه يا محدوده سيستم اطلاق مي شود.
برخي قابليت ها ممکن است در ابتداي پروژه به خاطر مسائل مالي يا نيازمنديهاي غير شفاف و نامشخص خارج از محدوده پروژه باشند.اگر توليد و توسعه نرم افزار برون سپاري شود(به شرکت هاي خارجي محول شود)، اين مستندات به عنوان مستندات قانوني و حقوقي در نظر گرفته مي شود بنابراين در صورت اتفاق هرگونه دعواي حقوقي يا ابهام در مورد تعهدات داده شده به کاربر، اين مسائل قابل شفاف سازي خواهد بود.
پياده سازي، آزمايش و تست و مستند سازي
پياده سازي آن قسمت از فرآيند توليد نرم افزار به شمار مي رود که مهندسان نرم افزار در دنياي واقعي تمام کد هاي پروژه را مي نويسند و به قول معروف برنامه نويسي مي کنند.
تست و آزمون نرم افزار بخش لاينفک و مهم از فرآيند توليد نرم افزار است . اين قسمت از فرآيند ها کمک مي کند تا مشکلات سيستم بصورت سريع شناسايي شوند.
مستند سازي در تمام مراحل پروژه همچون : طراحي داخلي نرم افزار براي تعيين اهداف سيستم، نگهداري آينده و ارتقاء و بهبودي سيستم هرچند پروژه پايان يافته باشد انجام مي شود.همچنين ممکن است اين مستند سازي شامل نوشتن ساختار تکه هاي برنامه ظاهربرنامه کاربردي داخلي و خارجي هم باشند.اين مطلب خيلي مهم است که همه چيز پروژه مستند سازي شود.
استقرار و نگهداري سيستم
استقرار و تحويل سيستم پس از اينکه تست مناسب و درخوري را گذراند و براي انتشار، فروش يا هرنوع توزيع براي محيط کار نهايي تاييد شد انجام خواهد شد.
آموزش نرم افزار و پشتيباني خيلي مهم است و خيلي از توليد کنندگان و توسعه دهندگان نرم افزارها اهميت آن را درک نمي کنند.مهم نيست که چقدر زمان و برنامه ريزي توسط تيم توليد و توسعه نرم افزار براي ايجاد نرم افزار مصرف کرده اند اگر در آخر کار کاربري در سازمان نباشد تا آن نرم افزار را استفاده کند.مردم معمولا در برابر تغييرات مقاومت نشان مي دهند و از ماجراجويي در محيط ناآشنا اجتناب مي کنند، براي همين در فاز استقرار، اين خيلي مهم است کلاسهاي آموزشي براي کاربران جديد نرم افزار گذاشته شود.
نگهداري و ارتقاء نرم افزاري براي پوشش، مسائل پوشش داده نشده يا نيازمنديهاي جديدممکن است مدت خيلي زيادي حتي بيشتر از زمان اوليه توليد نرم افزار، زمان بگيرد. اين مرحله ممکن است نياز باشد تا کد هاي برنامه نويسي جديدي که در طراحي اصلي برنامه نيز ديده نشده اضافه شود تا مسائل و مشکلات ديده نشده حل شوند يا ممکن است کاربر درخواست عمليات اصلي ديگري بکند و برنامه نويسي هاي جديدي براي برآورده کردن نيازهاي جديد انجام گيرد.اگر هزينه کار فاز نگهداري از ?? درصد هزينه فاز قبلي (پياده سازي)بيشتر باشد، اين احتمال وجود دارد که کيفيت کلي فاز قبلي خيلي ضعيف بوده باشد.در اين صورت مديران پروژه بايد گزينه ي ايجاد مجدد سيستم (يا بخشي از سيستم) را قبل از اينکه هزينه هاي نگهداري غير قابل کنترل شود را مطرح کنند.فرايند توسعه نرم افزار به مجموعه اي از فعاليت هاي مهندسي نرم افزار اطلاق مي شود که با هدف مديريت چرخه عمر يک محصول نرم افزاري، طراحي و برنامه ريزي مي گردد. فرايندهاي توليد نرم افزار با اين هدف به وجود آمده اند که اين مجموعه فعاليت ها را در يک چارچوب مشخص سازمان دهي، استاندارد و مستند کرده و به اين ترتيب سرعت و کيفيت توليد نرم افزار را بهبود بخشند.
اگر چه چرخه عمر يک محصول نرم افزاري شامل مراحل متعددي نظير تعريف، استخراج نيازمندي ها، تحليل، طراحي، پياده سازي، آزمون، نگهداري و ... مي باشد ليکن در يک نگاه کلي مي توان آن در سه بخش عمده برنامه ريزي (امکان سنجي، تعريف، تبيين نيازمندي ها) ، اجرا (طراحي، پياده سازي، آزمون، مستند سازي) و نگهداري تقسيم بندي نمود. فرايندهاي توليد نرم افزار مي بايست براي هرکدام از اين بخش ها و جزئيات آنها روش، قواعد و اصول معيني را ارائه نمايند.مدل هاي فرآيند توليد نرم افزار سنتي (ساخت يافته)

مدل هاي فرآيند توليد نرم افزار سنتي بر دو دسته ي کلي غير تکاملي سنتي و تکاملي سنتي هستند.
مدل هاي غير تکاملي سنتي

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

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

مدل RAD ، شکل پرسرعت مدل آبشاري مي باشد، با اين تفاوت که پروژه به بخش هاي مختلف تقسيم شده و هر بخش، توسط يک تيم، مطابق مدل آبشاري ايجاد مي گردد و در پايان نتيجه ي تيم ها، براي خلق محصول نهايي ترکيب مي گردد. مدل RAD ، سرعت خود را مديون بهره گيري از تکنيک بخش بندي و موازي سازي بخش هاي مختلف پروژه است. چنانچه نيازمندي ها به خوبي شناسايي شده و دامنه پروژه کوچک باشد اين مدل قادر است يک سيستم کاملا عملياتي را در مدت زمان بسيار کوتاه ( مثلا بين 60 تا 90 روز ) توليد نمايد. در اين مدل نرم افزار به قسمت هاي مختلف تقسيم شده و همواره سعي مي شود که نرم افزار مورد نظر سريع تر توليد شود. نکته قابل توجه اين است که نرم افزار مورد نظر بايد خاصيت تفکيک پذيري داشته باشد تا بتوان اين مدل را پياده سازي کرد.
مدل آبشار فرآيند ها را به گونه اي نشان مي دهد، که کجا توليد کنندگان نرم افزار(برنامه نويسان) فازهاي زير را به ترتيب انجام دهند:
    شناسايي نيازمنديها (تحليل نيازها- امکان سنجي)
    طراحي نرم افزار
    ايجاد و يکپارچه سازي
    تست (يا تاييد سيستم)
    استقرار(يا نصب سيستم)
    نگهداري سيستم
در سختگيرانه ترين حالت آبشاري، بعد از اينکه هر فاز کاملا پايان پذيرفت، به مرحله بعدي مي رويم. بازبيني که اجازه ايجاد تغييرات در سيستم را بدهد( که ممکن است شامل تغييرات فرآيندهاي کنترل رسمي باشد) فقط قبل از رفتن به مرحله بعد امکان پذير است .همچنين بازبيني ممکن است جهت اطمينان از پايان قطعي اين فاز (مرحله) بکار گرفته شود . فازي که معيارهاي تکميل آن کامل شده، معمولا با عنوان دروازه اطلاق مي شود که نشان مي دهد پروژه از فاز فعلي به فاز بعدي منتقل شده است .مدل آبشاري از بازبيني و تجديد نظر فازهاي قبلي که کامل شده اند، ممانعت به عمل مي آورد.اين عدم انعطاف پذيري در مدل آبشاري محض، دست مايه انتقاد، پشتيباني کنندگان مدلهاي انعطاف پذير است .

مدل هاي تکاملي سنتي

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

در نمونه سازي تکاملي، يک نمونه اوليه توليد مي شود. درادامه با اعمال اصلاحات بر روي نمونه اوليه، طي چند مرحله سيستم نهايي توليد مي شود. هدف از نمونه سازي تکاملي، تحويل يک سيستم عملياتي به کاربران نهايي و شروع فرايند توليد بر اساس نيازمندي هايي است که بهتر و بيشتر درک شده اند. از مزاياي اين روش ميتوان به درگير بودن مشتري با فرايند توليد سيستم که منجر به شناسايي بهتر نيازمندي ها مي گردد، اشاره نمود. به نمونه سازي تکاملي الگوساي باز نيز گفته مي شود.
مدل افزايشي

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