خط تولید نرمافزار (SPL) چیست؟
خط تولید نرم افزار (Software Product Line) تکنیکها، ابزارها و امکاناتی که تولید خانواده خاصی از محصولات نرم افزاری را تسریع و تسهیل میکنند.
مثالی از این مفهوم در سایر صنایع
- شرکتهای خودروسازی مدلهای مختلف ماشین را با یک خط تولید، میسازند.
- قطعات با معماری و استانداردهای خاصی طراحی میشود.
- برای تولید هر مدل قطعات به شکل خاصی در کنار هم قرار میگیرند.
ضرورت خط تولید نرمافزار
ﺑﺤﺚ اﺳﺘﻔﺎده ﻣﺠﺪد از ﻓﺮآوردهﻫﺎی ﻣﺸﺎﺑﻪ ﭘﯿﺸﯿﻦ، ﯾﮑﯽ از ﻣﺒﺎﺣﺚ ﻣﻬﻢ در ﺣﻮزه ﻣﻬﻨﺪﺳﯽ ﻧﺮماﻓﺰار اﺳﺖ. ﺑﺎ ﮔﺴﺘﺮده ﺷﺪن ﺗﻮﻟﯿﺪات ﻫﺮ ﺷﺮﮐﺖ ﻧﺮماﻓﺰاری، ﯾﮑﯽ از ﻧﮑﺎﺗﯽ ﮐﻪ ﺑﺮای ﻣﺪﯾﺮان ﺗﯿﻢﻫﺎی ﻧﺮماﻓﺰاری و ﯾﺎ ﺣﺘﯽ ﺗﻮﺳﻌﻪدﻫﻨﺪﮔﺎن ﻋﺎدی ﻧﺮماﻓﺰار ﻗﺎﺑﻞ ﻣﺸﺎﻫﺪه اﺳﺖ، وﺟﻮد ﺑﺨﺶﻫﺎی ﺗﮑﺮارﭘﺬﯾﺮ و ﻣﺸﺎﺑﻪ در ﭘﺮوژهﻫﺎی ﻣﺨﺘﻠﻒ اﺳﺖ. ﺑﺪﯾﻦ ﺗﺮﺗﯿﺐ در ﺳﺎدهﺗﺮﯾﻦ ﺣﺎﻟﺖ، وﺟﻮد ﯾﮏ اﻧﺒﺎره ﻣﺸﺘﺮك از ﻣﺼﻨﻮﻋﺎت ﺗﻮﻟﯿﺪ ﺷﺪه اﻣﺮی ﺿﺮوری ﺑﻪ ﻧﻈﺮ ﻣﯽرﺳﺪ. اﻣﺎ اﯾﻦ ﻧﮑﺘﻪ ﺗﻨﻬﺎ دﻟﯿﻞ ﺑﺮای اﺳﺘﻔﺎده از ﺧﻂ ﺗﻮﻟﯿﺪ ﻧﯿﺴﺖ؛ ﺑﻠﮑﻪ ﺧﻂ ﺗﻮﻟﯿﺪ ﻣﻔﻬﻮﻣﯽ ﻋﺎمﺗﺮ از اﯾﻦ ﻧﮑﺘﻪ در ﺧﻮد دارد. در ﺧﻂ ﺗﻮﻟﯿﺪ ﻣﺤﺼﻮل ﺗﻼش ﻣﯽﺷﻮد ﮐﻪ ﺑﺨﺶﻫﺎی ﻣﺸﺘﺮك از ﻓﺮآﯾﻨﺪ ﺗﻮﺳﻌﻪ ﻣﺤﺼﻮﻻت ﻣﺨﺘﻠﻒ ﻧﯿﺰ ﺗﺎ ﺣﺪ اﻣﮑﺎن ﯾﮑﭙﺎرﭼﻪ ﺷﻮد. در واﻗﻊ ﺧﻂ ﺗﻮﻟﯿﺪ ﺑﺮ اﺳﺎس دو ﻣﻔﻬﻮم ﮐﻠﯿﺪی ﺑﻨﺎ ﻧﻬﺎده ﻣﯽﺷﻮد: ﯾﮑﭙﺎرﭼﻪ ﮐﺮدن دادهﻫﺎ، ﻓﺮآﯾﻨﺪﻫﺎ و ﺗﻤﺎﻣﯽ ﻣﺼﻨﻮﻋﺎت ﻣﺸﺘﺮك و ﻣﺸﺎﺑﻪ در ﯾﮏ ﺑﺨﺶ ﻣﺮﮐﺰی و ﻧﯿﺰ ﺗﻌﺮﯾﻒ ﻧﻘﺎط ﺗﻐﯿﯿﺮ ﻣﺸﺨﺼﯽ ﮐﻪ ﻫﺮ ﮐﺪام از ﻣﺤﺼﻮﻻت ﻣﺨﺘﻠﻒ در اﯾﻦ ﻧﻘﺎط ﻣﯽﺗﻮاﻧﻨﺪ ﻣﺸﺨﺼﻪای ﻣﺨﺘﺺ ﺑﻪ ﺧﻮد داﺷﺘﻪ ﺑﺎﺷﻨﺪ. ﯾﻌﻨﯽ ﺗﻮﺟﻪ ﺧﺎص ﺑﻪ دو ﻣﻔﻬﻮم تفاوتها ﺷﺒﺎﻫﺖها.
مزایای استفاده از خط تولید چیست؟
کاهش هزینهها
- کاهش کمی نیروی انسانی
- کاهش کیفی نیروی انسانی
- حذف کارهای تکراری
کاهش زمان توسعه
افزایش کیفیت
- استاندارد سازی خودکار
- فاکتورگیری از کارهای مشترک
چه خانوادهای از نرمافزارها مد نظرند؟
مشتریان هدف:
- سازمانهای متوسط و بزرگ
محصولات هدف:
- سیستمهای اطلاعاتی مبتنی بر وب بااهمیت و پرکاربرد
بستر تولید:
- Java Enterprise Edition
ویژگی قابل توجه این سیستمها:
- اهمیت کاربر در مقابل برنامهنویس
- نمیتوان در جهت ارائه تسهیلات به برنامهنویس، نیاز کاربر را ساده کرد
خط تولید شامل چه بخشهایی است؟
- ابزارهای توسعه نرمافزار
- امکانات زیرساختی
- امکانات عمومی
- الگوهای فرایند توسعه نرمافزار
1- ابزارهای توسعه نرم افزار
ابزار مدلسازی نیازمندیها
- انتخاب/ ایجاد یک استاندارد/ادبیات برای معرفی نیازمندیها
- نیازمندیها ورودی خط تولید محسوب میشوند
ابزار تولید کد
- از روی نیازمندیها کدهای منبع را تولید میکنند
- تولید کد در یک یا چند گام صورت میپذیرد
ابزار ساخت
- در محیط توسعه از روی کدهای منبع، بستههای قابل اجرا میسازند
ابزارهای نصب و به روزآوری
- در محیط بهرهبرداری بستههای اجرایی را نصب و پیکربندی میکند.
ابزارهای کنترل کیفی
- کنترل کیفیت کدهای منبع
چکهایی را روی کدهای منبع انجام میدهند
- کنترل کیفیت برنامههای اجرایی
تست صحت عملکرد: تست واحد، تست پذیرش
ارزیابی شاخصهای کیفی امنیت و کارایی
بررسی Black Box : ابزارهای Load Test
بررسی White Box: Profiler ها
2- امکانات زیرساختی
کلاسها و سایر منابع پر استفادهای
- این امکانات به خودی خود قابلیتی را پیادهسازی نمیکنند
- پیادهسازی قابلیتهای نرمافزار را تسهیل میکنند
- در زمان اجرا و بهرهبرداری وجود دارند
- مانند کلاسهای پایه، کتابخانهها، استایلها و تصاویر پرکاربرد
3- امکانات عمومی
- قابلیتهای پر استفاده در محصولات خانواده هدف را پیادهسازی میکنند
- بخشی از مسیر توسعه محصول هدف را قبلاً میپیمایند
- در زمان بهرهبرداری به شکل مولفههای اجرایی مستقل وجود دارند
- انواع مستندات تحلیل، تست، راهبری و کاربری قبلاً برای آنها آماده شده است.
نمونههایی از امکانات عمومی
- قابلیتهای امنیتی
هویت شناسی (فرم Login، فرمهای مدیریت کاربران، سرویسهای Authentication)
سرویسهای مجازشناسی (فرمهای تخصیص دسترسی، سرویسهای مجاز شناسی)
ثبت و گزارش عملیات کاربران - درگاه ورود واحد، منو و Layout یکپارچه
- گزارشات پویا
- ساختار سازمانی
تعریف درخت/ماتریس سازمانی
تعریف سمتها، متصدیان، جانشین/جانشینان - تعریف گردش کار و قواعد کسب و کار
- کارتابل سازمانی و مدیریت وظایف
4- الگوهای فرایند توسعه
الگوهای فرایند توسعه
- رعایت نکاتی در فرایند توسعه را گوشزد میکنند
- کل فرایند توسعه را محدود نمیکنند
چارچوب کلی فرایند را با نگاه به امکانات SPL مشخص میکنند
- روش مستندسازی نیازمندیها و دستهبندی آنها
- روش اولویت بندی و فازبندی موارد کاربرد
- روش پیادهسازی موارد کاربرد
- دستورالعملها و چک لیستها در مراحل مختلف
واکاوی خانواده هدف از نمای کاربری
خط تولید نرمافزار محدود به خانواده خاصی از نرمافزارها میباشد
خانواده هدف ما سیستمهای سازمانی بزرگ است
سوال مهم ؟!
- کاربر از این گونه نرمافزارها چه قابلیتهایی را انتظار دارد؟
- این قابلیتها در چه دستههایی قابل ساماندهی هستند؟
قابلیتهای امنیتی
هویت شناسی
- هویت شناسی با نام کاربری و گذرواژه
- هویت شناسی با اثر انگشت، Smart Card، Token
- مکانیزم Single Sign-on
مجازشناسی
- تخصیص دسترسی (Role-based & Activity-based)
مدیریت کاربران
تنظیمات امنیتی
ثبت وقایع و عملکرد کاربران
واسط کاربری
یکپارچگی واسط کاربری کلیه زیرسیستمها
مولفههای واسط کاربر کامل و متنوع
صحت سنجی اطلاعات
سرعت و سهولت کاربری، تعامل و پاسخگویی
امکان سفارشی سازی ظاهر و عملکرد
پشتیبانی از Localization و Internationalization
- فرمهای راستچین
- تقویم جلالی
پاسخگویی در شبکههای کم ظرفیت (در شرایط فعلی)
عملیات CRUD
مخفف Create Read Update Delete
عملیات پایه روی موجودیتهای سیستم
- ایجاد
- جستجو و مشاهده
- ویرایش
- حذف
- سایر امکانات: چاپ، Import ، Export و …
تشکیل دهنده بیش از 50 درصد موارد کاربرد
نیاز به پوشش موجودیتهای ساده و ترکیبی (Master/Detail)
مدیریت فرایندهای سازمانی
- تشکیل دهنده مهمترین و پرکاربردترین قابلیتهای سیستم
- تعریف و مدیریت گردش کار بین ایستگاههای کاری در سازمان
- مشاهده کلیه کارهای شخصی از انواع مختلف در کارتابل واحد
- پشتیبانی از روشهای متنوع تخصیص کار به افراد و سمتها
- پشتیبانی از الگوهای مختلف فرایند
- پشتیبانی از قواعد پویای کسب و کار در تعریف و هدایت فرایند
گزارشات
- تشکیل دهنده 10 تا 20 درصد موارد کاربرد
- استخراج اطلاعات از دادههای ذخیره شده
- ارائه در فرمتهای استاندارد: Excel، PDF، Html
- تولید قالبهای قابل چاپ
- امکان مشاهده آخرین وضعیت کسب و کار (Business Dashboard)
- امکان تولید گزارشات جدید (گزارشات پویا)
- امکان زمان بندی اجرای گزارشات
- امکان ارسال گزارشات از طریق رایانه
واکاوی SPL از نگاه معمار نرمافزار
مفاهیم و ابزارهای متعددی در فضای تولید نرم افزار مطرحند
تولید کننده SPL باید با اشراف و آگاهی از آنها
- رابطه خود با آنها را مشخص کند
- بهترین گزینهها را با مقایسه تطبیقی انتخاب نماید
- از بهترین گزینهها استفاده یا پیروی کند
- از سایر گزینه الهام گیرد
سوال مهم ؟؟
- اهم مسائلی که SPL باید در مورد آنها پاسخ داشته باشد چیست؟
بستر تولید و اجرای محصول
محصولات نرمافزاری بر پایه سختافزار و میانافزارهای خاصی ارائه و اجرا میشوند.
- معماری سختافزاری، سیستم عامل، پایگاه داده و Application Serverهای متعددی میتوانند محمل اجرای محصولات باشند.
با توجه به رسالت SPL وجود کمترین محدودیت مزیت جدی محسوب خواهد شد.
ISVها میتوانند با رعایت ترجیحات خود و مشتری بستر مناسب را انتخاب کنند.
جایگاه محصولات متنباز
تولید کننده SPL باید تعهد خود به محصولات متن باز را روشن کند
مزیتهای محصولات متن باز
- سرعت در کشف و رفع معایب
- سهولت دسترسی به منابع مورد نیاز
- عدم وجود بن بست در پشتیبانی
عدم دسترسی به خدمات پشتیبانی تولیدکننده اصلی
مقابله با تحریمها
- توصیه اسناد بالادستی در جهت پدافند غیرعامل
Model Driven Architecture
هدف از MDA
- استفاده از مدلسازی به عنوان زبان برنامه نویسی توصیفی
- افزایش سطح انتزاع برنامه نویسی
- تولید کدهای قابل اجرا از روی مدلهای تحلیل و طراحی
مزایا
- کاهش هزینه و زمان تولید
- مطابقت سریعتر با فناوریهای مختلف
- همخوانی مدلهای تحلیل و طراحی با محصول نرمافزاری
- استانداردسازی و تبعیت از معماری واحد
اطلاعات بیشتر:
جایگاه MDA در SPL
تولید کننده SPL باید:
- ابزارها و استانداردهای خود را برای بهره برداری از این مفاهیم مشخص نماید.
- متامدلهای خود را برای هر گام در مسیر حرکت از نیازمندیها تا کدهای منبع طراحی نماید.
- ابزارهای لازم برای تبدیل متامدلها به هم و تبدیل متامدلها به کد را تهیه نماید.
- ابزارهای لازم برای ویرایش و صحت سنجی مدلها را تهیه نماید.
جایگاه SOA در SPL
تولید کننده SPL باید:
- استانداردها و ابزارهای خود برای بهره برداری از مفاهیم SOA را روشن نماید.
- تسهیلاتی برای تولید سرویس همزمان و ناهمزمان فراهم کند.
- تسهیلاتی برای یافتن سرویس و استفاده از آن ارائه نماید.
- تسهیلاتی برای تولید سرویسهای ترکیبی (Composite) و پشتیبانی از مفاهیم Service Orchestration فراهم نماید.
- دغدغههای امنیتی در مورد سرویسها را پوشش دهد.
- رهنمودهایی برای شناسایی، تعریف و پیاده سازی سرویسها ارائه نماید.
سایر دغدغهها
- پشتیبانی از آنچه در نمای کاربری بیان شد
- مفاهیم Coding by Convention
- استفاده از مفاهیم و ابزارهای AJAX
- تولید برنامه برای موبایل
- تولید برنامه برای کارتهای هوشمند
- طرحها، تکنیکها و ابزارهای تضمین شاخصهای کیفی
رویکرد اعوان در راه اندازی خط تولید نرمافزار
WiSE مخفف Web-based Information System Elite می باشد.
سابقه شرکت اعوان در SPL چیست؟
راهبرد شرکت اعوان از بدو تاسیس (سال 83)
- رقابت در بازار با کسب مزیتهای فنی
- کاهش هزینهها با به کارگیری متدهای نوین مهندسی نرمافزار
تولید محصولات با SPL از سال 84
غنای گام به گام SPL طی پروژههای عملیاتی
شکلگیری خط تولید نرمافزار اعوان تحت عنوان: WiSE
امکانات WiSE چیست؟
ارائه امکانات در هر 4 محور خط تولید نرم افزار
- زیرساختهای پیادهسازی
- ابزارهای توسعه
- بستههای عمومی آماده و …
مبتنی بر ابزارها، کتابخانهها و محصولات متنباز
مبتنی بر زبان Java و کارپایه Java EE
سازگار با معماریهای سختافزاری، سیستم عاملها و پایگاه دادهها و Application Serverهای گوناگون
آیا WiSE امتحان خود را پس داده است؟
شرکت اعوان: قریب به اتفاق پروژههای اعوان
- نهاد ریاست جمهوری: پروژه ملی سامد
- مجلس شورای اسلامی: ارتباطات مردمی
- ایران خودرو، وزارت بهداشت و …
شرکت فناوری اطلاعات پاسارگاد
- محصول نظام جامع بیمه (مشتریان: بیمه دانا، بیمه پاسارگاد)
بنیاد شهید و امور ایثارگران: کلیه پروژههای مبتنی بر جاوا
مخابرات استان تهران
شرکت خدمات ماشینی تامین (صندوق تامین اجتماعی)
ضرورت خط تولید نرمافزار بومی
محصولات تجاری خارجی
- عدم اشراف به فناوری
- عدم دسترسی به خدمات
- تجربیات ناموفق یا نامطلوب
محصولات متن باز
- کامل نبودن محصولات موجود
- لزوم گردآوری گلچینی از محصولات متن باز
- پیکربندی، اصلاح، تکمیل و بومی سازی مجموعه
ارزش فنی
تسهیل و تسریع انجام پروژه
- استفاده کنندگان از SPL
بالا رفتن پایه استانداردهای کیفی
- سایر تولید کنندگان
ارزش اقتصادی
گردش مالی پروژههایی که یک SPL نمونه در آنها نقش داشته است؟
چند برابر شدن این گردش مالی در صورت امکان بهرهبرداری عمومی !
در نظر گرفتن صرفهجویی حاصل از به کار گیری SPL
لحاظ کردن ارزش افزوده محصولاتی که بدون SPL:
- انجام نمیشوند
- به تاخیر میافتند
- شکست میخورند