Szoftver tervezési ág

Hasonló dokumentumok
Scherer Balázs: Mikrovezérlık fejlıdési trendjei

Nagyteljesítményű mikrovezérlők

Scherer Balázs: Mikrovezérlők fejlődési trendjei

Autóipari beágyazott rendszerek. Komponens és rendszer integráció

Érzékelők és beavatkozók I.

Mikrorendszerek tervezése

ARM Cortex magú mikrovezérlők. mbed

The modular mitmót system. DPY kijelző kártya C API

Silabs STK3700, Simplicity Studio laborgyakorlat

C++ programok fordítása

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe

Tesztelési feladatok és kihívások a FALCON projektben

ARM Cortex magú mikrovezérlők

Java II. I A Java programozási nyelv alapelemei

Bevezetés a programozásba II. 8. Előadás: Osztályok, objektumok, osztályszintű metódusok

Járműinformatika A járműinformatikai fejlesztés

A szoftver-folyamat. Szoftver életciklus modellek. Szoftver-technológia I. Irodalom

A szoftverfejlesztés eszközei

Nagy bonyolultságú rendszerek fejlesztőeszközei

Számítógépek felépítése

C programozási nyelv

5. Fejezet : Lebegőpontos számok

5. Fejezet : Lebegőpontos számok. Lebegőpontos számok

ARM processzorok felépítése

A szoftverfejlesztés eszközei

Java II. I A Java programozási nyelv alapelemei

Mintavételes szabályozás mikrovezérlő segítségével

Bevezetés a programozásba Előadás: Objektumszintű és osztályszintű elemek, hibakezelés

Dr. Schuster György október 14.

Budapesti Műszaki- és Gazdaságtudományi Egyetem Villamosmérnöki és Informatikai Kar MIT. Nagyteljesítményű mikrovezérlők tantárgy [vimim342]

1. Bevezetés szeptember 9. BME Fizika Intézet. Szám. szim. labor ea. Tőke Csaba. Tudnivalók. feladat. Tematika. Moodle Házi feladatok

Digitális technika (VIMIAA02) Laboratórium 1

Autóipari beágyazott rendszerek CAN hardver

Szoftver-technológia II. Tervezési minták. Irodalom. Szoftver-technológia II.

Autóipari beágyazott rendszerek. AutoSAR Platform

Digitális technika (VIMIAA02) Laboratórium 1

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem

Osztály és objektum fogalma

Szoftver-technológia II. Szoftver újrafelhasználás. (Software reuse) Irodalom

Operációs rendszerek. A Windows NT felépítése

JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése

Szoftverminőségbiztosítás

Szoftvertechnológia alapjai Java előadások

Programozás II. 2. gyakorlat Áttérés C-ről C++-ra

Orvostechnikai eszköz tesztelése DSS Unit test. Taliga Miklós BME-IIT

Programozás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

KOGGM614 JÁRMŰIPARI KUTATÁS ÉS FEJLESZTÉS FOLYAMATA

4. Fejezet : Az egész számok (integer) ábrázolása

Programozás alapjai II. (1. ea) C++

Programozás alapjai II. (1. ea) C++

Programozás I. zárthelyi dolgozat

Az AVR programozás alapjai. Előadja: Both Tamás

Java-ról Kotlinra. Ekler Péter AutSoft BME AUT. AutSoft

Programozás 1. Dr. Iványi Péter

Digitális technika VIMIAA hét

Függvények. Programozás I. Hatwágner F. Miklós november 16. Széchenyi István Egyetem, Gy r

Norway Grants. Az akkumulátor mikromenedzsment szabályozás - BMMR - fejlesztés technológiai és műszaki újdonságai. Kakuk Zoltán, Vision 95 Kft.

ÉRZÉKELŐK ÉS BEAVATKOZÓK I. GY1.1 SENSACT0 PÉLDAPROGRAM

Bevezetés a programozásba Előadás: Fordítási egység

Arduino bevezető Szenzorhálózatok és alkalmazásaik

Java I. A Java programozási nyelv

Alprogramok, paraméterátadás

ARM Cortex magú mikrovezérlők

Programozás BMEKOKAA146. Dr. Bécsi Tamás 1. Előadás

Nagyteljesítményű mikrovezérlők

Függvények. Programozás alapjai C nyelv 7. gyakorlat. LNKO függvény. Függvények(2) LNKO függvény (2) LNKO függvény (3)

Pénzügyi algoritmusok

Programozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2)

Digitális technika VIMIAA hét

Komponens alapú fejlesztés

A Java EE 5 plattform

A C programozási nyelv I. Bevezetés

Intelligens eszközök fejlesztése az ipari automatizálásban Evosoft Hungary kft., Evosoft Hungary Kft.

A Feldspar fordító, illetve Feldspar programok tesztelése

A C programozási nyelv I. Bevezetés

Adattárház kialakítása a Szövetkezet Integrációban, UML eszközökkel. Németh Rajmund Vezető BI Szakértő március 28.

Alapszintű formalizmusok

Programmable Chip. System on a Chip. Lazányi János. Tartalom. A hagyományos technológia SoC / PSoC SoPC Fejlesztés menete Mi van az FPGA-ban?

Adatbányászat és Perszonalizáció architektúra

Fordító részei. Fordító részei. Kód visszafejtés. Izsó Tamás szeptember 29. Izsó Tamás Fordító részei / 1

Konkurencia és energiakezelés integrálása eszközmeghajtókba. Vezeték nélküli szenzorhálózatok

Új módszerek és eszközök infokommunikációs hálózatok forgalmának vizsgálatához

Nagyteljesítményű mikrovezérlők 10b. RTOS gyakorlatok

2. Fejezet : Számrendszerek

Laborgyakorlat Logikai áramkörök számítógéppel segített tervezése (CAD)

11. gyakorlat Sturktúrák használata. 1. Definiáljon dátum típust. Olvasson be két dátumot, és határozza meg melyik a régebbi.

Programozási nyelvek (ADA)

Szoftver-technológia II. Architektúrák dokumentálása UML-lel. Irodalom. Szoftver-technológia II.

Élettartam teszteknél alkalmazott programstruktúra egy váltóvezérlő példáján keresztül

Programozás I. 5. Előadás: Függvények

evosoft Hungary Kft.

Autóipari beágyazott rendszerek Dr. Balogh, András

Imperatív programozás

Bevezetés a programozásba

Bevezetés a programozásba Előadás: A const

Adatbázis-kezelés ODBC driverrel

Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606. Dr. Bécsi Tamás

NAGYPONTOSSÁGÚ EGÉSZ-ARITMETIKA TARTALOM

iphone és Android két jó barát...

The Architecture of Computer Hardware and Systems Software: An InformationTechnology Approach 3. kiadás, Irv Englander John Wiley and Sons 2003

Átírás:

Szoftver tervezési ág VIMIMA11 Rendszertervezés és integráció Scherer Balázs BME-MIT 2015 1.

Szoftver irány Rendszer szint Rendszertervezés, Technikai rendszer spec. System design Alrendszer szint Modul szint Mechanikai alrendszer tervezés Hardver alrendszer tervezés Szoftver alrendszer tervezés Modul tervezés Modul tervezés Implementáció BME-MIT 2015 2.

Szoftver architektúra Software Követelmények (Software-Hardware interfészek) Teszt eredmények (A V modell másik ágából) Kapcsolat a tesztelési ággal Software követelmények elemzése A software architektúra specifikálása Software komponensek és interfészek specifikálása Software architektúra Teszt esetek (A tesztelés számára) Kapcsolat a tesztelési ággal BME-MIT 2015 3.

Szoftver komponensek és interfészeinek meghatározása Szenzor Node 2 Jelkondítcionálás AD konverzió Mikrovezérlő software AD device driver Kommunikáció Vezérlés Kalibrálás Comm Device driver DA driver Comm interfész Analóg kimenet Beavatkozó Class: Measurement device Attrimutes: - Measured variable tables - Sensors list - Calibration tables Methods: - Measure - Callibrate - Send measurements 1 1 4 1 Class: Sensor Attrimutes: - Sensor limits - Sensor calibration parameters - Sensor value Methods: - Measure - Callibrate - Power off Class: Comm-interface Attrimutes: - Channel parameters - Data rate Methods: - Send data - Receive Data - Connect BME-MIT 2015 4.

Szoftver architektúra Software Követelmények (Software-Hardware interfészek) Teszt eredmények (A V modell másik ágából) Kapcsolat a tesztelési ággal Software követelmények elemzése A software architektúra specifikálása Software komponensek és interfészek specifikálása Software rétegek specifikációja Software architektúra Teszt esetek (A tesztelés számára) Kapcsolat a tesztelési ággal BME-MIT 2015 5.

Egy általános beágyazott rendszer SW architektúrája Application Libraries Hardware független mitmót API Felhasználói project ISO C Math DPY-TRM COM-R04 MIKROP Kernel MCU-ARM API Hardware Abstraction Layer interrupts Device Drivers Serial I/O kezelés SPI Előre fordított ecos distribúció Exceptions I2C BME-MIT 2015 6.

Réteges szemléletű szoftver architektúra példa AUTOSAR BME-MIT 2015 7.

Réteges szemléletű szoftver architektúra példa AUTOSAR BME-MIT 2015 8.

CMSIS szerkezete (v1.3) BME-MIT 2015 9.

CMSIS szerkezete (v3) BME-MIT 2015 10.

CMSIS szerkezete (v4) BME-MIT 2015 11.

Szoftver architektúra Software Követelmények (Software-Hardware interfészek) Teszt eredmények (A V modell másik ágából) Kapcsolat a tesztelési ággal Software követelmények elemzése A software architektúra specifikálása Software komponensek és interfészek specifikálása Software rétegek specifikációja Software működési módok specifikációja Software architektúra Teszt esetek (A tesztelés számára) Kapcsolat a tesztelési ággal BME-MIT 2015 12.

Szoftver működési módok Inicializációs mód Szerviz mód Hiba mód Normál működés Kalibráció Energiatakarékos mód BME-MIT 2015 13.

Szoftver komponens tervezés Software architektúra Teszt eredmények (A V modell másik ágából) Kapcsolat a tesztelési ággal Szoftver komponens specifikálása Adatmodell specifikálása Viselkedési modell specifikálása Real-time modell specifikálása Szoftver komponens specifikáció Teszt esetek (A tesztelés számára) Kapcsolat a tesztelési ággal BME-MIT 2015 14.

Adatmodell, adatfolyam meghatározása Sokszor domain specifikus nyelvvel: o Simulink o ASCET BME-MIT 2015 15.

Viselkedési modell Legtöbb esetben valamilyen állapotgépes leírás BME-MIT 2015 16.

Real-Time modell specifikálása Tipikusan fixen ütemezett taszkok: 2,5ms, 5ms, 10ms BME-MIT 2015 17.

Real-Time modell specifikálása Tipikusan fixen ütemezett taszkok: 2,5ms, 5ms, 10ms DMA: Deadline Monotonic analysis BME-MIT 2015 18.

Modell alapú kódgenerálás Simulink Real-Time Workshop BME-MIT 2015 19.

Kódgenerálás alkalmazási köre, helye Generált kód BME-MIT 2015 20.

Implementálás BME-MIT 2015 21.

Néhány implementációhoz kötődő megfontolás Hardware limitációk által okozott problémák: o Fixpontos, vagy lebegőpontos számábrázolás o Online számolás, vagy lookup table alkalmazása o Lebegőpontos számábrázolásból fakadó hibák Hardware specialitások figyelembe vétele o Speciális hardware-hez kötődő technológiák alkalmazása: DMA és annak specialitásai o Cache és annak viselkedése o Tightly-coupled memory o Belső, vagy külső RAM-ba helyezett változó o Speciális üzemállapotok: pl.: Sleep és az abban való viselkedés BME-MIT 2015 22.

Szoftver implementálás általános szabályai Szinte SIL/ASIL szint függetlenül mindig kötelezőek BME-MIT 2015 23.

Implementálási nyelv Az Embedded Market Study statisztikái BME-MIT 2015 24.

MISRA-C nyelvi készlet korlátozás (Motor Industry Software Reliability Association) MISRA-C 1998: Az első MISRA C szabályverziót 1998- ban hozták létre célja az volt, hogy javítsa az UK (United Kingdom) autóiparában használt szoftverek minőségét. A MISRA-C 1998 sikere nem csak az autóiparra terjedt ki, hanem széleskörben alkalmazásra került a repülőgépiparban valamit az egészségügyi iparban is. A MISRA-C 2004: Elfogadásra került az USA-ban (SAE J2632) és Japánban is. o Javítja a MISRA-1998 hibáit, és pontosítja azt. o 121 Mandatoryés 20 Advisoryszabályt tartalmaz a C nyel leszűkítésére MISRA-C 2012: 2013 közepén megjelent új verzió a C99-es szabványára épül BME-MIT 2015 25.

MISRA-C célja Cél a C szabados programozói nyelv leszűkítése úgy, hogy a lehető legmegbízhatóbb nyelvi alrendszert kapjuk. oszintaktikailag helyes, szemantikailag rossz megoldásokra felhívni a figyelmet. otiltani a nem egyértelmű változó típus használatot. o Szabályozni a precendencia zárójelezéseket. otiltani a nem strukturált programozást eredményező szerkezeteket. BME-MIT 2015 26.

Triviális szabályok Kódsort soha nem szabad kikommentezni o A kikommentezett sorok gondot okozhatnak az egymásba ágyazott kommentek, illetve a kódérthetőség miatt is. Ciklusváltozót nem lehet a ciklus belsejében módosítani. flag = 1; for (i = 0; (i<5) && (flag == 1); i++) { flag = 0; /* Engedélyezett a ciklus gyors befejezése */ i = i + 3; /* Nem Engedélyezett ciklusváltozó módosítás */ } A goto használata tiltott! A continue használata tiltott! Bitmanipuláló műveletet nem szabad signed, vagy floating típusokon végrehajtani (>>, <<, ~, &, ^) BME-MIT 2015 27.

Elgondolkodtató szabályok Kiválasztott compiler egész osztásokra való reakcióját ellenőrizni és dokumentálni kell. Egy ISO kompatibilis fordító két ponton is mutathat eltérő viselkedést negatív egész osztás esetében: o (-5/3) lehet -1 ahol a maradék -2 illetve o (-5/3) lehet -2 ahol a maradék +1 Változók összeadásánál szorzásánál kicsúszás az értéktartományból: uint16_t u16a = 40000; uint16_t u16b = 30000; uint32_t u32x; U32x = u16a + u16b; /* u32x = 70000 vagy 4464? */ Az összeadás aritmetikáját nem az eredmény tárolási típusa, hanem a compiler belső aritmetikája szabályozza (belső int típus), ezért, ha a belső aritmetika 16 bites akkor az összeadásban túlcsordulás következhet be. Ilyen jellegű hibalehetőségből van még jó pár darab. BME-MIT 2015 28.

SEI CERT Coding Standards MISRA-hoz hasonló szabályozás kevésbé beágyazott környezetre C, C++, JAVA, Perl, Android Hibák kategorizálása: Severity, Likehood, Remediation cost Level 1: Priorítás 12-27 Nagy kárt okozó, valószínű és viszonylag olcsón javítható hibák Level 2: Priorítás 6-9 Level 3: Priorítás 1-4 Közepes kárt okozó, közepes valószínűségű, és közepes javítási költcségű hibák Nehezen javítható kis valószínűségű és kis kárú hibák BME-MIT 2015 29.

Style guides Cél a kód egységes kinézete és szervezése onem egységes kód nehezíti a csapatmunkát és az átláthatóságot Nincs egységes nemzetközi szabvány Tipikusan cégekre jellemző szabályozások o C és header file-ok szerkezete o Változók elnevezésének stílusa ovezérlési szerkezetek stílusa o Kommentezés módja BME-MIT 2015 30.

Tipikus C file szerkezet 1.Komment a file nevéről, rendeltetéséről, szerzőjéről, verziójáról, és verzió history-árol. (Egyes verziókövető rendszerek automatikusan generálják, módosítják a file verzióra vonatkozó kommenteket. Ilyenkor ezeket a fejlesztőnek általában tilos kézzel módosítani.) 2. Header file include-ok 3. Definiciók a következő sorrendben: Típus definíciók, Define-ok, Konstans makrók függvény makrók, 4. Globális változók: extern, nem static, static global sorrendben 5. függvények: általában hívási sorrendben, ha egy mód van rá. BME-MIT 2015 31.

Tipikus H file szerkezet 1. Komment a file nevéről rendeltetéséről, szerzőjéről, verziójáról, és verzió history-árol. A file neve sohasem lehet normál C inklúdnévvel egyező pl.: math.h. 2. A következő file kezdési szerkezet kötelező: #ifndef EXAMPLE_H #defineexample_h... /* body of example.h file */ #endif/* EXAMPLE_H * 3, Fejléc file-okban ne definiáljunk változókat ha egy mód van rá. BME-MIT 2015 32.

Elnevezési szabályok Egyik leghíresebb az ún. Hungarian Notatinon o Simonyi Károly vezetett be a Microsoftnál Az elnevezési szisztéma a magyar elnevezési logikából indul ki, ahol a vezetéknév megelőzi az adott keresztnevet Ezt próbálja a változókra is bevezetni, ahol először a típus, vagy alkalmazási kör szerepel és utána csak az adott név Két alsítulsa van a System és az Application o System esetében a változó típusa o Az Application esetében az alkalmazás típusa van belekódolva a változó nevébe. A jelölésrendszer sokszor kiegészül a láthatóságot jelölő előtéttel is BME-MIT 2015 33.

Példák Hungarian notation-ra bbusy: boolean capples: count of items dwlightyears: double word (system) fbusy: boolean (flag) nsize: integer (system) vagy count (application) isize: integer (system) vagy index (application) g_nwheels: member of a global namespace, integer m_nwheels: member of a structure/class, integer s_wheels: static member of a class _wheels: local variable BME-MIT 2015 34.

Vezérlési szerkezetek stílusa BME-MIT 2015 35.

Automatikus formázó tool-ok Artistic Style: ingyenesen leölethető formázó tool BME-MIT 2015 36.

Általános dokumentációs problémák 1. Megírjuk a kódot 2. Még talán kommentezzük is 3. Nagy erőszakra megírjuk a dokumentációt 4. Módosítjuk a kódot 5. Talán a kommentet is 6. A doksit biztos nem Inkonzisztencia: kód komment dokumentáció között BME-MIT 2015 37.

Automatikus dokumentáció generálás: Doxygen 1997-ben jelent meg az első verzió v0.1 A komment dokumentáció közötti inkonzisztenciát igyekszik feloldani Többfajta kommentezési stílust képes kezelni C stilusú JAVA doc szerű kommentek /**... text... */ C stílusú! kommentek /*!... text... */ BME-MIT 2015 38.

Doxygen kommentek példa /*! \fn void UART1_Init(unsigned long baud_rate, void (*handler)(void)); * \brief An inicialisation function to redirect STDIO to UART1 * \param baud_rate: Baudrate in bit/sec * \param handler: Callback function for receiving UART characters with IT * \return nothing */ /** @fn void UART1_Init(unsigned long baud_rate, void (*handler)(void)); * @brief An inicialisation function to redirect STDIO to UART1 * @param baud_rate: Baudrate in bit/sec * @param handler: Callback function for receiving UART characters with IT * @return nothing */ BME-MIT 2015 39.

Csoportosítás Alapvetően file szintű dokumentálás, ahhoz, hogy logiaki egység szintű dokumentációt csináljunk szükséges a csoportok megalkotása Szinte az összes firmware library ezt alkalmazza /** @addtogroup Az én csoportom @{ */ /** @} */ BME-MIT 2015 40.

Csoportosítás, struktúra, hivatkozás /** @brief I2C Init structure definition */ typedef struct { uint32_t I2C_ClockSpeed; /*!< Specifies the clock frequency */ uint16_t I2C_Mode; /*!< Specifies the I2C mode. This parameter can be a value of @ref I2C_mode */ } I2C_InitTypeDef; /** @defgroup I2C_mode @{ */ #define I2C_Mode_MASTER 1 #define I2C_Mode_SLAVE 0 /** @} */ BME-MIT 2015 41.