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

VIMIMA11 Rendszertervezés és –integráció Scherer Balázs · Software követelmények elemzése Software Követelmények (Software-Hardware interfészek) Teszt eredmények (A

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: VIMIMA11 Rendszertervezés és –integráció Scherer Balázs · Software követelmények elemzése Software Követelmények (Software-Hardware interfészek) Teszt eredmények (A

Szoftver tervezési ág

VIMIMA11 Rendszertervezés és –integráció

© BME-MIT 2015 1.

VIMIMA11 Rendszertervezés és –integrációScherer Balázs

Page 2: VIMIMA11 Rendszertervezés és –integráció Scherer Balázs · Software követelmények elemzése Software Követelmények (Software-Hardware interfészek) Teszt eredmények (A

Szoftver irány

Rendszertervezés,

Technikai rendszer spec.

System design

Mechanikai

alrendszer

tervezés

Rendszer szint

Hardver

alrendszer

tervezés

Szoftver

alrendszer

tervezés

© BME-MIT 2015 2.

tervezés

Modul

tervezésModul szint

Alrendszer

szint

tervezés tervezés

Modul

tervezés

Implementáció

Page 3: VIMIMA11 Rendszertervezés és –integráció Scherer Balázs · Software követelmények elemzése Software Követelmények (Software-Hardware interfészek) Teszt eredmények (A

Software követelmények elemzése

Software Követelmények

(Software-Hardware interfészek)

Teszt eredmények(A V modell

másik ágából)Kapcsolat a

tesztelési ággal

A software architektúra specifikálása

Szoftver architektúra

© BME-MIT 2015 3.

Software architektúra

Teszt esetek(A tesztelés

számára)

Kapcsolat a tesztelési ággal

A software architektúra specifikálása

Software komponensekés interfészek specifikálása

Page 4: VIMIMA11 Rendszertervezés és –integráció Scherer Balázs · Software követelmények elemzése Software Követelmények (Software-Hardware interfészek) Teszt eredmények (A

Node 2 Mikrovezérlő software

AD

device

drive

r

Szenzor

Jelko

nd

ítcionálá

sA

D ko

nve

rzió

Com

m D

evi

ce

drive

r

Com

m in

terf

ész

Analó

g k

imenet

Beavatkozó

DA

drive

rVezérlés

Kom

munik

áci

ó

Szoftver komponensek és interfészeinek

meghatározása

Class: Measurement device

Attrimutes:

- Measured variable tables

- Sensors list

- Calibration tables

Methods:

- Measure

- Callibrate

- Send measurements

1 1

© BME-MIT 2015 4.

Kalibrálás

Analó

g k

imenet

DA

drive

r

Class: Sensor

Attrimutes:

- Sensor limits

- Sensor calibration parameters

- Sensor value

Methods:

- Measure

- Callibrate

- Power off

1

4

Class: Comm-interface

Attrimutes:

- Channel parameters

- Data rate

Methods:

- Send data

- Receive Data

- Connect

1

1

Page 5: VIMIMA11 Rendszertervezés és –integráció Scherer Balázs · Software követelmények elemzése Software Követelmények (Software-Hardware interfészek) Teszt eredmények (A

Software követelmények elemzése

Software Követelmények

(Software-Hardware interfészek)

Teszt eredmények(A V modell

másik ágából)Kapcsolat a

tesztelési ággal

A software architektúra specifikálása

Szoftver architektúra

© BME-MIT 2015 5.

Software architektúra

Teszt esetek(A tesztelés

számára)

Kapcsolat a tesztelési ággal

A software architektúra specifikálása

Software komponensekés interfészek specifikálása

Software rétegek specifikációja

Page 6: VIMIMA11 Rendszertervezés és –integráció Scherer Balázs · Software követelmények elemzése Software Követelmények (Software-Hardware interfészek) Teszt eredmények (A

Egy általános beágyazott rendszer SW

architektúrája

ISO

C

Ma

th

Libraries

Application

DP

Y-T

RM

Hardware független mitmót API

CO

M-R

04

MIK

RO

P

Felhasználói project

© BME-MIT 2015 6.

interrupts

Exceptions

Hardware

Abstraction Layer

Serial

Device Drivers

KernelMCU-ARM API

I/O kezelés

SPI

I2C

Előre fordított eCos distribúció

Page 7: VIMIMA11 Rendszertervezés és –integráció Scherer Balázs · Software követelmények elemzése Software Követelmények (Software-Hardware interfészek) Teszt eredmények (A

Réteges szemléletű szoftver architektúra példa

AUTOSAR

© BME-MIT 2015 7.

Page 8: VIMIMA11 Rendszertervezés és –integráció Scherer Balázs · Software követelmények elemzése Software Követelmények (Software-Hardware interfészek) Teszt eredmények (A

Réteges szemléletű szoftver architektúra példa

AUTOSAR

© BME-MIT 2015 8.

Page 9: VIMIMA11 Rendszertervezés és –integráció Scherer Balázs · Software követelmények elemzése Software Követelmények (Software-Hardware interfészek) Teszt eredmények (A

CMSIS szerkezete (v1.3)

© BME-MIT 2015 9.

Page 10: VIMIMA11 Rendszertervezés és –integráció Scherer Balázs · Software követelmények elemzése Software Követelmények (Software-Hardware interfészek) Teszt eredmények (A

CMSIS szerkezete (v3)

© BME-MIT 2015 10.

Page 11: VIMIMA11 Rendszertervezés és –integráció Scherer Balázs · Software követelmények elemzése Software Követelmények (Software-Hardware interfészek) Teszt eredmények (A

CMSIS szerkezete (v4)

© BME-MIT 2015 11.

Page 12: VIMIMA11 Rendszertervezés és –integráció Scherer Balázs · Software követelmények elemzése Software Követelmények (Software-Hardware interfészek) Teszt eredmények (A

Software követelmények elemzése

Software Követelmények

(Software-Hardware interfészek)

Teszt eredmények(A V modell

másik ágából)Kapcsolat a

tesztelési ággal

A software architektúra specifikálása

Szoftver architektúra

© BME-MIT 2015 12.

Software architektúra

Teszt esetek(A tesztelés

számára)

Kapcsolat a tesztelési ággal

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

Page 13: VIMIMA11 Rendszertervezés és –integráció Scherer Balázs · Software követelmények elemzése Software Követelmények (Software-Hardware interfészek) Teszt eredmények (A

Inicializációsmód

Szerviz mód

Szoftver működési módok

© BME-MIT 2015 13.

Normál működés

Szerviz mód

Kalibráció

Hiba mód

Energiatakarékosmód

Page 14: VIMIMA11 Rendszertervezés és –integráció Scherer Balázs · Software követelmények elemzése Software Követelmények (Software-Hardware interfészek) Teszt eredmények (A

Software architektúra

Teszt eredmények(A V modell

másik ágából)Kapcsolat a

tesztelési ággal

Szoftver komponens specifikálása

Szoftver komponens tervezés

© BME-MIT 2015 14.

Szoftver komponens specifikáció

Teszt esetek(A tesztelés

számára)

Kapcsolat a tesztelési ággal

Adatmodell specifikálása

Viselkedési modell specifikálása

Real-time modell specifikálása

Page 15: VIMIMA11 Rendszertervezés és –integráció Scherer Balázs · Software követelmények elemzése Software Követelmények (Software-Hardware interfészek) Teszt eredmények (A

Adatmodell, adatfolyam meghatározása

� Sokszor domain specifikus nyelvvel:

o Simulink

o ASCET

© BME-MIT 2015 15.

Page 16: VIMIMA11 Rendszertervezés és –integráció Scherer Balázs · Software követelmények elemzése Software Követelmények (Software-Hardware interfészek) Teszt eredmények (A

Viselkedési modell

� Legtöbb esetben valamilyen állapotgépes leírás

© BME-MIT 2015 16.

Page 17: VIMIMA11 Rendszertervezés és –integráció Scherer Balázs · Software követelmények elemzése Software Követelmények (Software-Hardware interfészek) Teszt eredmények (A

Real-Time modell specifikálása

� Tipikusan fixen ütemezett taszkok: 2,5ms, 5ms, 10ms

© BME-MIT 2015 17.

Page 18: VIMIMA11 Rendszertervezés és –integráció Scherer Balázs · Software követelmények elemzése Software Követelmények (Software-Hardware interfészek) Teszt eredmények (A

Real-Time modell specifikálása

� Tipikusan fixen ütemezett taszkok: 2,5ms, 5ms, 10ms

� DMA: Deadline Monotonic analysis

© BME-MIT 2015 18.

Page 19: VIMIMA11 Rendszertervezés és –integráció Scherer Balázs · Software követelmények elemzése Software Követelmények (Software-Hardware interfészek) Teszt eredmények (A

Modell alapú kódgenerálásSimulink Real-Time Workshop

© BME-MIT 2015 19.

Page 20: VIMIMA11 Rendszertervezés és –integráció Scherer Balázs · Software követelmények elemzése Software Követelmények (Software-Hardware interfészek) Teszt eredmények (A

Kódgenerálás alkalmazási köre, helye

Generált kódGenerált kód

© BME-MIT 2015 20.

Page 21: VIMIMA11 Rendszertervezés és –integráció Scherer Balázs · Software követelmények elemzése Software Követelmények (Software-Hardware interfészek) Teszt eredmények (A

Implementálás

© BME-MIT 2015 21.

Page 22: VIMIMA11 Rendszertervezés és –integráció Scherer Balázs · Software követelmények elemzése Software Követelmények (Software-Hardware interfészek) Teszt eredmények (A

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

© BME-MIT 2015 22.

� Hardware specialitások figyelembe vételeo 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

Page 23: VIMIMA11 Rendszertervezés és –integráció Scherer Balázs · Software követelmények elemzése Software Követelmények (Software-Hardware interfészek) Teszt eredmények (A

Szoftver implementálás általános szabályai

� Szinte SIL/ASIL szint függetlenül mindig kötelezőek

© BME-MIT 2015 23.

Page 24: VIMIMA11 Rendszertervezés és –integráció Scherer Balázs · Software követelmények elemzése Software Követelmények (Software-Hardware interfészek) Teszt eredmények (A

Implementálási nyelv

� Az Embedded Market Study statisztikái

© BME-MIT 2015 24.

Page 25: VIMIMA11 Rendszertervezés és –integráció Scherer Balázs · Software követelmények elemzése Software Követelmények (Software-Hardware interfészek) Teszt eredmények (A

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éles körben alkalmazásra került

© BME-MIT 2015 25.

terjedt ki, hanem széles kö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 Advisory szabá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

Page 26: VIMIMA11 Rendszertervezés és –integráció Scherer Balázs · Software követelmények elemzése Software Követelmények (Software-Hardware interfészek) Teszt eredmények (A

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.

o Szintaktikailag helyes, szemantikailag rossz megoldásokra felhívni a figyelmet.

© BME-MIT 2015 26.

megoldásokra felhívni a figyelmet.

o Tiltani a nem egyértelmű változó típus használatot.

o Szabályozni a precendencia zárójelezéseket.

o Tiltani a nem strukturált programozást eredményező szerkezeteket.

Page 27: VIMIMA11 Rendszertervezés és –integráció Scherer Balázs · Software követelmények elemzése Software Követelmények (Software-Hardware interfészek) Teszt eredmények (A

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++)

© BME-MIT 2015 27.

� A goto használata tiltott!

� A continue használata tiltott!

� Bitmanipuláló műveletet nem szabad signed, vagyfloating típusokon végrehajtani (>>, <<, ~, &, ^)

{flag = 0; /* Engedélyezett a ciklus gyors befejezése */i = i + 3; /* Nem Engedélyezett ciklusváltozó módosítás */

}

Page 28: VIMIMA11 Rendszertervezés és –integráció Scherer Balázs · Software követelmények elemzése Software Követelmények (Software-Hardware interfészek) Teszt eredmények (A

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:

© BME-MIT 2015 28.

értéktartományból:

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.

uint16_t u16a = 40000;uint16_t u16b = 30000;uint32_t u32x;

U32x = u16a + u16b; /* u32x = 70000 vagy 4464? */

Page 29: VIMIMA11 Rendszertervezés és –integráció Scherer Balázs · Software követelmények elemzése Software Követelmények (Software-Hardware interfészek) Teszt eredmények (A

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

© BME-MIT 2015 29.

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

Page 30: VIMIMA11 Rendszertervezés és –integráció Scherer Balázs · Software követelmények elemzése Software Követelmények (Software-Hardware interfészek) Teszt eredmények (A

Style guides

� Cél a kód egységes kinézete és szervezése

o Nem egységes kód nehezíti a csapatmunkát és az átláthatóságot

� Nincs egységes nemzetközi szabvány

© BME-MIT 2015 30.

� Tipikusan cégekre jellemző szabályozások

o C és header file-ok szerkezete

o Változók elnevezésének stílusa

o Vezérlési szerkezetek stílusa

o Kommentezés módja

Page 31: VIMIMA11 Rendszertervezés és –integráció Scherer Balázs · Software követelmények elemzése Software Követelmények (Software-Hardware interfészek) Teszt eredmények (A

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

© BME-MIT 2015 31.

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á.

Page 32: VIMIMA11 Rendszertervezés és –integráció Scherer Balázs · Software követelmények elemzése Software Követelmények (Software-Hardware interfészek) Teszt eredmények (A

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

#define EXAMPLE_H

© BME-MIT 2015 32.

#define EXAMPLE_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á.

Page 33: VIMIMA11 Rendszertervezés és –integráció Scherer Balázs · Software követelmények elemzése Software Követelmények (Software-Hardware interfészek) Teszt eredmények (A

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

© BME-MIT 2015 33.

„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

Page 34: VIMIMA11 Rendszertervezés és –integráció Scherer Balázs · Software követelmények elemzése Software Követelmények (Software-Hardware interfészek) Teszt eredmények (A

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)

© BME-MIT 2015 34.

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

Page 35: VIMIMA11 Rendszertervezés és –integráció Scherer Balázs · Software követelmények elemzése Software Követelmények (Software-Hardware interfészek) Teszt eredmények (A

Vezérlési szerkezetek stílusa

© BME-MIT 2015 35.

Page 36: VIMIMA11 Rendszertervezés és –integráció Scherer Balázs · Software követelmények elemzése Software Követelmények (Software-Hardware interfészek) Teszt eredmények (A

Automatikus formázó tool-ok

� Artistic Style: ingyenesen leölethető formázó tool

© BME-MIT 2015 36.

Page 37: VIMIMA11 Rendszertervezés és –integráció Scherer Balázs · Software követelmények elemzése Software Követelmények (Software-Hardware interfészek) Teszt eredmények (A

Á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

© BME-MIT 2015 37.

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

Page 38: VIMIMA11 Rendszertervezés és –integráció Scherer Balázs · Software követelmények elemzése Software Követelmények (Software-Hardware interfészek) Teszt eredmények (A

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

/**

© BME-MIT 2015 38.

� C stílusú ! kommentek

/**

... text ...

*/

/*!

... text ...

*/

Page 39: VIMIMA11 Rendszertervezés és –integráció Scherer Balázs · Software követelmények elemzése Software Követelmények (Software-Hardware interfészek) Teszt eredmények (A

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

*/

© BME-MIT 2015 39.

/** @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

*/

Page 40: VIMIMA11 Rendszertervezés és –integráció Scherer Balázs · Software követelmények elemzése Software Követelmények (Software-Hardware interfészek) Teszt eredmények (A

Csoportosítás

/** @ Az én csoportom

� 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

© BME-MIT 2015 40.

/** @addtogroup Az én csoportom

@{

*/

HH/**

@}

*/

Page 41: VIMIMA11 Rendszertervezés és –integráció Scherer Balázs · Software követelmények elemzése Software Követelmények (Software-Hardware interfészek) Teszt eredmények (A

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

© BME-MIT 2015 41.

/** @defgroup I2C_mode

@{

*/#define I2C_Mode_MASTER 1

#define I2C_Mode_SLAVE 0

/**

@}

*/