Системалык деңгээлде дизайн. 1-бөлүк. Идеядан системага

Баарына салам. Мен жумушумда системалык инженерия принциптерин көп колдоном жана бул ыкманы коомчулук менен бөлүшкүм келет.

Системалык инженерия - стандарттарсыз, бирок жөн эле айтканда, бул системаны белгилүү бир түзүлүш үлгүлөрүнө шилтеме жасабастан, абстракттуу компоненттер катары иштеп чыгуу процесси. Бул процесстин жүрүшүндө системанын компоненттеринин касиеттери жана алардын ортосундагы байланыштар түзүлөт. Мындан тышкары, системаны ырааттуу жана оптималдуу кылуу жана система талаптарга жооп бериши керек. Бул окуу куралында мен жетишерлик жөнөкөй мүмкүндүктү башкаруу тутумун (ACS) долбоорлоонун мисалында системалык инженерия ыкмаларын көрсөтөм.

Баштапкы архитектураны түзүү

Кандай гана система болбосун, жаңыдан өнүгө баштаганда башыбызда же кагазда жебелери бар тик бурчтуктар пайда болот. Мындай тик бурчтуктар компоненттери системалары. Жана жебелер байланыштар компоненттеринин ортосунда. Жана биз көп учурда отуруп, биз аныктаган бардык компоненттер бири-бири менен кантип иштей тургандыгы жөнүндө ойлонууга убактыбыз жок жана аягында биз ашыкча дизайндарды ойлоп таап, бир топ балдактарды түзө баштайбыз.

Системанын жана анын архитектурасынын көз карашынан алганда, компонент бир кыйла абстракттуу нерсе экенин эстен чыгарбоо керек. Мисалы, эгерде биздин системада микроконтроллер болсо, анда архитектуралык деңгээлде биз үчүн STM32, Arduino же Milander эмес, анын микроконтроллери гана маанилүү. Анын үстүнө, көп учурда системада так эмне болору бизге такыр түшүнүксүз жана биз жабдууларга, программалык камсыздоого ж.б. талаптарды иштеп чыгуу үчүн системалык инженерияга кайрылабыз.

ACS менен болгон мисалыбыз үчүн, биз анын максатын түзүүгө аракет кылабыз. Бул анын компоненттерин аныктоого жардам берет. Ошентип, кирүү башкаруу системасынын милдети бөлмөгө адамдардын чектелген чөйрөсүнө уруксат берүү болуп саналат. Башкача айтканда, бул акылдуу кулпу. Демек, бизде биринчи компонент бар - эшикти бекитип, ача турган кандайдыр бир түзүлүш! Аны чакыралы DoorLock

Адамдын ичине кире аларын кайдан билебиз? Биз кароолчу коюп, паспортторду текшергибиз келбейт, туурабы? Келгиле, адамдарга RFID теги бар атайын карталарды берели, аларга биз уникалдуу идентификаторлорду же адамды так аныктоого мүмкүндүк берген башка маалыматтарды жазабыз. Андан кийин, бизге бул тегдерди окуй турган бир аппарат керек болот. Жакшы, бизде дагы бир компонент бар, RFIDReader

Келгиле, эмнеге ээ болгонубузду дагы бир жолу карап көрөлү. RFIDReader кээ бир маалыматтарды окуйт, кирүүнү башкаруу системасы аны менен бир нерсе кылат жана ошонун негизинде бир нерсе башкарылат DoorLock. Келгиле, төмөнкү суроону берели - кирүү укугу бар адамдардын тизмесин кайда сактоо керек? Маалыматтар базасында эң мыкты. Ошондуктан, биздин система маалымат базасынан суроо-талаптарды жөнөтүп, жоопторду иштете алышы керек. Ошентип, бизде дагы бир компонент бар - DBHandler. Ошентип, биз системанын өтө абстрактуу, бирок баштоо үчүн жетиштүү сыпаттамасын алдык. Биз анын эмне кылышы керек экенин жана кандайча иштээрин түшүнөбүз.

Мен кагаздын ордуна Simulink чөйрөсүндө системанын архитектурасын моделдөө үчүн атайын курал болгон System Composerди колдоном жана 3 компонентти түзөм. Жогоруда мен бул компоненттердин ортосундагы байланыштарды сүрөттөп бердим, ошондуктан аларды дароо байланыштыралы:

Системалык деңгээлде дизайн. 1-бөлүк. Идеядан системага

Архитектураны кеңейтүү

Биздин диаграмманы карап көрөлү. Баары жакшы окшойт, бирок иш жүзүндө андай эмес. Бул системаны колдонуучунун көз карашынан караңыз - колдонуучу картаны окурманга алып келет жана...? Колдонуучу аларга кирүүгө уруксат берилгенин же тыюу салынганын кантип билет? Бул женунде ага кандайдыр бир жол менен билдируу керек! Ошондуктан, дагы бир компонентти кошолу - колдонуучунун билдирүүсү, UserNotify:

Системалык деңгээлде дизайн. 1-бөлүк. Идеядан системага

Эми абстракциянын төмөнкү деңгээлине өтөбүз. Келгиле, кээ бир компоненттерди бир аз майда-чүйдөсүнө чейин сүрөттөп берүүгө аракет кылалы. Компоненттен баштайлы RFIDReader. Биздин системада бул компонент RFID тегин окуу үчүн жооптуу. Анын чыгышы кээ бир маалыматтарды камтышы керек (UID, колдонуучунун маалыматтары...). Бирок күтө тур, RFID, NFC сыяктуу, биринчи кезекте, программалык камсыздоо эмес, аппараттык камсыздоо! Ошондуктан, бизде өзүнчө "чийки" маалыматтарды кандайдыр бир препроцессорго өткөрүп берүүчү RFID чипинин өзү бар деп ойлосок болот. Ошентип, бизде RFID тегдерин окуй турган абстракттуу жабдык жана маалыматтарды бизге керектүү форматка айландыра турган абстрактуу программалык камсыздоо бар. Келгиле, аларды чакыралы RFIDsensor и RFIParser тиешелүү түрдө. Муну System Composerде кантип көрсөтүү керек? Сиз компонентти алып салсаңыз болот RFIDReader жана анын ордуна эки компонентти коюңуз, бирок муну кылбаганыңыз жакшы, антпесе архитектуранын окулушун жоготуп алабыз. Анын ордуна, RFIDReaderдин ичине кирип, 2 жаңы компонентти кошолу:

Системалык деңгээлде дизайн. 1-бөлүк. Идеядан системага

Жакшы, эми колдонуучуга кабарлоого өтөлү. Система колдонуучуга жайга кирүүсүнө тыюу салынганы же уруксат берилгендиги жөнүндө кантип кабарлайт? Адам үндөрдү жана бир нерсенин ирмеп жатканын эң жакшы кабылдайт. Ошондуктан, сиз колдонуучу көңүл бурушу үчүн белгилүү бир үн сигналын чыгара аласыз жана LEDди жыпыттай аласыз. Келгиле, тиешелүү компоненттерди кошолу UserNotify:

Системалык деңгээлде дизайн. 1-бөлүк. Идеядан системага

Биз өзүбүздүн системабыздын архитектурасын түздүк, бирок анда бир нерсе бар. Эмне? Келгиле, байланыш аттарын карап көрөлү. Автобуста и OutBus - иштеп чыгуучуга жардам бере турган кадимки аталыштар эмес. Алардын атын өзгөртүү керек:

Системалык деңгээлде дизайн. 1-бөлүк. Идеядан системага

Ошентип, биз системалык инженерия ыкмалары одоно жакындоодо кандайча колдонуларын карап чыктык. Суроо туулат: эмне үчүн аларды колдонуш керек? Система примитивдүү, аткарылган иштер керексиздей сезилет. Сиз дароо код жазып, маалымат базасын иштеп чыгып, суроо жазууга же ширетүү мүмкүн. Көйгөй, эгерде сиз системаны ойлонбосоңуз жана анын компоненттери бири-бири менен кантип байланышып жатканын түшүнбөсөңүз, анда системанын компоненттеринин интеграциясы көп убакытты талап кылат жана абдан оор болот.

Бул бөлүктөн негизги алып салуу болуп саналат:

Системаларды иштеп чыгууда системалык инженерия ыкмаларын жана архитектуралык моделдөө ыкмаларын колдонуу компоненттерди интеграциялоого кеткен чыгымдарды кыскартууга жана иштелип чыккан системанын сапатын жакшыртууга мүмкүндүк берет.

Source: www.habr.com

Комментарий кошуу