مهندسی فرآیند

با توجه به اینکه شرکت فنآوران اطلاعات و ارتباطات روزآمد، کلیه فعالیتهای تولید محصولات نرمافزاری خود را تحت اعمال مهندسی فرآیند به انجام رسانیده و با گذشت 5 سال سابقه استفاده از دانش مبتنی بر فرآیند، این شرکت هم اکنون این دانش را به شکلی بومی برای پروژههای نرمافزاری نهادینه کرده و با در اختیار داشتن پتانسیل مناسب در این زمینه، مشاوره و نظارت بر فرآیند تولید نرمافزار در سایر نهادهای درخواست کننده را نیز در برنامهی کاری خود قرار داده است.
مهندسی فرآیند یکی از اعمالی است که قبل از اینکه حتی مدیران یک پروژه نرمافزاری پا به عرصه یک پروژه بگذارند، فعالیت خود را در ارتباط با پروژه آغاز میکند.
در واقع مهندسی فرآیند حد و حدود یک پروژه را شناسایی کرده و دوخت و دوز لباس فرآیند را بر تن یک پروژه به عهده میگیرد.
مهندسی فرآیند در پروژههای نرمافزاری مهمترین نقش در پاسخگویی به چالشهای معمول یک پروژه را داشته و از اولین لحظات شکلگیری یک پروژه تا پایان آن به مانند چتری بر همه مراحل انجام پروژه سایه افکنده است.
چالشهای معمول یک پروژه نرمافزاری که از آنها یاد شد، به شرح زیرند:
- شناخت حجم واقعی پروژه بر اساس نیازمندیهای مطرح شده
در اکثریت قریب به اتفاق پروژههای نرمافزاری، در بدایت امر شناخت کافی و روشنی از حجم کاری، حوزه و حیطه پروژه وجود ندارد. به این شکل در اغلب مواقع مهندسان نرمافزار و تیمهای نرمافزاری در خلال تهیه و تولید محصولات خود در زمینهی نیازمندیها و حجم پروژه با مشتریان دچار چالش میشوند.
- تشکیل تیم مناسب از افرادی با تخصصهای لازم و تعداد مناسب برای انجام یک پروژه
- تعریف کار و همچنین تخصیص کار به اعضای تیم تولید
- تهیهی قالبها و چارچوبهای مصوب برای انجام پروژه
- تهیه قالبهای صحیح و مناسب برای تهیه مستندات پروژه
- تعریف جریان کار برای تولید محصول
- تقسیم کار و فازبندی پروژه
- تعیین اولویت در برآورد نیازمندیهای پروژه و تعیین زمان دسترسی به محصولات موقت
- مدیریت افراد تیم تولید نرمافزار با توجه به دریافت بازخورد تحویل کار و نقش به هر یک از آنها
- نهادینه کردن قالبها و چارچوب فرآیند تولید تعریف شده برای افراد تیم و مشتریان
- بهوجود آوردن دانش بومی در تیم تولید نرمافزار در مورد استفاده صحیح از ابزار مهندسی نرمافزار
- انتخاب بهترین فرآیند برای تولید محصول (تقدم، تاخر و سطح اولویتها)
همانطور که گفته شد مهمترین اهداف انجام اعمال مربوط به مهندسی فرآیند، جلوگیری از بهوجود آمدن چالشهایی از قبیل آنچه در اینجا بیان شد و یا مدیریت اینگونه مشکلات است.
در واقع پاسخگویی به کلیهی موارد بالا از مسئولیتهای مهندسی فرآیند به شمار میآید.
مهندسی فرآیند دانش مبتنی بر تجربه است که به منظور تعریف و کنترل شرایط، حدود و ضوابط یک پروژه، مورد استفاده قرار میگیرد.
مهندسی فرآیند علاوه بر استفاده از تجارب متعدد نیازمند در دست داشتن استانداردها و دانش فرآیندی است. در واقع رهنمودهای لازم برای انجام امور مهندسی فرآیند باید از منابع مستدل و مناسب استخراج شوند و این امر باید کاملا متکی بر دانش انجام گیرد.
از آنجا که معمولا متدولوژیهای معتبر شیءگرا جنبه آکادمیک داشته و به تفصیل به کلیه فرآیندها و فعالیتهای مرتبط با چرخه تولید نرمافزار نمیپردازند، در شرکت فنآوران اطلاعات و ارتباطات روزآمد، چرخه تولید سیستم بر اساس متد USDP و فرآیند تولید نرمافزارهای مرتبط، مطابق با RUP انجام میشود.
RUP به چهار موضوع کلی اشاره میکند:
1- RUPیک روش تولید و توسعه نرمافزار میباشد که معماری محور، Use-Case گرا و مبتنی بر حلقههای تکرار است.
2- RUP یک فرآیند توسعه نرمافزار با ساختار قوی میباشد که بطور روشن و واضح مشخص میکند که چه کسی مسئول چه چیزی است و چگونه و چه موقع هر فعالیتی انجام میشود. همچنین RUP یک ساختار شفاف برای زیستچرخ یک پروژه نرمافزاری فراهم میکند که به طور روشن مراحل مهم و نقاط تصمیم گیری را مشخص میکند.
3- RUP یک محصول فرایندگرا است که چارچوب فرایند با قابلیت سفارشی شدن را برای هر پروژه فراهم میکند. RUP از سفارشی کردن فرایند و پیکربندی آن و دامنه وسیعی از فرایندها یا پیکربندیهای فرآیند، پشتیبانی میکند.
4- RUP فرآیندی است که بطور پیوسته در حال توسعه میباشد، این فرآیند بر مبنای تجارب حاصل شده از شکستهایی که در پروژههای نرمافزاری مختلف بدست آمده و همچنین تجارب حاصل از پروژههای موفق بدست آمده است.
پیکربندیهای مختلف RUP را میتوان برای پشتیبانی از تیمها یا پروژههای کوچک، متوسط یا بزرگ و با استفاده از روشهای تولید و توسعه رسمی یا نیمه رسمی، انجام داد.
با در دست داشتن دانش مهندسی فرآیند، امور زیر در مورد یک پروژه نرمافزاری قابل اجراست:
- مهندس فرآیند مسئولیت شناخت حدود پروژه و مشخص کردن نیازمندیهای پروژه در سطح محصول و همچنین تیم پروژه را به عهده دارد. نیازمندیهای شناسایی شده توسط مهندس فرآیند در بدایت امر در پروژه مصوب شده و ملاک انجام پروژه، پاسخگویی به مشتری و همچنین برآورده کردن نیازمندیهای تولید میباشد.
- مهندس فرآیند با شناخت کامل نسبت به زوایای پروژه، زمان و منابع مورد نیاز برای انجام یک پروژه را مشخص کرده و خروجیهای لازم در مورد منابع مورد نیاز از قبیل زمان، نیروی انسانی و تجهیزات را در اختیار مدیریت پروژه قرار میدهد.
- مهندس فرآیند، تعداد افراد لازم و تخصص این افراد را برای انجام یک پروژه مشخص کرده و اطلاعات را در اختیار مدیر پروژه قرار میدهد.
- این مهندس فرآیند است که مشخص میکند چه شخصی با چه تخصصی باید در چه بازه زمانی چه نقشی را در پروژه به عهده بگیرد و چه کاری را در رابطه با این رول انجام دهد.
- مهندس فرآیند با اشراف کامل به نیازمندیهای تولید یک محصول نرمافزاری این اطلاع را فراهم میکند که اصولا باید چه محصولاتی در چه چارچوب و ضوابطی تهیه شده و زمان مناسب تهیه هر کدام از این محصولات در چه مرحلهای از پروژه قرار دارد.
- یکی از مهمترین و تخصصیترین امور مربوط به انجام یک پروژه استخراج جریان کار مربوط به هر تکرار، فاز و یا هر چرخه است. این امر به عهده مهندس فرآیند بوده و در واقع این مهندس فرآیند است که تقدم، تاخر و ترتیب امور لازم و بازه زمانی هر یک را تشخیص داده و با دانشی فراتر از مدیریت یک پروژه نرمافزاری، روال و هارمونی فعالیتها را مشخص میکند.
- در راستای تعیین جریانات کاری، لازم است که پروژه به قسمتهای کوچکتر تقسیم شده و در واقع پروژه به عنوان یک مسئله تقسیم و حل شود. این امر از امور مربوط به نقش مهندسی فرآیند است. بدیهی است که فاکتورهای گوناگونی برای تقسیمبندی پروژه به قطعات کوچکتر مد نظر است که اولویت مرتفعسازی نیازمندیها یکی از این فاکتورها به شمار میرود.
- یکی از نکاتی که در مدیریت فرآیندها از اهمیت بالایی برخوردار است، وقوف به تغییرات دائم و ساختار پویای تیمهای نرمافزاری است. ممکن است افرادی گروه را ترک کنند و یا مهارت افراد ارتقا یابد. به این ترتیب لازم است که مهندس فرآیند همواره در کنار تیم فنی تولید نرمافزار، تغییرات و بازخورد انجام فرآیندها را دریافت کرده و مدیریت کند.
- یکی از ریسکهای موجود در تیمهای نرمافزاری مقاومت و اینرسی افراد تیم نسبت به استفاده از ابزار، قالبها و چارچوبهای تعریف شده برای پروژه است. همانطور که مبناگذاری این موارد به عهده مدیریت فرایند است، نهادینه کردن آنها و رواج استفاده از آنها در تیم پروژه نیز به عهده مهندس فرایند است.
به این ترتیب مهندسی فرآیند به عنوان یکی از مهمترین نقشهای موثر در موفقیت پروژههای نرمافزاری معرفی شده و مسئولیتهای مربوط به این نقش نیز به عنوان بزرگترین گلوگاههایی که قدرت کشاندن یک پروژه به ورطه شکست را دارند، شناسایی شدهاند.
تجارب موفق شرکت فنآوران اطلاعات و ارتباطات روزآمد، که در کنار استفاده از نیروی انسانی متخصص پتانسیل دستیابی به دانش مدیریت فرآیند را در این شرکت بوجود آورده به شرح زیر است:
1. استفاده از حلقههای تکرار در تولید و توسعه نرمافزار
- مدیریت نیازمندیها
- مدلسازی بصری
- کنترل کیفیت به صورت پیوسته و مستمر
- مدیریت وکنترل تغییرات نرم افزار
به این ترتیب شرکت فنآوران اطلاعات و ارتباطات روزآمد با در اختیار داشتن دانش و نیروی انسانی متخصص، ارائه مشاوره مهندسی فرآیند را در ویترین خدمات خود قرار داده و در این راستا آمادگی خود را جهت ارائه خدمات مهندسی فرایند اعلام میدارد.