تولید نرم افزار | مدیریت کیفیت

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

مشکلات تولید نرم افزار در ایران
تولید نرم افزار در ایران با مشکلات عدید‌‌ه‌ای‎ مواجهه است از جمله:
۱- ناتوانی‌های شرکت‌های تولید نرم‌افزار؛ شرکتهای که به تولید نرم افزار می‎پردازند عمدتاً شرکت‌های کوچک نرم‌افزاری با پشتوانه‌های مالی اندک هستند.
۲- تجربه‌‌ها‎ی ناکافی تیم پروژه؛ در مقایسه با کشورهای صنعتی تیم تولید نرم افزار در ایران با کمبود نیروی متخصص مواجهه است.
۳- قراردادهای ناپخته؛ در ایران اکثر مشتریان مهم حوزه نرم‌افزار را سازمان‌های دولتی و نیمه‌ دولتی تشکیل می‌دهند. قراردادهایی که در این زمینه منعقد می‎شود، قراردادهایی ناپخته و یک طرفه می‎باشند که مجریان چنین پروژه‌هایی، با وجود آگاهی نسبت به ضعف‌های آن در بیشتر مواقع به دلایل اقتصادی مجبور به پذیرش آن‌ها هستند.
۴- عدم صرف هزینه کافی برای تحقیق و پژوهش؛ عمده سرمایه‌ها در ایران به سمت بخش‌های سخت‌افزاری سرازیر و در عمل سرمایه‌گذاری در عرصه تولید و به تناسب آن تحقیق و پژوهش کاربردی حوزه نرم‌افزار که در زمره سودآورترین عرصه‌های اقتصادی در دنیا شناخته می‌شود، بسیار محدود می‎باشد.
۵- مقاومت‌های سازمان‌‌ها‎ و کاربران برای پذیرش سیستم‎های جدید؛ به دلیل ضعف در بخش‌های IT، امکان برقرار ارتباط با سازمان‌‌ها‎ و توانایی پاسخگویی به نیازهایی آنان به صورت منطقی وجود ندارد.

متدولوژی تولید نرم افزار
متدولوژی یک فرآیند مهندسی نرم‌افزار است و به منظور آنالیز و تجزیه تحلیل، طراحی و پیاده‌سازی سیستم مورد نظر، استفاده می‌شود. این فرآیند یک روش نظام‌مند برای تقسیم بندی کارها و مسئولیت‌‌ها‎ در یک تیم توسعه نرم‌افزار است که هدف از آن تولید نرم‌افزار با کیفیت بالا می‎باشد و نیازهای کاربران نهایی را به وسیله یک برنامه و با بودجه قابل پیش‌بینی تأمین می‎کند.

به طور کلی متدولوژی شامل مجموعه روش‌ها و خط مشی‌‌ها‎ی گام به گام است که برای تکمیل یک یا چند مرحله از مراحل یک چرخه تکاملی به کار برده می‎شود و در این میان روش، تکنیک‌‌ها‎ و استانداردهای خاص خود را به چرخه تکاملی تحمیل می‌کند. با کمک متدولوژی می‎توان تولید نرم افزارها را در هر مرحله برنامه‎ریزی، مدیریت، کنترل و ارزیابی نمود.
در گذشته متدولوژی‌های مختلفی به صورت ساخت یافته و شئی گرا از جمله Oracle , CDM , SSADM ,RAD , RUP , XP برای فرآیند تولید نرم‌افزار استفاده می‎شد.

building-secure-cloud-environment

انواع متدولوژی تولید نرم افزار
۱- متدولوژی‎ آبشاری
این روش سنتی است که مراحل آن به شکل ترتیبی انجام می‎شود. در متدولوژی‎ آبشاری ابتدا نیازها برآورد شده، سپس طراحی نرم افزار صورت می‎گیرد. پیاده سازی در این روش به وسیله زبان‌‌ها‎ی برنامه سازی انجام و نرم افزار تست می‎شود و در نهایت به دست مشتری می‎رسد. این روش می‎تواند برای نرم افزار‌‌ها‎ی کوچک مناسب باشد اما به دلیل پیشرفت سایر روش‌‌ها‎ی تولید، امروزه در پروژه‌‌ها‎ی مهندسی کمتر از آن استفاده می‎شود.
۲- متدولوژی سریع
تولید محصول نرم افزاری در این روش در کمترین زمان انجام می‎شود اما ممکن است همین موضوع باعث بروز نقص‌‌ها‎ی فراوان در محصول گردد؛ بنابراین آشنایی قبلی از نیازهای کاربر، یک امر مهم در این روش محسوب می‎شود.
۳- متدولوژی افزایشی
نرم افزار در این روش با استفاده از روش آبشاری تهیه و در ادامه با توجه به نظرات مشتری، تکمیل می‎شود. در واقع تا کامل شدن محصول چند روش آبشاری کوچک بر روی نرم افزار اجرا می‎گردد.
۴- متدولوژی نمونه‌ای‎
در روش نمونه‌ای‎ تلاش می‎شود تا ابتدا یک نسخه از نرم افزار تهیه و سپس با توجه به نیازمندی‌‌ها‎ نسخه اولیه اصلاح و ویرایش شود تا نسخه‌‌ها‎ی کاملتر آن به دست آید. این متدولوژی به تنهایی قابل استفاده نیست و باید کار را با یکی از روش‌‌ها‎ی دیگر شروع نمود سپس وارد روش نمونه‌ای‎ شد. از دیگر ویژگی‌‌ها‎ی متدولوژی نمونه‎ای، علاوه بر این که از نظرات کاربر استفاده میشود، پروژه به قسمت‌‌ها‎ی کوچک‌تر نیز تقسیم می‎شود که ریسک پروژه را کمتر می‎نماید.
۵- متدولوژی‌‌ها‎ی سنگین
شناخته شده‎ترین متدولوژی تولید نرم افزار، متدولوژی سنگین Rational Unified Process است. در حال حاضر روش شناسی RUP یکی از جدیدترین‌‌ها‎ به شمار می‎رود که بر پایه یک متدولوژی شئی‎گرا و تابع زبان UML ‌از یک مدل چرخشی و تکاملی می‎باشد. مستند سازی در این شیوه شناسی به حدی دقیق است که در صورت انجام صحیح، کمتر به ‌ایجاد تغییر نیاز است. در‌ یک متدولوژی RUP تکراری برای متناسب نمودن کامل محصول بر اساس نیاز‌ها در هر تکرار، تمام مراحل انجام ‌یک پروژه به صورت خطی صورت می‎گیرد که در هر تکرار میزان توجه به هر ‌یک از این فعالیت‌‌ها متفاوت می‎باشد. این شیوه شناسی در بسیاری از شرکت‌‌ها‎ و پروژه‌‌ها‎ی نرم افزاری مورد استفاده قرار می‎گیرد زیرا از بهترین رویه‌‌ها‎ی متدولوژی‌‌ها‎ی قبلی استفاده می‎کند. روش شناسی RUP توسط شرکتSoftware Rational تهیه شد و با حمایت شرکت IBM و مجموعه ابزارهای Rational Suite پشتیبانی می‎گردد.
۶- متدولوژی‌‌ها‎ی سبک
این متدولوژی سبک در مقابل روش شناسی های سنگین به وجود آمد و بر اساس تکرار و افزایش بنا نهاده شده است. ویژگی بارز متدولوژی‎ سبک انعطاف‎پذیری آن در برابر تغییرات، قابلیت بالای کار گروهی و همچنین مستندسازی کمتر نسبت به RUP می‎باشد.
• کیفیت نرم افزار
میزان انطباق نرم افزار با نیازمندی‎ها‎‎ی عملیاتی و کارایی، انطباق با استانداردها و خصایص ضمنی که از هر نرم افزاری که به صورت حرفه ای توسعه یافته، انتظار می‎‎رود، در زمره کیفیت نرم افزار می‎‎باشد. تضمین کیفیت نرم افزار بر عهده دو گروه، مهندسین نرم افزار که کار فنی انجام می‎‎دهند و گروه SQA که مسئول طرح ریزی تضمین کیفیت، تحلیل و گزارش دهی هستند، می‎باشد.
گروه اول کیفیت را هدف قرار داده و فعالیتهای کنترل و تضمین کیفیت را بر عهده دارند. این فعالیتها به وسیله اندازه‎ها‎‎، متدهای فنی قوی، ایجاد بازنگری فنی رسمی و انجام تست‎ها‎‎ی نرم افزاری با برنامه صورت می‎‎گیرد. گروه دوم به طرح‎ریزی تضمین کیفیت، تحلیل و گزارش دهی مشغول هستند و نقش نمایندگان مشتری را در تیم نرم افزای ایفا می‎‎کنند. به عبارت دیگر این افراد باید از دیدگاه مشتری به نرم افزار نگاه نمایند.