SlideShare a Scribd company logo
1 of 23
DITF LDI
    Lietišķo datorsistēmu programmatūras
                profesora grupa




Lietišķo datorsistēmu programmatūra
               4.lekcija


              Materiālu sagatavoja: V.Kotovs
         Atbildīgais pasniedzējs: prof. L.Novickis
…

   PI tendences – sarežģītības un abstrakcijas līmeņa paaugstināšana; izstrādes
    procesa uzlabošana, automatizēšanas un uzturamības atvieglošana; efektīvu un
    pierādītu risinājumu atkārtota izmantošana; prasību mainīgums

   Atkārtotā lietošana - process, kura ietvaros organizācija definē sistemātiski
    pielietojamo procedūru kopu, lai specificētu, izveidotu, klasificētu, dabūtu un
    adaptētu programmatūras artefaktus, ko var pielietot lietojumu izstrādes procesā

   Modularitāte - Lingvistiski modulāras vienības princips, Atklāts-Slēgts princips,
    Iekļautas dokumentācijas princips ...

   Projektēšanas šablons - nosauc, abstrahē un identificē galvenos projektēšanas
    struktūras aspektus, vērtīgus atkārtoti lietojama objektorientēta projektējuma
    izstrādē



                                                                                        2
   Ieskats aspektorientētā programmēšanā
   Aspektu izmantošana programmatūras izstrādē
   Projektēšanas šablonu implementēšana ar AOP
   Modeļvadāma programmatūras izstrāde




                                                  3
1. Ieskats aspektorientētā
                   programmēšanā (1/4)
   Koda izkliede
if (logger.isLoggable(Level.INFO)) {
    logger.log(...)
}
...
try {
   sessionFactory.getCurrentSession()
   .beginTransaction();
   ...
   sessionFactory.getCurrentSession()
   .getTransaction().commit();
}
catch (RuntimeException re) {
  sessionFactory.getCurrentSession()
  .getTransaction().rollback();
  throw re;
}
...
if (param == null) throw new
   IllegalArgumentException();

                                             4
1. Ieskats aspektorientētā
                  programmēšanā (2/4)

   Koda izkliede

     Koda rindas tiek atkārtotas vairākās klasēs
     Parādās jebkurā izstrādes vidē / valodā

     Samazina sistēmas uzturamību

     Auditēšana, transakciju apstrāde, laiksakritības
      pārvaldība, sinhronizācija




                                                         5
1. Ieskats aspektorientētā
                   programmēšanā (3/4)
   Šķērsojošā funkcionalitāte (prasība)
     ✔
       raksturīpašība, kas attiecas uz programmsistēmu kā uz vienu
     veselo, šķērsojot tās modulāro struktūru
     ✔
       noteikta veida funkcionalitāte (piem., sinhronizācija), kuras
     realizācija ir sastopama vairākos moduļos sistēmā




                                                                       6
1. Ieskats aspektorientētā
                      programmēšanā (4/4)
   Aspektorientētā programmēšana
      Programmatūras izstrādes paradigma koncepciju un
       šķērsojošās funkcionalitātes specificēšanai skaidri definētās
       programmatūras struktūrās (aspektos)

       AOSD (programmatūras projektēšana), AORE (prasību
        inženierija), AOM (modelēšana)

       AOP paplašina OOP
            šķērsojošās funkcionalitātes implementēšana
            pirmkoda izkliedēšanas novēršana
            Java (AspectJ, JBossAOP); C++ (AspectC++), .NET (AspectC#)
                                                                          7
2. AOP koncepcijas (1/2)

   Aspekts
       modulis ar šķērsojošās prasības realizāciju, kas attiecas uz funkcionalitāti,
        kuru nevar efektīvi iedalīt moduļos ar OOP izstrādes tehnikām

   Intereses (Concerns)
       sistēmas darbības aspekti (drošība, monitorings, transakciju vadība,
        laiksakritība, autorizācija)

   Aspektu kompilētājs (aspect weaver)
       programma, kura integrē klases un aspektus
            Kompilēšanas laikā
                  Pirmkoda vai bait-koda līmenī
            Izpildes laikā



                                                                                        8
2. AOP koncepcijas (2/2)

   Savienojuma punkts (Joinpoint)
      Lietojuma izpildes plūsmas punkts, kurā jāpiemēro vienu vai vairākus
       aspektus
         Metodes
         Konstruktori
         Izņēmuma stāvokļi
         Piekļuve objektu atribūtiem


   Pointcut
      Izteiksme savienojuma punktu kopas aprakstīšanai


   Padoms (Advice)
      Aspekta uzvedības specificēšana (pirms, pēc, apkārt)


   Ieviešana (Introduction)
      AOP atvasināšanas mehānisms
                                                                              9
3. AspectJ piemērs

public aspect ArgValidationAspect {
/* Pointcut declaration */
  pointcut asserted(final Object target):
    execution(* test.pojo..*(*)) && this(target);

/* Advice declaration */
   before(final Object target) : asserted(target){
     for(Object o : thisJoinPoint.getArgs()) {
       if (o == null)
         throw new IllegalArgumentException("...");
     }
}}


public class TestPojo {
/** @param o Could not be NULL */
public void doSmth(Object o) {}
public static void main(String[] args) {
   new TestPojo().doSmth(null);
}}


Exception in thread "main" java.lang.IllegalArgumentException: 1 argument of 'void
TestPojo.doSmth(Object)' could not be null.

                                                                                     10
4. Projektēšanas šablonu
           implementēšana ar AOP
➢   Novērojumi:
    ● Vairāki projektēšanas šabloni iesaista šķērsojošo funkcionalitāti


      attiecībās starp šablonā definētām lomām un klasēm šablonu
      eksemplāros (piem. “novērotājs”)
    ✔  Šablona implementēšana parasti šķērso citu šablonu (lomas ir
       izkliedētas dalībnieku klasēs)
➢   Šablonu lomas
     ✔ Loma apraksta komponenta daļu, specifisku kādam tas uzvedības
       aspektam, un parasti nav normāli lokalizējama ar OOP līdzekļiem
        ✔ Definējošā loma – klasēm parasti nav citas funkcionalitātes ārpus


          šablona (piem. Façade)
        ✔ Pārklājošā loma - klasēm piemīt plaša atbildību kopa (piem.


          Starpnieks)
➢   Ideja
     ✔ Šablonu vispārējās funkcionalitātes identificēšana un tās izolēšana
       aspektu moduļos                                                        11
5. “Novērotājs” šablona AOP
         implementēšana

●
    Vispārējās šablona daļas
     ●
       “Subject” un “Observer” lomas
     ●
       “Subject-Observer” saišu uzturēšana
     ●
       “Observer” paziņošanas loģika par “Subject” izmaiņām

●
    Specifiskās katra šablona eksemplāra daļas
     ●
       Lomu piešķiršana klasēm
     ●
       “Observer” specifiska loģika




                                                              12
6. AOP risinājuma novērtēšana
●
    Lokalizēšana
     ●
       šablona implementēšana tiek lokalizēta abstraktā un konkrētos aspektos,
       nevis lietojuma klasēs
●
    Atkārtotā lietojamība
     ●
       šablona bāzes kods ir abstrahēts un atkārtoti lietojams. Abstrakta aspekta
       realizāciju var uzskatīt par šablona uzvedības vispārināšanu, ko var
       atkārtoti izmantot un dalīt starp vairākiem šablona eksemplāriem
●
    Kompozīcijas caurspīdīgums
     ●
       šablona realizācija nav saistīta ar lietojuma klasēm, to iesaistīšana citās
       saistībās neietekmē lietojuma klašu koda papildināšanu.
●
    Novērš daudzkārtīgas mantošanas problēmu, ja lietojuma klase jau atrodas
    kādā citā mantošanas hierarhijā

●
    GoF šablonu implementēšana ar AOP
     ●
       17 šabloni (74%)
     ●
       12 šabloni (52%) – realizācija tiek abstrahēta atkārtoti lietojamā kodā
     ●
       14 šabloni (61%) – caurspīdīga šablonu eksemplāru kompozīcija
     ●
       Kvantitatīvie novērtējumi (J.Hannemann, G.Kiczales)

                                                                                 13
7. Modeļvadāma programmatūras
    izstrāde (MDE)

●
    Sistemātiskā modeļu pielietošana programmatūras izstrādes
    dzīves ciklā

●
    Programmatūras modeļu izmantošana primāro izstrādes artefaktu
    un izteiksmes formu veidā

●
    Zināšanu atspoguļošana strukturētā veidā ar modelēšanas
    valodas palīdzību




                                                                14
7. Modeļvadāma arhitektūra (MDA)
●
    OMG (Object Management Group) iniciatīva
●
    No platformas neatkarīga pieeja programmatūras projektēšanai un izstrādei
●
    Nodrošina karkasu un vadlīnijas programmatūras izstrādes procesam
●
    Mērķis
    ●
      izstrādes procesa uzlabošana, ātri realizējamas procesā iekļautas
      aktivitātes, kvalitāte
    ●
      sistēmas funkcionalitātes atdalīšana no detaļām, kā sistēma izmanto
      izvēlētas platformas iespējas
    ●
      pārnesamība, sadarbspēja un atkārtotā lietošana
●
    MDA izstrādes dzīves cikls
    ●
      pēc būtības neatšķiras no tradicionāla
    ● atšķirība izpaužas izstrādes procesa artefaktu būtībā




                                                                                15
7. MDA karkass
●
    CIM (Computation Independent Model, “Skaitļošanas” neatkarīgs modelis) –
    augstākais abstrakcijas līmenis, kurā ir specificēta sistēmas funkcionēšana
    (domēnu modelis, biznesa modelis)

●
    PIM (Platform Independent Model, Platformnearkarīgs modelis) – sistēmas
    funkcionēšanas modelis neatkarīgi no izvēlētās realizācijas vides. Ļauj
    izvairīties no pārāk agras izpildāmas platformas tehniskās detalizēšanas

●
    PSM (Platform Specific Model, platformas specifisks modelis) – sistēmas
    funkcionēšanas modelis implementēšanas platformas jēdzienos




                                                                                  16
8. Modelēšana un meta-modelēšana
●
    Modelis - sistēmas vai tās daļas apraksts valodā ar skaidri definētu formu
    (sintaksi) un nozīmi (semantiku), kura varētu būt automātiski interpretēta
    ar datora palīdzību (piem. UML)
    ●
        reālas pasaules parādību abstrakcija

●
    Meta-modelis – modelēšanas valodas modelis; atspoguļo pati modeļa
    īpašības; definē struktūru, semantiku un ierobežojumus vairāku modeļu
    kopai
    ●
        Meta-modelēšana - tehnika modeļu sintakses un to elementu
        kopsakarību definēšanai




                                                                             17
9. MDA tehnoloģiskais pamats (1/2)
●
    OMG četru slāņu arhitektūra

      Meta-meta-modelis (M3)
        Meta-modelis (M2)
           Modelis (M1)
         Informācija (M0)




                                         18
19
10. MDA tehnoloģiskais pamats (2/2)
●
    MOF (Meta Object Facility) - OMG meta-modeļu specificēšanas
    standarts, kurš ietver noteiktu konstrukciju kopu objektorientētas
    informācijas modelēšanai
     ●
        ļauj definēt (modelēšanas) valodas struktūras un uzvedības
        aspektus
     ●
        nespecificē modeļu apspoguļošanas vai saglabāšanas standartu

●
     XMI (XML Metadata Interchange) – OMG Meta-datņu Apmaiņas
    standarts, ļauj standartizēt MOF sakritīgo modeļu apmaiņu un piekļuvi

                                         <XMI xmi.version="1.1"
                                         xmlns:UML="omg.org/UML/1.4">
                                         <XMI.header>   ...
                                         <UML:Model xmi.id="1">
                                         <UML:Namespace.ownedElement>
                                         <UML:Stereotype xmi.id="2" isRoot="false"
                                         isLeaf="false“ ...



                                                                                     20
11. Modeļu transformācija (1/2)
●   Viena modeļa pārveidošanas process citā sistēmas modelī
●   Automātiskā mērķa modeļa ģenerēšana no avota modeļa atbilstoši transformāciju
    definīcijai (transformācijas noteikumu kopai)
●   Transformācijas noteikums - apraksta kādā veidā viena vai vairākas konstrukcijas
    (elementi) avota modeļa valodā varbūt transformētas mērķa valodā.
●   Transformācijas process un MDA
     ●  zemākā līmeņa modeļu un koda ģenerēšana no augstākā līmeņa modeļiem
     ●  modeļu atspoguļošana un sinhronizēšana vienā vai vairākos abstrakcijas līmeņos
     ●  modeļu evolūcijas un uzlabošanas procesi
     ●  augstākā līmeņa modeļu ģenerēšana no zemāka līmeņa modeļiem



             Avota meta-modelis              Transformācijas             Mērķa meta-modelis
                                  Izmanto       noteikumi      Izmanto

                        Atbilst                                             Atbilst


               Avota modelis                Transformācijas                Mērķa modelis
                                  Izmanto         rīks         Veido
                                                                                              21
11. Modeļu transformācija (2/2)

●
    M2T (no modeļa uz tekstu) - operē ar teksta virknēm (“jauka drukāšana”)
    ●
        uz šabloniem balstīta transformācija, “apmeklētāja” transformācija

●
    M2M (no modeļa uz modeli) - transformācijas rezultāts ir mērķa meta-modeļa
    eksemplārs
    ●
        tiešās manipulācijas, ar struktūru vadītas manipulācijas, uz šabloniem balstīta
        manipulācijas pieeja, uz grafu transformācijām balstītas pieejas

●
    Hibrīdas modeļu transformācijas




                                                                                          22
Novērtējums

●
    Nodrošina augstāko izstrādātāju produktivitāti, piedāvājot
    līdzekļus PIM transformācijas automatizēšanai

●
    Konkrētas transformācijas loģika tiek definēta vienreiz, un tā
    varbūt izmantojama vairāku sistēmu izstrādē

●
    PIM ļauj izstrādātājiem izvairīties no pārāk agras izpildāmas
    platformas tehniskās detalizēšanas – tehnoloģijas specifiskas
    detaļas tiek aprakstītas transformācijas līmenī

●
    PSM un koda līmenī izstrādātajam paliek mazāk darba, jo
    noteikts koda apjoms tiek automātiski ģenerēts


                                                                     23

More Related Content

Viewers also liked

Android internals 09 - Sensors, Power Management, Input subsystem, Data stora...
Android internals 09 - Sensors, Power Management, Input subsystem, Data stora...Android internals 09 - Sensors, Power Management, Input subsystem, Data stora...
Android internals 09 - Sensors, Power Management, Input subsystem, Data stora...Egor Elizarov
 
Android internals 03 - Build system, emulator (rev_1.1)
Android internals 03 - Build system, emulator (rev_1.1)Android internals 03 - Build system, emulator (rev_1.1)
Android internals 03 - Build system, emulator (rev_1.1)Egor Elizarov
 
Android internals 08 - System start up, Media subsystem (rev_1.1)
Android internals 08 - System start up, Media subsystem (rev_1.1)Android internals 08 - System start up, Media subsystem (rev_1.1)
Android internals 08 - System start up, Media subsystem (rev_1.1)Egor Elizarov
 
Advanced Android Design Implementation
Advanced Android Design ImplementationAdvanced Android Design Implementation
Advanced Android Design ImplementationTack Mobile
 
Android Protips: Advanced Topics for Expert Android App Developers
Android Protips: Advanced Topics for Expert Android App DevelopersAndroid Protips: Advanced Topics for Expert Android App Developers
Android Protips: Advanced Topics for Expert Android App DevelopersReto Meier
 
Android Development: Build Android App from Scratch
Android Development: Build Android App from ScratchAndroid Development: Build Android App from Scratch
Android Development: Build Android App from ScratchTaufan Erfiyanto
 
Android Material Design APIs/Tips
Android Material Design APIs/TipsAndroid Material Design APIs/Tips
Android Material Design APIs/TipsKen Yee
 
Android internals 07 - Android graphics (rev_1.1)
Android internals 07 - Android graphics (rev_1.1)Android internals 07 - Android graphics (rev_1.1)
Android internals 07 - Android graphics (rev_1.1)Egor Elizarov
 
How you can use social media to impact the world
How you can use social media to impact the worldHow you can use social media to impact the world
How you can use social media to impact the worldSean Si
 
Presentation on Android operating system
Presentation on Android operating systemPresentation on Android operating system
Presentation on Android operating systemSalma Begum
 
Android vs Others Operating System
Android vs Others Operating SystemAndroid vs Others Operating System
Android vs Others Operating SystemShemul Hossain
 

Viewers also liked (15)

Android internals 09 - Sensors, Power Management, Input subsystem, Data stora...
Android internals 09 - Sensors, Power Management, Input subsystem, Data stora...Android internals 09 - Sensors, Power Management, Input subsystem, Data stora...
Android internals 09 - Sensors, Power Management, Input subsystem, Data stora...
 
Android internals 03 - Build system, emulator (rev_1.1)
Android internals 03 - Build system, emulator (rev_1.1)Android internals 03 - Build system, emulator (rev_1.1)
Android internals 03 - Build system, emulator (rev_1.1)
 
Android internals 08 - System start up, Media subsystem (rev_1.1)
Android internals 08 - System start up, Media subsystem (rev_1.1)Android internals 08 - System start up, Media subsystem (rev_1.1)
Android internals 08 - System start up, Media subsystem (rev_1.1)
 
Advanced Android Design Implementation
Advanced Android Design ImplementationAdvanced Android Design Implementation
Advanced Android Design Implementation
 
Android Internals
Android InternalsAndroid Internals
Android Internals
 
Android Protips: Advanced Topics for Expert Android App Developers
Android Protips: Advanced Topics for Expert Android App DevelopersAndroid Protips: Advanced Topics for Expert Android App Developers
Android Protips: Advanced Topics for Expert Android App Developers
 
Android Development: Build Android App from Scratch
Android Development: Build Android App from ScratchAndroid Development: Build Android App from Scratch
Android Development: Build Android App from Scratch
 
Android Material Design APIs/Tips
Android Material Design APIs/TipsAndroid Material Design APIs/Tips
Android Material Design APIs/Tips
 
Android internals 07 - Android graphics (rev_1.1)
Android internals 07 - Android graphics (rev_1.1)Android internals 07 - Android graphics (rev_1.1)
Android internals 07 - Android graphics (rev_1.1)
 
Simulation Using Isim
Simulation Using Isim Simulation Using Isim
Simulation Using Isim
 
Android Booting Scenarios
Android Booting ScenariosAndroid Booting Scenarios
Android Booting Scenarios
 
How you can use social media to impact the world
How you can use social media to impact the worldHow you can use social media to impact the world
How you can use social media to impact the world
 
Presentation on Android operating system
Presentation on Android operating systemPresentation on Android operating system
Presentation on Android operating system
 
Android vs Others Operating System
Android vs Others Operating SystemAndroid vs Others Operating System
Android vs Others Operating System
 
Android ppt
Android ppt Android ppt
Android ppt
 

Similar to LDP lecture 4

Darbietilpiibas prognozeeshana liva steinberga - 29 10 2012
Darbietilpiibas prognozeeshana   liva steinberga - 29 10 2012Darbietilpiibas prognozeeshana   liva steinberga - 29 10 2012
Darbietilpiibas prognozeeshana liva steinberga - 29 10 2012Liva Steinberga
 
Vienībtestēšana (ar PHPUnit)
Vienībtestēšana (ar PHPUnit)Vienībtestēšana (ar PHPUnit)
Vienībtestēšana (ar PHPUnit)Krišs Rauhvargers
 
Apakshprogrammas
ApakshprogrammasApakshprogrammas
Apakshprogrammasmotisone
 
Dpa praktisko laboratoriju piedāvājums
Dpa praktisko laboratoriju piedāvājumsDpa praktisko laboratoriju piedāvājums
Dpa praktisko laboratoriju piedāvājumsebuc
 
Grāmatvedības un uzņēmumu vadības sistēmu programmēšana
Grāmatvedības un uzņēmumu vadības sistēmu programmēšanaGrāmatvedības un uzņēmumu vadības sistēmu programmēšana
Grāmatvedības un uzņēmumu vadības sistēmu programmēšanaGints Turlajs
 
Python izmantošana skolā.
Python izmantošana skolā.Python izmantošana skolā.
Python izmantošana skolā.kalvis
 
Aģenta arhitektūra (daudzaģentu sistēmās)
Aģenta arhitektūra (daudzaģentu sistēmās)Aģenta arhitektūra (daudzaģentu sistēmās)
Aģenta arhitektūra (daudzaģentu sistēmās)Ingars Ribners
 
Kas ir HPC? Augstas veiktspējas skaitļošana. Leo Trukšāns. DPA Konference 2014.
Kas ir HPC? Augstas veiktspējas skaitļošana. Leo Trukšāns. DPA Konference 2014.Kas ir HPC? Augstas veiktspējas skaitļošana. Leo Trukšāns. DPA Konference 2014.
Kas ir HPC? Augstas veiktspējas skaitļošana. Leo Trukšāns. DPA Konference 2014.ebuc
 

Similar to LDP lecture 4 (12)

LDP lecture 3
LDP lecture 3LDP lecture 3
LDP lecture 3
 
Darbietilpiibas prognozeeshana liva steinberga - 29 10 2012
Darbietilpiibas prognozeeshana   liva steinberga - 29 10 2012Darbietilpiibas prognozeeshana   liva steinberga - 29 10 2012
Darbietilpiibas prognozeeshana liva steinberga - 29 10 2012
 
Vienībtestēšana (ar PHPUnit)
Vienībtestēšana (ar PHPUnit)Vienībtestēšana (ar PHPUnit)
Vienībtestēšana (ar PHPUnit)
 
Apakshprogrammas
ApakshprogrammasApakshprogrammas
Apakshprogrammas
 
Dpa praktisko laboratoriju piedāvājums
Dpa praktisko laboratoriju piedāvājumsDpa praktisko laboratoriju piedāvājums
Dpa praktisko laboratoriju piedāvājums
 
PL/SQL vienībtestēšana ar ruby
PL/SQL vienībtestēšana ar rubyPL/SQL vienībtestēšana ar ruby
PL/SQL vienībtestēšana ar ruby
 
Grāmatvedības un uzņēmumu vadības sistēmu programmēšana
Grāmatvedības un uzņēmumu vadības sistēmu programmēšanaGrāmatvedības un uzņēmumu vadības sistēmu programmēšana
Grāmatvedības un uzņēmumu vadības sistēmu programmēšana
 
Programmatūras testēšanas pamati
Programmatūras testēšanas pamatiProgrammatūras testēšanas pamati
Programmatūras testēšanas pamati
 
MaxCMS
MaxCMSMaxCMS
MaxCMS
 
Python izmantošana skolā.
Python izmantošana skolā.Python izmantošana skolā.
Python izmantošana skolā.
 
Aģenta arhitektūra (daudzaģentu sistēmās)
Aģenta arhitektūra (daudzaģentu sistēmās)Aģenta arhitektūra (daudzaģentu sistēmās)
Aģenta arhitektūra (daudzaģentu sistēmās)
 
Kas ir HPC? Augstas veiktspējas skaitļošana. Leo Trukšāns. DPA Konference 2014.
Kas ir HPC? Augstas veiktspējas skaitļošana. Leo Trukšāns. DPA Konference 2014.Kas ir HPC? Augstas veiktspējas skaitļošana. Leo Trukšāns. DPA Konference 2014.
Kas ir HPC? Augstas veiktspējas skaitļošana. Leo Trukšāns. DPA Konference 2014.
 

LDP lecture 4

  • 1. DITF LDI Lietišķo datorsistēmu programmatūras profesora grupa Lietišķo datorsistēmu programmatūra 4.lekcija Materiālu sagatavoja: V.Kotovs Atbildīgais pasniedzējs: prof. L.Novickis
  • 2. …  PI tendences – sarežģītības un abstrakcijas līmeņa paaugstināšana; izstrādes procesa uzlabošana, automatizēšanas un uzturamības atvieglošana; efektīvu un pierādītu risinājumu atkārtota izmantošana; prasību mainīgums  Atkārtotā lietošana - process, kura ietvaros organizācija definē sistemātiski pielietojamo procedūru kopu, lai specificētu, izveidotu, klasificētu, dabūtu un adaptētu programmatūras artefaktus, ko var pielietot lietojumu izstrādes procesā  Modularitāte - Lingvistiski modulāras vienības princips, Atklāts-Slēgts princips, Iekļautas dokumentācijas princips ...  Projektēšanas šablons - nosauc, abstrahē un identificē galvenos projektēšanas struktūras aspektus, vērtīgus atkārtoti lietojama objektorientēta projektējuma izstrādē 2
  • 3. Ieskats aspektorientētā programmēšanā  Aspektu izmantošana programmatūras izstrādē  Projektēšanas šablonu implementēšana ar AOP  Modeļvadāma programmatūras izstrāde 3
  • 4. 1. Ieskats aspektorientētā programmēšanā (1/4)  Koda izkliede if (logger.isLoggable(Level.INFO)) { logger.log(...) } ... try { sessionFactory.getCurrentSession() .beginTransaction(); ... sessionFactory.getCurrentSession() .getTransaction().commit(); } catch (RuntimeException re) { sessionFactory.getCurrentSession() .getTransaction().rollback(); throw re; } ... if (param == null) throw new IllegalArgumentException(); 4
  • 5. 1. Ieskats aspektorientētā programmēšanā (2/4)  Koda izkliede  Koda rindas tiek atkārtotas vairākās klasēs  Parādās jebkurā izstrādes vidē / valodā  Samazina sistēmas uzturamību  Auditēšana, transakciju apstrāde, laiksakritības pārvaldība, sinhronizācija 5
  • 6. 1. Ieskats aspektorientētā programmēšanā (3/4)  Šķērsojošā funkcionalitāte (prasība) ✔ raksturīpašība, kas attiecas uz programmsistēmu kā uz vienu veselo, šķērsojot tās modulāro struktūru ✔ noteikta veida funkcionalitāte (piem., sinhronizācija), kuras realizācija ir sastopama vairākos moduļos sistēmā 6
  • 7. 1. Ieskats aspektorientētā programmēšanā (4/4)  Aspektorientētā programmēšana  Programmatūras izstrādes paradigma koncepciju un šķērsojošās funkcionalitātes specificēšanai skaidri definētās programmatūras struktūrās (aspektos)  AOSD (programmatūras projektēšana), AORE (prasību inženierija), AOM (modelēšana)  AOP paplašina OOP  šķērsojošās funkcionalitātes implementēšana  pirmkoda izkliedēšanas novēršana  Java (AspectJ, JBossAOP); C++ (AspectC++), .NET (AspectC#) 7
  • 8. 2. AOP koncepcijas (1/2)  Aspekts  modulis ar šķērsojošās prasības realizāciju, kas attiecas uz funkcionalitāti, kuru nevar efektīvi iedalīt moduļos ar OOP izstrādes tehnikām  Intereses (Concerns)  sistēmas darbības aspekti (drošība, monitorings, transakciju vadība, laiksakritība, autorizācija)  Aspektu kompilētājs (aspect weaver)  programma, kura integrē klases un aspektus  Kompilēšanas laikā  Pirmkoda vai bait-koda līmenī  Izpildes laikā 8
  • 9. 2. AOP koncepcijas (2/2)  Savienojuma punkts (Joinpoint)  Lietojuma izpildes plūsmas punkts, kurā jāpiemēro vienu vai vairākus aspektus  Metodes  Konstruktori  Izņēmuma stāvokļi  Piekļuve objektu atribūtiem  Pointcut  Izteiksme savienojuma punktu kopas aprakstīšanai  Padoms (Advice)  Aspekta uzvedības specificēšana (pirms, pēc, apkārt)  Ieviešana (Introduction)  AOP atvasināšanas mehānisms 9
  • 10. 3. AspectJ piemērs public aspect ArgValidationAspect { /* Pointcut declaration */ pointcut asserted(final Object target): execution(* test.pojo..*(*)) && this(target); /* Advice declaration */ before(final Object target) : asserted(target){ for(Object o : thisJoinPoint.getArgs()) { if (o == null) throw new IllegalArgumentException("..."); } }} public class TestPojo { /** @param o Could not be NULL */ public void doSmth(Object o) {} public static void main(String[] args) { new TestPojo().doSmth(null); }} Exception in thread "main" java.lang.IllegalArgumentException: 1 argument of 'void TestPojo.doSmth(Object)' could not be null. 10
  • 11. 4. Projektēšanas šablonu implementēšana ar AOP ➢ Novērojumi: ● Vairāki projektēšanas šabloni iesaista šķērsojošo funkcionalitāti attiecībās starp šablonā definētām lomām un klasēm šablonu eksemplāros (piem. “novērotājs”) ✔ Šablona implementēšana parasti šķērso citu šablonu (lomas ir izkliedētas dalībnieku klasēs) ➢ Šablonu lomas ✔ Loma apraksta komponenta daļu, specifisku kādam tas uzvedības aspektam, un parasti nav normāli lokalizējama ar OOP līdzekļiem ✔ Definējošā loma – klasēm parasti nav citas funkcionalitātes ārpus šablona (piem. Façade) ✔ Pārklājošā loma - klasēm piemīt plaša atbildību kopa (piem. Starpnieks) ➢ Ideja ✔ Šablonu vispārējās funkcionalitātes identificēšana un tās izolēšana aspektu moduļos 11
  • 12. 5. “Novērotājs” šablona AOP implementēšana ● Vispārējās šablona daļas ● “Subject” un “Observer” lomas ● “Subject-Observer” saišu uzturēšana ● “Observer” paziņošanas loģika par “Subject” izmaiņām ● Specifiskās katra šablona eksemplāra daļas ● Lomu piešķiršana klasēm ● “Observer” specifiska loģika 12
  • 13. 6. AOP risinājuma novērtēšana ● Lokalizēšana ● šablona implementēšana tiek lokalizēta abstraktā un konkrētos aspektos, nevis lietojuma klasēs ● Atkārtotā lietojamība ● šablona bāzes kods ir abstrahēts un atkārtoti lietojams. Abstrakta aspekta realizāciju var uzskatīt par šablona uzvedības vispārināšanu, ko var atkārtoti izmantot un dalīt starp vairākiem šablona eksemplāriem ● Kompozīcijas caurspīdīgums ● šablona realizācija nav saistīta ar lietojuma klasēm, to iesaistīšana citās saistībās neietekmē lietojuma klašu koda papildināšanu. ● Novērš daudzkārtīgas mantošanas problēmu, ja lietojuma klase jau atrodas kādā citā mantošanas hierarhijā ● GoF šablonu implementēšana ar AOP ● 17 šabloni (74%) ● 12 šabloni (52%) – realizācija tiek abstrahēta atkārtoti lietojamā kodā ● 14 šabloni (61%) – caurspīdīga šablonu eksemplāru kompozīcija ● Kvantitatīvie novērtējumi (J.Hannemann, G.Kiczales) 13
  • 14. 7. Modeļvadāma programmatūras izstrāde (MDE) ● Sistemātiskā modeļu pielietošana programmatūras izstrādes dzīves ciklā ● Programmatūras modeļu izmantošana primāro izstrādes artefaktu un izteiksmes formu veidā ● Zināšanu atspoguļošana strukturētā veidā ar modelēšanas valodas palīdzību 14
  • 15. 7. Modeļvadāma arhitektūra (MDA) ● OMG (Object Management Group) iniciatīva ● No platformas neatkarīga pieeja programmatūras projektēšanai un izstrādei ● Nodrošina karkasu un vadlīnijas programmatūras izstrādes procesam ● Mērķis ● izstrādes procesa uzlabošana, ātri realizējamas procesā iekļautas aktivitātes, kvalitāte ● sistēmas funkcionalitātes atdalīšana no detaļām, kā sistēma izmanto izvēlētas platformas iespējas ● pārnesamība, sadarbspēja un atkārtotā lietošana ● MDA izstrādes dzīves cikls ● pēc būtības neatšķiras no tradicionāla ● atšķirība izpaužas izstrādes procesa artefaktu būtībā 15
  • 16. 7. MDA karkass ● CIM (Computation Independent Model, “Skaitļošanas” neatkarīgs modelis) – augstākais abstrakcijas līmenis, kurā ir specificēta sistēmas funkcionēšana (domēnu modelis, biznesa modelis) ● PIM (Platform Independent Model, Platformnearkarīgs modelis) – sistēmas funkcionēšanas modelis neatkarīgi no izvēlētās realizācijas vides. Ļauj izvairīties no pārāk agras izpildāmas platformas tehniskās detalizēšanas ● PSM (Platform Specific Model, platformas specifisks modelis) – sistēmas funkcionēšanas modelis implementēšanas platformas jēdzienos 16
  • 17. 8. Modelēšana un meta-modelēšana ● Modelis - sistēmas vai tās daļas apraksts valodā ar skaidri definētu formu (sintaksi) un nozīmi (semantiku), kura varētu būt automātiski interpretēta ar datora palīdzību (piem. UML) ● reālas pasaules parādību abstrakcija ● Meta-modelis – modelēšanas valodas modelis; atspoguļo pati modeļa īpašības; definē struktūru, semantiku un ierobežojumus vairāku modeļu kopai ● Meta-modelēšana - tehnika modeļu sintakses un to elementu kopsakarību definēšanai 17
  • 18. 9. MDA tehnoloģiskais pamats (1/2) ● OMG četru slāņu arhitektūra Meta-meta-modelis (M3) Meta-modelis (M2) Modelis (M1) Informācija (M0) 18
  • 19. 19
  • 20. 10. MDA tehnoloģiskais pamats (2/2) ● MOF (Meta Object Facility) - OMG meta-modeļu specificēšanas standarts, kurš ietver noteiktu konstrukciju kopu objektorientētas informācijas modelēšanai ● ļauj definēt (modelēšanas) valodas struktūras un uzvedības aspektus ● nespecificē modeļu apspoguļošanas vai saglabāšanas standartu ● XMI (XML Metadata Interchange) – OMG Meta-datņu Apmaiņas standarts, ļauj standartizēt MOF sakritīgo modeļu apmaiņu un piekļuvi <XMI xmi.version="1.1" xmlns:UML="omg.org/UML/1.4"> <XMI.header> ... <UML:Model xmi.id="1"> <UML:Namespace.ownedElement> <UML:Stereotype xmi.id="2" isRoot="false" isLeaf="false“ ... 20
  • 21. 11. Modeļu transformācija (1/2) ● Viena modeļa pārveidošanas process citā sistēmas modelī ● Automātiskā mērķa modeļa ģenerēšana no avota modeļa atbilstoši transformāciju definīcijai (transformācijas noteikumu kopai) ● Transformācijas noteikums - apraksta kādā veidā viena vai vairākas konstrukcijas (elementi) avota modeļa valodā varbūt transformētas mērķa valodā. ● Transformācijas process un MDA ● zemākā līmeņa modeļu un koda ģenerēšana no augstākā līmeņa modeļiem ● modeļu atspoguļošana un sinhronizēšana vienā vai vairākos abstrakcijas līmeņos ● modeļu evolūcijas un uzlabošanas procesi ● augstākā līmeņa modeļu ģenerēšana no zemāka līmeņa modeļiem Avota meta-modelis Transformācijas Mērķa meta-modelis Izmanto noteikumi Izmanto Atbilst Atbilst Avota modelis Transformācijas Mērķa modelis Izmanto rīks Veido 21
  • 22. 11. Modeļu transformācija (2/2) ● M2T (no modeļa uz tekstu) - operē ar teksta virknēm (“jauka drukāšana”) ● uz šabloniem balstīta transformācija, “apmeklētāja” transformācija ● M2M (no modeļa uz modeli) - transformācijas rezultāts ir mērķa meta-modeļa eksemplārs ● tiešās manipulācijas, ar struktūru vadītas manipulācijas, uz šabloniem balstīta manipulācijas pieeja, uz grafu transformācijām balstītas pieejas ● Hibrīdas modeļu transformācijas 22
  • 23. Novērtējums ● Nodrošina augstāko izstrādātāju produktivitāti, piedāvājot līdzekļus PIM transformācijas automatizēšanai ● Konkrētas transformācijas loģika tiek definēta vienreiz, un tā varbūt izmantojama vairāku sistēmu izstrādē ● PIM ļauj izstrādātājiem izvairīties no pārāk agras izpildāmas platformas tehniskās detalizēšanas – tehnoloģijas specifiskas detaļas tiek aprakstītas transformācijas līmenī ● PSM un koda līmenī izstrādātajam paliek mazāk darba, jo noteikts koda apjoms tiek automātiski ģenerēts 23