آموزش تحلیل نرم افزار بخش اول


سعی دارم در سلسله مقالاتی مسایل مهم که در تحلیل و مهندسی نرم افزار نقش مهمی دارند را برای شما در چند مقاله بنویسم

بخش اول

علاقه مندیهای مشتری

فرض کنید که یک مشتری می خواهد یک سایت برای فروش وسایل کوهنوردی ایجاد کند ، در این سایت مشتریان می توانند وسایل کوهنوردی را بخرند ، خوب این مشتری به شما مراجعه می کند و از شما می خواهد که سایتی برای او طراحی و ایجاد کنید .

گام اول : 2 چیز در هر پروژه نقش حیاتی دارد.

1چقدر هزینه دارد؟

2-چقدر زمان لازم دارد؟

نکته مهم این است که مشتری هم از نظر بودجه و هم از نظر زمانی ، محدودیت دارد و ما همیشه باید این نیاز مشتری را درک کنیم ، نمی توانیم زمان را بی پایان یا خیلی زیاد بدهیم ،

 

گام اول که ما انجام می دهیم

در گام اول مشتری فقط ایده را به ما ارایه می کند ، وما برداشتی اولیه خواهیم داشت ، در مثال بالا، ما در برآورد اولیه تصور می کنیم که این سایت به تعدادی کد  html,java script ,css  نیاز دارد

برای ارایه زمان و بودجه دو راه وجود دارد

1-تکراری : اگر پروژه پیشنهادی ما از قبل انجام شده و ما نیاز به ایجاد پروژه جدیدی نداریم ، مشکل ما حل شده است ، چرا که فقط نیاز به تغییرات گرافیکی و کدهای ساده ای دارد

2-جدید : مشکل اینجاست ، اگر پروژه کاملا جدید باشد و ما از قبل انجام نداده باشیم ، سختی کار اینجاست ،

چون تا زمانی که اطلاعات کافی نداشته باشیم ، نمی توانیم زمان و هزینه را برآورد کنیم .

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

به عنوان مثال ، درمثال بالا مشتری یک سایت برای فروش محصولات کوهنوردی می خواهد ، با توجه به فهم ما از مساله فکر می کنیم که مشتری سایتی را می خواهد که مشتری به سایت مراجعه می کند و کالایی را انتخاب می کند و سپس آن کالا را خریداری می کند ، حالا براساس پیش فرضها شروع به تولید نرم افزار می کنیم و آن را فرضا بعد از 1 ماه به مشتری تحویل می دهیم ، فکر می کنید چه اتفاقی می افتد

 

1-حالت اول : ممکن است از نظر کد نویسی سایت کاملا نیاز مشتری را برآورده می کند اما ساختار سایت مطابق میل مشتری نیست لذا مشتری آن را نمی پسندند و از آنجا که به امور فنی آگاه نیست ، پروژه را نمی پذیرد

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

 

3-حالت سوم: ممکن است هم ساختار و هم گرافیک و هم سهولت ، نظر مشتری را جلب کند ، اما برخی حالتهای ویژه برای مشتری مد نظر هست که در سیستم وجود ندارد مثلا در مثال بالا اگر مشتری به سایت مراجعه کند و کالایی را انتخاب کرد ، ولی آن کالا موجودی نداشت راه کار چیست ؟

 

پس با بررسی 3 حالت فوق به این نتیجه می رسیم که اشتباه عمده برنامه نویسان و تحلیل گران در تحلیل نیازهای مشتریان ، حدس و گمان است ، یعنی حدس می زنند که اگر نرم افزار اینگونه باشد و فلان امکان را داشته باشد بهتر است ، اما در دنیای واقع که با مشتری روبرو می شویم  ، واقعیت چیز دیگری را نشان می دهد

حقیقت آن است که بیشتر مشکلات تحلیل همان حدس و گمان افراد تحلیل گر است ، تحلیل کاملا با حدس و گمان متناقض است ، شما باید برای فهمیدن نیازهای مشتری ، مشتری را در یک حلقه loop   پرس و جو قرار دهید تا بتواند ، آنچه درذهن او می گذرد را به واقعیت تبدیل کنید و آنچه که در ذهن او غیر واقعی بود با ارایه استدلال منطقی به واقعیت تبدیل کنید . به قولی دیگر رابطه  face to face  با مشتر ی برای فهمیدن نیازهای آن امری حیاتی است.

 

استراتژی اولیه

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

فراموش نکنید که همه چیز را مکتوب کنید و اگر می توانید از مشتری امضای تایید بگیرید تا بعدا اگر حرف خود را عوض کرد ، مسولیتش به عهده او باشد .

 

استراتژی تکرار برای رسیدن به هدف

اشتباه بزرگ گروههای برنامه نویسی این است که فکر می کنند باید تمام مراحل تحلیل و تشخیص نیازمندیها را در همان اول کار انجام دهند ، سپس شروع به کد نویسی کل پروژه می کنند . اشتباه اشتباه اشتباه

 

شما باید از استراتژی تکرار استفاده کنید ، د ر  این استراتژی پروژه شما به تدریج بزرگ می شود ، همچنین هر محله کاری شما هم تحلیل و هم کدونیسی را دارد به دو شکل زیر دفت کنید 


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

 

اما در استراتژی تکرار ما به تبع انجام تحلیل و تشخیص نیازها ، کار کد نویسی هم انجام می شود ، در این حالت شما در هز بار ملاقات با مشتری در واقع یک نسخه از سیستم به مشتری تحویل می دهید ، علاوه بر این مشتری در این حالت یکی از اعضای پروژه است  نمودار زیر را نگاه کنید 


.در شکل بالا ابتدا جلسه اول با مشتری برگزار می شود ، پس از گرفتن نیازمندیهای اولیه ما شروع به تولید نرم افزار براساس همان نیازها می کنیم ، نسخه اولیه کامل می شود ، تکرار بعدی ، دوباره با مشتری جلسه می گذاریم این باز نسبت به جلسه اول ، یک نسخه از نرم افزار اولیه را تهیه کرده ایم ، به مشتری نمایش می دهیم ، و دوباره نیازها را بررسی می کنیم ، ممکن است برخی نیازها از قلم افتاده باشد ، لیست نیازمندیهای ما کاملتر شده و مشتری از نحوه کار آگاه تر شده است ، این روال ادامه می یابد تا اینکه نسخه نهایی تحویل مشتری می شود




همانطور که در شکل بالا می بینید ، نرم افزار در هر محله تکرار ، شما 4 مرحله اصلی تولید را انجام می دهید

1-تشخیص نیازها 2-طراحی 3-کد نویسی 4-تست نرم افزار

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

به عبارت دیگر هر تکرار در واقع خود یک پروژه کوچکی است.


این بحث ادامه دارد