سبک، روان و کاربردی
فرایند نرم‌افزار شخصی؛ راهکاری قدرتمند پیش‌روی برنامه‌نویسان
فرایند نرم‌افزار شخصی (PSP) سرنام Personal Software Process که با نام‌های مختلفی همچون چرخه حیات نرم‌افزار، فرایند نرم‌افزاری، فرایند توسعه نرم‌افزار یا روش توسعه سیستم نیز از آن یاد می‌شود، یک فرایند ساخت‌یافته توسعه نرم‌افزار است که با اتکا بر راهکاری منظم و داده‌محور، در تلاش است به مهندسان نرم‌افزار کمک کند درک بهتری از فرایندها به دست آورند و عملکرد کاری خود را بهبود بخشند.

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

کیفیت در هر صنعتی حرف اول را می‌زند 
در اواخر دهه چهل و اوایل دهه پنجاه میلادی، صنایع با رویکرد جدید‌تری مبحث کیفیت را دنبال کردند. این رویکرد منجر به شکل‌گیری واحدهای کاملاً تخصصی در زمینه سنجش کیفیت محصولات در صنایع مختلف شد. دپارتمان‌های ارزیابی کیفیت، مسئولیت شناسایی و رفع مشکلات محصولات را بر عهده گرفتند. با وجود این، تأثیرگذاری ملموس این واحدها بعد از دهه 80 میلادی کارکرد عینی خود را نشان دادند؛ زمانی‌که افراد برجسته صنعت اعلام کردند که باید راهکارهای ویژه‌ای برای بهبود شغل مردم و محصولاتی که استفاده می‌کنند، اندیشیده شود. 

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

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

گام مهم دیگری که در زمینه بهبود کیفیت نرم‌افزارها برداشته شد، هم‌زمان با معرفی مدل تکامل قابلیت CMM، سرنام Capability Maturity Model بود. تمرکز بر سیستم مدیریتی، پشتیبانی و همکاری که مهندسان توسعه همراه با این مدل ارائه کردند، تأثیرگذاری محسوسی بر عملکرد سازمان‌های نرم‌افزاری داشت. مدل تکامل قابلیت، یک روش توسعه و تصحیح فرایند توسعه نرم‌افزار است. مدل تکامل قابلیت در پنج سطح و برخلاف ایزو 9001 که حداقل سطح کیفیت قابل قبول برای فرایند نرم‌افزار را پیشنهاد می‌کرد، چارچوبی را برای بهبود پیوسته فرایندها ارائه کرد. (شکل 1) سرانجام گام نهایی در جهت بهبود کیفیت نرم‌افزارها با معرفی فرایند نرم‌افزار شخصی (PSP) سرنام Personal Software Process به اوج تکامل رسید. فرایند نرم‌افزار شخصی به‌منظور تکامل بهبود کیفیت نرم‌افزارها، سعی کرد این نکته را برای مردم روشن کند که چگونه می‌توانند کارهای مهندسی خود را به بهترین شکل ممکن به اتمام برسانند. نکته‌ مستتر در این فرایند بر تولید نرم‌افزارهای با کیفیت تأکید دارد و به مهندسان شاغل در یک سازمان اعلام می‌کند که هیچ‌چیز مهم‌تر از کیفیت نیست. 


شکل 1: پنج سطح مورد استفاده در مدل تکامل قابلیت

فرایند نرم‌افزار شخصی چگونه شکل گرفت؟ 
پس از اینکه مدل تکامل قابلیت در سال 1987 ارائه شد، هافمری که از او به عنوان پدر کیفیت نرم‌افزار یاد می‌شود، تصمیم گرفت اصول این مدل را برای نوشتن برنامه‌های کوچک به کار گیرد. در آن مقطع، طیف گسترده‌ای از مردم دوست داشتند بدانند چگونه می‌توانند از اصول مدل تکامل قابلیت در سازمان‌های کوچک یا برای انجام کارهای گروهی که مقیاس کوچک‌تری دارند، استفاده کنند؛ به دلیل اینکه مدل تکامل قابلیت در اصل برای گروه‌های بزرگ آماده شده بود و راهنمایی‌های آن به توجه زیادی نیاز داشت. 
هافمری مصمم شد اصول به‌کاررفته در مدل تکامل قابلیت را برای توسعه برنامه‌هایی در مقیاس کوچک بررسی کرده و از آن‌ها استفاده کند. او این کار را به این دلیل انجام داد تا اطمینان حاصل کند که این روش برای استفاده مهندسان نرم‌افزار مناسب است و همچنین این امکان وجود دارد تا آن‌ها را برای به کارگیری چنین فرایندی قانع کند. در طراحی برنامه‌های کوچک، هافمری همه تکنیک‌های CMM را تا سطح پنج استفاده کرد. در بازه زمانی سه ساله، او موفق شد در مجموع 62 برنامه را که بالغ بر 25 هزار خط کد می‌شدند، بر مبنای این فرایند بنویسد. هامفری نتایج به‌دست‌آمده در این سه سال را در قالب یک کتاب درسی آماده کرد و به چند تن از همکاران خود که در گروه برنامه‌ریزی درسی به فعالیت اشتغال داشتند، نشان داد. آن‌ها تصمیم گرفتند دستاوردهای هامفری را در قالب دوره‌های درسی «فرایند نرم‌افزار شخصی» در دانشگاه تدریس کنند. 

تمرکز بر سیستم مدیریتی، پشتیبانی و همکاری که مهندسان توسعه همراه با این مدل ارائه کردند، تأثیرگذاری محسوسی بر عملکرد سازمان‌های نرم‌افزاری داشت.

در سپتامبر 1983، هاوی داو، اولین دوره درسی فرایند نرم‌افزار شخصی را به چهار دانشجوی تحصیلات تکمیلی در دانشگاه ماساچوست تدریس کرد. هامفری نیز در طول ترم زمستان 1993 تا 1994 این فرایند را در دانشگاه کارنگی ملون تدریس کرد. بر مبنای تجاربی که در طول دوره‌های تدریس به دست آمد، هافمری کتاب فرایند نرم‌افزار شخصی را بازبینی و نسخه نهایی آن را در سال 1994 چاپ کرد. هامفری با همکاری مؤسسه SEI کار بر توسعه این فرایند را ادامه داد و اصول یکسانی را برای گروه‌های مهندسی مدون کرد. حاصل این تحقیقات مشترک باعث ظهور فرایند توسعه تیمی TSP، سرنام Team Software Process شد. 

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

فرایند نرم‌افزار شخصی برای دستیابی به یک رویکرد بهبود تکاملی در تلاش است.

اگر مهندسان قصد دارند محصول باکیفیتی را به شکل مستمر تولید کنند، از همان ابتدای کار باید تمرکز ویژه‌ای روی کیفیت داشته باشند. مهندسان باید با اتمام هر وظیفه، آن را تحلیل کرده و از نتایج به‌دست‌آمده برای بهبود فرایندهای دیگر استفاده کنند. هافمری در تعریف چشم‌انداز فرایند نرم‌افزار شخصی گفته است: «این فرایند در نظر دارد در چهار بخش بهبود ارزیابی‌ها و برنامه‌ریزی برای افزایش سطح مهارت‌ها، مقید کردن برنامه‌نویسان به تعهداتشان، مدیریت کیفیت محصولاتی که تولید می‌کنند و کاهش تعداد نقص‌های داده‌ای موجود در برنامه‌های کاربردی، به مهندسان نرم‌افزار کمک کند و سطح درک عمومی آن‌ها را در این زمینه افزایش دهد.» 
این فرایند در دنیای واقعی به‌خوبی تأثیرگذاری خود را نشان داده است. موکش جین، از مدیران ارشد نرم‌افزاری مایکروسافت که از سال 2004 تا 2006 در هند مشغول به کار بود، در آن دوران موفق شد به بهترین شکل ممکن از فرایند نرم‌افزار شخصی/ فرایند توسعه تیمی، فرایند توسعه چابک و... استفاده کند. او که مسئولیت هدایت پروژه‌های نرم‌افزاری مایکروسافت در هند را بر عهده داشت، توانست با استفاده از این فرایند در مدت شش ماه نزدیک به دو سوم پروژه‌ها را بدون هیچ‌گونه باگ نرم‌افزاری به پایان برساند و با توجه به الگوهای مدیریتی ارائه‌شده توسط این فرایند نزدیک به 94 درصد پروژه‌های نرم‌افزاری را در زمان تعیین‌شده به مشتریان تجاری تحویل دهد.

شالوده فرایند نرم‌افزار شخصی
فرایند نرم‌افزار شخصی برای دستیابی به یک رویکرد بهبود تکاملی در تلاش است. این فرایند سعی می‌کند به مهندسان نرم‌افزار نشان دهد که چگونه باید فرایند ادغام‌سازی نرم‌افزار شخصی را با فرایندهای کاری خود از همان ابتدا و در قالب سطح اول (PSP0) آغاز کنند و در نهایت کار خود را تا سطح نهایی PSP 2.1 به اتمام برساند. هر سطح مشتمل بر جزئیات، اسکریپت‌ها، چک‌لیست‌ها و الگوهای خاص خود است. مهندسان از طریق دنبال کردن این مراحل و دستورالعمل‌هایی که در این زمینه ارائه می‌شود، می‌توانند فرایند تکمیل پروژه نرم‌افزاری خود را بهبود بخشند. هامفری همواره به دانشجویان خود توصیه می‌کرد اسکریپت‌ها و الگوهای سفارشی خودشان را طراحی کرده و از آن‌ها استفاده کنند. این رویکرد به آن‌ها کمک می‌کند به درجه‌ای از مهارت برسند که بتوانند نقاط قوت و ضعف کار خود را به‌درستی درک کنند. ساختار فرایند نرم‌افزار شخصی را در شکل 2 مشاهده می‌کنید.

شکل 2: جریان فرایندها در روش نرم‌افزار شخص

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


شکل 3: خلاصه طرح پروژه

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


شکل 4: عناصر فرایند نرم‌افزار شخصی

اسکریپت‌ها گام‌هایی را که در هر بخش از یک فرایند وجود دارند، توصیف می‌کنند. گزارش‌ها و فرم‌ها الگویی را برای ضبط و ذخیره‌سازی داده‌ها ارائه می‌کنند و استانداردها دستورالعملی‌ را در اختیار مهندسان قرار می‌دهند که بر مبنای این دستورالعمل کارهای خود را انجام دهند. در مجموع، اسکریپت‌ها نقش یک چک‌لیست را دارند و به طور مداوم سطح آگاهی و درک مهندسان نرم‌افزار را از فرایندی که در حال انجام آن هستند، افزایش می‌دهند.
 
PSP0، PSP0.1 (منظم کردن فرایندها و اندازه‌گیری)
PSP0 متشکل از سه فاز برنامه‌ریزی، توسعه و بررسی بعد از کار است. یک شاخص بر مبنای سنجش فرایند جاری و بر مبنای فاکتورهایی همچون زمان سپری‌شده برای برنامه‌نویسی، نقص‌های حذف‌شده و اندازه برنامه ایجاد می‌شود. در پایان این فاز مهندسان باید اطمینان حاصل کنند همه داده‌های پروژه به‌درستی ثبت و تحلیل شده باشند. فاز PSP 0.1 روند پیشرفت کار را با اضافه کردن استاندارد کدنویسی، ارزیابی اندازه پروژه و توسعه «طرح بهبود فرایند نرم‌افزاری» به جلو هدایت می‌کند. در این مرحله مهندس ایده‌هایی را که باعث بهبود فرایند کاری وی می‌شود، یادداشت می‌کند.
 
PSP1، PSP1.1 (برآوردها و برنامه‌ریزی‌ها)
مهندس نرم‌افزار بر مبنای داده‌های جمع‌آوری‌شده در فازهای PSP0 و PSP 0.1 که داده‌های پایه‌ای هستند، در فاز PSP1 تخمین می‌زند که برنامه جدید تا چه اندازه رشد خواهد کرد و بر مبنای این برآورد یک گزارش آزمایشی آماده می‌کند. داده‌هایی که از فاز قبلی جمع‌آوری شده‌اند، برای تخمین زمان کلی استفاده می‌شوند. در فاز PSP 1.1 هر پروژه جدید زمان واقعی سپری‌شده خاص خود را به ثبت خواهد رساند. این اطلاعات برای انجام‌ کارها، زمان‌بندی برنامه‌ها و تخمین‌ها استفاده می‌شود.
 
PSP2، PSP2.1 (مدیریت کیفیت و طراحی)
PSP2 دو فاز بازبینی طراحی و بازبینی کدها را اضافه می‌کند. فاز PSP2 بر ممانعت از بروز نقص‌ها و حذف نقص‌ها متمرکز است. در این فاز مهندسان یاد می‌گیرند به ارزیابی و بهبود روند کاری خود بپردازند. برای این منظور آن‌ها مدت‌زمانی را که برای هر وظیفه سپری شده، تعداد باگ‌هایی که به وجود آورده است و باگ‌هایی که در هر فاز توسعه آن‌ها را حذف کرده‌اند، محاسبه می‌کنند. مهندسان چک‌لیست‌های خود را ایجاد کرده و از آن‌ها برای طراحی و بازبینی کدها استفاده می‌کنند. فاز PSP 2.1 به‌منظور ارائه مشخصات طراحی و تحلیل‌های تکنیکی استفاده می‌شود. 

داده‌های باارزش‌تر
فرایند نرم‌افزار شخصی برای بهبود عملکرد فرایندها و ارائه تحلیل‌ها از داده‌های تاریخی استفاده می‌کند. این داده‌ها با استفاده از چهار مؤلفه اسکریپت‌ها، سنجه‌ها، استانداردها و فرم‌ها جمع‌آوری می‌شوند. اسکریپت‌های مورد استفاده در فرایند نرم‌افزار شخصی می‌توانند دستورالعمل‌های سطح کارشناسی را برای مراحل مختلف فرایند ارائه ‌کنند. دستورالعمل‌هایی که به عنوان یک مقیاس اندازه‌گیری استفاده می‌شوند. روش نرم‌افزار شخصی متشکل از چهار مقیاس اندازه‌گیری است:
اندازه: به‌منظور اندازه‌گیری بخشی از یک محصول استفاده می‌شود. (تعداد خطوط کدها (LOC))
تلاش‌ها: زمان مورد نیاز برای کامل کردن یک وظیفه که معمولاً بر مبنای دقیقه محاسبه می‌شود.
کیفیت: تعداد نقص‌ها در یک محصول 
زما‌ن‌بندی: محاسبه پیشرفت پروژه 
مهندسان برای اینکه بتوانند داده‌ها را در فرم‌ها وارد کنند، از یک ابزار ویژه فرایند نرم‌افزار شخصی استفاده می‌کنند. Process Dashboard نمونه‌ای از این ابزارهای متن‌باز است.

برنامه‌ریزی و پیگیری 
پی‌اس‌پی به مهندسان نرم‌افزار این امکان را می‌دهد تا برآوردی از اندازه نرم‌افزاری به دست آورند که به طور شخصی آن ‌را تولید خواهند کرد. برای دقیق بودن این برآورد، مهندسان به اطلاعاتی درباره نقص‌ها، اندازه داده‌ها و زمان صرف‌شده نیاز دارند. این داده‌ها به‌منظور برنامه‌ریزی و دنبال کردن کارها در پروژه‌های پی‌اس‌پی استفاده می‌شوند. پی‌اس‌پی از تکنیک پروب، سرنام Proxy Based Estimating به‌منظور بهبود مهارت طراحان در برآوردها به طوری که برنامه‌ریزی دقیق‌تری انجام دهند، استفاده می‌کند. پروب بر مبنای این نگرش عمل می‌کند که اگر مهندسی در حال ساخت مؤلفه‌ای است که در گذشته مشابه آن را طراحی کرده، در نتیجه همان هزینه‌ای را که در گذشته داشته است، باید در محاسبه خود اعمال کند. در روش پروب مهندسان از یک بانک اطلاعاتی برای دنبال کردن اندازه و تخمین همه کارهایی که انجام می‌دهند، استفاده می‌کنند. برای دنبال کردن وضعیت یک پروژه، فرایند نرم‌افزار شخصی از روش ارزش کسب‌شده (Earned Value) استفاده می‌کند. فرایند نرم‌افزار شخصی همچنین از تکنیک‌های آماری، همچون همبستگی، رگرسیون خطی و انحراف استاندارد برای ترجمه و تبدیل داده‌ها به اطلاعات مفید به‌منظور بهبود تخمین‌ها، برنامه‌ریزی و کیفیت استفاده می‌کند. شکل 5 فرایند برنامه‌ریزی یک پروژه را بر مبنای این روش نشان می‌دهد.


شکل 5: فرایند برنامه‌ریزی یک پروژه


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

آخرین نسخه ماهنامه شبکه را دریافت کنید
برای دانلود ماهنامه شبکه 222 با پرونده ویژه «ترفندهای سیستم‌عامل‌ها» اینجا کلیک کنید.

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

برچسب: 

مطالب پربازدید روز

پشتیبانی توسط ایران دروپال