طراحی در سطح سیستم بخش 1. از ایده تا سیستم

سلام به همه. من اغلب اصول مهندسی سیستم را در کار خود به کار می برم و می خواهم این رویکرد را با جامعه به اشتراک بگذارم.

مهندسی سیستم - بدون استانداردها، اما به بیان ساده، فرآیند توسعه یک سیستم به عنوان اجزای نسبتاً انتزاعی، بدون ارجاع به نمونه های خاص دستگاه است. در طی این فرآیند، ویژگی های اجزای سیستم و ارتباطات بین آنها برقرار می شود. علاوه بر این، لازم است که سیستم سازگار و بهینه باشد و سیستم الزامات را برآورده کند. در این آموزش تکنیک های مهندسی سیستم ها را با استفاده از مثال طراحی یک سیستم کنترل دسترسی نسبتا ساده (ACS) نشان خواهم داد.

شکل گیری معماری اولیه

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

یادآوری این نکته مهم است که از دیدگاه سیستم و معماری آن، یک جزء یک چیز نسبتاً انتزاعی است. به عنوان مثال، اگر سیستم ما دارای یک میکروکنترلر است، پس در سطح معماری فقط برای ما مهم است که یک میکروکنترلر باشد، نه اینکه STM32، Arduino یا Milander باشد. علاوه بر این، اغلب برای ما کاملاً مشخص نیست که دقیقاً چه چیزی در سیستم وجود خواهد داشت و برای ایجاد الزامات تجهیزات، نرم افزار و غیره به مهندسی سیستم ها روی می آوریم.

برای مثال خود با ACS، سعی خواهیم کرد هدف آن را فرموله کنیم. این به ما در شناسایی اجزای آن کمک می کند. بنابراین، وظیفه سیستم کنترل دسترسی اجازه دادن به دایره محدودی از افراد به اتاق است. یعنی قفل هوشمند است. در نتیجه، ما اولین جزء را داریم - نوعی وسیله که در را قفل و باز می کند! بیا بهش زنگ بزنیم قفل در

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

بیایید دوباره به آنچه به دست آوردیم نگاه کنیم. RFIDReader برخی از داده ها را می خواند، سیستم کنترل دسترسی با آن کاری انجام می دهد و بر اساس آن چیزی کنترل می شود قفل در. بیایید سوال زیر را بپرسیم - لیست افراد دارای حق دسترسی را در کجا ذخیره کنیم؟ بهترین در پایگاه داده بنابراین، سیستم ما باید قادر به ارسال درخواست ها و پردازش پاسخ ها از پایگاه داده باشد. بنابراین ما یک جزء دیگر داریم - DBHandler. بنابراین، ما یک توصیف بسیار انتزاعی، اما برای شروع کافی از سیستم دریافت کرده ایم. ما درک می کنیم که قرار است چه کاری انجام دهد و چگونه کار می کند.

به جای یک تکه کاغذ، از System Composer که یک ابزار ویژه برای مدل سازی معماری سیستم در محیط سیمولینک است استفاده می کنم و 3 کامپوننت ایجاد می کنم. در بالا من اتصالات بین این اجزا را توضیح دادم، بنابراین بیایید بلافاصله آنها را به هم وصل کنیم:

طراحی در سطح سیستم بخش 1. از ایده تا سیستم

گسترش معماری

بیایید به نمودار خود نگاه کنیم. به نظر می رسد که همه چیز خوب است، اما در واقعیت اینطور نیست. به این سیستم از دید کاربر نگاه کنید - کاربر کارت را به خواننده می آورد و ...؟ چگونه یک کاربر متوجه می شود که آیا دسترسی آنها مجاز است یا ممنوع است؟ لازم است به نحوی این موضوع را به اطلاع او برسانیم! بنابراین، بیایید یک مؤلفه دیگر اضافه کنیم - اعلان کاربر، UserNotify:

طراحی در سطح سیستم بخش 1. از ایده تا سیستم

حالا بیایید به سطح پایین تری از انتزاع برویم. بیایید سعی کنیم برخی از مؤلفه ها را با جزئیات بیشتری شرح دهیم. بیایید با کامپوننت شروع کنیم RFIDReader. در سیستم ما، این جزء وظیفه خواندن تگ RFID را بر عهده دارد. خروجی آن باید حاوی مقداری داده (UID، داده های کاربر...) باشد. اما صبر کنید، RFID، مانند NFC، در درجه اول سخت افزار است، نه نرم افزار! بنابراین، می توانیم فرض کنیم که ما به طور جداگانه خود تراشه RFID را داریم که داده های "خام" را به نوعی پیش پردازنده منتقل می کند. بنابراین، ما یک سخت افزار انتزاعی داریم که می تواند برچسب های RFID را بخواند، و نرم افزار انتزاعی که می تواند داده ها را به فرمت مورد نیاز ما تبدیل کند. به آنها زنگ بزنیم حسگر RFID и RFIDParser به ترتیب. چگونه این را در System Composer نمایش دهیم؟ می توانید یک جزء را حذف کنید RFIDReader و به جای آن دو جزء قرار دهید، اما بهتر است این کار را نکنید، در غیر این صورت خوانایی معماری را از دست خواهیم داد. در عوض، بیایید به داخل RFIDReader برویم و 2 مؤلفه جدید اضافه کنیم:

طراحی در سطح سیستم بخش 1. از ایده تا سیستم

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

طراحی در سطح سیستم بخش 1. از ایده تا سیستم

ما معماری سیستم خود را ایجاد کرده ایم، اما مشکلی در آن وجود دارد. چی؟ بیایید به نام اتصالات نگاه کنیم. در اتوبوس и اتوبوس خروجی - نام های کاملاً عادی نیستند که به توسعه دهنده کمک کنند. آنها باید تغییر نام دهند:

طراحی در سطح سیستم بخش 1. از ایده تا سیستم

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

نکته اصلی این بخش عبارت است از:

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

منبع: www.habr.com

اضافه کردن نظر