دانشجویانی که با بنده درس مهندسی نرمافزار داشته باشند، یکی از کارهایی که باید در طول دوره انجام دهند، انتخاب یک «محیط عملیاتی» و تحلیل آن محیط است. یعنی طی کردن روالی که ما در اصطلاح به آن روال Fact-Finding (کشف حقایق) میگوییم. این روال، روالی است که هر تولیدکننده نرمافزاری باید در تولید هر نرمافزاری طی کند؛ همانطور که ما خودمان در آفتابگردان برای تولید هر نرمافزاری این روال را طی کردهایم و خواهیم کرد.
با توجه به اینکه دانشجویان ممکن است ابهاماتی در تهیه گزارش نهایی داشته باشند، توضیحاتی در این زمینه میدهم:
اگر شما این درس را دارید، به عنوان پروژهی این درس، باید روال زیر را طی کنید:
۱- بررسی قلمروهای مشابه (Similar Domains)
این یک اصل در علم است که: هیچ ایدهی جدیدی بدون بکگراند نیست و همیشه یک کارهایی در گذشته در زمینهای که شما میخواهید کار کنید، انجام شده است. بررسی نقاط برتری و یا نواقص آنها میتواند یک عامل کلیدی در تولید محصولی باشد که هر کس آنرا دید بگوید: «هر چه خوبان همه دارند تو تنها داری»!
در این مرحله، شما باید بررسی کنید که چه نرمافزارهای مشابهی برای محیط عملیاتی شما نوشته شده است. مثلاً فرض کنید به شما به عنوان پروژه این درس میگوییم: «در نظر بگیر که قرار است یک نرمافزار آموزش تایپ تولید کنیم». شما باید ابتدا در اینترنت جستجو کنید و هر نرمافزاری (تأکید میکنم: هر نرمافزاری) که کوچکترین مشابهتی با این مبحث دارد را بیابید؛ مثلاً با این ساختار از طریق گوگل در سایتی مثل p30download.com جستجو کنید: به ساختار جستجو در یک سایت در گوگل دقت کنید:
نکته: اگر یک نرمافزار پیدا شود، میتوانید در سایت AlternativeTo.net نام آنرا وارد کنید تا نمونههای مشابه با آن لیست شود.
سپس باید در نرمافزار Word، گزارشی حاوی این موارد از همه نرمافزارها تهیه کنید:
- نام و آیکون نرمافزار
- مشخصات شرکت سازندهی آن (نام، لوگو، آدرس سایت رسمی و...)
- نحوه تهیه آن نرمافزار (اگر رایگان است لینک دانلود، اگر غیررایگان است، قیمت و نحوهی خرید)
- مشخصات کامل نرمافزار (لیست Featureها؛ یعنی امکانات آن به فارسی و اگر تولید خارج بود، متن انگلیسی سایت سازنده نیز لازم است)
- چند پرینتاسکرین از بخشهای اصلی محیط نرمافزار
- هر نکتهای که به نظر میرسد در تولید نرمافزاری مشابه با آن مفید خواهد بود.
مثلاً گزارشهای سایت p30download میتواند الگوی خوبی باشد: (روی تصویر زیر کلیک کنید تا با ابعاد بزرگ مشاهده کنید)
۲- جمع آوری اسناد موجود (Background Reading)
در این مرحله باید به حداقل سه محیط متناسب با موضوع پروژهتان مراجعه کنید (مثلاً اگر قرار است نرمافزار آموزش تایپ تولید کنید، باید به چند مؤسسه که تایپ سریع را آموزش میدهند مراجعه کنید...) و این موارد را در مورد آن سازمان جمع آوری کنید:
- هر نوع فرم ورودی یا خروجی که در محیط عملیاتی وجود دارد. (Company Reports)
مثلاً در مورد این پروژه: فرم ثبتنام در دوره آموزش تایپ، فرمهای حضور و غیاب، گواهینامهی پایان دوره، نمونه امتحانات و خلاصه هر برگه و سندی که در محیط میبینید برای ما مهم است. حتی اگر یک برگه را در سطل آشغال انداختهاند میتوانید یک نمونه از آن بردارید. تمام اطلاعیههایی که به در و دیوار و تابلو اعلانات و ... زدهاند برای ما مهم است. هر نوع کاغذی حاوی دادههایی است که بعداً در سیستم باید مورد توجه باشد.
- چارت سازمانی آن سازمان (Organization Charts)(شاید در پروژه تایپ لازم نباشد اما در پروژههایی مثل سیستم مدیریت کتابخانه یا آموزشگاه و حقوق و دستمزد و امثالهم لازم است)
- سیاستها و اساسنامه سازمان (Policy Manuals)
- مستندسازی سیستم موجود (Documentation of existing system)
این مورد خیلی مهم است! اگر محیط عملیاتی شما فعلاً دارد از یک سیستم نرمافزاری استفاده میکند، باید دقیقاً آنرا مستندسازی کنید. یعنی مشخصات آن نرمافزار را بپرسید و از آن یک گزارش تهیه کنید، به خصوص باید از آنها بپرسید که این نرمافزار فعلی چه کمبودها و چه نقاط قوتی دارد؟ چند پرینت اسکرین از محیط آن تهیه کنید، اگر آن نرمافزار کاتالوگی دارد، یک نسخه به دست آورید و خلاصه هر چیزی که فکر میکنید لازم است درباره سیستم موجود بدانیم.
مثلاً این دانشجو از تمام بخشهای سیستم موجود که در محیط عملیاتی بوده پرینتاسکرین گرفته و هر نوع سندی (فیشها، فرمها و حتی اطلاعیهای که به تابلو اعلانات زده میشده) را نیز جمعآوری کرده:
توجه: علاوه بر اینکه اصل اسناد در انتهای دوره تحویل داده میشود، باید تمام آنها را اسکن کرده (یا با گوشی با کیفیت عکس بگیرید) و فایلها را در یک پوشه به نام Documents تحویل دهید.
۳- مصاحبه (Interviewing)
مصاحبه پرکاربردترین روش برای کشف حقایق محیط عملیاتی است. باید به حداقل سه محیط مرتبط با موضوع پروژهتان مراجعه کنید و با یک یا چند نفر در آن محیط مصاحبه کنید.
بهتر است سؤالاتی را که میخواهید در جلسه مصاحبه بپرسید به ما نشان دهید تا اگر ایرادی داشت برطرف شود.
مصاحبه باید ضبط شود و فایل صوتی آن در انتهای دوره تحویل داده شود. (البته شخص مصاحبهشونده به هیچ وجه نباید بفهمد که صدایش در حال ضبط شدن است. بنابراین گوشیتان را روی رکورد تنظیم کنید و بدون توجه به آن وارد محیط شوید و مصاحبه را انجام دهید. دلیل این کار این است که شخص بدون اضطراب، صحبت کند)
مصاحبه حاوی نکاتی است که در جزوه مهندسی نرمافزار آمده است و باید حتماً رعایت شود؛ از جمله:
- در برخورد با افراد مصاحبهشونده مؤدب باشيد.
- هرگز سؤالات خصوصی از مصاحبهشونده نپرسید. (سؤالاتی مثل: چقدر حقوق میگیرید؟ از شغلتان/رئیستان راضی هستید؟ و...)
- به دقت گوش کنيد و صحبت شخص را قطع نکنید.
- کنترل خود را حفظ کنيد.
- کنجکاو باشيد و اگر چیزی را متوجه نشدید، بپرسید تا به جواب برسید.
- کنترل مصاحبه را حفظ کنيد.
- صبور باشيد.
- جو را طوری تنظيم کنيد که مصاحبه کننده احساس راحتي کند. (مثلاً در مورد این پروژهی دانشگاهی ممکن است برای اینکه با شما همکاری کند حتی لازم باشد بگویید: این فقط یک پروژه دانشگاهی ساده است که این استاد ما گیر داده که حتماً یک مصاحبه انجام شود، لطفاً همکاری کنید که شر او از شما کم شود!!!...)
- حتماً یک یادداشتبرداری در حین صحبت شخص داشته باشید که نگوید حرفهای من چطور در ذهن این آقا یا خانم میماند و متوجه شود که صدا را ضبط میکنید!
نمونهای از سؤالاتی که باید در مصاحبه بپرسید:
دقت کنید که سؤالاتی که میپرسید باید بخشی از ابهامات تولید نرمافزار را رفع کند. پس سؤالی که نتوان از پاسخ آن هیچ نوع استفاده در تولید نرمافزار کرد، نباید پرسیده شود. (سؤالاتی مثل اینها معمولاً مفید نیستند: رنگ مورد علاقه شما چیست؟ تحصیلات شما؟ کامپیوتر دارید؟ به کار با کامپیوتر علاقه دارید؟ و...)
مثلاً برخی سؤالات که در مورد نرمافزار آموزش تایپ میتوانید از مدیر یک آموزشگاه برگزارکننده دوره تایپ سریع بپرسید:
- برای آموزش تایپ از نرمافزار خاصی استفاده میکنید؟ اگر بله، میشه چند تا پرینت اسکرین ازش بگیرم؟
- فکر میکنید نرمافزاری که استفاده میکنید چه نقایصی داره که ما در در نرمافزارمون اونها رو رفع کنیم؟ چه نکات مثبتی داره که حتماً توی نرمافزارمون بهش توجه کنیم؟
- کتاب خاصی در این زمینه وجود داره؟ میشه ببینم؟ (از جلد آن عکس بگیرید)
- روش علمی خاص و استانداردی برای آموزش تایپ هست؟ میشه توضیح بدید چه روشهایی؟
- شما پیشنهادتون برای یادگیری تایپ چی هست؟ مثلاً چند بار در هفته یا روز؟ چقدر تایپ؟ لطفاً توضیح بدید.
- معمولاً چه افرادی کلاسها رو ثبت نام میکنن؟
- کلاسها چطور برگزار میشه؟ استاد چطور روی افراد نظارت داره؟
- آموزش تایپ فارسی با انگلیسی تفاوت داره؟ چه تفاوتهایی؟
- هزینه دورهها چقدر و چند ساعته و چند روز در هفته هست؟
- آزمون دوره چطور برگزار میشه؟ یعنی معیار قبولی چی هست؟ آزمون کتبی دارید یا عملی؟ لطفاً توضیح بدید.
- نکته خاصی هست که به تولید این نوع نرمافزارها بتونه به ما کمک کنه و شما نگفته باشید؟
نهایتاً باید پرسشها و پاسخهای مصاحبهشوندگان تایپ و فایل آن تحویل داده شود.
۴- مشاهده (Observation)
میتوان گفت مطمئنترین روش جمعآوری حقایق، مشاهده است چون تحلیلگر خودش روالها را مشاهده و حتی طی کرده و نتیجه را یادداشت کرده نه اینکه کسی برایش تعریف کند.
در این مرحله باید با حداقل دو محیط عملیاتی مرتبط با پروژهتان هماهنگ کنید و یک روز به محیط آنها بروید و آنچه که در محیط در مورد نرمافزار شما اتفاق میافتد را مشاهده کنید و گزارش آنرا بنویسید.
به طور مثال در مورد همین نرمافزار آموزش تایپ: یک روز که کلاس آن برگزار میشود با اجازه آموزشگاه کمی زودتر در مؤسسه و سپس در کلاس حاضر میشوید و تا انتهای کلاس فقط مشاهده میکنید که چه اتفاقاتی میافتد. مثلاً گزارش شما چیزی شبیه به این میشود: دانشجویان که تعداد آنها ۱۰ نفر بود در ساعت فلان در کلاس حاضر شدند. مدرس پس از حضور، به صورت نرمافزاری حضور و غیاب انجام داد، سپس با کمک نرمافزاری به نام ایکس ابتدا مروری بر تایپ ده انگشتی شد سپس فلان تکلیف مشخص شد و کاربران ده دقیقه فرصت داشتند که انجام دهند. سپس فرمی که در تصویر زیر مشخص است به دانشجویان داده شد تا مشخصات خود را وارد کنند و... و به همین صورت هر اتفاقی که مرتبط با موضوع پروژه شما میافتد را یادداشت میکنید.
۵- پرسشنامه (Questionnaires)
پرسشنامه در مورد محیطهای عملیاتی که افراد زیادی قرار است با سیستم درگیر باشند مناسب است. روال تهیه پرسشنامه خوب، در جزوه مهندسی نرمافزار آمده است. پس از مرور آنها یک پرسشنامه که ترکیبی از انواع سؤالات (چند گزینهای، بله/خیر، تشریحی، امتیازی و...) باشد تهیه کنید. سؤالات پرسشنامه را حتماً قبل از تکثیر به تأیید ما برسانید.
آنرا حداقل به ۵ محیط مرتبط با پروژهتان بدهید تا تکمیل کنند و با مهر و امضا تحویل ما بدهید. ضمناً تصویر آنها نیز به صورت دیجیتالی باید در پوشهی پروژه شما باشد.
نمونهای از یک پرسشنامه تکمیل شده:
۶- تهیه دیاگرامها:
نهایتاً با توجه به تحلیلی که انجام دادهاید، در فاز «طراحی» با توجه به جزوه، دیاگرامهای زیر را ترسیم کرده و تحویل میدهید:
- DFD (نهایتاً تا ۳ سطح)
- Use-Case Diagram (به انضمام حداقل ۵ سناریو)
- Class Diagram
- Object Diagram
- Package Diagram
- ERD
- State Diagram
- Activity Diagram
- Sequence Diagram
- Component Diagram
- Deployment Diagram
نمونه گزارش:
یک نمونه گزارش که میتواند به عنوان قالب کلی در نظر گرفته شود با کلیک روی این لینک قابل دانلود است. (البته دقت کنید که من صحت محتوا را تأیید نمیکنم و فقط حکم یک قالب را دارد. مثلاً DFDها و برخی دیگر از دیاگرامها در این گزارش کلاً اشتباه هستند و نمره کم شده)
نکته مهم:
گزارش باید بر اساس این ویدئو و با رعایت اصول تایپ و اصول صفحهنگاری در Word تهیه شود.
آپدیت: اگر انگلیسیتان خوب است، در این صفحه میتوانید یک نمونه عالی از مراحلی که باید طی شود و همینطور نمونه سؤالاتی که در مصاحبه یا پرسشنامه باید پرسیده شود در مورد محیط عملیاتی کتابخانه آورده شده است:
http://yourl.ir/fact-finding-sample
موفق باشید؛
حمید رضا نیرومند