নিরাপত্তা নকশা টুলচেন

ফিগমা ডিজাইন ডকুমেন্ট থেকে তৈরি একটি সেফটি মনিটর সলিউশন সরবরাহ করতে সেফটি ডিজাইন টুলচেইন ব্যবহার করুন। এই টুলগুলো ক্রমানুসারে ব্যবহার করুন।

সেফটি ডিজাইন কম্পাইলারটি সেফটি মনিটর তৈরির জন্য পরবর্তী কোড জেনারেশনকে চালনা করতে সেফটি আর্টিফ্যাক্ট তৈরি করে। ডিজাইন কম্পাইলেশন এবং কোড জেনারেশনের মধ্যে এই পৃথকীকরণ কোড জেনারেটরকে TCL-3 এর ISO-26262 রেটিং অর্জন করতে সক্ষম করে।

নিরাপত্তা নকশা টুলচেইন

চিত্র ১. নিরাপত্তা নকশা সরঞ্জাম শৃঙ্খল।

কম্পাইলার আর্টিফ্যাক্ট তৈরি করার পর, টুলচেইন একটি রিপোর্ট তৈরি করে যা একজন OEM নিরাপত্তা প্রকৌশলী ফিগমা ডিজাইন থেকে তৈরি আর্টিফ্যাক্টগুলো যাচাই করার জন্য পরিদর্শন করতে পারেন।

নিরাপত্তা নকশা টুলচেইন কর্মপ্রবাহ

চিত্র ২. নিরাপত্তা নকশা টুলচেইনের কার্যপ্রবাহ।

ডিজাইন কম্পাইলার ইনপুট

সিরিয়ালাইজড ডিজাইন ডকুমেন্টটি একটি UI ডিজাইনকে উপস্থাপন করে, যা কোনো ডিজাইন টুল থেকে ইম্পোর্ট করা হয়েছে এবং একটি টুলকিট স্কিমা দিয়ে প্রসেস করা হয়েছে। ফাইলটিতে ডিজাইন থেকে পার্স করা এই তথ্যগুলো থাকে:

  • একটি ডিজাইনের সম্পূর্ণ নোড ট্রি
  • ছবি এবং উপাদান
  • নাম, সংস্করণ এবং শেষ পরিবর্তনের তারিখের মতো মেটাডেটা

ডিজাইনের রুট নোডগুলো অবশ্যই নোড তালিকায় সংজ্ঞায়িত থাকতে হবে এবং সেগুলো ডিজাইনে চিহ্নিত নিরাপত্তা-সম্পর্কিত উপাদানগুলোর রুট নোড হতে হবে।

এই ফাইলটি অ্যান্ড্রয়েড অটোমোটিভ ওএস-এর সাথে সমন্বিত হয়ে ইন্সট্রুমেন্ট ক্লাস্টার রেন্ডার করে এবং এসডিভি মিডিয়াতে চলমান একটি হাই অ্যাভেইলেবিলিটি রেন্ডারার (HAR)-এর মাধ্যমে নিরাপত্তা-সম্পর্কিত নয় এমন উপাদানগুলোকে একটি ওভারলে হিসেবে প্রদর্শন করে, যাতে ব্যবহারকারী নিরাপত্তা-সম্পর্কিত উপাদানগুলো দেখতে পান।

ডিজাইন কম্পাইলার, ডিজাইনের নিরাপত্তা-সংক্রান্ত গুরুত্বপূর্ণ উপাদানগুলোর দৃশ্যমানতা টগল করার জন্য আউটপুট তৈরি করতে ডিজাইনকম্পোজ কাস্টমাইজেশন ব্যবহার করে। ডিজাইনটি ইম্পেলার দিয়ে হেডলেসভাবে রেন্ডার করা হয়। কাস্টমাইজেশন পরিবর্তনের মধ্যবর্তী সময়ে, সিস্টেমটি ইমেজ আর্টিফ্যাক্ট তৈরি করার জন্য রেন্ডারিং ব্যাকএন্ডে স্ক্রিনশট কমান্ড পাঠায়।

নিরাপত্তা মনিটর তৈরির জন্য নমুনা ফিগমা ডিজাইন ফাইল।

চিত্র ৩. নিরাপত্তা মনিটর তৈরির জন্য একটি নমুনা ফিগমা ডিজাইন ফাইল।

আউটপুট ডিরেক্টরি

স্থানীয় ফাইল সিস্টেমের এটি সেই স্থান যেখানে কম্পাইলার দ্বারা উৎপাদিত আর্টিফ্যাক্টগুলো সংরক্ষণ করা হয়।

JSON কনফিগারেশন ফাইল

বেশিরভাগ ক্ষেত্রেই, একজন OEM নিরাপত্তা প্রকৌশলী JSON কনফিগারেশন ফাইলটি তৈরি করেন, যেটিতে এমন মেটাডেটা থাকে যা গাড়ির নিরাপত্তা-সম্পর্কিত সেইসব তথ্য ধারণ করে যা UI ডিজাইনে অন্তর্ভুক্ত থাকে না। এই ফাইলে নিম্নলিখিত ডেটা থাকে:

  • নিরাপত্তা-সম্পর্কিত ডিসপ্লের রুট হিসেবে মনোনীত ডিজাইন এলিমেন্ট। এই ডিজাইন এলিমেন্টটির আকার গাড়ির ডিসপ্লের আকারের সমান। এর আকার অবশ্যই ডিসপ্লের রেজোলিউশনের সমান হতে হবে। সমস্ত নিরাপত্তা-সম্পর্কিত এলিমেন্ট অবশ্যই এই এলিমেন্টের ডিসেন্ডেন্ট হতে হবে। এগুলো সরাসরি ডিসেন্ডেন্ট না হলেও চলবে, বরং মধ্যবর্তী নোডের মধ্যে নেস্টেড থাকতে পারে। এই রুটটি হলো রুট নোড অবজেক্ট, এবং এর নামটি অবশ্যই ডিজাইন ডকুমেন্টের কোনো একটি নোডের সাথে মিলতে হবে।

  • ডিজাইনের জন্য নির্ধারিত ডিসপ্লে। একাধিক ডিসপ্লেতে এলিমেন্টসহ UI সমর্থন করার জন্য, কনফিগারেশন ফাইলে একাধিক ডিজাইন নির্দিষ্ট করা যেতে পারে, যেখানে প্রতিটি ডিজাইন একটি আলাদা স্ক্রিনে প্রদর্শিত হওয়ার জন্য নির্ধারিত থাকে।

  • যানবাহন বাস সিগন্যালের নাম এবং সংশ্লিষ্ট UI উপাদানগুলির একটি অভিধান। এই অভিধানের কী এবং ভ্যালুগুলি হলো:

    • কী: যানবাহন বাস সিগন্যালের নাম, যার একটি অর্থ থাকতে হবে, যাতে সিগন্যালটি সক্রিয় থাকলে সংশ্লিষ্ট UI এলিমেন্টটি দেখানো হয়। সিগন্যালটি নিষ্ক্রিয় থাকলে, সংশ্লিষ্ট UI এলিমেন্টটি দেখানো হয় না।

    • মান: যানবাহন বাস সিগন্যাল দ্বারা নিয়ন্ত্রিত নিরাপত্তা-সংশ্লিষ্ট উপাদানের ফিগমা নোড আইডি।

এই নমুনা JSON কনফিগারেশন ফাইলটি দেখুন:

{
  "documents" : [
    {
    "rootnode" : "#Stage",
    "display_id" : 1,
    "document_id": "GLJJrR1JI4HVEjL1qB40zq",
    "states" : {
      "abs": "#cluster/telltale/abs",
      "airbag": "#cluster/telltale/airbag",
      "low_tire_pressure": "#cluster/telltale/low-tire-pressure",
      "brake": "#cluster/telltale/brake",
      "traction": "#cluster/telltale/traction",
      "lowbeam": "#cluster/telltale/lowbeam",
      "hibeam": "#cluster/telltale/hibeam",
      "park_lights": "#cluster/telltale/park-lights",
      "fog_lights": "#cluster/telltale/fog-lights",
      "seatbelts" : "#cluster/telltale/no-seatbelt"
    }
    }
  ]
  ,
  "displays": [
    {
      "id": 1,
      "width": 1920,
      "height": 720
    }
  ]
 }

ডিজাইন কম্পাইলার চালান

ডিজাইন কম্পাইলার চালাতে:

/path/to/safety-design-compiler -c path/to/<input-file>.json
-o path/to/output_directory

ডিজাইন কম্পাইলারের ইনপুটগুলো এই সারণিতে বর্ণনা করা হয়েছে:

ইনপুট সংক্ষিপ্ত প্রকার বর্ণনা
কনফিগারেশন -c স্ট্রিং নিরাপত্তা কনফিগারেশন JSON ফাইলটি সংরক্ষণ করার পথ।
আউটপুট -o স্ট্রিং জেনারেট করা আর্টিফ্যাক্টগুলো সংরক্ষণ করার পাথ।

ডিজাইন কম্পাইলার আউটপুট

আপনি যখন কম্পাইলার টুলটি চালু করেন, তখন নির্দিষ্ট করা আউটপুট ডিরেক্টরিতে ডিজাইন কম্পাইলার তার আউটপুট তৈরি করে এবং সংরক্ষণ করে। এই আউটপুট সেফটি মনিটরে রানটাইম পিক্সেল টেস্ট সংজ্ঞায়িত করতে এবং পাঠযোগ্য রিপোর্ট তৈরি করতে ব্যবহৃত হেডার ফাইলগুলো তৈরি করে। ডিজাইন কম্পাইলারের আউটপুট একটি জিপ ফাইলে প্রদান করা হয়, যার মধ্যে থাকে:

  • data.json ফাইলটি হলো এক্সপোর্ট করা অ্যাসেটগুলোর রুটে থাকা একটি মেটাডেটা ফাইল, যা এক্সপোর্ট করা ডিজাইনের কাঠামো বর্ণনা করে। এই ফাইলের সমস্ত পাথ এর সাপেক্ষে আপেক্ষিক।

  • পরবর্তী কোড জেনারেশনের সময় ব্যবহৃত, নিরাপত্তা-সংশ্লিষ্ট UI এলিমেন্টগুলোর সক্রিয় অবস্থা দেখানোর জন্য বিচ্ছিন্ন UI এলিমেন্টের একাধিক চিত্র। এই চিত্রগুলোর আলফা চ্যানেলে এমন পিক্সেল তথ্য থাকে যা নিরাপত্তার উপর কোনো প্রভাব ফেলে না।

  • জেনারেট করা কোড পরীক্ষা করার সময় ব্যবহারের জন্য নিরাপত্তা-সম্পর্কিত UI উপাদানগুলোকে সক্রিয় এবং নিষ্ক্রিয় অবস্থায় দেখানোর জন্য সম্পূর্ণ UI চিত্রের একটি সিরিজ।

  • কম্পাইলার ইনপুট হিসেবে যে সিরিয়ালাইজড ফিগমা ডকুমেন্ট ব্যবহার করে, এটি তার একটি হালনাগাদ সংস্করণ। HAR টুলকিট স্কিমাতে RenderOptions::PixelPerfect ফ্ল্যাগটি সেট করার মাধ্যমে পরবর্তী প্রক্রিয়াকরণের জন্য Config.json এ নির্দিষ্ট করা টেলটেল নোডগুলোকে চিহ্নিত ও হালনাগাদ করে।

এই চিত্রে একটি ফিগমা ডিজাইন ফাইল দেখানো হয়েছে।

জিপ ফাইলের বিষয়বস্তু

চিত্র ৪. জিপ ফাইলের বিষয়বস্তু।

ইনপুট ফাইল তৈরি করুন

সেফটি মনিটর জেনারেটরের জন্য একটি data.json ইনপুট ফাইল তৈরি করুন। আউটপুটটি একটি অ্যারে হিসাবে গঠিত, যেখানে প্রতিটি নিরাপত্তা-সম্পর্কিত ডিসপ্লে উপাদানের জন্য মাত্রিক ডেটা এবং একটি ছবির লিঙ্ক থাকে। এই আউটপুট ফাইলের গঠন এই সারণিতে বর্ণনা করা হয়েছে:

উপাদান প্রকার ইউনিট বর্ণনা
static_ui_elements অভিধান প্রযোজ্য নয় ফিগমা ডকুমেন্ট থেকে সংগৃহীত, নিরাপত্তা-সম্পর্কিত সকল UI উপাদানের মেটাডেটা ধারণকারী কাঠামো।
x int পিক্সেল নিরাপত্তাসংশ্লিষ্ট উপাদানের আনুভূমিক স্থানাঙ্ক।
y int পিক্সেল নিরাপত্তাসংশ্লিষ্ট উপাদানের উল্লম্ব স্থানাঙ্ক।
width int পিক্সেল নিরাপত্তা-সম্পর্কিত উপাদানের প্রস্থ
height int পিক্সেল নিরাপত্তাসংশ্লিষ্ট উপাদানের উচ্চতা।
name স্ট্রিং প্রযোজ্য নয় ফিগমা ডকুমেন্টেশন থেকে নেওয়া নিরাপত্তা-সম্পর্কিত UI এলিমেন্টের নাম। এই এলিমেন্ট দিয়ে তৈরি করা ছবিগুলোর আপেক্ষিক পথ নির্দেশ করে।
screen UI দ্বারা নির্দেশিত স্ক্রিনটি বর্ণনা করার জন্য অভিধান।
width int পিক্সেল ফিগমা ডক UI-এর প্রস্থ।
height int পিক্সেল ফিগমা ডক UI-এর উচ্চতা।
build ডিজাইন কম্পাইলারের এই আহ্বানের জন্য বিল্ড তথ্য ধারণকারী অভিধান।
figma_document_id স্ট্রিং প্রযোজ্য নয় আর্টিফ্যাক্ট সেটটি তৈরি করতে ব্যবহৃত ফিগমা ডকুমেন্টের আইডি।
design_compiler_version স্ট্রিং প্রযোজ্য নয় আর্টিফ্যাক্ট সেট তৈরি করতে ব্যবহৃত ডিজাইন কম্পাইলারের সংস্করণ।

এই বিভাগে তৈরি করা একটি data.json ফাইলের নমুনা দেওয়া হলো:

{
 "static_ui_elements": [
   {
     "x": 71,
     "y": 663,
     "width": 38,
     "height": 47,
     "name": "cluster/telltale/no-seatbelt"
   },
   {
     "x": 149,
     "y": 667,
     "width": 40,
     "height": 39,
     "name": "cluster/telltale/low-tire-pressure"
   },
      {
     "x": 1727,
     "y": 676,
     "width": 43,
     "height": 27,
     "name": "cluster/telltale/hibeam"
   },
   {
     "x": 1810,
     "y": 675,
     "width": 43,
     "height": 30,
     "name": "cluster/telltale/lowbeam"
   },
  ...
  ...
 ],
 "screen": {
   "width": 1920,
   "height": 720
 },
 "build": {
   "figma_document_id": "taQnsdPS96wZY8dB1TbzOH",
   "design_compiler_version": "0.1.0"
 }
}

রপ্তানি করা ডিজাইন চিত্র

সিস্টেমটি সিরিয়ালাইজড ডিজাইন ডকুমেন্টে থাকা নামকরণের উপর ভিত্তি করে নিরাপত্তা-সম্পর্কিত নোডগুলোর ছবি একটি নেস্টেড ডিরেক্টরি কাঠামোতে রেন্ডার ও সংরক্ষণ করে।

তৈরি করা যাচাইকরণ চিত্রগুলির ডিরেক্টরি কাঠামো

চিত্র ৫. যাচাইকরণ চিত্রসমূহ।

সিস্টেমটি প্রতিটি নির্দিষ্ট টেলটেলের জন্য নিরাপত্তা-সম্পর্কিত উপাদানের তথ্য সংবলিত ছবি তৈরি করে। এই ছবিগুলোতে নিরাপত্তা-সংক্রান্ত গুরুত্বপূর্ণ উপাদানটির প্রত্যাশিত পিক্সেলগুলো থাকে, যখন এটি স্ক্রিনে দৃশ্যমান হয়। রান-টাইম পিক্সেল পরীক্ষার উদ্দেশ্যে সেফটি মনিটর এই ছবিগুলোর মধ্যে থাকা স্বচ্ছ পিক্সেলগুলোকে উপেক্ষা করতে পারে।

সিস্টেমটি UI টেস্টিং এবং ভেরিফিকেশন ইমেজও তৈরি করে। এটি প্রতিটি স্বতন্ত্র টেলটেল সহ সম্পূর্ণ UI-এর স্ক্রিনশট রেন্ডার করে এবং একটি পাঠযোগ্য রিপোর্ট তৈরির জন্য সেগুলো সরবরাহ করে, যাতে সেফটি ইঞ্জিনিয়াররা সুরক্ষা কনফিগারেশনটি পর্যালোচনা ও অনুমোদন করতে পারেন।

আপনি সেফটি মনিটরের পরবর্তী পরীক্ষার জন্যও এই ছবিগুলো ব্যবহার করতে পারেন। সিস্টেমটি অন এবং অফ উভয় অবস্থাতেই সমস্ত টেলটেলের জন্য যাচাইকরণ ছবি তৈরি করে।

এই ছবিগুলোতে নিরাপত্তাসংক্রান্ত সকল সক্রিয় ও নিষ্ক্রিয় উপাদানসহ নকশাটি তুলে ধরা হয়েছে।

সক্রিয় এবং নিষ্ক্রিয় নিরাপত্তা-সম্পর্কিত উপাদানসক্রিয় এবং নিষ্ক্রিয় নিরাপত্তা-সম্পর্কিত উপাদান

চিত্র ৬চিত্র ৭। সক্রিয় এবং নিষ্ক্রিয় নিরাপত্তা-সম্পর্কিত উপাদানসমূহ।

চিত্র ৮-এ সিটবেল্ট না পরার নির্দেশকটির নিরাপত্তা-সংক্রান্ত তথ্যচিত্র দেখানো হয়েছে:

সিটবেল্ট না পরার সংকেতের জন্য নিরাপত্তা-সংক্রান্ত তথ্য

চিত্র ৮। সিটবেল্ট না পরার নির্দেশক।

চিত্র ৯-এ টেলটেল-এর UI টেস্টিং এবং ভেরিফিকেশন চিত্র দেখানো হয়েছে।

টেলটেলের জন্য UI টেস্টিং এবং ভেরিফিকেশন

চিত্র ৯. টেলটেলের জন্য ইউআই টেস্টিং এবং ভেরিফিকেশন।

সিস্টেমটি কম্পাইল করা আর্টিফ্যাক্ট ফোল্ডারের প্রতিটি উপাদানের জন্য ভেরিফিকেশন ইমেজ তৈরি করে। সিস্টেমটি কোড জেনারেশন ধাপে এই ইমেজগুলো প্রসেস করে এবং সেফটি মনিটরে রানটাইম পিক্সেল টেস্টের জন্য ব্যবহারের উদ্দেশ্যে সেগুলোকে একটি হেডার ফাইলে যুক্ত করে।

মানুষের পাঠযোগ্য প্রতিবেদন জেনারেটর

একটি ফিগমা ডকুমেন্ট থেকে আর্টিফ্যাক্টগুলো তৈরি করার পর, আপনি একটি পাঠযোগ্য রিপোর্ট তৈরি করতে পারেন। রিপোর্ট জেনারেটরটি utils/human-readable-report-generator -এ অবস্থিত।

সিস্টেমটি ডিজাইন কম্পাইলার দ্বারা তৈরি নিরাপত্তা-সম্পর্কিত নোডগুলোর আর্টিফ্যাক্টগুলোকে একটি HTML ফাইলে সংক্ষিপ্ত আকারে সংরক্ষণ করে, যার মধ্যে নোডটি সক্রিয় থাকা অবস্থায় UI-এর একটি স্ক্রিনশটও অন্তর্ভুক্ত থাকে। সেফটি মনিটরটি বিল্ড করার আগে আপনি কম্পাইল করা আর্টিফ্যাক্টগুলো পর্যালোচনা করতে পারেন।

কমান্ড লাইন থেকে রিপোর্ট জেনারেটরটি চালান:

cargo run --bin human-readable-report-generator -- -d /path/to/data.json
-o /path/to/output_folder

এই সারণিতে মানুষের পাঠযোগ্য রিপোর্ট জেনারেটরের ইনপুটগুলো বর্ণনা করা হয়েছে।

ইনপুট সংক্ষিপ্ত প্রকার বর্ণনা
data_folder -d স্ট্রিং সেফটি কম্পাইলার দ্বারা তৈরি data.json ফাইলের অবস্থান।
output_path -o স্ট্রিং তৈরি করা রিপোর্টটি সংরক্ষণ করার পথ।

নিরাপত্তা অনুমোদন টুল

অনুমোদন টোকেন তৈরি করার জন্য, পাঠযোগ্য প্রতিবেদনটি পর্যালোচনা করার পর একজন নিরাপত্তা প্রকৌশলী output.json .json ফাইলের উপর নিরাপত্তা অনুমোদন স্ক্রিপ্টটি চালাতে পারেন। এই টুলটিও utils/human-readable-report-generator ফোল্ডারে রয়েছে। উদাহরণস্বরূপ:

cargo run --bin approve-hrr -- -f /path/to/compiler_inspection_output.html -n
"Your Name" -e youremail@domain.com -o output/path

পর্যালোচনার জন্য নমুনা এইচটিএমএল রিপোর্ট

চিত্র ১০। এইচটিএমএল প্রতিবেদনের নমুনা।

এই বিভাগে নিরাপত্তা অনুমোদন টুলের ইনপুটগুলো বর্ণনা করা হয়েছে।

ইনপুট সংক্ষিপ্ত প্রকার বর্ণনা
file_path -f স্ট্রিং পাঠযোগ্য প্রতিবেদনের ফাইল পাথ।
approver_name -n স্ট্রিং অনুমোদনকারী প্রকৌশলীর নাম।
approver_email -e স্ট্রিং অনুমোদনকারী প্রকৌশলীর ইমেইল ঠিকানা।
output_path -o স্ট্রিং উৎপাদিত আউটপুটের গন্তব্য।

এই বিভাগে approval_file.json এর একটি নমুনা দেখানো হয়েছে।

{
    "approver_name": //Name of the approver
    "approver_email": //Email of the approver
    "file_hash": //SHA-256 hash generated against the human readable report.
}

রেফারেন্স নিরাপত্তা মনিটর

রেফারেন্স সেফটি মনিটর হলো reference/safety-monitor এ অবস্থিত একটি রাস্ট-ভিত্তিক সার্ভিস। এই মনিটরটি ডিজাইন কম্পাইলার দ্বারা উৎপন্ন আর্টিফ্যাক্টগুলো ব্যবহার করে সিস্টেমের অবস্থা পর্যবেক্ষণ করে, যাতে ডিসপ্লে সেফটি কমপ্লায়েন্স নিশ্চিত করা যায়।

মনিটরটি একটি স্বতন্ত্র বাইনারি ( har_safety_monitor ) হিসেবে চলে এবং আর্গুমেন্ট হিসেবে data.json ফাইলের পাথ ও আর্টিফ্যাক্টগুলোর বেস পাথ গ্রহণ করে।

/path/to/har_safety_monitor --data-json-path /path/to/data.json
--artifact-base-path /path/to/artifacts

মনিটরটি নিম্নলিখিত কাজগুলো সম্পাদন করে:

  • আর্টিফ্যাক্ট লোডিং: নিরাপত্তা-সম্পর্কিত UI উপাদান এবং তাদের প্রত্যাশিত অবস্থান ও মাত্রা শনাক্ত করার জন্য data.json লোড করে।
  • গোল্ডেন ইমেজ তুলনা: বর্তমান স্ক্রিনের বিষয়বস্তুকে কম্পাইলার দ্বারা তৈরি নিরাপত্তা-সংবেদনশীল উপাদানগুলোর গোল্ডেন ইমেজের সাথে তুলনা করে।
  • যানবাহন ডেটা একত্রীকরণ: প্রতিটি নির্দেশকের প্রত্যাশিত অবস্থা নির্ধারণ করতে যানবাহন ডেটা উৎসের সাথে সংযোগ স্থাপন করে।
  • অমিল শনাক্তকরণ: গাড়ির ডেটা অনুযায়ী যা প্রত্যাশিত এবং স্ক্রিনে যা দেখা যাচ্ছে, তার মধ্যে কোনো অমিল থাকলে একটি ত্রুটি লগ করে।

সেফটি মনিটরটিকে সিস্টেম ইমেজের অংশ হিসেবে, সাধারণত একটি ডেডিকেটেড APEX-এর মধ্যে, তৈরি ও স্থাপন করার জন্য ডিজাইন করা হয়েছে।