{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2022,4,2]],"date-time":"2022-04-02T10:48:09Z","timestamp":1648896489699},"reference-count":6,"publisher":"World Scientific Pub Co Pte Lt","issue":"05","content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["Int. J. Soft. Eng. Knowl. Eng."],"published-print":{"date-parts":[[2015,6]]},"abstract":"<jats:p> Asynchronous programming has been widely adopted in domains such as Web development. This programming style usually uses callback methods, non-blocking operations, allowing high responsive user interactions even if an application works without multi-threading. However, this style requires the uncoupling of a module into two sub-modules at least, which are not intuitively connected by a callback method. The separation of modules spurs the birth of other issues: callback spaghetti and callback hell. This paper proposes a virtual block approach to address the previous two issues. This approach enables a programmer to virtually block a program execution and restart it at arbitrary points in the program. As a result, programmers do not need to uncouple a module even if non-blocking operations are adopted; therefore, callback dependencies disappear. Using aspect-oriented programming, this approach uses aspects to control the execution of a program in an oblivious manner. As a consequence, programmers do not need to be concerned whether pieces of code use blocking or non-blocking operations. We implement a proof-of-concept for this approach, called SyncAS, for ActionScript3. In addition, we apply our proposal to a toy application and conduct experiments to show its modular application, flexibility, and performance. <\/jats:p>","DOI":"10.1142\/s0218194015400252","type":"journal-article","created":{"date-parts":[[2015,9,28]],"date-time":"2015-09-28T10:26:58Z","timestamp":1443436018000},"page":"887-907","source":"Crossref","is-referenced-by-count":0,"title":["SyncAS: A Virtual Block Approach to Tame Asynchronous Programming"],"prefix":"10.1142","volume":"25","author":[{"given":"Hiroaki","family":"Fukuda","sequence":"first","affiliation":[{"name":"Information Science and Engineering, Shibaura Institute of Technology, 3-7-5 Koto, Toyosu, Tokyo 135-8548, Japan"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Paul","family":"Leger","sequence":"additional","affiliation":[{"name":"Escuela de Ciencias Empresariales, Universidad Cat\u00f3lica del Norte, Chile"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"219","published-online":{"date-parts":[[2015,9,28]]},"reference":[{"key":"rf2","doi-asserted-by":"publisher","DOI":"10.1145\/1018203.1018205"},{"key":"rf4","volume-title":"Dart in Action","author":"Buckett C.","year":"2013"},{"key":"rf12","volume-title":"Special Issues in Object-Oriented Programming","author":"Kiczales G.","year":"1996"},{"key":"rf13","doi-asserted-by":"publisher","DOI":"10.1145\/850657.850658"},{"key":"rf14","doi-asserted-by":"publisher","DOI":"10.1016\/j.scico.2012.11.005"},{"key":"rf19","doi-asserted-by":"publisher","DOI":"10.1145\/361598.361623"}],"container-title":["International Journal of Software Engineering and Knowledge Engineering"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/www.worldscientific.com\/doi\/pdf\/10.1142\/S0218194015400252","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2019,8,7]],"date-time":"2019-08-07T13:59:49Z","timestamp":1565186389000},"score":1,"resource":{"primary":{"URL":"https:\/\/www.worldscientific.com\/doi\/abs\/10.1142\/S0218194015400252"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2015,6]]},"references-count":6,"journal-issue":{"issue":"05","published-online":{"date-parts":[[2015,9,28]]},"published-print":{"date-parts":[[2015,6]]}},"alternative-id":["10.1142\/S0218194015400252"],"URL":"https:\/\/doi.org\/10.1142\/s0218194015400252","relation":{},"ISSN":["0218-1940","1793-6403"],"issn-type":[{"value":"0218-1940","type":"print"},{"value":"1793-6403","type":"electronic"}],"subject":[],"published":{"date-parts":[[2015,6]]}}}