The goal of this workshop is to bring together researchers and practitioners in trying to understand the emerging phenomenon of global software development. As we witness an increased globalization of software development, it is important that research addresses the challenges of distributed software engineering and informs the development of techniques and technologies to improve such practice.
{"title":"Workshop on global software development","authors":"D. Damian","doi":"10.1145/581339.581435","DOIUrl":"https://doi.org/10.1145/581339.581435","url":null,"abstract":"The goal of this workshop is to bring together researchers and practitioners in trying to understand the emerging phenomenon of global software development. As we witness an increased globalization of software development, it is important that research addresses the challenges of distributed software engineering and informs the development of techniques and technologies to improve such practice.","PeriodicalId":186061,"journal":{"name":"Proceedings of the 24th International Conference on Software Engineering. ICSE 2002","volume":"7 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2002-05-19","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"128723553","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}
This workshop brings together researchers and practitioners from the community interested in predictable assembly from certifiable components. The goal of this workshop is to ensure continued collaboration among the members of this community. One output of the workshop will be an understanding of composition theory and how it applies to community model problems that were suggested at the workshop on component-based software engineering held at ICSE in 2001. A second output will be the identification of research opportunities that lie on the perimeter of predictable assembly.
{"title":"5t\" ICSE workshop on component-based software engineering: benchmarks for predictable assembly","authors":"I. Crnkovic, H. Schmidt, J. Stafford, K. Wallnau","doi":"10.1145/581339.581429","DOIUrl":"https://doi.org/10.1145/581339.581429","url":null,"abstract":"This workshop brings together researchers and practitioners from the community interested in predictable assembly from certifiable components. The goal of this workshop is to ensure continued collaboration among the members of this community. One output of the workshop will be an understanding of composition theory and how it applies to community model problems that were suggested at the workshop on component-based software engineering held at ICSE in 2001. A second output will be the identification of research opportunities that lie on the perimeter of predictable assembly.","PeriodicalId":186061,"journal":{"name":"Proceedings of the 24th International Conference on Software Engineering. ICSE 2002","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2002-05-19","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130109423","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}
Describes the development and experimental evaluation of a rigorous approach for effective object-oriented (OO) code inspection. Since their development, inspections have been shown to be powerful defect detection strategies but little research has been done to investigate their application to OO systems, which have very different structural and execution models compared to procedural systems. Previous investigations have demonstrated that the delocalised nature of OO software - the resolution of frequent non-local references and the incongruous relationship between its static and dynamic representations - are primary inhibitors to its effective inspection. The experiment investigates a set of three complementary code-reading techniques devised specifically to address these problems: one based on a checklist adapted to address the identified problems of OO inspections, one focused on the systematic construction of abstract specifications, and the last one centered on the dynamic slice that a use case takes through a system. The analysis shows that there is a significant difference in the number of defects found between the three reading techniques. The checklist-based technique emerges as the most effective approach, but the other techniques also have noticeable strengths, and so, for the best results in a practical situation, a combination of techniques is recommended.
{"title":"Further investigations into the development and evaluation of reading techniques for object-oriented code inspection","authors":"A. Dunsmore, M. Roper, M. Wood","doi":"10.1145/581348.581349","DOIUrl":"https://doi.org/10.1145/581348.581349","url":null,"abstract":"Describes the development and experimental evaluation of a rigorous approach for effective object-oriented (OO) code inspection. Since their development, inspections have been shown to be powerful defect detection strategies but little research has been done to investigate their application to OO systems, which have very different structural and execution models compared to procedural systems. Previous investigations have demonstrated that the delocalised nature of OO software - the resolution of frequent non-local references and the incongruous relationship between its static and dynamic representations - are primary inhibitors to its effective inspection. The experiment investigates a set of three complementary code-reading techniques devised specifically to address these problems: one based on a checklist adapted to address the identified problems of OO inspections, one focused on the systematic construction of abstract specifications, and the last one centered on the dynamic slice that a use case takes through a system. The analysis shows that there is a significant difference in the number of defects found between the three reading techniques. The checklist-based technique emerges as the most effective approach, but the other techniques also have noticeable strengths, and so, for the best results in a practical situation, a combination of techniques is recommended.","PeriodicalId":186061,"journal":{"name":"Proceedings of the 24th International Conference on Software Engineering. ICSE 2002","volume":"46 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2002-05-19","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125463447","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}
Product line engineering is a recent approach to software development that specifically aims at exploiting commonalities and systematic variabilities among functionally overlapping systems in terms of large scale reuse. Taking full advantage of this potential requires adequate planning and management of the reuse approach as otherwise huge economic benefits will be missed due to an inappropriate alignment of the reuse infrastructure. Key in product line planning is the scoping activity, which aims at focussing the reuse investment where it pays. Scoping actually happens on several levels in the process: during the domain analysis step (analysis of product line requirements) a focusing needs to happen just like during the decision of what to implement for reuse. The latter decision also has important ramifications for the development of an appropriate reference architecture as it provides the reusability requirements for this step. We describe an integrated approach that has been developed, improved, and validated over the last few years. The approach fully covers the scoping activities of domain scoping and reuse infrastructure scoping and was validated in several industrial case studies.
{"title":"A comprehensive product line scoping approach and its validation","authors":"Klaus Schmid","doi":"10.1145/581339.581415","DOIUrl":"https://doi.org/10.1145/581339.581415","url":null,"abstract":"Product line engineering is a recent approach to software development that specifically aims at exploiting commonalities and systematic variabilities among functionally overlapping systems in terms of large scale reuse. Taking full advantage of this potential requires adequate planning and management of the reuse approach as otherwise huge economic benefits will be missed due to an inappropriate alignment of the reuse infrastructure. Key in product line planning is the scoping activity, which aims at focussing the reuse investment where it pays. Scoping actually happens on several levels in the process: during the domain analysis step (analysis of product line requirements) a focusing needs to happen just like during the decision of what to implement for reuse. The latter decision also has important ramifications for the development of an appropriate reference architecture as it provides the reusability requirements for this step. We describe an integrated approach that has been developed, improved, and validated over the last few years. The approach fully covers the scoping activities of domain scoping and reuse infrastructure scoping and was validated in several industrial case studies.","PeriodicalId":186061,"journal":{"name":"Proceedings of the 24th International Conference on Software Engineering. ICSE 2002","volume":"14 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2002-05-19","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125494336","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 presence of a solid architectural vision is a key discriminator in the success or failure of a software project. This paper examines what software architecture is and what it is not. It discusses and illustrates how to describe architecture through a set of design viewpoints and views and how to express these views in the UML, in the spirit of the new IEEE Standard 1471:2000: Recommended practice for architectural description. The paper shows of how architectures drive the development process and how to capture architectural design patterns using the UML. It is illustrated by several widely applicable architectural patterns in different domain.
{"title":"Tutorial: describing software architecture with UML","authors":"Philippe B Kruchten, B. Selić, W. Kozaczynski","doi":"10.1145/581339.581449","DOIUrl":"https://doi.org/10.1145/581339.581449","url":null,"abstract":"The presence of a solid architectural vision is a key discriminator in the success or failure of a software project. This paper examines what software architecture is and what it is not. It discusses and illustrates how to describe architecture through a set of design viewpoints and views and how to express these views in the UML, in the spirit of the new IEEE Standard 1471:2000: Recommended practice for architectural description. The paper shows of how architectures drive the development process and how to capture architectural design patterns using the UML. It is illustrated by several widely applicable architectural patterns in different domain.","PeriodicalId":186061,"journal":{"name":"Proceedings of the 24th International Conference on Software Engineering. ICSE 2002","volume":"12 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2002-05-19","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"122987000","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}
Philippe B Kruchten, R. Hilliard, R. Kazman, W. Kozaczynski, J. Obbink, A. Ran
1. THE SARA W O R K I N G GROUP Over the last 2 years, a small international group of architects has been working on the topic of software architecture review and assessment (SARA). The objective of the SARA group is to capture and publish "best practices" in this area, mostly rooted in practical experience. As its gets closer to having a publishable report [1], the working group wishes to open the discussion and to obtain feedback from the wider community of architects. In particular, it is interested in expanding the report in the area of the methods and techniques that can be used support reviews and assessments of the architecture of software intensive systems, to expand the catalog it has already started.
{"title":"Workshop on methods and techniques for software architecture review and assessment (SARA)","authors":"Philippe B Kruchten, R. Hilliard, R. Kazman, W. Kozaczynski, J. Obbink, A. Ran","doi":"10.1145/581339.581439","DOIUrl":"https://doi.org/10.1145/581339.581439","url":null,"abstract":"1. THE SARA W O R K I N G GROUP Over the last 2 years, a small international group of architects has been working on the topic of software architecture review and assessment (SARA). The objective of the SARA group is to capture and publish \"best practices\" in this area, mostly rooted in practical experience. As its gets closer to having a publishable report [1], the working group wishes to open the discussion and to obtain feedback from the wider community of architects. In particular, it is interested in expanding the report in the area of the methods and techniques that can be used support reviews and assessments of the architecture of software intensive systems, to expand the catalog it has already started.","PeriodicalId":186061,"journal":{"name":"Proceedings of the 24th International Conference on Software Engineering. ICSE 2002","volume":"28 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2002-05-19","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116696033","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}
Introduces DIDUCE, a practical and effective tool that aids programmers in detecting complex program errors and identifying their root causes. By instrumenting a program and observing its behavior as it runs, DIDUCE dynamically formulates hypotheses of invariants obeyed by the program. DIDUCE hypothesizes the strictest invariants at the beginning, and gradually relaxes the hypothesis as violations are detected to allow for new behavior. The violations reported help users to catch software bugs as soon as they occur. They also give programmers new visibility into the behavior of the programs such as identifying rare corner cases in the program logic or even locating hidden errors that corrupt the program's results. We implemented the DIDUCE system for Java programs and applied it to four programs of significant size and complexity. DIDUCE succeeded in identifying the root causes of programming errors in each of the programs quickly and automatically. In particular, DIDUCE is effective in isolating a timing-dependent bug in a released JSSE (Java Secure Socket Extension) library, which would have taken an experienced programmer days to find. Our experience suggests that detecting and checking program invariants dynamically is a simple and effective methodology for debugging many different kinds of program errors across a wide variety of application domains.
{"title":"Tracking down software bugs using automatic anomaly detection","authors":"Sudheendra Hangal, M. Lam","doi":"10.1145/581339.581377","DOIUrl":"https://doi.org/10.1145/581339.581377","url":null,"abstract":"Introduces DIDUCE, a practical and effective tool that aids programmers in detecting complex program errors and identifying their root causes. By instrumenting a program and observing its behavior as it runs, DIDUCE dynamically formulates hypotheses of invariants obeyed by the program. DIDUCE hypothesizes the strictest invariants at the beginning, and gradually relaxes the hypothesis as violations are detected to allow for new behavior. The violations reported help users to catch software bugs as soon as they occur. They also give programmers new visibility into the behavior of the programs such as identifying rare corner cases in the program logic or even locating hidden errors that corrupt the program's results. We implemented the DIDUCE system for Java programs and applied it to four programs of significant size and complexity. DIDUCE succeeded in identifying the root causes of programming errors in each of the programs quickly and automatically. In particular, DIDUCE is effective in isolating a timing-dependent bug in a released JSSE (Java Secure Socket Extension) library, which would have taken an experienced programmer days to find. Our experience suggests that detecting and checking program invariants dynamically is a simple and effective methodology for debugging many different kinds of program errors across a wide variety of application domains.","PeriodicalId":186061,"journal":{"name":"Proceedings of the 24th International Conference on Software Engineering. ICSE 2002","volume":"34 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2002-05-19","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125124320","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}
Finding relevant expertise is a critical need in collaborative software engineering, particularly in geographically distributed developments. We introduce a tool, called Expertise Browser (ExB), that uses data from change management systems to locate people with desired expertise. It uses a quantification of experience, and presents evidence to validate this quantification as a measure of expertise. The tool enables developers, for example, to easily distinguish someone who has worked only briefly in a particular area of the code from someone who has more extensive experience, and to locate people with broad expertise throughout large parts of the product, such as modules or even subsystems. In addition, it allows a user to discover expertise profiles for individuals or organizations. Data from a deployment of the tool in a large software development organization shows that newer, remote sites tend to use the tool for expertise location more frequently. Larger, more established sites used the tool to find expertise profiles for people or organizations. We conclude by describing extensions that provide continuous awareness of ongoing work and an interactive, quantitative resume/spl acute/.
{"title":"Expertise Browser: a quantitative approach to identifying expertise","authors":"A. Mockus, J. Herbsleb","doi":"10.1145/581339.581401","DOIUrl":"https://doi.org/10.1145/581339.581401","url":null,"abstract":"Finding relevant expertise is a critical need in collaborative software engineering, particularly in geographically distributed developments. We introduce a tool, called Expertise Browser (ExB), that uses data from change management systems to locate people with desired expertise. It uses a quantification of experience, and presents evidence to validate this quantification as a measure of expertise. The tool enables developers, for example, to easily distinguish someone who has worked only briefly in a particular area of the code from someone who has more extensive experience, and to locate people with broad expertise throughout large parts of the product, such as modules or even subsystems. In addition, it allows a user to discover expertise profiles for individuals or organizations. Data from a deployment of the tool in a large software development organization shows that newer, remote sites tend to use the tool for expertise location more frequently. Larger, more established sites used the tool to find expertise profiles for people or organizations. We conclude by describing extensions that provide continuous awareness of ongoing work and an interactive, quantitative resume/spl acute/.","PeriodicalId":186061,"journal":{"name":"Proceedings of the 24th International Conference on Software Engineering. ICSE 2002","volume":"282 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2002-05-19","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"133168185","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}
Summary form only given. Design patterns are about the reuse of excellent, established design ideas, best practice formulas from experience object oriented developers. This tutorial is an introduction to design patterns used in the design of object-oriented software applications.
{"title":"Tutorial: mastering design patterns","authors":"Craig Larman","doi":"10.1145/581339.581456","DOIUrl":"https://doi.org/10.1145/581339.581456","url":null,"abstract":"Summary form only given. Design patterns are about the reuse of excellent, established design ideas, best practice formulas from experience object oriented developers. This tutorial is an introduction to design patterns used in the design of object-oriented software applications.","PeriodicalId":186061,"journal":{"name":"Proceedings of the 24th International Conference on Software Engineering. ICSE 2002","volume":"1982 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2002-05-19","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130297517","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 effects in the empirical study of different kinds of inputs on the software inspection process can be classified into explicit inputs and implicit inputs. Explicit inputs are the software artifacts to be inspected, the documentation and inspection aids used by the inspectors. Implicit inputs include inspectors' expertise, norms, beliefs and values.
{"title":"Use of software inspection inputs in practice","authors":"Y. Wong","doi":"10.1145/581339.581472","DOIUrl":"https://doi.org/10.1145/581339.581472","url":null,"abstract":"The effects in the empirical study of different kinds of inputs on the software inspection process can be classified into explicit inputs and implicit inputs. Explicit inputs are the software artifacts to be inspected, the documentation and inspection aids used by the inspectors. Implicit inputs include inspectors' expertise, norms, beliefs and values.","PeriodicalId":186061,"journal":{"name":"Proceedings of the 24th International Conference on Software Engineering. ICSE 2002","volume":"171 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2002-05-19","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115642508","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}