مؤسسه بینالمللی ISO و IEC با همکاری یکدیگر استانداردهای بینالمللی برای تولید نرمافزار تدوین کردهاند. استاندارد ISO/IEC 12207 در سال 1995 ارائه شد و شامل توصیههایی برای کل چرخه حیات نرمافزار است. این استاندارد به طور خاص توسط انجمن IEEE در آمریکا بومیسازی شده و مورد پذیرش وزارت دفاع آمریکا قرار گرفته است. همچنین، کشورهای پیشرفته دیگر نیز استانداردهای مشابهی را ارائه کردهاند. در نهایت، تاکید بر مستندسازی خوب و مدیریت تغییرات نرمافزار، کلیدی برای تولید نرمافزارهای با کیفیت بالا است.
با توجه به تجارت بینالملل و نیاز به استفاده از استانداردهایی که مورد قبول کشورها باشد، مؤسسه بینالمللی ISO با همکاری مؤسسه IEC با تشکیل گروههای اشتراکی (JTC1) اقدام به تدوین استانداردهای بینالمللی برای تولید و مستندسازی محصولات نرمافزاری نمودند. استاندارد ISO/IEC 12207 که در سال 1995 ارائه شد توصیههایی برای کل چرخه ساخت و حیات یک محصول نرمافزاری پیشنهاد کرده است.
پس از آن انجمن IEEE که مهمترین انجمن حرفهای بینالمللی در تدوین استانداردهای مهندسی نرمافزار است به کمک مؤسسه EIA اقدام به بومیسازی استاندارد 12207 در جامعه امریکا نمود و نسخه بومی شده و بهتر توصیف شده آن تحت عنوان IEEE/EIA 12207 را ارائه نمود. نهایتاً DOD امریکا که چهار دهه است استانداردهای متعددی را برای تولید و مستندسازی محصولات نرمافزاری ارائه کرده است با پذیرش استاندارد IEEE/EIA 12207 ، استانداردهای قبلی خود یعنی J-STD-016-1995 و MIL-STD-498 را از رده خارج کرد. یادآوری میگردد سایر کشورهای پیشرفته مانند ژاپن، آلمان، انگلستان، کانادا، … نیز اقدام به بومیسازی استاندارد ISO/IEC 12207 در کشور خود نمودهاند.
این گزارش بصورت اجمالی استانداردهای مهندسی نرمافزار تدوین شده توسط DOD امریکا، سازمان NASA، آژانس فضایی اروپا، مؤسسه IEEE و مؤسسه ISO/IEC را تشریح مینماید. علاوه بر آن دو زبان PSL/PSA و UML را که به ترتیب برای مدلسازی محصولات نرمافزاری بر اساس روش ساختیافته و شیگرا هستند، و نهایتاً ابزارها و محیطهای پشتیبانی تولید نرمافزار را معرفی میکند.
در بخش بعدی این طرح ملی، استاندارد ISO/IEC 12207 بعنوان استاندارد مرجع تولید و مستندسازی محصولات نرمافزاری انتخاب میگردد امّا سعی میشود با استفاده از استانداردهای MIL-STD-498 و IEEE/EIA 12207 و الزامات خاص کشور ایران، استاندارد مستندسازی محصولات نرمافزاری ایران تهیه و تدوین و در گزارش بعدی ارائه گردد.
شناخت نرم افزار به عنوان محصولی زنده
نرمافزار در مقایسه با سایر محصولات و مصنوعات تولیدی یک تفاوت مهم و اساسی دارد. مصنوعات (مانند اتومبیل، تلویزیون، یخچال، …) بر اساس یک مجموعه وظیفهمندی قطعی ساخته میشوند و پس از آن در وظیفهمندیهای مصنوع تغییری ایجاد نمیگردد. البته ممکن است وظیفهمندیهای هر مصنوع، کم یا زیاد شود امّا هرگونه تغییر در وظیفهمندیها منجر به ساخت مدل جدیدی از آن مصنوع میگردد و کسی انتظار ندارد که این وظیفهمندیهای جدید در مدلهای موجود اعمال گردند.
امّا نرمافزار پس از تولید اولیه تا پایان عمر در حال تغییر و تحول است و بایستی متناسب با نیازها، سیاستها، و قوانین جدید تغییر یابد. بنابراین بهتر است نرمافزار با یک موجود زنده به جای یک مصنوع مقایسه گردد. بدیهی است نرمافزاری را میتوان به راحتی و به شکل صحیح تغییر داد که راجع به آن به اندازه کافی اطلاعات در دسترس باشد. چنانچه خواستههای اولیه، طراحی، چگونگی پیادهسازی و آزمون نرمافزارها در مراحل ساخت به خوبی مستند شوند در اینصورت اعمال تغییرات در نرمافزارها به راحتی قابل مدیریت و انجام است. بدیهی است که تأثیر تغییرات جدید بایستی در مستندات سیستم اعمال گردد تا مستندات آخرین وضعیت سیستم نرمافزاری را نمایش دهند.
آشنایی با استانداردهای طراحی اپلیکیشن
چهار دهه از شروع اقدامات اولیه برای ساماندهی پروسه تولید نرمافزار میگذرد. اوایل به دلیل فقدان یک رویه منظم (متدولوژی) برای طی پروسه تولید نرمافزار، مشکلات زیادی فراروی تولید کنندگان نرمافزار بود که نتیجه آن کیفیت ضعیف نرمافزارهای تولیدی، سربار هزینهای، و عدم تحقق برنامههای زمانبندی شده بود.
کمکم نیاز به تدوین متدولوژی، مدل ساخت، و تبعیت از آنها در پروسه ساخت نرمافزار بیشتر ملموس شد و در این چهاردهه متدولوژیهای زیادی تدوین شد و با بکارگیری آنها، نرمافزارهای با کیفیت بیشتری تولید شد. این متدولوژیها عموماً روی یکی از دو روش ساختیافته یا شیگرا پایهگذاری شدهاند. متدولوژیهای بر پایه روش ساختیافته در اواسط دهه 80 میلادی کاملاً به بلوغ خود رسیدند و متدولوژیهای بر پایه شیگرایی نیز با طراحی زبان مدلسازی UML سریعتر به سمت وحدت و بلوغ خود نزدیک شدند. در همین راستا، مؤسساتی با بهرهگیری از تجربیات حاصل از دهها سال تولید نرمافزار اقدام به تدوین استانداردها و توصیههایی برای تولید نرمافزار نمودند. مؤسساتی که در تدوین استانداردهای مورد نیاز صنعت نرمافزار پیشرو هستند عبارتند از مؤسسه DOD(1.Department of Defense) (بزرگترین کارفرمای متقاضی تولید نرمافزار)، سازمان NASA، آژانس فضایی اروپا، مؤسسه IEEE (بزرگترین انجمن حرفهای در رشته IT ( 2. Information Technology))، و مؤسسه تدوین استاندارد ISO.
استانداردهای مهندسی نرمافزار مجموعهای از پروسهها میباشند که تمامی وظایفی که بایستی در چرخه تولید و بکارگیری یک محصول نرمافزاری انجام شود را بیان میکنند. نکته مهم اینست که این پروسهها چگونگی انجام یک وظیفه را بیان نمیکنند بلکه صرفاً مجموعهای از وظایف و فعالیتها را بیان میکنند که بایستی در دورههای زمانی معینی انجام شوند. این رویه در تمامی استانداردهای مهندسی نرمافزار رعایت میشود تا اولاً آنها فراتر از یک متدولوژی عمل کنند و ثانیاً اجازه دهند مهندسین نرمافزار بر حسب نوع محصول نرمافزاری از متدولوژی که چگونگی انجام وظایف را بیان میکند، استفاده کنند. نکته جالب توجه اینست که استانداردهای جهانی حتی از نظر نوع نگرش مهندسی نرمافزار (ساختیافته یا شیگرا) نیز خود را محدود نکردهاند و توصیهها و قوانینی را مطرح کردهاند که در هر دو دیدگاه قابلیت استفاده دارند.
متأسفانه به علت فقدان استاندارد یا لااقل توصیهای واحد برای مستندسازی محصولات نرمافزاری و بیتوجهی سازندگان نرمافزار و کارفرمایان، نرمافزارهای تولید شده در ایران اکثراً فاقد حداقل مستندات لازم هستند. البته فشار کارفرمایان به پیمانکاران برای کاهش هزینه تولید نرمافزار عموماً منجر به حذف و یا کم رنگ شدن بخش مستندات سیستمهای نرمافزاری شده است. یادآوری میگردد بطور متوسط 30% هزینه تولید هر نرمافزار صرف تهیه مستندات آن سیستم میگردد.
در این طرح ملی در نظر است توصیههایی ارائه گردد تا حداقل مستندات لازم برای هر محصول نرمافزاری توسط تولیدکنندگان نرمافزار تهیه گردد. در این گزارش سعی شده است شناختی از استانداردهای اصلی مهندسی نرمافزار با تکیه بر مستندسازی بصورت اجمالی ارائه گردد. در این راستا، استانداردهای مهندسی نرمافزار تدوین شده توسط DOD ، سازمان NASA ، آژانس فضایی اروپا، مؤسسه IEEE ، و مؤسسه ISO/IEC جمعآوری شده که هر یک از آنها بطور خلاصه معرفی میگردد.
با توجه به مطالب ارائه شده در بخش دوم این گزارش، استاندارد ISO/IEC 12207 بعنوان استاندارد مرجع تولید و مستندسازی سیستمهای نرمافزاری انتخاب میگردد. امّا سعی میشود با استفاده از استانداردهای MIL-STD-498 ، J-STD-016-1995 و IEEE/EIA 12207 و الزامات خاص کشور ایران، استاندارد مستندسازی محصولات نرمافزاری ایران تهیه و در گزارش بعدی ارائه گردد.
در ادامه این گزارش، ابتداء اصول و تحولات استانداردهای مهندسی نرمافزار در بخش دوم شرح داده میشود. سپس به ترتیب، استانداردهای DOD ، سازمان NASA ، آژانس فضایی اروپا، مؤسسه ISO/IEC و مؤسسه IEEE هر یک در یک بخش مستقل بطور خلاصه معرفی میگردد. در بخشهای هشتم و نهم گزارش، دو زبان PSL/PSA و UML که به ترتیب زبانهای مدلسازی بر اساس روش ساختیافته و روش شیگراء هستند معرفی میگردد. این زبانها مخصوصاً UML میتوانند تاثیرات خوبی بر استانداردسازی مستندات محصولات نرمافزاری بگذارند. نهایتاً در بخش دهم، ابزارها و محیطهای پشتیبانی تولید نرمافزار و چند نمونه از آنها بصورت اجمالی معرفی میگردد.
سازگاری اپلیکیشن با انواع اسکرین
اندازه، طول و عرض صفحه نمایش دستگاهها مختلف از مواردی است که در طراحی اپلیکیشن موبایل بایستی به آن توجه نمایید. گوشی هایی که امروزه توسط شرکت های مختلف طراحی می شوند، طول و عرض مختلفی دارند که باید اپلیکیشن شما، با تک تک آن ها سازگاری داشته باشد و واکنش گرا بودن آن یک اصل اساسی در طراحی محصولات دیجیتال است.
امکان بروزرسانی اپلیکیشن موبایل
احتمالا در اکثر اپلیکیشن هایی که نصب کرده اید، متوجه شده اید که هر چند وقت یک بار اپلیکیشن نصب شده. نیاز به اپدیت شدن و بروزرسانی دارد. توسعه دهندگان برای عواملی از قبیل تغییرات ظاهری، رفع باگ و دیگر موارد نسخه های جدیدی از اپلیکیشن را جهت بهبود ارائه می دهند.
امنیت
امنیت یکی از عواملی است که همیشه از اهمیت بالایی برخوردار بوده و خواهد بود این مسأله در مورد اپلیکیشنها هم صادق است. بنابراین امنیت یکی از استاندارد های طراحی اپلیکیشن علی الخصوص برای اپلیکیشنهایی که اطلاعات مهم شخصی و اطلاعات بانکی اشخاص را ذخیره میکنند، امنیت یک رکن اساسی و مهم به شمار میرود. پس اگر می خواهید به یک توسعه دهنده موبایل موفق تبدیل شوید، امنیت در طراحی اپلیکیشن موبایل از مهمترین نکاتی می باشد که باید به آن توجه کنید.
حفاظت از حریم شخصی
حفاظت از حریم شخصی یکی از مهم ترین شرایط انتشار اپ شما در مارکت های مختلف مانند گوگل پلی است. توسعهدهندگان باید سیاستهای حریم شخصی گوگل پلی را رعایت کرده و اطلاعات شخصی کاربران را محافظت کنند. همچنین باید به کاربران اطلاع دهند که چگونه از اطلاعاتشان استفاده میشود و موافقت آنها را جلب کنند تا حریم شخصی آنها رعایت شود.
حقوق مالکیت فکری
حقوق مالکیت فکری در اپلیکیشنها به حفاظت از مالکیت ادبی و فنی شامل علامتهای تجاری، کدهای منبع و ایدهها اشاره میکند. توسعهدهندگان باید از حقوق مالکیت فکری پیروی کرده و از نسخهبرداری غیر مجاز و استفاده بدون اجازه از منابع آنها جلوگیری کنند تا مالکیت و ارزش اپلیکیشنها حفظ شود.
مراقبت از اطلاعات مالی
مراقبت از اطلاعات مالی در اپلیکیشنها به معنای ایجاد سیستمها و فرایندهای امن برای ذخیره و انتقال اطلاعات مالی کاربران است. این امر شامل استفاده از رمزنگاری قوی و استانداردهای امنیتی، جلوگیری از دسترسی غیرمجاز به اطلاعات و مراقبت از اطلاعات کارت اعتباری و اطلاعات حساب بانکی کاربران است. این اصول اهمیت بسیاری در حفاظت از حریم شخصی و اعتماد کاربران به اپلیکیشن در گوگل پلی دارند.
رعایت قوانین منطقهای
رعایت قوانین منطقهای در اپلیکیشنها به معنای پیروی از قوانین و مقررات مخصوص هر منطقه یا کشوری است که اپلیکیشن در آن منطقه منتشر میشود. این امر شامل رعایت مقررات مالی، حریم شخصی، حقوق مالکیت فکری و دیگر مقررات قانونی مربوط به آن منطقه میشود. پایبندی به این قوانین از اهمیت بسیاری برخوردار است تا از مشکلات حقوقی جلوگیری شده و ارتباط خوب با مقامات منطقهای حفظ شود.
رعایت سیاستهای تبلیغاتی
رعایت سیاستهای تبلیغاتی به معنای انطباق با مقررات و قوانین مربوط به تبلیغات در پلتفرم Google Play است. این امر شامل ممنوعیت تبلیغاتی مثل تبلیغات تقلبی، نادرست یا تبلیغاتی که با حریم شخصی کاربران در تضاد هستند، میشود. رعایت این سیاستها ضمانتی برای حفظ اعتماد کاربران به اپلیکیشن و پیشگیری از مشکلات حقوقی خواهد بود.
اینکه نرمافزار را به یک موجود زنده تشبیه کنیم، ما را ناخواسته به این فکر میاندازد که آیا میتوانیم از این زندهبودن بهرهبرداری مثبت کنیم یا فقط به عنوان یک مسئولیت بیشتر در نظر بگیریم؟ وجود تغییرات مداوم و نیاز به تطابق با نیازها و سیاستها، طرز فکر را نسبت به نرمافزار تغییر میدهد. ممکن است در این بین، مرز بین خلاقیت و کنترل دچار تردید شود و این سوال ایجاد شود که آیا واقعاً میتوانیم هر بار با تغییرات جدید نرمافزارها را بهبود دهیم؟ چقدر باید به اثرات تغییرات ایمان داشته باشیم تا بهاصطلاح "زندگی" نرمافزار را درک کنیم؟





