REFRAME–A software framework for managing reactive dependencies in object-oriented applications
In object-oriented (OO) applications, objects collaborate by invoking each other's behavior and data, thus forming dependencies. Sometimes, we need these dependencies to be reactive, so that, for example, an object automatically reacts to events and changes in other objects. The need for such d...
Ausführliche Beschreibung
Autor*in: |
Marko Mijač [verfasserIn] Antonio Garcia-Cabot [verfasserIn] Vjeran Strahonja [verfasserIn] |
---|
Format: |
E-Artikel |
---|---|
Sprache: |
Englisch |
Erschienen: |
2023 |
---|
Schlagwörter: |
---|
Übergeordnetes Werk: |
In: SoftwareX - Elsevier, 2016, 24(2023), Seite 101571- |
---|---|
Übergeordnetes Werk: |
volume:24 ; year:2023 ; pages:101571- |
Links: |
---|
DOI / URN: |
10.1016/j.softx.2023.101571 |
---|
Katalog-ID: |
DOAJ099191598 |
---|
LEADER | 01000naa a22002652 4500 | ||
---|---|---|---|
001 | DOAJ099191598 | ||
003 | DE-627 | ||
005 | 20240414020430.0 | ||
007 | cr uuu---uuuuu | ||
008 | 240414s2023 xx |||||o 00| ||eng c | ||
024 | 7 | |a 10.1016/j.softx.2023.101571 |2 doi | |
035 | |a (DE-627)DOAJ099191598 | ||
035 | |a (DE-599)DOAJ2593a4374ff6488b8f5bfa05e9f7214a | ||
040 | |a DE-627 |b ger |c DE-627 |e rakwb | ||
041 | |a eng | ||
050 | 0 | |a QA76.75-76.765 | |
100 | 0 | |a Marko Mijač |e verfasserin |4 aut | |
245 | 1 | 0 | |a REFRAME–A software framework for managing reactive dependencies in object-oriented applications |
264 | 1 | |c 2023 | |
336 | |a Text |b txt |2 rdacontent | ||
337 | |a Computermedien |b c |2 rdamedia | ||
338 | |a Online-Ressource |b cr |2 rdacarrier | ||
520 | |a In object-oriented (OO) applications, objects collaborate by invoking each other's behavior and data, thus forming dependencies. Sometimes, we need these dependencies to be reactive, so that, for example, an object automatically reacts to events and changes in other objects. The need for such dependencies often arises in event-driven systems, graphical user interfaces (GUI), animation, spreadsheet systems, etc. While in some cases reactive dependencies form fairly simple structures, in cases of implementing complex calculation models reactive dependencies can be especially numerous and can form complex dependency graphs. Understanding such graphs and manually handling reactive dependencies is extremely challenging and error-prone. Paradigms such as Reactive Programming (RP) make this task easier by providing programming languages with built-in abstractions and mechanisms for handling reactive dependencies. However, in the OO context, developers have no available solutions capable of handling complex dependency graphs. Instead, they often resort to implementing their own solutions rooted in a well-known, but limited Observer design pattern. While improved design patterns have emerged over time, they present smaller-scale solutions, oriented only on design reuse. Developers still need to invest significant effort to implement and test the proposed design. This indicates that there is a need for a larger-scale and implementation-level solution that developers could (re)use out-of-the-box. Therefore, this paper presents a software framework named REFRAME which provides built-in abstractions, mechanisms and tools for handling reactive dependencies in OO context. | ||
650 | 4 | |a Software frameworks | |
650 | 4 | |a Design science | |
650 | 4 | |a Object-oriented paradigm | |
650 | 4 | |a Reactive paradigm | |
653 | 0 | |a Computer software | |
700 | 0 | |a Antonio Garcia-Cabot |e verfasserin |4 aut | |
700 | 0 | |a Vjeran Strahonja |e verfasserin |4 aut | |
773 | 0 | 8 | |i In |t SoftwareX |d Elsevier, 2016 |g 24(2023), Seite 101571- |w (DE-627)824451805 |w (DE-600)2819369-6 |x 23527110 |7 nnns |
773 | 1 | 8 | |g volume:24 |g year:2023 |g pages:101571- |
856 | 4 | 0 | |u https://doi.org/10.1016/j.softx.2023.101571 |z kostenfrei |
856 | 4 | 0 | |u https://doaj.org/article/2593a4374ff6488b8f5bfa05e9f7214a |z kostenfrei |
856 | 4 | 0 | |u http://www.sciencedirect.com/science/article/pii/S2352711023002674 |z kostenfrei |
856 | 4 | 2 | |u https://doaj.org/toc/2352-7110 |y Journal toc |z kostenfrei |
912 | |a GBV_USEFLAG_A | ||
912 | |a SYSFLAG_A | ||
912 | |a GBV_DOAJ | ||
912 | |a GBV_ILN_11 | ||
912 | |a GBV_ILN_20 | ||
912 | |a GBV_ILN_22 | ||
912 | |a GBV_ILN_23 | ||
912 | |a GBV_ILN_24 | ||
912 | |a GBV_ILN_31 | ||
912 | |a GBV_ILN_39 | ||
912 | |a GBV_ILN_40 | ||
912 | |a GBV_ILN_60 | ||
912 | |a GBV_ILN_62 | ||
912 | |a GBV_ILN_63 | ||
912 | |a GBV_ILN_65 | ||
912 | |a GBV_ILN_69 | ||
912 | |a GBV_ILN_70 | ||
912 | |a GBV_ILN_73 | ||
912 | |a GBV_ILN_95 | ||
912 | |a GBV_ILN_105 | ||
912 | |a GBV_ILN_110 | ||
912 | |a GBV_ILN_151 | ||
912 | |a GBV_ILN_161 | ||
912 | |a GBV_ILN_170 | ||
912 | |a GBV_ILN_213 | ||
912 | |a GBV_ILN_224 | ||
912 | |a GBV_ILN_230 | ||
912 | |a GBV_ILN_285 | ||
912 | |a GBV_ILN_293 | ||
912 | |a GBV_ILN_370 | ||
912 | |a GBV_ILN_602 | ||
912 | |a GBV_ILN_2001 | ||
912 | |a GBV_ILN_2003 | ||
912 | |a GBV_ILN_2005 | ||
912 | |a GBV_ILN_2006 | ||
912 | |a GBV_ILN_2007 | ||
912 | |a GBV_ILN_2008 | ||
912 | |a GBV_ILN_2009 | ||
912 | |a GBV_ILN_2010 | ||
912 | |a GBV_ILN_2011 | ||
912 | |a GBV_ILN_2014 | ||
912 | |a GBV_ILN_2015 | ||
912 | |a GBV_ILN_2020 | ||
912 | |a GBV_ILN_2021 | ||
912 | |a GBV_ILN_2025 | ||
912 | |a GBV_ILN_2026 | ||
912 | |a GBV_ILN_2027 | ||
912 | |a GBV_ILN_2034 | ||
912 | |a GBV_ILN_2038 | ||
912 | |a GBV_ILN_2044 | ||
912 | |a GBV_ILN_2048 | ||
912 | |a GBV_ILN_2049 | ||
912 | |a GBV_ILN_2050 | ||
912 | |a GBV_ILN_2055 | ||
912 | |a GBV_ILN_2056 | ||
912 | |a GBV_ILN_2059 | ||
912 | |a GBV_ILN_2061 | ||
912 | |a GBV_ILN_2064 | ||
912 | |a GBV_ILN_2088 | ||
912 | |a GBV_ILN_2106 | ||
912 | |a GBV_ILN_2110 | ||
912 | |a GBV_ILN_2112 | ||
912 | |a GBV_ILN_2122 | ||
912 | |a GBV_ILN_2129 | ||
912 | |a GBV_ILN_2143 | ||
912 | |a GBV_ILN_2152 | ||
912 | |a GBV_ILN_2153 | ||
912 | |a GBV_ILN_2190 | ||
912 | |a GBV_ILN_2232 | ||
912 | |a GBV_ILN_2336 | ||
912 | |a GBV_ILN_2470 | ||
912 | |a GBV_ILN_2507 | ||
912 | |a GBV_ILN_4012 | ||
912 | |a GBV_ILN_4035 | ||
912 | |a GBV_ILN_4037 | ||
912 | |a GBV_ILN_4112 | ||
912 | |a GBV_ILN_4125 | ||
912 | |a GBV_ILN_4126 | ||
912 | |a GBV_ILN_4242 | ||
912 | |a GBV_ILN_4249 | ||
912 | |a GBV_ILN_4251 | ||
912 | |a GBV_ILN_4305 | ||
912 | |a GBV_ILN_4306 | ||
912 | |a GBV_ILN_4307 | ||
912 | |a GBV_ILN_4313 | ||
912 | |a GBV_ILN_4322 | ||
912 | |a GBV_ILN_4323 | ||
912 | |a GBV_ILN_4324 | ||
912 | |a GBV_ILN_4325 | ||
912 | |a GBV_ILN_4326 | ||
912 | |a GBV_ILN_4333 | ||
912 | |a GBV_ILN_4334 | ||
912 | |a GBV_ILN_4335 | ||
912 | |a GBV_ILN_4338 | ||
912 | |a GBV_ILN_4367 | ||
912 | |a GBV_ILN_4393 | ||
912 | |a GBV_ILN_4700 | ||
951 | |a AR | ||
952 | |d 24 |j 2023 |h 101571- |
author_variant |
m m mm a g c agc v s vs |
---|---|
matchkey_str |
article:23527110:2023----::ermaotaermwrfraaigecieeednisnbe |
hierarchy_sort_str |
2023 |
callnumber-subject-code |
QA |
publishDate |
2023 |
allfields |
10.1016/j.softx.2023.101571 doi (DE-627)DOAJ099191598 (DE-599)DOAJ2593a4374ff6488b8f5bfa05e9f7214a DE-627 ger DE-627 rakwb eng QA76.75-76.765 Marko Mijač verfasserin aut REFRAME–A software framework for managing reactive dependencies in object-oriented applications 2023 Text txt rdacontent Computermedien c rdamedia Online-Ressource cr rdacarrier In object-oriented (OO) applications, objects collaborate by invoking each other's behavior and data, thus forming dependencies. Sometimes, we need these dependencies to be reactive, so that, for example, an object automatically reacts to events and changes in other objects. The need for such dependencies often arises in event-driven systems, graphical user interfaces (GUI), animation, spreadsheet systems, etc. While in some cases reactive dependencies form fairly simple structures, in cases of implementing complex calculation models reactive dependencies can be especially numerous and can form complex dependency graphs. Understanding such graphs and manually handling reactive dependencies is extremely challenging and error-prone. Paradigms such as Reactive Programming (RP) make this task easier by providing programming languages with built-in abstractions and mechanisms for handling reactive dependencies. However, in the OO context, developers have no available solutions capable of handling complex dependency graphs. Instead, they often resort to implementing their own solutions rooted in a well-known, but limited Observer design pattern. While improved design patterns have emerged over time, they present smaller-scale solutions, oriented only on design reuse. Developers still need to invest significant effort to implement and test the proposed design. This indicates that there is a need for a larger-scale and implementation-level solution that developers could (re)use out-of-the-box. Therefore, this paper presents a software framework named REFRAME which provides built-in abstractions, mechanisms and tools for handling reactive dependencies in OO context. Software frameworks Design science Object-oriented paradigm Reactive paradigm Computer software Antonio Garcia-Cabot verfasserin aut Vjeran Strahonja verfasserin aut In SoftwareX Elsevier, 2016 24(2023), Seite 101571- (DE-627)824451805 (DE-600)2819369-6 23527110 nnns volume:24 year:2023 pages:101571- https://doi.org/10.1016/j.softx.2023.101571 kostenfrei https://doaj.org/article/2593a4374ff6488b8f5bfa05e9f7214a kostenfrei http://www.sciencedirect.com/science/article/pii/S2352711023002674 kostenfrei https://doaj.org/toc/2352-7110 Journal toc kostenfrei GBV_USEFLAG_A SYSFLAG_A GBV_DOAJ GBV_ILN_11 GBV_ILN_20 GBV_ILN_22 GBV_ILN_23 GBV_ILN_24 GBV_ILN_31 GBV_ILN_39 GBV_ILN_40 GBV_ILN_60 GBV_ILN_62 GBV_ILN_63 GBV_ILN_65 GBV_ILN_69 GBV_ILN_70 GBV_ILN_73 GBV_ILN_95 GBV_ILN_105 GBV_ILN_110 GBV_ILN_151 GBV_ILN_161 GBV_ILN_170 GBV_ILN_213 GBV_ILN_224 GBV_ILN_230 GBV_ILN_285 GBV_ILN_293 GBV_ILN_370 GBV_ILN_602 GBV_ILN_2001 GBV_ILN_2003 GBV_ILN_2005 GBV_ILN_2006 GBV_ILN_2007 GBV_ILN_2008 GBV_ILN_2009 GBV_ILN_2010 GBV_ILN_2011 GBV_ILN_2014 GBV_ILN_2015 GBV_ILN_2020 GBV_ILN_2021 GBV_ILN_2025 GBV_ILN_2026 GBV_ILN_2027 GBV_ILN_2034 GBV_ILN_2038 GBV_ILN_2044 GBV_ILN_2048 GBV_ILN_2049 GBV_ILN_2050 GBV_ILN_2055 GBV_ILN_2056 GBV_ILN_2059 GBV_ILN_2061 GBV_ILN_2064 GBV_ILN_2088 GBV_ILN_2106 GBV_ILN_2110 GBV_ILN_2112 GBV_ILN_2122 GBV_ILN_2129 GBV_ILN_2143 GBV_ILN_2152 GBV_ILN_2153 GBV_ILN_2190 GBV_ILN_2232 GBV_ILN_2336 GBV_ILN_2470 GBV_ILN_2507 GBV_ILN_4012 GBV_ILN_4035 GBV_ILN_4037 GBV_ILN_4112 GBV_ILN_4125 GBV_ILN_4126 GBV_ILN_4242 GBV_ILN_4249 GBV_ILN_4251 GBV_ILN_4305 GBV_ILN_4306 GBV_ILN_4307 GBV_ILN_4313 GBV_ILN_4322 GBV_ILN_4323 GBV_ILN_4324 GBV_ILN_4325 GBV_ILN_4326 GBV_ILN_4333 GBV_ILN_4334 GBV_ILN_4335 GBV_ILN_4338 GBV_ILN_4367 GBV_ILN_4393 GBV_ILN_4700 AR 24 2023 101571- |
spelling |
10.1016/j.softx.2023.101571 doi (DE-627)DOAJ099191598 (DE-599)DOAJ2593a4374ff6488b8f5bfa05e9f7214a DE-627 ger DE-627 rakwb eng QA76.75-76.765 Marko Mijač verfasserin aut REFRAME–A software framework for managing reactive dependencies in object-oriented applications 2023 Text txt rdacontent Computermedien c rdamedia Online-Ressource cr rdacarrier In object-oriented (OO) applications, objects collaborate by invoking each other's behavior and data, thus forming dependencies. Sometimes, we need these dependencies to be reactive, so that, for example, an object automatically reacts to events and changes in other objects. The need for such dependencies often arises in event-driven systems, graphical user interfaces (GUI), animation, spreadsheet systems, etc. While in some cases reactive dependencies form fairly simple structures, in cases of implementing complex calculation models reactive dependencies can be especially numerous and can form complex dependency graphs. Understanding such graphs and manually handling reactive dependencies is extremely challenging and error-prone. Paradigms such as Reactive Programming (RP) make this task easier by providing programming languages with built-in abstractions and mechanisms for handling reactive dependencies. However, in the OO context, developers have no available solutions capable of handling complex dependency graphs. Instead, they often resort to implementing their own solutions rooted in a well-known, but limited Observer design pattern. While improved design patterns have emerged over time, they present smaller-scale solutions, oriented only on design reuse. Developers still need to invest significant effort to implement and test the proposed design. This indicates that there is a need for a larger-scale and implementation-level solution that developers could (re)use out-of-the-box. Therefore, this paper presents a software framework named REFRAME which provides built-in abstractions, mechanisms and tools for handling reactive dependencies in OO context. Software frameworks Design science Object-oriented paradigm Reactive paradigm Computer software Antonio Garcia-Cabot verfasserin aut Vjeran Strahonja verfasserin aut In SoftwareX Elsevier, 2016 24(2023), Seite 101571- (DE-627)824451805 (DE-600)2819369-6 23527110 nnns volume:24 year:2023 pages:101571- https://doi.org/10.1016/j.softx.2023.101571 kostenfrei https://doaj.org/article/2593a4374ff6488b8f5bfa05e9f7214a kostenfrei http://www.sciencedirect.com/science/article/pii/S2352711023002674 kostenfrei https://doaj.org/toc/2352-7110 Journal toc kostenfrei GBV_USEFLAG_A SYSFLAG_A GBV_DOAJ GBV_ILN_11 GBV_ILN_20 GBV_ILN_22 GBV_ILN_23 GBV_ILN_24 GBV_ILN_31 GBV_ILN_39 GBV_ILN_40 GBV_ILN_60 GBV_ILN_62 GBV_ILN_63 GBV_ILN_65 GBV_ILN_69 GBV_ILN_70 GBV_ILN_73 GBV_ILN_95 GBV_ILN_105 GBV_ILN_110 GBV_ILN_151 GBV_ILN_161 GBV_ILN_170 GBV_ILN_213 GBV_ILN_224 GBV_ILN_230 GBV_ILN_285 GBV_ILN_293 GBV_ILN_370 GBV_ILN_602 GBV_ILN_2001 GBV_ILN_2003 GBV_ILN_2005 GBV_ILN_2006 GBV_ILN_2007 GBV_ILN_2008 GBV_ILN_2009 GBV_ILN_2010 GBV_ILN_2011 GBV_ILN_2014 GBV_ILN_2015 GBV_ILN_2020 GBV_ILN_2021 GBV_ILN_2025 GBV_ILN_2026 GBV_ILN_2027 GBV_ILN_2034 GBV_ILN_2038 GBV_ILN_2044 GBV_ILN_2048 GBV_ILN_2049 GBV_ILN_2050 GBV_ILN_2055 GBV_ILN_2056 GBV_ILN_2059 GBV_ILN_2061 GBV_ILN_2064 GBV_ILN_2088 GBV_ILN_2106 GBV_ILN_2110 GBV_ILN_2112 GBV_ILN_2122 GBV_ILN_2129 GBV_ILN_2143 GBV_ILN_2152 GBV_ILN_2153 GBV_ILN_2190 GBV_ILN_2232 GBV_ILN_2336 GBV_ILN_2470 GBV_ILN_2507 GBV_ILN_4012 GBV_ILN_4035 GBV_ILN_4037 GBV_ILN_4112 GBV_ILN_4125 GBV_ILN_4126 GBV_ILN_4242 GBV_ILN_4249 GBV_ILN_4251 GBV_ILN_4305 GBV_ILN_4306 GBV_ILN_4307 GBV_ILN_4313 GBV_ILN_4322 GBV_ILN_4323 GBV_ILN_4324 GBV_ILN_4325 GBV_ILN_4326 GBV_ILN_4333 GBV_ILN_4334 GBV_ILN_4335 GBV_ILN_4338 GBV_ILN_4367 GBV_ILN_4393 GBV_ILN_4700 AR 24 2023 101571- |
allfields_unstemmed |
10.1016/j.softx.2023.101571 doi (DE-627)DOAJ099191598 (DE-599)DOAJ2593a4374ff6488b8f5bfa05e9f7214a DE-627 ger DE-627 rakwb eng QA76.75-76.765 Marko Mijač verfasserin aut REFRAME–A software framework for managing reactive dependencies in object-oriented applications 2023 Text txt rdacontent Computermedien c rdamedia Online-Ressource cr rdacarrier In object-oriented (OO) applications, objects collaborate by invoking each other's behavior and data, thus forming dependencies. Sometimes, we need these dependencies to be reactive, so that, for example, an object automatically reacts to events and changes in other objects. The need for such dependencies often arises in event-driven systems, graphical user interfaces (GUI), animation, spreadsheet systems, etc. While in some cases reactive dependencies form fairly simple structures, in cases of implementing complex calculation models reactive dependencies can be especially numerous and can form complex dependency graphs. Understanding such graphs and manually handling reactive dependencies is extremely challenging and error-prone. Paradigms such as Reactive Programming (RP) make this task easier by providing programming languages with built-in abstractions and mechanisms for handling reactive dependencies. However, in the OO context, developers have no available solutions capable of handling complex dependency graphs. Instead, they often resort to implementing their own solutions rooted in a well-known, but limited Observer design pattern. While improved design patterns have emerged over time, they present smaller-scale solutions, oriented only on design reuse. Developers still need to invest significant effort to implement and test the proposed design. This indicates that there is a need for a larger-scale and implementation-level solution that developers could (re)use out-of-the-box. Therefore, this paper presents a software framework named REFRAME which provides built-in abstractions, mechanisms and tools for handling reactive dependencies in OO context. Software frameworks Design science Object-oriented paradigm Reactive paradigm Computer software Antonio Garcia-Cabot verfasserin aut Vjeran Strahonja verfasserin aut In SoftwareX Elsevier, 2016 24(2023), Seite 101571- (DE-627)824451805 (DE-600)2819369-6 23527110 nnns volume:24 year:2023 pages:101571- https://doi.org/10.1016/j.softx.2023.101571 kostenfrei https://doaj.org/article/2593a4374ff6488b8f5bfa05e9f7214a kostenfrei http://www.sciencedirect.com/science/article/pii/S2352711023002674 kostenfrei https://doaj.org/toc/2352-7110 Journal toc kostenfrei GBV_USEFLAG_A SYSFLAG_A GBV_DOAJ GBV_ILN_11 GBV_ILN_20 GBV_ILN_22 GBV_ILN_23 GBV_ILN_24 GBV_ILN_31 GBV_ILN_39 GBV_ILN_40 GBV_ILN_60 GBV_ILN_62 GBV_ILN_63 GBV_ILN_65 GBV_ILN_69 GBV_ILN_70 GBV_ILN_73 GBV_ILN_95 GBV_ILN_105 GBV_ILN_110 GBV_ILN_151 GBV_ILN_161 GBV_ILN_170 GBV_ILN_213 GBV_ILN_224 GBV_ILN_230 GBV_ILN_285 GBV_ILN_293 GBV_ILN_370 GBV_ILN_602 GBV_ILN_2001 GBV_ILN_2003 GBV_ILN_2005 GBV_ILN_2006 GBV_ILN_2007 GBV_ILN_2008 GBV_ILN_2009 GBV_ILN_2010 GBV_ILN_2011 GBV_ILN_2014 GBV_ILN_2015 GBV_ILN_2020 GBV_ILN_2021 GBV_ILN_2025 GBV_ILN_2026 GBV_ILN_2027 GBV_ILN_2034 GBV_ILN_2038 GBV_ILN_2044 GBV_ILN_2048 GBV_ILN_2049 GBV_ILN_2050 GBV_ILN_2055 GBV_ILN_2056 GBV_ILN_2059 GBV_ILN_2061 GBV_ILN_2064 GBV_ILN_2088 GBV_ILN_2106 GBV_ILN_2110 GBV_ILN_2112 GBV_ILN_2122 GBV_ILN_2129 GBV_ILN_2143 GBV_ILN_2152 GBV_ILN_2153 GBV_ILN_2190 GBV_ILN_2232 GBV_ILN_2336 GBV_ILN_2470 GBV_ILN_2507 GBV_ILN_4012 GBV_ILN_4035 GBV_ILN_4037 GBV_ILN_4112 GBV_ILN_4125 GBV_ILN_4126 GBV_ILN_4242 GBV_ILN_4249 GBV_ILN_4251 GBV_ILN_4305 GBV_ILN_4306 GBV_ILN_4307 GBV_ILN_4313 GBV_ILN_4322 GBV_ILN_4323 GBV_ILN_4324 GBV_ILN_4325 GBV_ILN_4326 GBV_ILN_4333 GBV_ILN_4334 GBV_ILN_4335 GBV_ILN_4338 GBV_ILN_4367 GBV_ILN_4393 GBV_ILN_4700 AR 24 2023 101571- |
allfieldsGer |
10.1016/j.softx.2023.101571 doi (DE-627)DOAJ099191598 (DE-599)DOAJ2593a4374ff6488b8f5bfa05e9f7214a DE-627 ger DE-627 rakwb eng QA76.75-76.765 Marko Mijač verfasserin aut REFRAME–A software framework for managing reactive dependencies in object-oriented applications 2023 Text txt rdacontent Computermedien c rdamedia Online-Ressource cr rdacarrier In object-oriented (OO) applications, objects collaborate by invoking each other's behavior and data, thus forming dependencies. Sometimes, we need these dependencies to be reactive, so that, for example, an object automatically reacts to events and changes in other objects. The need for such dependencies often arises in event-driven systems, graphical user interfaces (GUI), animation, spreadsheet systems, etc. While in some cases reactive dependencies form fairly simple structures, in cases of implementing complex calculation models reactive dependencies can be especially numerous and can form complex dependency graphs. Understanding such graphs and manually handling reactive dependencies is extremely challenging and error-prone. Paradigms such as Reactive Programming (RP) make this task easier by providing programming languages with built-in abstractions and mechanisms for handling reactive dependencies. However, in the OO context, developers have no available solutions capable of handling complex dependency graphs. Instead, they often resort to implementing their own solutions rooted in a well-known, but limited Observer design pattern. While improved design patterns have emerged over time, they present smaller-scale solutions, oriented only on design reuse. Developers still need to invest significant effort to implement and test the proposed design. This indicates that there is a need for a larger-scale and implementation-level solution that developers could (re)use out-of-the-box. Therefore, this paper presents a software framework named REFRAME which provides built-in abstractions, mechanisms and tools for handling reactive dependencies in OO context. Software frameworks Design science Object-oriented paradigm Reactive paradigm Computer software Antonio Garcia-Cabot verfasserin aut Vjeran Strahonja verfasserin aut In SoftwareX Elsevier, 2016 24(2023), Seite 101571- (DE-627)824451805 (DE-600)2819369-6 23527110 nnns volume:24 year:2023 pages:101571- https://doi.org/10.1016/j.softx.2023.101571 kostenfrei https://doaj.org/article/2593a4374ff6488b8f5bfa05e9f7214a kostenfrei http://www.sciencedirect.com/science/article/pii/S2352711023002674 kostenfrei https://doaj.org/toc/2352-7110 Journal toc kostenfrei GBV_USEFLAG_A SYSFLAG_A GBV_DOAJ GBV_ILN_11 GBV_ILN_20 GBV_ILN_22 GBV_ILN_23 GBV_ILN_24 GBV_ILN_31 GBV_ILN_39 GBV_ILN_40 GBV_ILN_60 GBV_ILN_62 GBV_ILN_63 GBV_ILN_65 GBV_ILN_69 GBV_ILN_70 GBV_ILN_73 GBV_ILN_95 GBV_ILN_105 GBV_ILN_110 GBV_ILN_151 GBV_ILN_161 GBV_ILN_170 GBV_ILN_213 GBV_ILN_224 GBV_ILN_230 GBV_ILN_285 GBV_ILN_293 GBV_ILN_370 GBV_ILN_602 GBV_ILN_2001 GBV_ILN_2003 GBV_ILN_2005 GBV_ILN_2006 GBV_ILN_2007 GBV_ILN_2008 GBV_ILN_2009 GBV_ILN_2010 GBV_ILN_2011 GBV_ILN_2014 GBV_ILN_2015 GBV_ILN_2020 GBV_ILN_2021 GBV_ILN_2025 GBV_ILN_2026 GBV_ILN_2027 GBV_ILN_2034 GBV_ILN_2038 GBV_ILN_2044 GBV_ILN_2048 GBV_ILN_2049 GBV_ILN_2050 GBV_ILN_2055 GBV_ILN_2056 GBV_ILN_2059 GBV_ILN_2061 GBV_ILN_2064 GBV_ILN_2088 GBV_ILN_2106 GBV_ILN_2110 GBV_ILN_2112 GBV_ILN_2122 GBV_ILN_2129 GBV_ILN_2143 GBV_ILN_2152 GBV_ILN_2153 GBV_ILN_2190 GBV_ILN_2232 GBV_ILN_2336 GBV_ILN_2470 GBV_ILN_2507 GBV_ILN_4012 GBV_ILN_4035 GBV_ILN_4037 GBV_ILN_4112 GBV_ILN_4125 GBV_ILN_4126 GBV_ILN_4242 GBV_ILN_4249 GBV_ILN_4251 GBV_ILN_4305 GBV_ILN_4306 GBV_ILN_4307 GBV_ILN_4313 GBV_ILN_4322 GBV_ILN_4323 GBV_ILN_4324 GBV_ILN_4325 GBV_ILN_4326 GBV_ILN_4333 GBV_ILN_4334 GBV_ILN_4335 GBV_ILN_4338 GBV_ILN_4367 GBV_ILN_4393 GBV_ILN_4700 AR 24 2023 101571- |
allfieldsSound |
10.1016/j.softx.2023.101571 doi (DE-627)DOAJ099191598 (DE-599)DOAJ2593a4374ff6488b8f5bfa05e9f7214a DE-627 ger DE-627 rakwb eng QA76.75-76.765 Marko Mijač verfasserin aut REFRAME–A software framework for managing reactive dependencies in object-oriented applications 2023 Text txt rdacontent Computermedien c rdamedia Online-Ressource cr rdacarrier In object-oriented (OO) applications, objects collaborate by invoking each other's behavior and data, thus forming dependencies. Sometimes, we need these dependencies to be reactive, so that, for example, an object automatically reacts to events and changes in other objects. The need for such dependencies often arises in event-driven systems, graphical user interfaces (GUI), animation, spreadsheet systems, etc. While in some cases reactive dependencies form fairly simple structures, in cases of implementing complex calculation models reactive dependencies can be especially numerous and can form complex dependency graphs. Understanding such graphs and manually handling reactive dependencies is extremely challenging and error-prone. Paradigms such as Reactive Programming (RP) make this task easier by providing programming languages with built-in abstractions and mechanisms for handling reactive dependencies. However, in the OO context, developers have no available solutions capable of handling complex dependency graphs. Instead, they often resort to implementing their own solutions rooted in a well-known, but limited Observer design pattern. While improved design patterns have emerged over time, they present smaller-scale solutions, oriented only on design reuse. Developers still need to invest significant effort to implement and test the proposed design. This indicates that there is a need for a larger-scale and implementation-level solution that developers could (re)use out-of-the-box. Therefore, this paper presents a software framework named REFRAME which provides built-in abstractions, mechanisms and tools for handling reactive dependencies in OO context. Software frameworks Design science Object-oriented paradigm Reactive paradigm Computer software Antonio Garcia-Cabot verfasserin aut Vjeran Strahonja verfasserin aut In SoftwareX Elsevier, 2016 24(2023), Seite 101571- (DE-627)824451805 (DE-600)2819369-6 23527110 nnns volume:24 year:2023 pages:101571- https://doi.org/10.1016/j.softx.2023.101571 kostenfrei https://doaj.org/article/2593a4374ff6488b8f5bfa05e9f7214a kostenfrei http://www.sciencedirect.com/science/article/pii/S2352711023002674 kostenfrei https://doaj.org/toc/2352-7110 Journal toc kostenfrei GBV_USEFLAG_A SYSFLAG_A GBV_DOAJ GBV_ILN_11 GBV_ILN_20 GBV_ILN_22 GBV_ILN_23 GBV_ILN_24 GBV_ILN_31 GBV_ILN_39 GBV_ILN_40 GBV_ILN_60 GBV_ILN_62 GBV_ILN_63 GBV_ILN_65 GBV_ILN_69 GBV_ILN_70 GBV_ILN_73 GBV_ILN_95 GBV_ILN_105 GBV_ILN_110 GBV_ILN_151 GBV_ILN_161 GBV_ILN_170 GBV_ILN_213 GBV_ILN_224 GBV_ILN_230 GBV_ILN_285 GBV_ILN_293 GBV_ILN_370 GBV_ILN_602 GBV_ILN_2001 GBV_ILN_2003 GBV_ILN_2005 GBV_ILN_2006 GBV_ILN_2007 GBV_ILN_2008 GBV_ILN_2009 GBV_ILN_2010 GBV_ILN_2011 GBV_ILN_2014 GBV_ILN_2015 GBV_ILN_2020 GBV_ILN_2021 GBV_ILN_2025 GBV_ILN_2026 GBV_ILN_2027 GBV_ILN_2034 GBV_ILN_2038 GBV_ILN_2044 GBV_ILN_2048 GBV_ILN_2049 GBV_ILN_2050 GBV_ILN_2055 GBV_ILN_2056 GBV_ILN_2059 GBV_ILN_2061 GBV_ILN_2064 GBV_ILN_2088 GBV_ILN_2106 GBV_ILN_2110 GBV_ILN_2112 GBV_ILN_2122 GBV_ILN_2129 GBV_ILN_2143 GBV_ILN_2152 GBV_ILN_2153 GBV_ILN_2190 GBV_ILN_2232 GBV_ILN_2336 GBV_ILN_2470 GBV_ILN_2507 GBV_ILN_4012 GBV_ILN_4035 GBV_ILN_4037 GBV_ILN_4112 GBV_ILN_4125 GBV_ILN_4126 GBV_ILN_4242 GBV_ILN_4249 GBV_ILN_4251 GBV_ILN_4305 GBV_ILN_4306 GBV_ILN_4307 GBV_ILN_4313 GBV_ILN_4322 GBV_ILN_4323 GBV_ILN_4324 GBV_ILN_4325 GBV_ILN_4326 GBV_ILN_4333 GBV_ILN_4334 GBV_ILN_4335 GBV_ILN_4338 GBV_ILN_4367 GBV_ILN_4393 GBV_ILN_4700 AR 24 2023 101571- |
language |
English |
source |
In SoftwareX 24(2023), Seite 101571- volume:24 year:2023 pages:101571- |
sourceStr |
In SoftwareX 24(2023), Seite 101571- volume:24 year:2023 pages:101571- |
format_phy_str_mv |
Article |
institution |
findex.gbv.de |
topic_facet |
Software frameworks Design science Object-oriented paradigm Reactive paradigm Computer software |
isfreeaccess_bool |
true |
container_title |
SoftwareX |
authorswithroles_txt_mv |
Marko Mijač @@aut@@ Antonio Garcia-Cabot @@aut@@ Vjeran Strahonja @@aut@@ |
publishDateDaySort_date |
2023-01-01T00:00:00Z |
hierarchy_top_id |
824451805 |
id |
DOAJ099191598 |
language_de |
englisch |
fullrecord |
<?xml version="1.0" encoding="UTF-8"?><collection xmlns="http://www.loc.gov/MARC21/slim"><record><leader>01000naa a22002652 4500</leader><controlfield tag="001">DOAJ099191598</controlfield><controlfield tag="003">DE-627</controlfield><controlfield tag="005">20240414020430.0</controlfield><controlfield tag="007">cr uuu---uuuuu</controlfield><controlfield tag="008">240414s2023 xx |||||o 00| ||eng c</controlfield><datafield tag="024" ind1="7" ind2=" "><subfield code="a">10.1016/j.softx.2023.101571</subfield><subfield code="2">doi</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(DE-627)DOAJ099191598</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(DE-599)DOAJ2593a4374ff6488b8f5bfa05e9f7214a</subfield></datafield><datafield tag="040" ind1=" " ind2=" "><subfield code="a">DE-627</subfield><subfield code="b">ger</subfield><subfield code="c">DE-627</subfield><subfield code="e">rakwb</subfield></datafield><datafield tag="041" ind1=" " ind2=" "><subfield code="a">eng</subfield></datafield><datafield tag="050" ind1=" " ind2="0"><subfield code="a">QA76.75-76.765</subfield></datafield><datafield tag="100" ind1="0" ind2=" "><subfield code="a">Marko Mijač</subfield><subfield code="e">verfasserin</subfield><subfield code="4">aut</subfield></datafield><datafield tag="245" ind1="1" ind2="0"><subfield code="a">REFRAME–A software framework for managing reactive dependencies in object-oriented applications</subfield></datafield><datafield tag="264" ind1=" " ind2="1"><subfield code="c">2023</subfield></datafield><datafield tag="336" ind1=" " ind2=" "><subfield code="a">Text</subfield><subfield code="b">txt</subfield><subfield code="2">rdacontent</subfield></datafield><datafield tag="337" ind1=" " ind2=" "><subfield code="a">Computermedien</subfield><subfield code="b">c</subfield><subfield code="2">rdamedia</subfield></datafield><datafield tag="338" ind1=" " ind2=" "><subfield code="a">Online-Ressource</subfield><subfield code="b">cr</subfield><subfield code="2">rdacarrier</subfield></datafield><datafield tag="520" ind1=" " ind2=" "><subfield code="a">In object-oriented (OO) applications, objects collaborate by invoking each other's behavior and data, thus forming dependencies. Sometimes, we need these dependencies to be reactive, so that, for example, an object automatically reacts to events and changes in other objects. The need for such dependencies often arises in event-driven systems, graphical user interfaces (GUI), animation, spreadsheet systems, etc. While in some cases reactive dependencies form fairly simple structures, in cases of implementing complex calculation models reactive dependencies can be especially numerous and can form complex dependency graphs. Understanding such graphs and manually handling reactive dependencies is extremely challenging and error-prone. Paradigms such as Reactive Programming (RP) make this task easier by providing programming languages with built-in abstractions and mechanisms for handling reactive dependencies. However, in the OO context, developers have no available solutions capable of handling complex dependency graphs. Instead, they often resort to implementing their own solutions rooted in a well-known, but limited Observer design pattern. While improved design patterns have emerged over time, they present smaller-scale solutions, oriented only on design reuse. Developers still need to invest significant effort to implement and test the proposed design. This indicates that there is a need for a larger-scale and implementation-level solution that developers could (re)use out-of-the-box. Therefore, this paper presents a software framework named REFRAME which provides built-in abstractions, mechanisms and tools for handling reactive dependencies in OO context.</subfield></datafield><datafield tag="650" ind1=" " ind2="4"><subfield code="a">Software frameworks</subfield></datafield><datafield tag="650" ind1=" " ind2="4"><subfield code="a">Design science</subfield></datafield><datafield tag="650" ind1=" " ind2="4"><subfield code="a">Object-oriented paradigm</subfield></datafield><datafield tag="650" ind1=" " ind2="4"><subfield code="a">Reactive paradigm</subfield></datafield><datafield tag="653" ind1=" " ind2="0"><subfield code="a">Computer software</subfield></datafield><datafield tag="700" ind1="0" ind2=" "><subfield code="a">Antonio Garcia-Cabot</subfield><subfield code="e">verfasserin</subfield><subfield code="4">aut</subfield></datafield><datafield tag="700" ind1="0" ind2=" "><subfield code="a">Vjeran Strahonja</subfield><subfield code="e">verfasserin</subfield><subfield code="4">aut</subfield></datafield><datafield tag="773" ind1="0" ind2="8"><subfield code="i">In</subfield><subfield code="t">SoftwareX</subfield><subfield code="d">Elsevier, 2016</subfield><subfield code="g">24(2023), Seite 101571-</subfield><subfield code="w">(DE-627)824451805</subfield><subfield code="w">(DE-600)2819369-6</subfield><subfield code="x">23527110</subfield><subfield code="7">nnns</subfield></datafield><datafield tag="773" ind1="1" ind2="8"><subfield code="g">volume:24</subfield><subfield code="g">year:2023</subfield><subfield code="g">pages:101571-</subfield></datafield><datafield tag="856" ind1="4" ind2="0"><subfield code="u">https://doi.org/10.1016/j.softx.2023.101571</subfield><subfield code="z">kostenfrei</subfield></datafield><datafield tag="856" ind1="4" ind2="0"><subfield code="u">https://doaj.org/article/2593a4374ff6488b8f5bfa05e9f7214a</subfield><subfield code="z">kostenfrei</subfield></datafield><datafield tag="856" ind1="4" ind2="0"><subfield code="u">http://www.sciencedirect.com/science/article/pii/S2352711023002674</subfield><subfield code="z">kostenfrei</subfield></datafield><datafield tag="856" ind1="4" ind2="2"><subfield code="u">https://doaj.org/toc/2352-7110</subfield><subfield code="y">Journal toc</subfield><subfield code="z">kostenfrei</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_USEFLAG_A</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">SYSFLAG_A</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_DOAJ</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_11</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_20</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_22</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_23</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_24</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_31</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_39</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_40</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_60</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_62</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_63</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_65</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_69</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_70</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_73</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_95</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_105</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_110</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_151</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_161</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_170</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_213</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_224</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_230</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_285</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_293</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_370</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_602</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2001</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2003</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2005</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2006</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2007</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2008</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2009</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2010</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2011</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2014</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2015</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2020</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2021</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2025</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2026</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2027</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2034</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2038</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2044</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2048</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2049</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2050</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2055</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2056</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2059</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2061</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2064</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2088</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2106</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2110</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2112</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2122</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2129</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2143</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2152</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2153</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2190</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2232</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2336</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2470</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2507</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_4012</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_4035</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_4037</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_4112</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_4125</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_4126</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_4242</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_4249</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_4251</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_4305</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_4306</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_4307</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_4313</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_4322</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_4323</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_4324</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_4325</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_4326</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_4333</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_4334</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_4335</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_4338</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_4367</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_4393</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_4700</subfield></datafield><datafield tag="951" ind1=" " ind2=" "><subfield code="a">AR</subfield></datafield><datafield tag="952" ind1=" " ind2=" "><subfield code="d">24</subfield><subfield code="j">2023</subfield><subfield code="h">101571-</subfield></datafield></record></collection>
|
callnumber-first |
Q - Science |
author |
Marko Mijač |
spellingShingle |
Marko Mijač misc QA76.75-76.765 misc Software frameworks misc Design science misc Object-oriented paradigm misc Reactive paradigm misc Computer software REFRAME–A software framework for managing reactive dependencies in object-oriented applications |
authorStr |
Marko Mijač |
ppnlink_with_tag_str_mv |
@@773@@(DE-627)824451805 |
format |
electronic Article |
delete_txt_mv |
keep |
author_role |
aut aut aut |
collection |
DOAJ |
remote_str |
true |
callnumber-label |
QA76 |
illustrated |
Not Illustrated |
issn |
23527110 |
topic_title |
QA76.75-76.765 REFRAME–A software framework for managing reactive dependencies in object-oriented applications Software frameworks Design science Object-oriented paradigm Reactive paradigm |
topic |
misc QA76.75-76.765 misc Software frameworks misc Design science misc Object-oriented paradigm misc Reactive paradigm misc Computer software |
topic_unstemmed |
misc QA76.75-76.765 misc Software frameworks misc Design science misc Object-oriented paradigm misc Reactive paradigm misc Computer software |
topic_browse |
misc QA76.75-76.765 misc Software frameworks misc Design science misc Object-oriented paradigm misc Reactive paradigm misc Computer software |
format_facet |
Elektronische Aufsätze Aufsätze Elektronische Ressource |
format_main_str_mv |
Text Zeitschrift/Artikel |
carriertype_str_mv |
cr |
hierarchy_parent_title |
SoftwareX |
hierarchy_parent_id |
824451805 |
hierarchy_top_title |
SoftwareX |
isfreeaccess_txt |
true |
familylinks_str_mv |
(DE-627)824451805 (DE-600)2819369-6 |
title |
REFRAME–A software framework for managing reactive dependencies in object-oriented applications |
ctrlnum |
(DE-627)DOAJ099191598 (DE-599)DOAJ2593a4374ff6488b8f5bfa05e9f7214a |
title_full |
REFRAME–A software framework for managing reactive dependencies in object-oriented applications |
author_sort |
Marko Mijač |
journal |
SoftwareX |
journalStr |
SoftwareX |
callnumber-first-code |
Q |
lang_code |
eng |
isOA_bool |
true |
recordtype |
marc |
publishDateSort |
2023 |
contenttype_str_mv |
txt |
container_start_page |
101571 |
author_browse |
Marko Mijač Antonio Garcia-Cabot Vjeran Strahonja |
container_volume |
24 |
class |
QA76.75-76.765 |
format_se |
Elektronische Aufsätze |
author-letter |
Marko Mijač |
doi_str_mv |
10.1016/j.softx.2023.101571 |
author2-role |
verfasserin |
title_sort |
reframe–a software framework for managing reactive dependencies in object-oriented applications |
callnumber |
QA76.75-76.765 |
title_auth |
REFRAME–A software framework for managing reactive dependencies in object-oriented applications |
abstract |
In object-oriented (OO) applications, objects collaborate by invoking each other's behavior and data, thus forming dependencies. Sometimes, we need these dependencies to be reactive, so that, for example, an object automatically reacts to events and changes in other objects. The need for such dependencies often arises in event-driven systems, graphical user interfaces (GUI), animation, spreadsheet systems, etc. While in some cases reactive dependencies form fairly simple structures, in cases of implementing complex calculation models reactive dependencies can be especially numerous and can form complex dependency graphs. Understanding such graphs and manually handling reactive dependencies is extremely challenging and error-prone. Paradigms such as Reactive Programming (RP) make this task easier by providing programming languages with built-in abstractions and mechanisms for handling reactive dependencies. However, in the OO context, developers have no available solutions capable of handling complex dependency graphs. Instead, they often resort to implementing their own solutions rooted in a well-known, but limited Observer design pattern. While improved design patterns have emerged over time, they present smaller-scale solutions, oriented only on design reuse. Developers still need to invest significant effort to implement and test the proposed design. This indicates that there is a need for a larger-scale and implementation-level solution that developers could (re)use out-of-the-box. Therefore, this paper presents a software framework named REFRAME which provides built-in abstractions, mechanisms and tools for handling reactive dependencies in OO context. |
abstractGer |
In object-oriented (OO) applications, objects collaborate by invoking each other's behavior and data, thus forming dependencies. Sometimes, we need these dependencies to be reactive, so that, for example, an object automatically reacts to events and changes in other objects. The need for such dependencies often arises in event-driven systems, graphical user interfaces (GUI), animation, spreadsheet systems, etc. While in some cases reactive dependencies form fairly simple structures, in cases of implementing complex calculation models reactive dependencies can be especially numerous and can form complex dependency graphs. Understanding such graphs and manually handling reactive dependencies is extremely challenging and error-prone. Paradigms such as Reactive Programming (RP) make this task easier by providing programming languages with built-in abstractions and mechanisms for handling reactive dependencies. However, in the OO context, developers have no available solutions capable of handling complex dependency graphs. Instead, they often resort to implementing their own solutions rooted in a well-known, but limited Observer design pattern. While improved design patterns have emerged over time, they present smaller-scale solutions, oriented only on design reuse. Developers still need to invest significant effort to implement and test the proposed design. This indicates that there is a need for a larger-scale and implementation-level solution that developers could (re)use out-of-the-box. Therefore, this paper presents a software framework named REFRAME which provides built-in abstractions, mechanisms and tools for handling reactive dependencies in OO context. |
abstract_unstemmed |
In object-oriented (OO) applications, objects collaborate by invoking each other's behavior and data, thus forming dependencies. Sometimes, we need these dependencies to be reactive, so that, for example, an object automatically reacts to events and changes in other objects. The need for such dependencies often arises in event-driven systems, graphical user interfaces (GUI), animation, spreadsheet systems, etc. While in some cases reactive dependencies form fairly simple structures, in cases of implementing complex calculation models reactive dependencies can be especially numerous and can form complex dependency graphs. Understanding such graphs and manually handling reactive dependencies is extremely challenging and error-prone. Paradigms such as Reactive Programming (RP) make this task easier by providing programming languages with built-in abstractions and mechanisms for handling reactive dependencies. However, in the OO context, developers have no available solutions capable of handling complex dependency graphs. Instead, they often resort to implementing their own solutions rooted in a well-known, but limited Observer design pattern. While improved design patterns have emerged over time, they present smaller-scale solutions, oriented only on design reuse. Developers still need to invest significant effort to implement and test the proposed design. This indicates that there is a need for a larger-scale and implementation-level solution that developers could (re)use out-of-the-box. Therefore, this paper presents a software framework named REFRAME which provides built-in abstractions, mechanisms and tools for handling reactive dependencies in OO context. |
collection_details |
GBV_USEFLAG_A SYSFLAG_A GBV_DOAJ GBV_ILN_11 GBV_ILN_20 GBV_ILN_22 GBV_ILN_23 GBV_ILN_24 GBV_ILN_31 GBV_ILN_39 GBV_ILN_40 GBV_ILN_60 GBV_ILN_62 GBV_ILN_63 GBV_ILN_65 GBV_ILN_69 GBV_ILN_70 GBV_ILN_73 GBV_ILN_95 GBV_ILN_105 GBV_ILN_110 GBV_ILN_151 GBV_ILN_161 GBV_ILN_170 GBV_ILN_213 GBV_ILN_224 GBV_ILN_230 GBV_ILN_285 GBV_ILN_293 GBV_ILN_370 GBV_ILN_602 GBV_ILN_2001 GBV_ILN_2003 GBV_ILN_2005 GBV_ILN_2006 GBV_ILN_2007 GBV_ILN_2008 GBV_ILN_2009 GBV_ILN_2010 GBV_ILN_2011 GBV_ILN_2014 GBV_ILN_2015 GBV_ILN_2020 GBV_ILN_2021 GBV_ILN_2025 GBV_ILN_2026 GBV_ILN_2027 GBV_ILN_2034 GBV_ILN_2038 GBV_ILN_2044 GBV_ILN_2048 GBV_ILN_2049 GBV_ILN_2050 GBV_ILN_2055 GBV_ILN_2056 GBV_ILN_2059 GBV_ILN_2061 GBV_ILN_2064 GBV_ILN_2088 GBV_ILN_2106 GBV_ILN_2110 GBV_ILN_2112 GBV_ILN_2122 GBV_ILN_2129 GBV_ILN_2143 GBV_ILN_2152 GBV_ILN_2153 GBV_ILN_2190 GBV_ILN_2232 GBV_ILN_2336 GBV_ILN_2470 GBV_ILN_2507 GBV_ILN_4012 GBV_ILN_4035 GBV_ILN_4037 GBV_ILN_4112 GBV_ILN_4125 GBV_ILN_4126 GBV_ILN_4242 GBV_ILN_4249 GBV_ILN_4251 GBV_ILN_4305 GBV_ILN_4306 GBV_ILN_4307 GBV_ILN_4313 GBV_ILN_4322 GBV_ILN_4323 GBV_ILN_4324 GBV_ILN_4325 GBV_ILN_4326 GBV_ILN_4333 GBV_ILN_4334 GBV_ILN_4335 GBV_ILN_4338 GBV_ILN_4367 GBV_ILN_4393 GBV_ILN_4700 |
title_short |
REFRAME–A software framework for managing reactive dependencies in object-oriented applications |
url |
https://doi.org/10.1016/j.softx.2023.101571 https://doaj.org/article/2593a4374ff6488b8f5bfa05e9f7214a http://www.sciencedirect.com/science/article/pii/S2352711023002674 https://doaj.org/toc/2352-7110 |
remote_bool |
true |
author2 |
Antonio Garcia-Cabot Vjeran Strahonja |
author2Str |
Antonio Garcia-Cabot Vjeran Strahonja |
ppnlink |
824451805 |
callnumber-subject |
QA - Mathematics |
mediatype_str_mv |
c |
isOA_txt |
true |
hochschulschrift_bool |
false |
doi_str |
10.1016/j.softx.2023.101571 |
callnumber-a |
QA76.75-76.765 |
up_date |
2024-07-03T21:31:53.144Z |
_version_ |
1803595088549380096 |
fullrecord_marcxml |
<?xml version="1.0" encoding="UTF-8"?><collection xmlns="http://www.loc.gov/MARC21/slim"><record><leader>01000naa a22002652 4500</leader><controlfield tag="001">DOAJ099191598</controlfield><controlfield tag="003">DE-627</controlfield><controlfield tag="005">20240414020430.0</controlfield><controlfield tag="007">cr uuu---uuuuu</controlfield><controlfield tag="008">240414s2023 xx |||||o 00| ||eng c</controlfield><datafield tag="024" ind1="7" ind2=" "><subfield code="a">10.1016/j.softx.2023.101571</subfield><subfield code="2">doi</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(DE-627)DOAJ099191598</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(DE-599)DOAJ2593a4374ff6488b8f5bfa05e9f7214a</subfield></datafield><datafield tag="040" ind1=" " ind2=" "><subfield code="a">DE-627</subfield><subfield code="b">ger</subfield><subfield code="c">DE-627</subfield><subfield code="e">rakwb</subfield></datafield><datafield tag="041" ind1=" " ind2=" "><subfield code="a">eng</subfield></datafield><datafield tag="050" ind1=" " ind2="0"><subfield code="a">QA76.75-76.765</subfield></datafield><datafield tag="100" ind1="0" ind2=" "><subfield code="a">Marko Mijač</subfield><subfield code="e">verfasserin</subfield><subfield code="4">aut</subfield></datafield><datafield tag="245" ind1="1" ind2="0"><subfield code="a">REFRAME–A software framework for managing reactive dependencies in object-oriented applications</subfield></datafield><datafield tag="264" ind1=" " ind2="1"><subfield code="c">2023</subfield></datafield><datafield tag="336" ind1=" " ind2=" "><subfield code="a">Text</subfield><subfield code="b">txt</subfield><subfield code="2">rdacontent</subfield></datafield><datafield tag="337" ind1=" " ind2=" "><subfield code="a">Computermedien</subfield><subfield code="b">c</subfield><subfield code="2">rdamedia</subfield></datafield><datafield tag="338" ind1=" " ind2=" "><subfield code="a">Online-Ressource</subfield><subfield code="b">cr</subfield><subfield code="2">rdacarrier</subfield></datafield><datafield tag="520" ind1=" " ind2=" "><subfield code="a">In object-oriented (OO) applications, objects collaborate by invoking each other's behavior and data, thus forming dependencies. Sometimes, we need these dependencies to be reactive, so that, for example, an object automatically reacts to events and changes in other objects. The need for such dependencies often arises in event-driven systems, graphical user interfaces (GUI), animation, spreadsheet systems, etc. While in some cases reactive dependencies form fairly simple structures, in cases of implementing complex calculation models reactive dependencies can be especially numerous and can form complex dependency graphs. Understanding such graphs and manually handling reactive dependencies is extremely challenging and error-prone. Paradigms such as Reactive Programming (RP) make this task easier by providing programming languages with built-in abstractions and mechanisms for handling reactive dependencies. However, in the OO context, developers have no available solutions capable of handling complex dependency graphs. Instead, they often resort to implementing their own solutions rooted in a well-known, but limited Observer design pattern. While improved design patterns have emerged over time, they present smaller-scale solutions, oriented only on design reuse. Developers still need to invest significant effort to implement and test the proposed design. This indicates that there is a need for a larger-scale and implementation-level solution that developers could (re)use out-of-the-box. Therefore, this paper presents a software framework named REFRAME which provides built-in abstractions, mechanisms and tools for handling reactive dependencies in OO context.</subfield></datafield><datafield tag="650" ind1=" " ind2="4"><subfield code="a">Software frameworks</subfield></datafield><datafield tag="650" ind1=" " ind2="4"><subfield code="a">Design science</subfield></datafield><datafield tag="650" ind1=" " ind2="4"><subfield code="a">Object-oriented paradigm</subfield></datafield><datafield tag="650" ind1=" " ind2="4"><subfield code="a">Reactive paradigm</subfield></datafield><datafield tag="653" ind1=" " ind2="0"><subfield code="a">Computer software</subfield></datafield><datafield tag="700" ind1="0" ind2=" "><subfield code="a">Antonio Garcia-Cabot</subfield><subfield code="e">verfasserin</subfield><subfield code="4">aut</subfield></datafield><datafield tag="700" ind1="0" ind2=" "><subfield code="a">Vjeran Strahonja</subfield><subfield code="e">verfasserin</subfield><subfield code="4">aut</subfield></datafield><datafield tag="773" ind1="0" ind2="8"><subfield code="i">In</subfield><subfield code="t">SoftwareX</subfield><subfield code="d">Elsevier, 2016</subfield><subfield code="g">24(2023), Seite 101571-</subfield><subfield code="w">(DE-627)824451805</subfield><subfield code="w">(DE-600)2819369-6</subfield><subfield code="x">23527110</subfield><subfield code="7">nnns</subfield></datafield><datafield tag="773" ind1="1" ind2="8"><subfield code="g">volume:24</subfield><subfield code="g">year:2023</subfield><subfield code="g">pages:101571-</subfield></datafield><datafield tag="856" ind1="4" ind2="0"><subfield code="u">https://doi.org/10.1016/j.softx.2023.101571</subfield><subfield code="z">kostenfrei</subfield></datafield><datafield tag="856" ind1="4" ind2="0"><subfield code="u">https://doaj.org/article/2593a4374ff6488b8f5bfa05e9f7214a</subfield><subfield code="z">kostenfrei</subfield></datafield><datafield tag="856" ind1="4" ind2="0"><subfield code="u">http://www.sciencedirect.com/science/article/pii/S2352711023002674</subfield><subfield code="z">kostenfrei</subfield></datafield><datafield tag="856" ind1="4" ind2="2"><subfield code="u">https://doaj.org/toc/2352-7110</subfield><subfield code="y">Journal toc</subfield><subfield code="z">kostenfrei</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_USEFLAG_A</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">SYSFLAG_A</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_DOAJ</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_11</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_20</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_22</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_23</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_24</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_31</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_39</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_40</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_60</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_62</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_63</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_65</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_69</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_70</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_73</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_95</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_105</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_110</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_151</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_161</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_170</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_213</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_224</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_230</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_285</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_293</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_370</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_602</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2001</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2003</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2005</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2006</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2007</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2008</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2009</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2010</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2011</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2014</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2015</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2020</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2021</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2025</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2026</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2027</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2034</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2038</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2044</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2048</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2049</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2050</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2055</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2056</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2059</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2061</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2064</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2088</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2106</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2110</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2112</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2122</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2129</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2143</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2152</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2153</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2190</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2232</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2336</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2470</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_2507</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_4012</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_4035</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_4037</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_4112</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_4125</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_4126</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_4242</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_4249</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_4251</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_4305</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_4306</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_4307</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_4313</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_4322</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_4323</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_4324</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_4325</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_4326</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_4333</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_4334</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_4335</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_4338</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_4367</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_4393</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">GBV_ILN_4700</subfield></datafield><datafield tag="951" ind1=" " ind2=" "><subfield code="a">AR</subfield></datafield><datafield tag="952" ind1=" " ind2=" "><subfield code="d">24</subfield><subfield code="j">2023</subfield><subfield code="h">101571-</subfield></datafield></record></collection>
|
score |
7.3981237 |