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

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

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

پیاده‌سازی فاز بعدی توسعه نرم‌افزار است. برای پیاده‌سازی صحیح و بهینه سناریو عملکرد، دانش طراحی و معماری نرم‌افزار، شناخت الگوهای طراحی و دانش کدنویسی پیشرفته مورد نیاز است.

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

 

ابزارهای توسعه و تست نقش مهمی در فرآیند توسعه نرم‌افزار نهفته ایفا می‌کنند. ابزارهای پایش و کنترل، زیرساخت‌های تست اتوماتیک، نرم‌افزارهای تولید کد اتوماتیک و کتابخانه‌های آماده، چند مثال از این ابزارها هستند.

 

ویژگی‌های کلیدی خدمت توسعه نرم‌افزار نهفته

  • تهیه سناریو عملکرد در تعامل با تیم مهندسین سیستم
  • زمان کوتاه توسعه و تست نرم‌افزار (با تکیه بر سناریونویسی، توسعه تست‌محور، ابزارهای توسعه و کتابخانه‌های آماده)
  • توسعه نرم‌افزار با کیفیت از منظر پارامترهای عملکردی و غیرعملکردی
  • معماری صحیح نرم‌افزار (استقلال بخش‌های مختلف کد از هم و تأثیر حداقلی آن‌ها بر یکدیگر، ساختار انتقال اطلاعات و . . .)
  • حداقل وابستگی نرم‌افزار به سخت‌افزار جهت ارتقاء‌ و تغییرات آینده
  • عدم وابستگی نرم‌افزار به تیم توسعه‌دهنده
  • نرم‌افزار قابل توسعه جهت ویرایش‌های بعدی محصول
  • تست و عیب‌یابی مبتنی بر مشاهده به جای حدس
  • طراحی و اجرای تست‌های دستی و اتوماتیک
  • طراحی و اجرای تست‌های استاتیک و دینامیک
  • امکان تغییر کد توسط مهندسین سیستم، از طریق ابزارهای تولید کد اتوماتیک و کتابخانه‌های سطح بالا
  • امکان تعامل مهندسین سیستم با کد در حین اجرا، از طریق ابزارهای مشاهده‌پذیری و کنترل‌پذیری
  • مستندات کامل و منطبق بر کد و سناریو عملکرد