{"title":"Understanding some software quality aspects from architecture and design models","authors":"L. Bratthall, C. Wohlin","doi":"10.1109/WPC.2000.852477","DOIUrl":"https://doi.org/10.1109/WPC.2000.852477","url":null,"abstract":"Software systems evolve over time and it is often difficult to maintain them. One reason for this is often that it is hard to understand the previous release. Further even if architecture and design models are available and up to date, they primarily represent the functional behaviour of the system. To evaluate whether it is possible to also represent some non-functional aspects, an experiment has been conducted. The objective of the experiment is to evaluate the cognitive suitability of some visual representations that can be used to represent a control relation, software component size and component external and internal complexity. Ten different representations are evaluated in a controlled environment using 35 subjects. The results from the experiment show that it is possible to also represent some non-functional aspects. It is concluded that the incorporation of these representations in architecture and design descriptions is both easy and probably worthwhile. The incorporation of the representations should enhance the understanding of previous releases and hence help software developers in evolving and maintaining complex software systems.","PeriodicalId":448149,"journal":{"name":"Proceedings IWPC 2000. 8th International Workshop on Program Comprehension","volume":"43 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2000-06-10","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125702294","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":"Working session: empirical studies of programming-in-the-large: how?","authors":"M. Petre","doi":"10.1109/WPC.2000.852503","DOIUrl":"https://doi.org/10.1109/WPC.2000.852503","url":null,"abstract":"Studying software design is a juggling act of tradeoffs and constraints. There are good, pragmatic reasons why most empirical studies of programming and software engineering have focused on programming-in-the-smalleven programming-in-the-miniature. Such research has certainly revealed some useful things. However, have we made our focus so small that we have not even noticed the real design issues? The difference between programming-in-the-small and programming-in-the large is measured, not just in lines of code, but also in data, roll calls, engineering processes, tools and environments, and - crucially - time.How can we scale up the focus of our empirical studies without exceeding feasibility? Is it enough just to change the granularity of our examination? How can we take a longitudinal view, examining software development over the whole project lifetime, rather than within a given hour in the life of a program? How at least can we look enough at programming-in-the-large to identify issues that are small, tractable, and critical? This session will begin to address the application of empirical methods to the study of programming-in-the-large, and will consider what lessons might be drawn from past research experience.","PeriodicalId":448149,"journal":{"name":"Proceedings IWPC 2000. 8th International Workshop on Program Comprehension","volume":"7 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2000-06-10","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115306629","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":"Program comprehension techniques improve software inspections: a case study","authors":"Stan Rifkin, Lionel E. Deimel","doi":"10.1109/WPC.2000.852487","DOIUrl":"https://doi.org/10.1109/WPC.2000.852487","url":null,"abstract":"Software inspections are widely regarded as a cost-effective mechanism for removing defects in software, though performing them does not always reduce the number of customer-discovered defects. We present a case study in which an attempt was made to reduce such defects through inspection training that introduced program comprehension ideas. The training was designed to address the problem of understanding the artifact being reviewed, as well as other perceived deficiencies of the inspection process itself. Measures, both formal and informal, suggest that explicit training in program understanding may improve inspection effectiveness.","PeriodicalId":448149,"journal":{"name":"Proceedings IWPC 2000. 8th International Workshop on Program Comprehension","volume":"19 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2000-06-10","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"117267988","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":"Smiley - an interactive tool for monitoring inter-module function calls","authors":"N. Goldman","doi":"10.1109/WPC.2000.852485","DOIUrl":"https://doi.org/10.1109/WPC.2000.852485","url":null,"abstract":"Applications running under modern operating systems obtain a significant portion of their functionality from code that is distributed in binary modules that are distinct from the application's own executable. This functionality is accessed by load- or run-time linkage from the application executable or by interprocess communication. Examples of such functionality include user interface management, file system access, process and thread creation and synchronization, and network communications. In the Windows NT operating system, an application obtains this functionality through calls on functions exported from shared libraries. Smiley is a monitoring program that can selectively log these calls as they are made by any application. It does so without any modification of the persistent executable images of either the application or the libraries. Logs of library calls provide insight into an application's implementation. By interactively selecting libraries and functions to monitor, an analyst gradually homes in on aspects of an implementation that are relevant to his objectives. Since it requires only the distributed binary form of the application, Smiley can be used as an aid in comprehending the implementation of COTS software.","PeriodicalId":448149,"journal":{"name":"Proceedings IWPC 2000. 8th International Workshop on Program Comprehension","volume":"31 11 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2000-06-10","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"134561960","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 formalism to automate mapping from program features to code","authors":"J. Deprez, Arun Lakhotia","doi":"10.1109/WPC.2000.852481","DOIUrl":"https://doi.org/10.1109/WPC.2000.852481","url":null,"abstract":"How does one locate the segments of code that implement a particular feature? N. Wilde and M.C. Scully (WS) (1995) pioneered the use of execution traces to map program features to code. Using their technique to locate the implementation of a particular feature, a program is executed with two sets of inputs; one set invokes the feature of interest and the other set does not. Operations such as set-difference and set-intersection, amongst others, are then applied on the execution traces to obtain answers for various questions related to a feature and its implementation. Previous researchers have automated the tasks of computing the execution traces and performing operations on the execution traces. We present a formalism to automate the most time-consuming aspect of this approach for locating code, namely, the partitioning of the input sets into invoking and non-invoking sets. A collection of input sets is partitioned using feature syntax, a grammar of the program's input annotated with feature names. An input set is placed in the invoking set if and only if its parse tree is annotated with that feature. WS' technique solely applies set operations on the execution traces of inputs. In our technique, we also apply the set operations among the set of features used by these inputs. By doing so, we can precisely determine the features whose implementation is identified when applying the operations on the execution traces.","PeriodicalId":448149,"journal":{"name":"Proceedings IWPC 2000. 8th International Workshop on Program Comprehension","volume":"198200 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2000-06-10","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"122059169","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":"Source animation as a means of program comprehension for object-oriented systems","authors":"H. Sneed","doi":"10.1109/WPC.2000.852492","DOIUrl":"https://doi.org/10.1109/WPC.2000.852492","url":null,"abstract":"Object oriented systems are particularly difficult to comprehend because of the distribution of functionality and polymorphism which limits the effectiveness of conventional static analysis methods. The paper proposes a dynamic analysis approach using animation to simulate the use cases in a financial application system. The objective is to offer maintenance programmers a means of familiarizing themselves with complex C++ code while at the same time validating the correctness of the code. For this purpose, control flow slicing and concept lattices are used.","PeriodicalId":448149,"journal":{"name":"Proceedings IWPC 2000. 8th International Workshop on Program Comprehension","volume":"26 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2000-06-10","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127248071","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":"Working session: identification of lower-level artifacts","authors":"G. Antoniol, G. Casazza, E. Merlo","doi":"10.1109/WPC.2000.852502","DOIUrl":"https://doi.org/10.1109/WPC.2000.852502","url":null,"abstract":"When programmers approach the task of maintaining a software system to modify existing code to correct errors, to add new functionalities or to upgrade it, often their first activity is to build a mental model of the system being studied. In order to understand the organization of a system at different levels of abstractions, maintenance requires the identification of sub-systems, of their functionalities, of their interactions, and of their relation with the different software artifacts. Unfortunately, documentation is often scarce or not up-to-date. Furthermore, since outsourcing has been widely adopted as common practice, people who wrote or maintained a system may no longer be available. Hence, the only reliable source of information about a program is often the program itself.Different approaches and tools have been proposed to help people in building conceptual models of existing systems either at the architectural level or at the code level. The architectural level relies on tools and technologies to extract lower-level artifacts from code and abstract architectural properties from them. To be effective, a fundamental requirement of any approach based on source code analysis is its ability to successfully deal with the full spectrum of a programming language syntax and semantics. However, many widely used modern programming languages, as C/C++, Pascal, Ada, etc. contain features such as structures, pointers, function pointers, polymorphism, inheritance, subtyping, and so on, which, while they augment a language expressivity and offer greater implementation flexibility to software developers, they also make the process of recovering even elementary information such as the call graph or the dependency graph harder.Pointer analysis algorithms provide programmers with a representation of the references between memory locations. The result is a useful view in itself, but is also a preliminary requirement for subsequent computations. Once language features are dealt with, two main categories of approaches can be conceived depending on whether or not we explicitly know what we are seeking. The first category comprises library-based approaches such as clone detection, clich based approaches, plan recognition, design pattern recovery and more generally approaches exploiting a set of ?examples?. The second category exploits the idea of clustering entities with similar or desired properties into abstract data types, into objects and into more general new structures such as domain or application specific patterns. Concept analysis is probably the most widely known approach adopted for this category of problems.Still the entire ?weaponry? requires underling sophisticated technologies, highly trained people, and adequate hardware resources. It is not clear how the lab approaches may be effectively exported into the every-day industrial practice. That is: 1. Do we really need all this stuff?2. Do we know companies who are willing to apply or who are curr","PeriodicalId":448149,"journal":{"name":"Proceedings IWPC 2000. 8th International Workshop on Program Comprehension","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2000-06-10","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124398127","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":"Understanding the sources of software defects: a filtering approach","authors":"C. Wohlin, Martin Höst, M. C. Ohlsson","doi":"10.1109/WPC.2000.852475","DOIUrl":"https://doi.org/10.1109/WPC.2000.852475","url":null,"abstract":"The paper presents a method proposal of how to use product measures and defect data to enable understanding and identification of design and programming constructs that contribute more than expected to the defect statistics. The paper describes a method that can be used to identify the most defect-prone design and programming constructs and the method proposal is illustrated on data collected from a large software project in the telecommunication domain. The example indicates that it is feasible, based on defect data and product measures, to identify the main sources of defects in terms of design and programming constructs. Potential actions to be taken include less usage of particular design and programming constructs, additional resources for verification of the constructs and further education into how to use the constructs.","PeriodicalId":448149,"journal":{"name":"Proceedings IWPC 2000. 8th International Workshop on Program Comprehension","volume":"21 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2000-06-10","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"121721051","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}