آشنایی با رویه ، فرایند و برخی از روش های تولید نرم افزار
رویه تولید نرم افزار
ساختن يك نرم افزار فقط نوشتن كدهاي برنامه نيست. رويه ساخت نرم افزارها مراحل متعددي را دربرمي گيرد؛ از جمع آوري نيازهاي كاربران گرفته تا طراحي، نوشتن كد و در آخر امتحان نرم افزار. روش توليد نرم افزارهاي كوچك با نرم افزارهاي بزرگ متفاوت است و طبعاً رويه توليد نرم افزارهاي كوچك نيز متفاوت خواهد بود. البته اين رويه نبايد سنگين و حجيم باشد، بايد مستقيماً به تمامي فعاليت هاي لازم براي توليد نرم افزاري با كيفيت بالا نظارت داشته باشد و از تمامي رويه هاي آسان و متمركز استفاده كند. با استفاده از تكنيك هايي مفيد، از روش هايي مانند XP،Scrum و RUP مي توان رويه اي مناسب براي توليد نرم افزارهاي كوچك به وجود آورد. همچنين مي توان از روش هايPSP و TSP نيز كه براي توليد نرم افزارهاي كوچك مناسب هستند استفاده نمود و به وسيله اين روش ها كيفيت و قابليت هاي نرم افزارها را بالا برد و در حداقل زمان ممكن نرم افزار را تهيه نمود.
فرایند تولید نرم افزار
پيروي از يك رويه منظم توليد نرم افزار به توليدكنندگان نرم افزار كمك مي كند امور مربوط به توليد نرم افزار را منظم و پروژه را در حداقل زمان ممكن و با كارايي بالايي انجام دهند. در حقيقت يك رويه يا Process از مراحل مختلفي تشكيل شده است. اين مراحل فعاليت هاي مربوط به رويه را مشخص مي نمايند و تعيين مي كنند كه اين فعاليت ها بايد چگونه انجام شوند. پيروي از اين مراحل به اعضاي پروژه دريابند ياري مي رساند كه چه كاري را چه موقع و چگونه انجام دهند همچنين اين كار ميان اعضاي گروه نيز هماهنگي به وجود ميآورد. از آن جايي كه منابع موجود و نيازهاي كاربران هر نرم افزار با ديگري تفاوت دارد، فرايند توليد نرم افزارهاي گوناگون نيز متفاوت است. در ادامه ، اين روش هاي توليد نرم افزارها، به خصوص نرم افزارهاي نسبتاً كوچك كه از گروه هاي توليد نرم افزاري كوچك تري استفاده مي كنند، بررسي مي شوند و مورد ارزيابي قرار مي گيرند. روش SCRUM امروزه يكي از روش هاي توليد نرم افزار كه به خصوص براي پروژه هاي نرم افزاري كوچك مورد استفاده قرار مي گيرد و توسط بسياري از اساتيد و صاحب نظران مورد تأييد قرار گرفته است، روش SCRUM است. با استفاده از اين روش كه روشي به اصطلاح (iterative تكراري يا چرخشي) مي باشد، مي توان نرم افزارهاي كوچك را با كيفيت بالا تهيه نمود. در اين روش كه به روش هوشمند يا Agile نيز مشهور است، مديريت قوي توليد نرم افزار وجود دارد كه به برنامه نويسان اجازه مي دهد با استفاده از آن در پروژه ها به سرعت نرم افزار موردنظر را تهيه نمايند. اسم Scrum در حقيقت از بازي راگبي گرفته شده است (در بازي راگبي Scrum تيمي متشكل از هشت نفر است كه با همكاري بسيار نزديك با يكديگر بازي مي كنن)در اين روش هر عضو از گروه موظف به درك وظيفه خود در پروژه است و بايد يك هدف مشخص را در تمامي مراحل عملياتي يا فازهاي اجرايي دنبال كند. لازم به ذكر است كه در Scrum هر فاز عملياتي سيستم به Sprint مشهور است. روش Scrum همانند پروسه هاي داراي مرحله برنامه ريزي مقدماتي يا Initial Planning است. در اين فاز اعضاي تيم بايد يك نقشه مقدماتي و يك معماري سيستم قابل تغيير به وجود آورند. بعد از اين فاز يك سري از Sprintها به صورت مرتب و جزء جزء نرم افزار مورد نظر را به وجود مي آورند. انجام دادن هر Sprint ممكن است از يك تا چهار هفته به طول بينجامد و مجموع اين Sprintها نرم افزار كاملي را به وجود ميآورند. اما چه تفاوتي بين Scrum و ديگر روش هاي توليد نرم افزار وجود دارد؟ در جواب اين سؤال بايد يادآورشد كه در Scrum هر مرحله يا Sprint قسمتي از نرم افزار را آماده مي كند. در اين روش مي توان پيشرفت در توليد نرم افزار را در هر مرحله به خوبي احساس نمود. علاوه بر اين، گروه مي تواند پس از اتمام هر Sprint تصميم گيري كند كه آيا مي خواهد به كار روي پروژه ادامه دهد يا انجام پروژه مذكور غيرممكن است. روش Scrum وقتي مي تواند بيشتر مفيد باشد كه در ابتداي پروژه نيازهاي كاربران به صورت دقيق مشخص نباشد و يك گروه كوچك مسئول پروژه نرم افزاري باشد. روش XP اشتباه نكنيد! منظور از روش اكس پي، ويندوزاكس پي نيست. اكس پي مخفف Extreme Programming يا برنامه نويسي سريع مي باشد كه مانند Scrum روشي هوشمند در توليد نرم افزار است. در اكس پي دو برنامه نويس كار را انجام مي دهند و قبل از اتمام برنامه آن را چندين بار امتحان مي كنند. اكس پي در حقيقت روشي از توليد نرم افزار است كه براساس آساني، ارتباط، واكنش و تصميم گيري سريع استوار است. شكل 2 اصول روش اكس پي را نشان مي دهد. در روش اكس پي اعضاي گروه (كه كاربر سيستم نيز عضوي از آن است) در ابتدا جلسه اي تشكيل مي دهند و اولويت هاي پروژه را مشخص مي كنند. اين گروه ممكن است از چند برنامه نويس، امتحان كننده نرم افزار يا Tester و تحليلگر سيستم تشكيل شود كه با هم از ابتدا تا انتهاي پروژه همكاري مي كنند. معمولاً در اكس پي برنامه نويسان در گروه هاي دوتايي قرار مي گيرند و وظيفه تكميل قسمتي از برنامه را برعهده مي گيرند و هر دوي اين برنامه نويسان در مورد هر كدام از نيازهاي كاربران با هم بحث مي كنند و قدم به قدم كلاس هاي برنامه را آماده مي كنند. بدين ترتيب كه در ابتدا كلاسي را به صورت ابتدايي و بدون هيچ طراحي اوليه به وجود مي آورند و اين كلاس را امتحان مي كنند. در صورتي كه اين كلاس فاقد هر گونه اشكال باشد، كد اصلي برنامه را بر آن اساس مي نويسند. وقتي يكي از برنامه نويسان مشغول نوشتن قسمتي از برنامه است، برنامه نويس ديگر وظيفه كنترل صحت اين كدها را عهده دار است و در صورت مشاهده هر گونه اشكال، نويسنده كد را مطلع مي كند. مانند Scrum، در اكس پي نيز اعضاي گروه مي توانند روند تكميلي توليد نرم افزار را مشاهده كنند و در جريان كار قرار گيرند.اكس پي روش مناسبي براي مديريت پروژه هاي كوچك مي باشد كه از دو تا ده برنامه نويس تشكيل شده است. اگر چه اصولاً اكس پي هيچ رويه خاص و مراحل پيوسته اي را مشخص نكرده اما مي توان گفت كه اكس پي داري چهار مرحله اصلي مي باشد: الف: مرحله زمانبندي پروژه: در اين مرحله اعضاي گروه با توجه به اندازه نرم افزار و كارايي آن برنامه زمانبندي را با هم تنظيم مي كنند. ب: طراحي ابتدايي
ج: نوشتن كدهاي برنامه
د: امتحان كردن كدهاي نوشته شده از جمله مزاياي اكس پي مي توان به اين نكته اشاره نمود كه از آن جايي كه يك برنامه نويس به صورت مستقيم كدهاي برنامه را كنترل مي كند، مي توان گفت كه كيفيت نرم افزار توليدي بالا مي رود. همچنين مي توان گفت از آن جايي كه دو برنامه نويس با هم كار مي كنند، آموزش كمتري نياز است و در نتيجه هزينه توليد نرم افزار پايين خواهد آمد. اما اين روش مشكلات خاص خود را نيز دارد. مثلاً تصوركنيد اگر در يك گروه، يك برنامه نويس تمايلي براي كار با برنامه نويس ديگري را نداشته باشد يا در يك روز يكي از دو عضو گروه غايب باشد يا ... در نتيجه چون نمي توان با يك برنامه نويس به ادامه كار پرداخت، اتمام پروژه با تأخير مواجه خواهد شد. طبق نتايج تحقيقات به عمل آمده، وقتي يك برنامه نويس در كدهاي برنامه به دنبال اشكال مي گردد، حداكثر مي تواند ده تا پانزده درصد از اشكالات برنامه را پيدا كند. اما وقتي در روشي مثل اكس پي دو برنامه نويس با هم كار مي كنند و يكي از اين برنامه نويسان كدها را كنترل مي كند، بيست تا چهل درصد از اشكالات ساختاري برنامه خود را نشان مي دهد. اما با استفاده از روش هاي PSP و TSP كه در ادامه اين توضيح داده مي شوند حتي مي توان تا هشتاددرصد اشكالات برنامه (كه رقم بسيار خوبي است) را قبل نهايي شدن برنامه شناسايي و رفع كرد. روش(Rational Unified Process) (RUP) در اين بخش يكي از معروف ترين رويه هاي توليد نرم افزار كه توسط شركت آي بي ام طراحي گرديده است را معرفي مي كنيم. اين روش با نام Rational Unified Process) RUP) در بسياري از پروژه هاي نرم افزاري به كار گرفته مي شود. در حقيقت هدف اصلي RUP مطمئن شدن از اين موضوع مهم است كه آيا نرم افزار توليدشده نيازهاي كاربرانش را به صورت كامل، با كيفيت بالا ، در زمان معين و با بودجه مشخص برآورده كرده است يا خير. مطابق تحقيقات انجام شده، از آن جايي كه RUP به تمامي اعضاي تيم، اطلاعاتي مشترك مي دهد و تمامي اعضاي گروه با يك زبان مشترك با هم مرتبط هستند، بازده كاري گروه را بالا مي برد.
RUP داراي سه جزء اصلي است. جزء اول از مجموع راه حل هاي خوب كه در رويه مي تواند مورد استفاده قرار گيرد تشكيل شده است. جزء دوم همان مراحل تهيه نرم افزار است و جزء آخر قسمت هاي تشكيل دهنده اين رويه مي باشد.
RUP شش راه حل خوب كه مي تواند در مراحل مختلف اين رويه به ما كمك كند را معرفي كرده است. از آن جمله:
1- استفاده از USE CASEها كه مي توانند در جمعآوري نيازهاي كاربران مفيد باشند.
2- استفاده از معماري نرم افزار قابل تغيير ( component reuse)
3- استفاده از روش هاي تكميلي و Iterative براي كنترل بهتر و آسان پروژه نرم افزاري
4- استفاده از نمودارهاي UML
5- كنترل تغييرات در نرم افزار
6- كنترل كيفيت نرم افزار با توجه به درخواست هاي اوليه كاربران
چرخه توليد نرم افزار به چهار قسمت اصلي تقسيم شده است: الف: Inception phase يا مرحله آغازين: در اين مرحله اهداف پروژه مشخص شده و درخواست هاي اوليه كاربران تعريف مي شود. از خروجي هاي اين مرحله مي توان به مدل اوليه Use Case، آزمون ريسك در پروژه و برنامه زمانبندي پروژه اشاره كرد. ب: Elaboration phase يا مرحله مقدماتي: در اين مرحله نيازهاي كاربران تحليل و بررسي شده و راه حل كلي طراحي سيستم ترسيم مي شود. از خروجي هاي اين مرحله مي توان از مدل كامل شده Use Case، فهرست نيازهاي كامل كاربران و طرح كلي سيستم نام برد.
ج: Construction phase: يا مرحله ساخت و توسعه:
در اين مرحله نرم افزار طراحي شده ساخته مي شود و به اصطلاح، كد برنامه نوشته شده و قسمت هاي مرتبط به هم ارتباط داده مي شوند. از خروجي اين مرحله مي توان از نرم افزار، راهنماي استفاده از نرم افزار و مستندات سيستم نام برد. د: Transition phase يا مرحله تغييرات:
در اين مرحله اگر نرم افزار به وجود آمده در مرحله ساخت دچار مشكل شود، مشكل رفع خواهد شد
. همان طور كه در اين قسمت ذكر شد، روش RUP روشي انعطاف پذير، قابل تغيير و پيشرفته است كه مي تواند در صورت استفاده صحيح، باعث افزايش كارايي و كيفيت نرم افزار توليدي گردد. اما آيا RUP مي تواند رويه خوبي براي توليد نرم افزارهاي كوچك باشد؟ در جواب بايد گفت كه RUP را طوري طراحي كرده اند كه بتواند براي انواع پروژه هاي نرم افزاري در هر اندازه مفيد باشد و از آن جايي كه از ابزارهاي خوبي مثل UML نيز استفاده مي كند، UML) در گروه هاي كوچك كه نرم افزارهاي كوچك طراحي مي كنند ابزار مدلي خوبي است) مي تواند باعث همكاري و هماهنگي بيشتر گروه گردد. اما همان طور كه در ادامه اين بحث خواهيد ديد، اگر بتوانيم رويه هاي ساده تر را با يكديگر ادغام كنيم، شايد بتوانيم راه حلي با كارايي بالاتري داشته باشيم.
روش هاي PSP و TSP
PSP يا Personal Software Process در حقيقت روش توليد نرم افزار نيست بلكه روشي است نوين كه با ملزم نمودن اعضاي گروه پروژه هاي نرم افزاري به رعايت اصولي مشخص و استفاده از فرم ها و تكاليفي مشخص به آن ها كمك مي كند كارايي و بهره وري كاري خود را بالا ببرند. اين روش همچنين حاوي تكنيك هاي خوبي براي كنترل، ا ندازه گيري و تشخيص اشكالات مي باشد كه مي تواند به شخص (مثلاً برنامه نويس) كمك كند تا مثلاً با اندازه گيري نرم افزار، يادداشت ميزان فعاليت روزانه و ساعات هدر رفته، و اشكالات به وجود آمده، مشكلات را حل كند و در نتيجه بهره وري خود را بالاتر ببرد. TSP يا Team Software Process مانند PSP است، ولي براي يك تيم طراحي شده و با طرح روش هاي منظم جهت كنترل و جمع آوري اطلاعات روزانه به اعضاي تيم كمك مي كند تا كارايي خود را بالا ببرند.
نتيجه گيري
براي دستيابي به موفقيت در پروژه هاي نرم افزاري، اعضاي گروه بايد از يك رويه يا روش مشخص پيروي كنند. اما براي پروژه هاي كوچك (براي توليد نرم افزارهاي كوچك) اين رويه بايد ساده و آسان باشد. اضافه براين، براي دستيابي به موفقيت در پروژه ها تنها داشتن يك رويه آسان و كارا كافي نيست بلكه مديران پروژه هاي نرم افزاري بايد به اين نكته توجه كنند كه اعضاي گروه در موفقيت پروژه ها از اهميت شاياني برخوردار هستند و بايد در انتخاب اين افراد حداكثر دقت را مبذول نمود. در ضمن موقع انتخاب يك رويه مناسب بايد اندازه نرم افزار را معين نمود و براساس نيازهاي كاربران پروسه توليدي را طراحي كرد. براي تعيين رويه اي مناسب در توليد نرم افزارهاي كوچك بايد دقت داشت كه اين رويه بايد بسيار ساده باشد تا به اعضاي تيم كمك كند به راحتي مراحل تهيه نرم افزار را ادامه دهند.
این وبلاگ جهت متمرکز کردن فعالیت ها و تحقیقات دانشجویان مهندسی نرم افزار دانشگاه پیام نور دماوند ایجاد گردیده است. مطالب این وبلاگ در بخش های مختلف به تفکیک درس مهندسی نرم افزار 1 و 2 مربوط به ترم های نیمه اول و دوم هر سال تحصیلی و همچنین سایر موضوعات مرتبط قرار می گیرند.برای مشاهده آخرین مطالب مربوط به هر موضوع بر روی موضوع مورد نظر کلیک نمایید. >>>>>>>>توجه :به دلیل شروع تازه وبلاگ و مشخص نشدن کامل ساختار و نحوه دسته بندی پست ها ، برای مشاهده مطالب مربوط به موضوع خاص از طریق آرشیو موضوعی مطالب را مشاهده نمایید.<<<<<<<<<<<