J. Sprinkle, M. Rossi, Jeffrey G. Gray, Juha-Pekka Tolvanen
Domain-Specific Modeling (DSM) has proven to be a viable solution to the challenges related to abstraction mismatches between the problem and solution spaces. In many cases, DSM assists in the generation of final products from high-level models that are specific to a domain in terms of abstractions and representation. This automation is possible because both the language and generators are tailored for one domain. This paper introduces DSM and describes the related workshop at SPLASH 2014 (21 October 2014, Portland, Oregon).
{"title":"DSM'14: the 14th workshop on domain-specific modeling","authors":"J. Sprinkle, M. Rossi, Jeffrey G. Gray, Juha-Pekka Tolvanen","doi":"10.1145/2660252.2662135","DOIUrl":"https://doi.org/10.1145/2660252.2662135","url":null,"abstract":"Domain-Specific Modeling (DSM) has proven to be a viable solution to the challenges related to abstraction mismatches between the problem and solution spaces. In many cases, DSM assists in the generation of final products from high-level models that are specific to a domain in terms of abstractions and representation. This automation is possible because both the language and generators are tailored for one domain. This paper introduces DSM and describes the related workshop at SPLASH 2014 (21 October 2014, Portland, Oregon).","PeriodicalId":194590,"journal":{"name":"ACM SIGPLAN International Conference on Systems, Programming, Languages and Applications: Software for Humanity","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2014-10-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"131213883","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
There is a classic design tension between user-friendly user interface design and expert-friendly user interface design. There is also a classic design tension between binary data format design and printable data format design. This work attempts to expose both sets of design tensions as having the same cause and solution. We observe an opportunity to redefine the baseline for "human-readable" formats by pairing a universal binary syntax with a universal structured editor and explore the rippling implications that it could have on human-computer interaction and the computing landscape at large. We discuss how this paradigm solves a host of typical bugs and developer pain points as well as making software more flexible, how it can be used to add a self-descriptive capacity to information representations ranging from data formats to user interfaces, and finally, how that creates new outlets for end-users to apply tiers of computational literacy for their own empowerment.
{"title":"HCI metacomputing: universal syntax, structured editing, and deconstructible user interfaces","authors":"Christopher Hall","doi":"10.1145/2660252.2660258","DOIUrl":"https://doi.org/10.1145/2660252.2660258","url":null,"abstract":"There is a classic design tension between user-friendly user interface design and expert-friendly user interface design. There is also a classic design tension between binary data format design and printable data format design. This work attempts to expose both sets of design tensions as having the same cause and solution. We observe an opportunity to redefine the baseline for \"human-readable\" formats by pairing a universal binary syntax with a universal structured editor and explore the rippling implications that it could have on human-computer interaction and the computing landscape at large. We discuss how this paradigm solves a host of typical bugs and developer pain points as well as making software more flexible, how it can be used to add a self-descriptive capacity to information representations ranging from data formats to user interfaces, and finally, how that creates new outlets for end-users to apply tiers of computational literacy for their own empowerment.","PeriodicalId":194590,"journal":{"name":"ACM SIGPLAN International Conference on Systems, Programming, Languages and Applications: Software for Humanity","volume":"94 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2014-10-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115856078","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
S. Fraser, D. Campara, Michael Fanning, G. McGraw, K. Sullivan
As news stories continue to demonstrate, ensuring adequate security and privacy in a networked "always on" world is a challenge; and while open source software can mitigate problems, it is not a panacea. This panel will bring together experts from industry and academia to debate, discuss, and offer opinions -- questions might include: What are the "costs" of "good enough" security and privacy on developers and customers? What is the appropriate trade-off between the price provide security and cost of poor security? How can the consequences of poor design and implementation be managed? Can systems be enabled to fail "security-safe"? What are the trade-offs for increased adoption of privacy and security best practices? How can the "costs" of privacy and security -- both tangible and intangible -- be reduced?
{"title":"Privacy and security in a networked world","authors":"S. Fraser, D. Campara, Michael Fanning, G. McGraw, K. Sullivan","doi":"10.1145/2660252.2661294","DOIUrl":"https://doi.org/10.1145/2660252.2661294","url":null,"abstract":"As news stories continue to demonstrate, ensuring adequate security and privacy in a networked \"always on\" world is a challenge; and while open source software can mitigate problems, it is not a panacea. This panel will bring together experts from industry and academia to debate, discuss, and offer opinions -- questions might include: \u0000 What are the \"costs\" of \"good enough\" security and privacy on developers and customers? \u0000 What is the appropriate trade-off between the price provide security and cost of poor security?\u0000 How can the consequences of poor design and implementation be managed?\u0000 Can systems be enabled to fail \"security-safe\"? \u0000 What are the trade-offs for increased adoption of privacy and security best practices?\u0000 How can the \"costs\" of privacy and security -- both tangible and intangible -- be reduced?","PeriodicalId":194590,"journal":{"name":"ACM SIGPLAN International Conference on Systems, Programming, Languages and Applications: Software for Humanity","volume":"41 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2014-10-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124060495","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
During the software maintenance and evolution phase, the majority of a developer's time is spent on programming comprehension tasks. Feature location (i.e., finding the first location to make a modification), impact analysis (i.e., determining what and to what extent a program is affected by a change), and traceability (i.e., determining where requirements are implemented in the program), are all examples of such tasks. Recent research in the area of program comprehension has focused on using textual information, structural information (i.e., information regarding the creation and use of objects and methods within the code), and execution traces to develop tools that ease the burden on developers and decrease the time spent in each task. Furthermore, new studies in automating these tasks have started using text retrieval techniques, such as the vector space model (VSM), latent semantic indexing (LSI), and latent Dirichlet allocation (LDA) for searching software. This doctoral symposium summary presents two promising areas for improving existing techniques by combining structural information with text retrieval. The first is a methodology for evaluating the usefulness of text obtained from a program by looking at the structural location of terms (e.g., method name, comments, identifiers). The second focuses on improving the existing text retrieval approaches by providing more flexible queries (i.e., search strings). These two areas are complementary to each other and may be combined.
{"title":"Structured source retrieval for improving softwaresearch during program comprehension tasks","authors":"Brian P. Eddy","doi":"10.1145/2660252.2660253","DOIUrl":"https://doi.org/10.1145/2660252.2660253","url":null,"abstract":"During the software maintenance and evolution phase, the majority of a developer's time is spent on programming comprehension tasks. Feature location (i.e., finding the first location to make a modification), impact analysis (i.e., determining what and to what extent a program is affected by a change), and traceability (i.e., determining where requirements are implemented in the program), are all examples of such tasks. Recent research in the area of program comprehension has focused on using textual information, structural information (i.e., information regarding the creation and use of objects and methods within the code), and execution traces to develop tools that ease the burden on developers and decrease the time spent in each task. Furthermore, new studies in automating these tasks have started using text retrieval techniques, such as the vector space model (VSM), latent semantic indexing (LSI), and latent Dirichlet allocation (LDA) for searching software. This doctoral symposium summary presents two promising areas for improving existing techniques by combining structural information with text retrieval. The first is a methodology for evaluating the usefulness of text obtained from a program by looking at the structural location of terms (e.g., method name, comments, identifiers). The second focuses on improving the existing text retrieval approaches by providing more flexible queries (i.e., search strings). These two areas are complementary to each other and may be combined.","PeriodicalId":194590,"journal":{"name":"ACM SIGPLAN International Conference on Systems, Programming, Languages and Applications: Software for Humanity","volume":"11 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2014-10-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115230341","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Designing and implementing thread-safe multi-threaded libraries can be a daunting task as developers of these libraries need to ensure that their implementations are free from concurrency bugs, including deadlocks. Developing multi-threaded tests for this purpose is significantly challenging. In this demo, we will demonstrate our tool (OMEN) for synthesizing deadlock-inducing multi-threaded tests for Java libraries. The input to OMEN is the library implementation under consideration and the output is a set of deadlock revealing multi-threaded tests.
{"title":"Omen: a tool for synthesizing tests for deadlock detection","authors":"Malavika Samak, M. Ramanathan","doi":"10.1145/2660252.2664663","DOIUrl":"https://doi.org/10.1145/2660252.2664663","url":null,"abstract":"Designing and implementing thread-safe multi-threaded libraries can be a daunting task as developers of these libraries need to ensure that their implementations are free from concurrency bugs, including deadlocks. Developing multi-threaded tests for this purpose is significantly challenging. In this demo, we will demonstrate our tool (OMEN) for synthesizing deadlock-inducing multi-threaded tests for Java libraries. The input to OMEN is the library implementation under consideration and the output is a set of deadlock revealing multi-threaded tests.","PeriodicalId":194590,"journal":{"name":"ACM SIGPLAN International Conference on Systems, Programming, Languages and Applications: Software for Humanity","volume":"117 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2014-10-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"134027014","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Maintaining the stability and quality of a software product developed by a global team presents a myriad of challenges. A highly serialized build and test process turned out to be inefficient and in many cases detrimental to the health of the product. A system of integrated source control coupled with continuous build and test resulted in higher productivity by the engineering team, a dramatic reduction of "broken" builds, and a regression suite pass rate consistently near 100%. In this presentation we review the circumstances that motivated our move to a continuous build and test model, provide an overview of our continuous build and test system, and discuss the metrics used to monitor system health and drive continual improvements.
{"title":"Avoiding the software development apocalypse through continuous build and test","authors":"E. Forsberg","doi":"10.1145/2660252.2664550","DOIUrl":"https://doi.org/10.1145/2660252.2664550","url":null,"abstract":"Maintaining the stability and quality of a software product developed by a global team presents a myriad of challenges. A highly serialized build and test process turned out to be inefficient and in many cases detrimental to the health of the product. A system of integrated source control coupled with continuous build and test resulted in higher productivity by the engineering team, a dramatic reduction of \"broken\" builds, and a regression suite pass rate consistently near 100%. In this presentation we review the circumstances that motivated our move to a continuous build and test model, provide an overview of our continuous build and test system, and discuss the metrics used to monitor system health and drive continual improvements.","PeriodicalId":194590,"journal":{"name":"ACM SIGPLAN International Conference on Systems, Programming, Languages and Applications: Software for Humanity","volume":"15 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2014-10-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"121036564","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
The C preprocessor is widely used to handle variability and solve portability issues in program families. In this context, developers normally use tools like GCC and Clang. However, these tools are not variability-aware, i.e., they preprocess the code and consider each family member individually. As a result, even well-known and widely used families, such as Linux and Apache, contain bad smells and bugs related to variability. To minimize this problem, we propose an approach to safely evolve C program families. We develop a strategy to detect bugs related to variability and define refactorings to remove bad smells in preprocessor directives. Our supporting tool, Colligens, implements our strategy to detect bugs and applies our refactorings automatically. By using our approach in 40 program families, we detect 121 bugs related to variability, and developers accepted 78% of the patches we submit. Also, we remove 477 bad smells in 12 C program families without clone code as in previous studies.
{"title":"An approach to safely evolve program families in C","authors":"Flávio M. Medeiros","doi":"10.1145/2660252.2660254","DOIUrl":"https://doi.org/10.1145/2660252.2660254","url":null,"abstract":"The C preprocessor is widely used to handle variability and solve portability issues in program families. In this context, developers normally use tools like GCC and Clang. However, these tools are not variability-aware, i.e., they preprocess the code and consider each family member individually. As a result, even well-known and widely used families, such as Linux and Apache, contain bad smells and bugs related to variability. To minimize this problem, we propose an approach to safely evolve C program families. We develop a strategy to detect bugs related to variability and define refactorings to remove bad smells in preprocessor directives. Our supporting tool, Colligens, implements our strategy to detect bugs and applies our refactorings automatically. By using our approach in 40 program families, we detect 121 bugs related to variability, and developers accepted 78% of the patches we submit. Also, we remove 477 bad smells in 12 C program families without clone code as in previous studies.","PeriodicalId":194590,"journal":{"name":"ACM SIGPLAN International Conference on Systems, Programming, Languages and Applications: Software for Humanity","volume":"163 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2014-10-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115136415","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Traditional programming language namespaces evolved from filesystem structures. We describe different scenarios where this rigid code organization becomes a limiting factor. After that, we propose a more flexible code organization using tags. We then illustrate it on Python, including how we can convert existing code structures to the new tag-based one. Finally, we discuss our plans how to extend this work to statically typed languages in the future.
{"title":"When importless becomes meaningful","authors":"Tomás Tauber","doi":"10.1145/2660252.2660257","DOIUrl":"https://doi.org/10.1145/2660252.2660257","url":null,"abstract":"Traditional programming language namespaces evolved from filesystem structures. We describe different scenarios where this rigid code organization becomes a limiting factor. After that, we propose a more flexible code organization using tags. We then illustrate it on Python, including how we can convert existing code structures to the new tag-based one. Finally, we discuss our plans how to extend this work to statically typed languages in the future.","PeriodicalId":194590,"journal":{"name":"ACM SIGPLAN International Conference on Systems, Programming, Languages and Applications: Software for Humanity","volume":"81 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2014-10-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114094254","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Where do security technologies come from? Academics propose research and government (sometimes) funds it. Startups move technologies across the "research valley of death" to early adopters. Global corporations make technology widely available by acquiring startups. At every step there are gaps and pitfalls. Adoption is the acid test of innovation. Idea-generation is perhaps ten per cent of innovation; most of the work is on technology transfer and adoption. Chance plays a big role in creating opportunities (e.g., R&D involves a lot of luck), but a company's success depends on its ability to make opportunities more likely to occur, and to capitalize on those opportunities when they arise. Passionate individuals drive technology transfer more than does process; indeed, some people believe that the original researchers need to be involved all the way along the chain. Prototyping is an important practice, often resulting in "researchware" that proves a concept but is not ready for wide use. Transforming a prototype from the lab to the real-world is a multi-stage, multi-year undertaking. This talk will use the decade-long evolution of static analysis in code review as a driver for discussion. We'll talk startups, big companies, venture capital, research agencies, and subject-matter expertise. In general, technologists don't appreciate business people enough and business people don't appreciate technology enough. Most successful companies are brilliant at one, but also need to be adequate at the other.
{"title":"Software security: a study in technology transfer","authors":"G. McGraw","doi":"10.1145/2660252.2661745","DOIUrl":"https://doi.org/10.1145/2660252.2661745","url":null,"abstract":"Where do security technologies come from? Academics propose research and government (sometimes) funds it. Startups move technologies across the \"research valley of death\" to early adopters. Global corporations make technology widely available by acquiring startups. At every step there are gaps and pitfalls. Adoption is the acid test of innovation. Idea-generation is perhaps ten per cent of innovation; most of the work is on technology transfer and adoption. Chance plays a big role in creating opportunities (e.g., R&D involves a lot of luck), but a company's success depends on its ability to make opportunities more likely to occur, and to capitalize on those opportunities when they arise. Passionate individuals drive technology transfer more than does process; indeed, some people believe that the original researchers need to be involved all the way along the chain. Prototyping is an important practice, often resulting in \"researchware\" that proves a concept but is not ready for wide use. Transforming a prototype from the lab to the real-world is a multi-stage, multi-year undertaking.\u0000 This talk will use the decade-long evolution of static analysis in code review as a driver for discussion. We'll talk startups, big companies, venture capital, research agencies, and subject-matter expertise. In general, technologists don't appreciate business people enough and business people don't appreciate technology enough. Most successful companies are brilliant at one, but also need to be adequate at the other.","PeriodicalId":194590,"journal":{"name":"ACM SIGPLAN International Conference on Systems, Programming, Languages and Applications: Software for Humanity","volume":"19 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2014-10-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127954043","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Today, easy-to-use mobile devices like smartphones and tablets are becoming more prevalent than traditional PCs and laptops. New programming languages are emerging to enable programmers to develop software easily-leveraging the exciting advances in existing hardware, and providing abstractions that fit the capabilities of target platforms with multiple sensors, touch and cloud capabilities. PROMOTO brings together researchers who have been exploring new programming paradigms, embracing the new realities of always connected, touch-enabled mobile devices. PROMOTO 2014 would like to invite contributions covering technical aspects of cross-platform computing, cloud computing, social applications and security.
{"title":"2nd workshop on programming for mobile and touch: PROMOTO 2014","authors":"J. Bishop, A. Puder, N. Tillmann","doi":"10.1145/2660252.2662136","DOIUrl":"https://doi.org/10.1145/2660252.2662136","url":null,"abstract":"Today, easy-to-use mobile devices like smartphones and tablets are becoming more prevalent than traditional PCs and laptops. New programming languages are emerging to enable programmers to develop software easily-leveraging the exciting advances in existing hardware, and providing abstractions that fit the capabilities of target platforms with multiple sensors, touch and cloud capabilities. PROMOTO brings together researchers who have been exploring new programming paradigms, embracing the new realities of always connected, touch-enabled mobile devices. PROMOTO 2014 would like to invite contributions covering technical aspects of cross-platform computing, cloud computing, social applications and security.","PeriodicalId":194590,"journal":{"name":"ACM SIGPLAN International Conference on Systems, Programming, Languages and Applications: Software for Humanity","volume":"109 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2014-10-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"134244514","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}