واژگان کلیدی: نرم افزار، کیفیت و مرغوبیت نرم افزار، طراحی نرم افزار، تولید نرم افزار، معیارهای کیفیت.
مقدمه
طی یک دهه گذشته در برخورد مستقیم و نزدیک با رایانه و نرم افزارهای اسلامی گاه به عنوان دانش پژوه و استفاده کننده و گاه به عنوان طراح، مشاور و مدیر پروژه نرم افزاری این نکته برایم محرز گردید که یک نگرش نظام یافته کیفی که همسو با نیازهای کاربران و استفاده کنندگان باشد، موجود نیست و بین نیاز کاربران و محصولات تولیدشده فاصله زیادی است.
با یک جستجو و مقایسه روشمند میان نرم افزارهای تولیدی توسط مراکزی که تجربه بیشتری دارند و از استانداردهای مشخصی استفاده می کنند و مراکزی که برای اولین بار قدم به این عرصه می گذارند، این فاصله به خوبی احساس می شود.
سامان بخشیدن به نظام یکپارچه که تحت آن بتوان از کیفیت نرم افزار تولیدشده و انطباق آن با نیازهای کاربران اطمینان حاصل نمود، امری است که در کوتاه مدت مشکل و در مواردی غیر ممکن است؛ زیرا ضعف یک نرم افزار بستگی به موارد متعددی دارد که از آن جمله می توان به موارد ذیل اشاره کرد:
- ناآشنایی مدیران با قابلیت های رایانه و استفاده نکردن از مشاوران خبره و با تجربه؛
- ناآشنایی طراحان با نیاز کاربران و استفاده نکردن از جدیدترین برنامه های موجود در طراحی نرم افزار؛
- ضعف برنامه نویسان و آشنا نبودن آنها با آخرین نرم افزارهای مکمل و نسخه های جدید؛
- استفاده نکردن از سیستم های صحیح و یا هوشمند برای نمایه گذاری و فهرست گیری از اطلاعات؛
- نبودن استانداردهای جامع و مدون که راهنمای مدیران، طراحان و برنامه نویسان باشد.
در این نوشتار، فقط به شرح و بیان قسمت آخر؛ یعنی نبودن یک استاندارد لازم برای کیفت مطلوب نرم افزارها می پردازیم و سعی داریم تا با الگو گرفتن از معیارهای کیفی نرم افزار برابر با مدل های بوهم ، مک کال(1)، ایزو، آژانس فضایی اروپا(2) و تجربیات شخصی، آنچه را که برای کیفیت و مرغوبیت نرم افزار لازم است، در معرض استفاده علاقه مندان قرار دهیم.
کیفیت چیست؟
ارائه یک تعریف ساده و روشن از کیفیت، سخت و سنجش آن غیر ممکن می نماید؛ ولی تشخیص آن به راحتی امکان پذیر است.(3)
به عنوان مثال، زمانی که یک ماشین جدید به علت خرابی قطعات از کار می افتد و یا یک برنامه رایانه ای در اجرای درست خود ناتوان می ماند، می توان کیفیت را در آنها تشخیص داد.
تعاریف متعددی در باب کیفیت وجود دارد؛ اما هیچ کدام کافی نیستند؛ مثلاً در لغت نامه انگلیسی اکسفورد، کیفیت به درجه برتری و فضیلت تعریف شده است.(4)
سازمان بین المللی استانداردها Standard OrganizationInternational ) ISO) در سال 1986م در تعریف کیفیت می گوید:
«کیفیت، یعنی تمامی خصوصیات ومشخصات یک محصول در باره توانایی آن در ارضاء نیازهای تعیین شده».(5)
علامه دهخدا، «مرغوبیت» را مصدر جعلی مرغوب به معنای: مورد پسند بودن ، همه کس پسند بودن و نوع برتر و بهتر از هر چیزی می داند.(6)
سازمان دفاع آمریکا در سال 1985م کیفیت نرم افزار را این گونه تعریف کرده است : «کیفیت نرم افزار درجه ای است که در آن مشخصات نرم افزار قادر به انجام خواست های کاربر نهایی می باشد».(7)
ساختار استاندارد
تولید نرم افزار با کیفیت قابل قبول، نیازمند ساختارهای استانداردی است که باید مفید و قابل درک بوده، بر اصول عملی و دقیق استوار باشد. این ساختار ضمن اینکه جنبه های اصلی و ضروری هر پروژه ای را در بر می گیرد، در قالب مجموعه ای از چارچوب ها و ضرورت ها نیز حداکثر انتخاب ممکن را برای مدیر پروژه فراهم می آورد که مراحل آن از قرار ذیل است:
- - مرحله تعیین نیازهای کاربر (User Requirements) ؛
- - مرحله تعیین نیازهای نرم افزار (Requirements Software) ؛
- - مرحله طراحی معماری (Design Architectural) ؛
- - مرحله طراحی تفصیلی و تولید برنامه (Design Detailed) ؛
- - مرحله انتقال و واگذاری نرم افزار برای بهره برداری (Transfer of the Software) .
1. تعیین نیازهای کاربر:
این مراحل را می توان مرحله تعریف مسئله چرخه حیات نامید، که هدف از آن، تدقیق یک فکر در مورد کاری که باید انجام گیرد و انتظاری که از یک نرم افزار وجود دارد.
متاسفانه بیشتر مراکز و صاحبان آثار نرم افزاری به علت مشکلات و پیچیدگی رسیدن به یک نظریه واحد و یا صاحب نظر دانستن خود و یا گروه علمی مرکز خود، در این کار اهمال کرده و نرم افزارهای تولید شده اغلب با خواسته های کاربر انطباق ندارد و یا بسیار کم است.
کاربر همواره برخی از نیازها را به عنوان امتیاز می پندارد که در ذیل به نمونه هایی از آن اشاره می گردد:
- پاسخ سریع به هنگام جستجو؛
- سهولت استفاده از راهنمای صفحات؛
- سازگاری با تمامی سیستم های عامل؛
- صفحه کلید و ترمینال مجزا و قابل تغییر؛
- بدون اشکالات نرم افزاری؛
- اجرا در کمترین زمان ممکن؛
- سهولت رفع اشکالات؛
- وجود فهرست های مناسب، مانند: فهرست کلمات، کتب، ابواب و یا موضوعات و امکان انتقال از فهرست ها به متون؛
- امکان جستجوهای مختلف در فهرست ها و متون همراه با امکان محدود کردن دامنه؛
- گرافیک مناسب و هماهنگ؛
- سهولت در نصب؛
- مستند بودن مطالب به همراه ذکر ماخذها؛
- خالی بودن متون از غلطهای حروف چینی شده و یا افتادگی کلمات و عبارات؛
- مستقل بودن برنامه به هنگام نصب و اجرا از برنامه های جانبی مانند سرورها(server) یا نرم افزارهای مولتی مدیا (Multimedia)؛
- حداقل درک تخصصی؛
- نیاز داشتن به CD یا دیسکت برای اجرا؛
- امکان یادداشت برداری و انتقال به برنامه های ویرایشی مانند: ورد، زرنگار و نشر الف.
این نیازها برای تمام پروژه های نرم افزاری، سند مهمی به شمار می آید؛ زیرا موارد یادشده مفاهیم اساسی را که بر پایه آنها یک نرم افزار مورد پذیرش قرار می گیرد، تعریف می کند.
2. تعیین نیازهای نرم افزار
یک بخش ضروری در این مرحله، ساخت الگویی است که بیان می کند نرم افزار چه کاری را باید انجام دهد، نه اینکه چگونه باید آن را انجام دهد.
البته نظر به تفاوت شاخه ها و موضوعات هر علم، این خواسته ها تغییر می کند. از این رو، برنامه ای که برای حدیث طراحی می شود با برنامه ای که برای رجال و درایه و یا فلسفه تولید می شود، فرق می کند؛ مثلاً اگر برنامه ای برای کتب فقهی طراحی می شود، نرم افزار مزبور باید بتواند کارهای ذیل را به انجام رساند:
- نمایش کامل متن همراه با جلد، صفحه و سطرهای مطابق با کتاب چاپی و نیز امکان رفتن به جلد و صفحه خاص؛
- نمایش فهرست کتب، همراه با نام مؤلف و سال وفات او؛
- نمایش فهرست و شناسنامه هر کتاب؛
- نمایش ابواب و موضوعات و امکان انتقال به متن ها؛
- وجود کتب حدیث، تاریخ، لغت و رجال و در صورت امکان استفاده از نمایشگر (Monitor)، اشاره گر (Mouse) و راست کلیک برای انتقال مستقیم از متن کتب به جستجو، لغت و رجال؛
- فهرست آیات، احادیث و اعلام با امکان انتقال از هر یک به کتب حاوی آن؛
- زندگی نامه مؤلفان؛
- امکانات عمومی مانند: جستجو، چاپ و یادداشت برداری.
بنابراین، اگر بخواهیم نرم افزاری برای رجال و درایه طراحی کنیم، در موارد 1،2، 3، 7 و 8 مشترک است ، ولی در موارد دیگر فرق می کند و قابلیت هایی همچون: مشایخ، تلامیذ، طبقه، ترجمه، مکانت، صحبت و کتب حدیث نیز لازم است در برنامه گنجانده شود.
3. طراحی معماری
هدف از مرحله طراحی معماری، تعیین ساختار نرم افزار است. الگوی ساخته شده در مرحله نخست (تعیین نیازهای نرم افزار)، نقطه شروع این مرحله است. این الگو با تخصیص وظیفه مندی ها به مؤلفه های نرم افزار و تعیین گردش اطلاعات و عملیات بین آنها، بسته به طرح معماری نرم افزار تغییر می یابد. فعالیت هایی که در این مرحله از کار به انجام می رسد، عبارت اند از:
- - شناخت معیارهای کیفیت طرح؛
- - تجزیه نرم افزار به مؤلفه ها؛
- - بررسی مزیت های نسبی میان طرح های جایگزین؛
- - تعیین ساختمان داده ها، تعیین استفاده از منابع رایانه ای و انتخاب زبان برنامه نویسی.
اما معیارهای کیفیت که از مهم ترین عوامل مؤثر در طراحی مطلوب نرم افزارها می باشد، از قرار ذیل اند:
- - دشواری خسارت وارد نمودن توسط کاربر؛
- - رعایت استاندارد در تمام سیستم ها؛
- - سهولت نگهداری؛
- - تأمین در برابر صدمات و امکان ترمیم و بازیافت صدمات احتمالی؛
- - سهولت توسعه؛
- - مستندسازی بهینه؛
- - آموزش مناسب کاربر؛
- - اجرای ارزان و کم هزینه؛
- - استاندارد بودن عملیات صفحه کلید؛
- - تطابق با اهداف حرفه ای؛
- - مقاوم در برابر ویروس ها؛
- - فهرست سازی هوشمند بدون استفاده از نمایه زنی.
4. طراحی تفصیلی و تولید برنامه
هدف این مرحله، طراحی تفصیلی نرم افزار، برنامه نویسی ، مستندسازی و آزمون آن است. گفتنی است که سند طراحی تفصیلی و راهنمای کاربر نرم افزار هم زمان با برنامه نویسی و آزمون آن تولید می شود.
طراحی سیستم، عبارت است از تهیه و ارائه مشخصات سیستمی که به منظور دستیابی به نیازهای استفاده کننده در فعالیت امکان سنجی پیشنهاد شده است. این مشخصات باید منعکس کننده نیازهای استفاده کننده باشد. از این رو، مرحله یادشده از مراحل بسیار مهم و محوری به شمار می آید. اما معیارهای کیفیت در حوزه طراحی و تولید تفصیلی برنامه عبارت است از:
- - سازگاری با بیشتر ریز پردازنده ها؛
- - نیاز به حداقل حافظه موقت؛
- - هماهنگی با تمام صفحه نمایش ها بدون احتیاج به صفحه نمایش خاص مثلاً: 600x800 Pixels؛
- - امکان استفاده ازتمامی چاپگرها حتی سوزنی؛
- - امکان کوچک نمایی برنامه؛
- - حداقل استفاده از فیلدهای Memory؛
- - کد بودن اطلاعات؛
- - استفاده و خلاقیت در طراحی تمامی فهرست، و نوارهای پیمایش Scrollزیبا.
انتقال و واگذاری نرم افزار برای بهره برداری:
در این مرحله، به منظور نصب نرم افزار به محیط عملیاتی می رویم و هدف نشان دادن اینست که تمام قابلیت های تشریح شده در سند نیازهای کاربر، در نرم افزار مربوطه موجود است.
قیمت مناسب، بسته بندی زیبا، عرضه عمومی و خدمات پشتیبانی، از جمله معیارهای کیفیت در این مرحله به شمار می رود.
5. تعیین کیفیت نرم افزار
تضمین کیفیت نرم افزار SQA، Assurance Software Quality عبارت است از طرح برنامه ریزی شده به نظم از کلیه عملیات لازم برای حصول اطمینان کافی و مناسب در خصوص انطباق عنصر یا محصول تولید شده با مشخصات فنی مورد نظر و تناسب آن با خواسته های کاربر.
این فعالیت توسط گروه تولید نرم افزار یا افراد مشخص و متخصص در تمامی مراحل تولید نرم افزار باید انجام پذیرد.
فعالیت ها:
- نظارت بر استانداردها و معیارها؛
- گزارش مشکلات و انجام اصلاحات؛
- بررسی مناسب بودن ابزارها، شیوه ها و روش ها؛
- کنترل برنامه ها و رسانه ها؛
- کنترل پیمانکارها؛
- آموزش؛
- کنترل متن اسناد
- کنترل ورود داده ها
- کنترل پردازش داده ها و دقت در کامل بودن رکوردها در هر زمان که یک فایل پردازش می گردد.
- کنترل فایل ها و ایجاد فایل پشتیبان files Backup جهت احیاء فایل های کاربردی بحرانی در موارد که فایل های اصلی خراب شده یا آسیب می بیند.
- کنترل مستندات، تمامی دستور العمل ها و مستندات باید در تمام لحظات مطابق زمان جاری باشند.
- فعالیت های آزمون: هدف از انجام آزمون 1- مجبور ساختن یک برنامه به عملکردی نادرست، 2- یافتن علل این اشتباهات، 3- اصلاح برنامه جهت کاستن از اشتباهات، پس هدف از آزمون عدم موفقیت است و نه اثبات اینکه یک برنامه کار می کند. یک برنامه می تواند تحت شرایط محیطی دلخواه به درستی کار کند ولی نتایج نادرستی را تحت شرایط پیش بینی شده ای ایجاد نماید. افراد تیم باید حداکثر توان خود را جهت ایجاد مشکل های پیش بینی نشده بکار گیرند تا فرایندهای مشکل آفرین پیش بینی نشده مشخص و اصلاح گردد.
- کنترل تولید و عرضه (رعایت شدن استانداردهای لازم در مرحله تولید انبوه، بسته بندی و عرضه).
پی نوشت ها: