{"title":"Data flow analysis for checking properties of concurrent Java programs","authors":"G. Naumovich, G. Avrunin, L. Clarke","doi":"10.1145/302405.302663","DOIUrl":"https://doi.org/10.1145/302405.302663","url":null,"abstract":"In this paper we show how the FLAVERS data flow analysis technique, originally formulated for systems using a rendezvous concurrency model, can be applied to the various concurrency models used in Java programs. The general approach of FLAVERS is based on modeling a concurrent system as a flow graph and, using a data flow analysis algorithm over this graph, statically checking if a property holds on all (or no) executions of the program. The accuracy of this analysis can be iteratively improved, as needed, by supplying additional constraints, represented as finite state automata, to the data flow analysis algorithm. In this paper we present an approach for analyzing Java programs that uses the constraint mechanism to model the possible communications among threads in Java programs, instead of representing them directly in the flow graph model. We also discuss a number of error-prone thread communication patterns that can arise in Java and describe how FLAVERS can be used to check for the presence of these. A preliminary evaluation of this approach is carried out by analyzing some small concurrent Java programs for these error-prone communication patterns and other, program-specific, faults.","PeriodicalId":359367,"journal":{"name":"Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002)","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1999-05-16","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130021478","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}
{"title":"Product-line architectures in industry: a case study","authors":"J. Bosch","doi":"10.1145/302405.302690","DOIUrl":"https://doi.org/10.1145/302405.302690","url":null,"abstract":"In this paper, a case study investigating the experiences from using product-line architectures is presented involving two Swedish companies, Axis Communications AB and Securitas Larm AB. Key persons in these organizations have been interviewed and information has been collected from documents and other sources. The study identified a collection of problems and issues. The identified problems include the amount of required background knowledge, information distribution, the need for multiple versions of assets, dependencies between assets, use of assets in new contexts, documentation, tool support, management support and effort estimation. Issues collected from the case study are the questioned necessity of domain engineering units, business units versus development departments, time-to-market versus asset quality and common features versus feature superset. For each problem, a problem description, an example, underlying causes, available solutions and research issues are identified whereas for each issue the advantages and disadvantages of each side are discussed.","PeriodicalId":359367,"journal":{"name":"Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002)","volume":"5 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1999-05-16","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"126648272","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}
{"title":"Dynamic layout of distributed applications in FarGo","authors":"O. Holder, I. Ben-Shaul, Hovav Gazit","doi":"10.1145/302405.302462","DOIUrl":"https://doi.org/10.1145/302405.302462","url":null,"abstract":"The design of efficient and reliable distributed applications that operate in large networks, over links with varying capacities and loads, demands new programming abstractions and mechanisms. The conventional static design-time determination of local-remote relationships between components implies that (dynamic) environmental changes are hard if not impossible to address without reengineering. The paper presents a novel programming model that is centered around the concept of \"dynamic application layout\", which permits the manipulation of component location at runtime. This leads to a clean separation between the programming of the application's logic and the programming of the layout, which can also be performed externally at runtime. The main abstraction vehicle for layout programming is a reflective inter-component reference, which embodies co- and re-location semantics. We describe an extensible set of reference types that drive and constrain the mapping of components to hosts, and show how this model elevates application performance and reliability yet requires minimal changes in programming the application's logic. The model was realized in the FarGo system, whose design and implementation in Java are presented, along with an event based scripting language and corresponding event monitoring service for managing the layout of FarGo applications.","PeriodicalId":359367,"journal":{"name":"Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002)","volume":"67 ","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1999-05-16","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"113989226","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}
{"title":"Defining families - Commonality analysis","authors":"M. Ardis, David A. Cuka","doi":"10.1145/302405.302929","DOIUrl":"https://doi.org/10.1145/302405.302929","url":null,"abstract":"Figure 1): A recent trend in both the software engineering research and industrial communities has been to seek ways to systematically engineer software domains. One approach is to develop families of software and to invest in facilities for rapidly producing family members. This half-day tutorial describes the commonality analysis process, a systematic approach to analyzing families. The result of the analysis forms the basis for designing reusable assets that can be used to rapidly produce family members. This in-depth tutorial will teach the participants the principles underlying the approach and will give them a chance to perform a practice commonality analysis guided by experienced users of the process.","PeriodicalId":359367,"journal":{"name":"Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002)","volume":"37 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1999-05-16","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"122331003","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}
{"title":"Using off-the-shelf middleware to implement connectors in distributed software architectures","authors":"Eric M. Dashofy, N. Medvidović, R. Taylor","doi":"10.1145/302405.302407","DOIUrl":"https://doi.org/10.1145/302405.302407","url":null,"abstract":"Software architectures promote development focused on modular building blocks and their interconnections. Since architecture-level components often contain complex functionality, it is reasonable to expect that their interactions will also be complex. Modeling and implementing software connectors thus becomes a key aspect of architecture-based development. Software interconnection and middleware technologies such as RMI, CORBA, ILU, and ActiveX provide a valuable service in building applications from components. The relation of such services to software connectors in the context of software architectures, however, is not well understood. To understand the tradeoffs among these technologies with respect to architectures, we have evaluated several off-the-shelf middleware technologies and identified key techniques for utilizing them in implementing software connectors. Our platform for investigation was C2, a component- and message-based architectural style. By encapsulating middleware functionality within software connectors, we have coupled C2's existing benefits such as component interchangeability, substrate independence and structural guidance with new capabilities of multi-lingual, multi-process and distributed application development in a manner that is transparent to architects.","PeriodicalId":359367,"journal":{"name":"Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002)","volume":"16 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1999-05-16","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"126600400","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}
{"title":"Residual test coverage monitoring","authors":"C. Pavlopoulou, M. Young","doi":"10.1145/302405.302637","DOIUrl":"https://doi.org/10.1145/302405.302637","url":null,"abstract":"Structural coverage criteria are often used as an indicator of the thoroughness of testing, but complete satisfaction of a criterion is seldom achieved. When a software product is released with less than 100% coverage, testers are explicitly or implicitly assuming that executions satisfying the remaining test obligations (the residue) are either infeasible or occur so rarely that they have negligible impact on quality. Violation of this assumption indicates shortcomings in the testing process. Monitoring in the deployed environment, even in the beta test phase, is typically limited to error and sanity checks. Monitoring the residue of test coverage in actual use can provide additional useful information, but it is unlikely to be accepted by users unless its performance impact is very small. Experience with a prototype tool for residual test coverage monitoring of Java programs suggests that, at least for statement coverage, the simple strategy of removing all probes except those corresponding to the residue of coverage testing reduces execution overhead to acceptably low levels.","PeriodicalId":359367,"journal":{"name":"Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002)","volume":"80 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1999-05-16","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114536153","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}
{"title":"Automatic verification of real-time designs","authors":"V. Braberman","doi":"10.1145/302405.302990","DOIUrl":"https://doi.org/10.1145/302405.302990","url":null,"abstract":"We are working on an automatic approach to verify real-time distributed designs for complex timing requirements which go beyond schedulability. We focus our analysis on designs which adhere to the hypothesis of known analytical theory for fixed-priority scheduling. Unlike previous formal approaches, we profit from that theory and build rather simple and tractable formal models based on Timed Automata. Therefore, we are integrating scheduling analysis techniques into the framework of automatic formal verification.","PeriodicalId":359367,"journal":{"name":"Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002)","volume":"232 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1999-05-16","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114597185","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}
{"title":"Assessing software libraries by browsing similar classes, functions and relationships","authors":"Amir Michail, D. Notkin","doi":"10.1145/302405.302678","DOIUrl":"https://doi.org/10.1145/302405.302678","url":null,"abstract":"Comparing and contrasting a set of software libraries is useful for reuse related activities such as selecting a library from among several candidates or porting an application from one library to another. The current state of the art in assessing libraries relies on qualitative methods. To reduce costs and/or assess a large collection of libraries, automation is necessary. Although there are tools that help a developer examine an individual library in terms of architecture, style, etc., we know of no tools that help the developer directly compare several libraries. With existing tools, the user must manually integrate the knowledge learned about each library. Automation to help developers directly compare and contrast libraries requires matching of similar components (such as classes and functions) across libraries. This is different than the traditional component retrieval problem in which components are returned that best match a user's query. Rather, we need to find those components that are similar across the libraries under consideration. In this paper, we show how this kind of matching can be done.","PeriodicalId":359367,"journal":{"name":"Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002)","volume":"48 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1999-05-16","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114611203","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}
{"title":"Risk management in software development: a technology overview and the riskit method","authors":"J. Kontio","doi":"10.1145/302405.302954","DOIUrl":"https://doi.org/10.1145/302405.302954","url":null,"abstract":"Explicit and systematic management of risks in software projects has become a more common practice amongst leading software organizations, However, often the methods used have severe theoretical and practical limitations that may lead to biased or inappropriate control of risks. The first part of this tutorial presents a critical overview of the current risk management technology, discussing the pros and cons of main approaches, as well as guidelines for their use. The second part of the tutorial presents the Riskit method with concrete examples and exercises. Riskit is a risk management method that has been developed to provide a theoretically sound, yet practical risk management approach. The method has been used and evaluated in several industrial projects in Europe and in the U.S.","PeriodicalId":359367,"journal":{"name":"Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002)","volume":"52 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1999-05-16","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114680895","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}
{"title":"A cooperative approach to support software deployment using the Software Dock","authors":"R. Hall, D. Heimbigner, A. Wolf","doi":"10.1145/302405.302463","DOIUrl":"https://doi.org/10.1145/302405.302463","url":null,"abstract":"Software deployment is an evolving collection of interrelated processes such as release, install, adapt, reconfigure, update, activate, deactivate, remove, and retire. The connectivity of large networks, such as the Internet, is affecting how software deployment is performed. It is necessary to introduce new software deployment technologies that leverage this connectivity. The Software Dock framework creates a distributed, agent based deployment framework to support the ongoing cooperation and negotiation among software producers themselves and among software producers and software consumers. This deployment framework is enabled by the use of a standardized deployment schema for describing software systems, called the Deployable Software Description (DSD) format. The Software Dock also employs agents to traverse between software producers and consumers in order to perform software deployment activities by interpreting the descriptions of software systems. The Software Dock infrastructure allows software producers to offer their customers high level deployment services that were previously not possible.","PeriodicalId":359367,"journal":{"name":"Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002)","volume":"14 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1999-05-16","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"128267661","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}