एंबेडेड सॉफ्टवेयर डिजाइनिंग


11

मैं एक आरटीओएस का उपयोग करके एम्बेडेड सॉफ़्टवेयर प्रोग्रामिंग में शुरू कर रहा हूं और, चूंकि मैं पहले से ही डेस्कटॉप अनुप्रयोगों के लिए डेवलपर हूं, इसलिए मैं सोच रहा था कि यह यूएमएल आरेखों का उपयोग करके एम्बेडेड सॉफ़्टवेयर की तरह क्या है, जैसे गतिविधि डायग्राम, अनुक्रम डायग्राम, उपयोग मामले आदि।

क्या यूएमएल का उपयोग करके एम्बेडेड सॉफ़्टवेयर डिज़ाइन किया गया है, उसी तरह डेस्कटॉप अनुप्रयोग? क्या यह सबसे अच्छा विकल्प है या कोई बेहतर है? क्या मेरे कुछ उदाहरण हो सकते हैं?

क्या कोई विशिष्ट उपकरण है जो ऐसा करता है?


8
एम्बेडेड अनुप्रयोगों के बारे में कुछ भी विशिष्ट नहीं है। क्या विशेष है संसाधन प्रतिबंधित अनुप्रयोग , इस तरह के प्रतिबंधों का सबसे आम समय पर प्रतिबंध है, उदाहरण के लिए कठिन वास्तविक समय की आवश्यकताएं। यदि आप हमें अपने आवेदन के लिए आवश्यकताओं के बारे में अधिक बताते हैं, तो हम आपको एक विशिष्ट उत्तर देने के लिए तैयार हो सकते हैं।
राउटर वैन Ooijen

3
मैं पूरी तरह से @ Wouter की टिप्पणियों के साथ संसाधन के बारे में सहमत हूं, लेकिन मुझे विश्वास है कि आरटीओएस बनाम सॉफ्ट-शेड्यूल किए गए डेस्कटॉप डेवलपमेंट वातावरण का उपयोग करने से जुड़े विशिष्ट डिजाइन की बारीकियां हैं जहां कॉल को ब्लॉक करना एक स्वीकृत अभ्यास है।
हाइकऑनपास्ट

1
एम्बेडेड सिस्टम के अतिव्यापी से सावधान रहें। यह भी देखें "द किंग्स टोस्टर" ee.ryerson.ca/~elf/hack/ktoast.html
drxzcl

2
@drxzcl - असहमत। सबसे पहले, मुझे नहीं लगता कि अंतरिक्ष योग्य सॉफ़्टवेयर डिज़ाइन करते समय आप बहुत अधिक देखभाल कर सकते हैं । दूसरे, राजा के टोस्टर के लिए इंजीनियर का दृष्टिकोण यही कारण है कि इतनी रोटी जल जाती है। अधिकांश टोस्टर वास्तव में एक गैर-तुच्छ काम है।
रॉकेटमैग्नेट

1
@ कैसियो: मैं इस एक पर राउटर के साथ हूं। आपको स्वयं समस्या का विश्लेषण करना होगा, और फिर जो भी सिस्टम आपको उचित लगे, उसका उपयोग करते हुए महत्वपूर्ण भागों को मैप करें। समस्या का विश्लेषण करने से पहले एक प्रतिनिधित्व चुनने में समस्या यह है कि आप समस्या को एक निश्चित तरीके से देखते हुए फंस जाते हैं। यूएमएल एक प्रतिनिधित्व है जिसकी उद्यम सॉफ्टवेयर में जड़ें हैं, और आप उद्यम सॉफ्टवेयर जैसे एम्बेडेड सॉफ्टवेयर को डिजाइन करने का लालच नहीं देना चाहते हैं।
drxzcl

जवाबों:


8

यूएमएल के लिए रियल टाइम एक्सटेंशन हैं जो एक कंपनी द्वारा लोकप्रिय थे, जिसका नाम फिलहाल मुझे बचता है। मुझे याद है कि कई साल पहले इस पर एक पेपर किया गया था। ब्रूस पॉवेल डगलस ने यूएमएल का उपयोग करके एम्बेडेड सिस्टम मॉडलिंग के विषय पर कुछ किताबें लिखीं, लेकिन उनकी कंपनी वह नहीं है जिसके बारे में मैं सोच रहा हूं।

कहा कि, राउटर को प्रतिध्वनित करने के लिए, प्रति एम्बेडेड सॉफ्टवेयर के बारे में कुछ खास नहीं है। मैं हर दिन पेंटियम-क्लास प्रोसेसर पर चलने वाली प्रणाली के लिए एम्बेडेड सॉफ़्टवेयर लिखता हूं; यूएमएल काफी लागू है। यह भी याद रखें कि समय के साथ यूएमएल में नियंत्रण सॉफ्टवेयर के कई पहलुओं को जोड़ा गया है: अनुक्रम डायग्राम्स में प्रतिक्रिया समय के साथ सिंक्रोनस या एसिंक्रोनस घटनाओं को निर्दिष्ट करने के लिए वाक्यविन्यास है, पेट्री नेट प्रकार का व्यवहार गतिविधि डायग्राम, स्टेटचर्ट्स मॉडल व्यवहार में और भी बेहतर पाया जा सकता है। स्टेट डायग्राम्स की तुलना में, आदि।

OTOH, बहुत से लोग संरचित डिज़ाइन और डेटाफ़्लो अवधारणाओं का उपयोग करके एम्बेडेड सॉफ़्टवेयर को मॉडल करना पसंद करते हैं। यह सब उस प्रकार के सिस्टम के बारे में है जिसे आप डिज़ाइन कर रहे हैं और जो सबसे अच्छा काम करता है।


धन्यवाद @lyndon लेकिन आप एम्बेडेड सॉफ़्टवेयर को रोज़ कैसे मॉडल करते हैं? क्या आपको लगता है कि एक्टिविटी डायग्राम, स्टेट मशीन और सीक्वेंस डायग्राम, ट्रिक करेंगे? मैं वास्तव में इस अवधारणा की तलाश कर रहा हूं कि क्या डिज़ाइन करना है, तो डिज़ाइन किए गए दस्तावेज़ों में सम्मिलित होने के लिए क्या योजनाएँ हैं, अगर एम्बेडेड सिस्टम के लिए एक है।
कैसियो जूल

मेरे द्वारा देखे जाने वाले सबसे अधिक लगातार निर्माण दिन / दिन उपयोग के लिए स्टेट डायग्राम / स्टेटचैट्स और सीक्वेंस डायग्राम हैं। मुझे ईमानदारी से लगता है कि हम क्लास आरेखों का अधिक उपयोग कर सकते हैं, लेकिन मुझे लगता है कि लोगों में "बड़े पैमाने पर" देव वस्तुओं को बनाने की प्रवृत्ति है। ओह: मैं जिस कंपनी के बारे में सोच रहा था वह कारीगर सॉफ्टवेयर है। यह लिंक जानकारीपूर्ण हो सकता है: werner.yellowcouch.org/Papers/rtuml/index.html#toc7
lyndon

5

आरटीओएस की ओर मुड़ते समय, हम आम तौर पर एक ऐसे अनुप्रयोग से निपटते हैं जिसमें कई समवर्ती कार्य होते हैं, जिन्हें समय-समय पर उनकी समय सीमा को पूरा करने या संसाधनों को सुरक्षित रूप से साझा करने के लिए उनमें से प्रत्येक के लिए उपयुक्त रूप से अनुसूचित होने की आवश्यकता होती है। RTOS फ्रेमवर्क जिसे आप एक कार्य अनुसूचक के रूप में लागू करते हैं, और आपका काम (आमतौर पर) इन व्यक्तिगत कार्यों को गुणों के एक निश्चित सेट (अवधि, प्राथमिकता, आदि) के साथ लिखना है और फिर इसे अनुसूचक को सौंप देना है। इसलिए प्रलेखन के लिए, मैं जिस दृष्टिकोण को ले जाऊंगा, वह प्रत्येक कार्य को ध्यान से दस्तावेज करना होगा।

अधिकांश एम्बेडेड सॉफ़्टवेयर और, जहाँ तक मुझे पता है, अधिकांश आरटीओएस को एक वस्तु उन्मुख भाषा में नहीं लिखा गया है और इस प्रकार बहुत सी चीजों से लाभ नहीं हो सकता है जो उदाहरण के लिए वर्ग आरेखों की तरह हैं।

हालांकि, अपने RTOS कार्यों का दस्तावेजीकरण करते समय, कोई भी आरेख जो कार्य का अच्छी तरह से वर्णन करता है, एक बहुत अच्छा लाभ होगा। मैं कल्पना करूँगा कि प्रत्येक कार्य के लिए एक अनुक्रम आरेख उदाहरण के लिए बहुत उपयोगी हो सकता है। इसके साथ ही आप इसकी अवधि / आवृत्ति, प्राथमिकता, जैसे किसी भी साझा संसाधनों का उपयोग कर सकते हैं, पूर्व-उत्सर्जन आवश्यकताओं, आदि का भी अपनी आवश्यकताओं को निर्दिष्ट कर सकते हैं। मूल्य का भी दस्तावेज हो सकता है कि आपने RTOS और शायद एक राज्य को कैसे कॉन्फ़िगर किया है- इसकी शेड्यूलिंग एल्गोरिथ्म की मशीन।

इस सलाह को आप चाहे जैसे भी लें, मैंने अपने कॉलेज के दिनों से RTOS सामान के साथ कोई खिलवाड़ नहीं किया है, और कभी भी काम का "दस्तावेज" नहीं किया है।


धन्यवाद @JonL इसलिए, एक अच्छा डिज़ाइन दस्तावेज़ होने के लिए, मुझे अपने आवेदन में शामिल कार्यों को डिज़ाइन करने की आवश्यकता होगी? इसके अलावा, मैं शेड्यूलिंग एल्गोरिथ्म से बहुत परिचित नहीं हूं, मुझे इसके साथ कभी नहीं निपटना है। मैं RTEMS का उपयोग कर रहा हूं।
कैसियो

@ कैसियो, मैं आपको एक काम या कोई अन्य करने के लिए नहीं कह रहा हूं, यह वास्तव में आप पर निर्भर है। बस वह करने की कोशिश करें जो आवश्यक है। यदि आप अपने आरटीओएस से अपरिचित हैं, तो मुझे लगता है कि बस इसके साथ शुरुआत करनी चाहिए और आपको इसका उपयोग कैसे करना चाहिए, इसे शुरू करने के लिए एक अच्छी जगह होगी। फिर आप इसके चारों ओर अपने कार्यों को डिजाइन करना शुरू कर सकते हैं।
जॉन एल

हां, मैं अभी भी RTOS सुविधाओं से परिचित हूं। और सुझाए गए दृष्टिकोण के लिए धन्यवाद! करूंगा! और जैसा कि मैंने पहले कहा था, मैं एम्बेडेड सॉफ्टवेयर में नया हूँ, मुझे वास्तव में यकीन नहीं है कि क्या आवश्यक है। एंबेडेड सॉफ्टवेयर आर्किटेक्चर या डिज़ाइन डॉक्यूमेंट का होना अच्छा होगा। क्या आप उनमें से एक होंगे?
कैसियो जूल

"अधिकांश आरटीओएस एक वस्तु उन्मुख भाषा में नहीं लिखे गए हैं" वास्तव में। लेकिन वास्तविक समय में मॉडलिंग और कार्यान्वयन के लिए हम C ++ में एक सरल (गैर-निवारक) RTOS का उपयोग करते हैं।
राउटर वैन Ooijen

5

मॉडलिंग सब के बारे में है

  • यह जानना कि आपके आवेदन में कौन सा पहलू कठिन और जटिल है,

  • उस पहलू के लिए उपयुक्त एक मॉडलिंग टूल / भाषा / अमूर्तता / सम्मेलन / अंकन प्राप्त करना

  • उस पहलू को डिजाइन करना

इसलिए सभी स्थितियों के लिए कोई मॉडलिंग टूल / एप्रोच / आदि उपयुक्त नहीं है। एक उपग्रह संभवतः एक से अधिक प्रोसेसर के साथ एक वास्तविक समय का मल्टी-टास्किंग सिस्टम होगा। कार्य संरचना आरेख, एसटीडी, और अनुक्रम आरेख संभवत: उपयोगी हैं (केवल कुछ नाम देने के लिए)। यदि परियोजना सी में किया जाता है तो एक वर्ग आरेख उपयोगी होने की संभावना कम है (यदि यह बहुत उपयोगी है, तो सी के लिए विकल्प शायद गलत था)। मैं UseCases का बहुत शौकीन नहीं हूं, और एक उपग्रह के एक सिच का कोई उपयोगकर्ता नहीं है। ऐसे मामलों में उपयोग के मामले सबसे उपयुक्त होते हैं, जहां आप गैर-तकनीकी उपयोगकर्ता के साथ अपने सिस्टम की आवश्यकताओं पर चर्चा करना चाहते हैं। यदि यह स्थिति है कि आप एक उपग्रह परियोजना के साथ हैं तो कुछ गलत हो गया है।


धन्यवाद @ राउटर। आपने मेरे लिए एक नई अवधारणा पेश की है: टास्क स्ट्रक्चर डायग्राम, अच्छा! तो, यह सी में है। आपके पास सभी आवश्यकताओं के साथ एक दस्तावेज होगा, यदि UseCases नहीं?
कैसियो

IMO के लिए आपको पहचान योग्य, अधिक या कम एकल-उपयोग की आवश्यकताओं की एक सूची की आवश्यकता होती है, यदि केवल आपके परीक्षण मामलों को आधार बनाने के लिए। मेरे लिए UseCases इस तरह की एक सूची के लिए सिर्फ एक विधि है। एक अच्छी विधि, कुछ मामलों में।
राउटर वैन Ooijen

1

मैंने ऐसा कुछ भी नहीं बनाया है जो अंतरिक्ष योग्य हो। लेकिन मैंने रक्षा विभाग (DoD) के एयरोस्पेस सब-कॉन्ट्रैक्टर के लिए काम किया है और मेरे बहुत सारे डिजाइन उड़ान योग्य थे। उन्हें आपके डिजाइनों पर बहुत सारे प्रलेखन की आवश्यकता होती है और डेटा आइटम विवरण (डीआईडी) प्रदान करते हैं जो कि वास्तव में वे देखना चाहते हैं।

यदि आप "सॉफ़्टवेयर" को "वर्ड (एस) इन टाइटल" फ़ील्ड में टाइप करते हैं और सबमिट करें पर क्लिक करने के लिए आवश्यक सभी दस्तावेज़ों को देखने के लिए DoD ASSIST क्विक सर्च का उपयोग कर सकते हैं । (मुझे यह मज़ेदार लगता है कि DoD साइट एक प्रमाणपत्र सुरक्षा चेतावनी फेंकता है, लेकिन मैं आपको विश्वास दिलाता हूं, यह सुरक्षित है)।

चूंकि आप विशेष रूप से एक डिज़ाइन दस्तावेज़ के बारे में पूछते हैं, तो यहां सॉफ़्टवेयर डिज़ाइन विवरण (एसडीडी) डीआईडी ​​है। वे डिजाइन के प्रत्येक भाग का वर्णन करने के लिए शब्दों के उपयोग पर जोर देते हैं। लेकिन अगर यूएमएल, स्टेट डायग्राम्स, फ्लोचार्ट्स, स्यूडो-कोड आदि का उपयोग डिजाइन की समझ को बढ़ा सकता है, तो वे निश्चित रूप से आप इसे शामिल करना चाहेंगे।

आप जो मॉडलिंग विधि चुनते हैं, जैसा कि दूसरों ने कहा है, आप पर निर्भर करता है। लेकिन मुझे लगा कि एयरोस्पेस सॉफ्टवेयर के लिए डीआईडी ​​देखने से आपको अपने डिजाइन दस्तावेज़ को लिखने में मदद मिल सकती है क्योंकि आपका प्रोजेक्ट अंतरिक्ष से संबंधित है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.