چگونه یک پروژه نرم افزاری را با موفقیت انجام دهیم ؟!

چگونه یک پروژه نرم افزاری را با موفقیت انجام دهیم ؟!
چگونه یک پروژه نرم افزاری را با موفقیت انجام دهیم ؟!


 





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

پروژه را قبول کنیم یا خیر !
 

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

امکان سنجی کنید
 

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

حتماً قرارداد ببندید
 

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

پروژه را تحلیل کنید
 

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

فاز طراحی را جدی بگیرید
 

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

پیاده سازی
 

اگر فازهای قبلی را به درستی انجام داده باشید ، در پیاده سازی با مشکل حادی برخورد نخواهید کرد . مستندات دو فاز قبلی مشخصات پیاده سازی را تعیین می کنند . اگر پروژه شما نیاز به یک پایگاه داده برای ذخیره اطلاعات دارد ( که در اکثر پروژه ها همینطور است ) ، ابتدا داده هایی که قرار است ذخیره کنید را بر اساس مستندات فازهای قبلی شناسایی کنید . اگر می توانید نمودار روابط بین موجودیت ها یا ERD و Data Model را برای درک بهتر بانک اطلاعاتی سیستم رسم کنید . برای بانک اطلاعاتی خود یک RDBMS مناسب انتخاب کنید . وقتی به طور مثال SQLite یا Access نیاز شما را برطرف می کنند ، بیخودی خود را درگیر پیچیدگی های SQL Server یا Oracle نکنید .
برای پیاده سازی یک پروژه نرم افزاری ، احتیاج به ابزارهای توسعه نرم افزار و یک زبان برنامه نویسی دارید . اگر کارفرما این ها را مشخص کرده که هیچ ، اما اگر بستگی به خودتان دارد ، ابزار و زبانی را انتخاب کنید که در آن تجربه دارید و متناسب با پروژه شماست . پلت فرم ها و محیط های معمول توسعه نرم افزار برای پروژه های شما مناسب هستند ، پس اصلاً نگران انتخاب ابزار و زبان نباشید .
معمولاً بعد از پیاده سازی و تحویل نهایی به کارفرما کارتان تمام نمی شود . تازه بعد از آن است که کارفرما هر روز با شما تماس می گیرد که فلان قسمت برنامه را برایش عوض کنید یا قابلیت جدیدی به آن اضافه کنید . در اینجا فقط یک قرارداد محکم می تواند شما را نجات بدهد . باید در قراردادی که با کارفرما بسته اید ، بندهایی برای تغییر در نرم افزار و اضافه کردن قابلیت جدید به آن در نظر بگیرید که زبان شما هم در مقابل کارفرما دراز باشد .

در آخر
 

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




 

نسخه چاپی