<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//TaxonX//DTD Taxonomic Treatment Publishing DTD v0 20100105//EN" "../../nlm/tax-treatment-NS0.dtd">
<article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:tp="http://www.plazi.org/taxpub" article-type="research-article" dtd-version="3.0" xml:lang="en">
  <front>
    <journal-meta>
      <journal-id journal-id-type="publisher-id">109</journal-id>
      <journal-id journal-id-type="index">urn:lsid:arphahub.com:pub:3dc5f44e-8666-58db-bc76-a455210e8891</journal-id>
      <journal-title-group>
        <journal-title xml:lang="en">JUCS - Journal of Universal Computer Science</journal-title>
        <abbrev-journal-title xml:lang="en">jucs</abbrev-journal-title>
      </journal-title-group>
      <issn pub-type="ppub">0948-695X</issn>
      <issn pub-type="epub">0948-6968</issn>
      <publisher>
        <publisher-name>Journal of Universal Computer Science</publisher-name>
      </publisher>
    </journal-meta>
    <article-meta>
      <article-id pub-id-type="doi">10.3217/jucs-011-05-0687</article-id>
      <article-id pub-id-type="publisher-id">28400</article-id>
      <article-categories>
        <subj-group subj-group-type="heading">
          <subject>Research Article</subject>
        </subj-group>
        <subj-group subj-group-type="scientific_subject">
          <subject>D.1.3 - Concurrent Programming</subject>
          <subject>D.1.5 - Object-oriented Programming</subject>
          <subject>D.2 - SOFTWARE ENGINEERING</subject>
        </subj-group>
      </article-categories>
      <title-group>
        <article-title>On Atomicity and Software Development</article-title>
      </title-group>
      <contrib-group content-type="authors">
        <contrib contrib-type="author" corresp="yes">
          <name name-style="western">
            <surname>Kienzle</surname>
            <given-names>Jörg</given-names>
          </name>
          <email xlink:type="simple">joerg.kienzle@mcgill.ca</email>
          <xref ref-type="aff" rid="A1">1</xref>
        </contrib>
      </contrib-group>
      <aff id="A1">
        <label>1</label>
        <addr-line content-type="verbatim">School of Computer Science, McGill University, Montreal, Canada</addr-line>
        <institution>School of Computer Science, McGill University</institution>
        <addr-line content-type="city">Montreal</addr-line>
        <country>Canada</country>
      </aff>
      <author-notes>
        <fn fn-type="corresp">
          <p>Corresponding author: Jörg Kienzle (<email xlink:type="simple">joerg.kienzle@mcgill.ca</email>).</p>
        </fn>
        <fn fn-type="edited-by">
          <p>Academic editor: </p>
        </fn>
      </author-notes>
      <pub-date pub-type="collection">
        <year>2005</year>
      </pub-date>
      <pub-date pub-type="epub">
        <day>28</day>
        <month>05</month>
        <year>2005</year>
      </pub-date>
      <volume>11</volume>
      <issue>5</issue>
      <fpage>687</fpage>
      <lpage>702</lpage>
      <uri content-type="arpha" xlink:href="http://openbiodiv.net/A5C827DE-E141-5903-83FC-8F5015738A2A">A5C827DE-E141-5903-83FC-8F5015738A2A</uri>
      <uri content-type="zenodo_dep_id" xlink:href="https://zenodo.org/record/6996753">6996753</uri>
      <permissions>
        <copyright-statement>Jörg Kienzle</copyright-statement>
        <license license-type="creative-commons-attribution" xlink:href="" xlink:type="simple">
          <license-p>This article is freely available under the J.UCS Open Content License.</license-p>
        </license>
      </permissions>
      <abstract>
        <label>Abstract</label>
        <p>This paper shows how the concept of atomicity can ease the development of concurrent software. It illustrates by means of a case study how atomicity is used to reduce the complexity of concurrency by presenting simplified models or views of the system at certain stages of the development cycle. As the development process goes on, the atomic views from the early stages are refined - broken up into smaller pieces - to slowly introduce concurrency back into the system. Finally, at the design stage, low-level concepts that provide atomicity, such as transaction or monitors, are used to ensure consistent concurrent updating of the application state.</p>
      </abstract>
    </article-meta>
  </front>
</article>
