Demo Data from EDBT 2026 / reviewers in the wild / expert
Lars Lundberg
dblp:58/356
· DBLP profile ↗
77ranked-venue papers
20as first author
4since 2021 · last 2025
—ORCID · conflict
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 29 · 1 first-author · 1 since 2021Systems, architecture and hardware · 23 · 14 first-authorApplied, interdisciplinary, general and emerging computing · 8 · 2 first-author · 1 since 2021Artificial intelligence and machine learning · 6 · 1 first-author · 3 since 2021Theory of computation · 6 · 1 first-authorSecurity and privacy · 2Databases, data management, data science and information retrieval · 1Graphics, computer vision, multimedia, augmented reality and games · 1
Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.
| Computer architecture, parallel and distributed computing, and storage systems
4 papers |
Memory systems · 31% Performance modeling and evaluation · 21% Parallel and multicore computing · 20% | |
| Software engineering, system software, and programming languages
1 paper |
Software testing · 77% Empirical software engineering · 23% |
Topics — the 13 heaviest of 15, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Cloud and datacenter computing
cluster resource management and scheduling |
0.0 | 2 | 2000 | Optimal Combinatorial Functions Comparing Multiprocess Allocation Performance in Multiprocessor Systems · SIAM J. Comput. 2000 An Optimal Execution Time Estimate of Static Versus Dynamic Allocation in Multiprocessor Systems · SIAM J. Comput. 1995 |
Memory systems
cache |
0.0 | 1 | 2000 | Optimal Worst Case Formulas Comparing Cache Memory Associativity · SIAM J. Comput. 2000 |
Memory systems › cache design
cache associativity |
0.0 | 1 | 2000 | Optimal Worst Case Formulas Comparing Cache Memory Associativity · SIAM J. Comput. 2000 |
Memory systems › cache
cache behavior |
0.0 | 1 | 2000 | Optimal Worst Case Formulas Comparing Cache Memory Associativity · SIAM J. Comput. 2000 |
Parallel and multicore computing › task allocation
multiprocessor task allocation |
0.0 | 1 | 2000 | Optimal Combinatorial Functions Comparing Multiprocess Allocation Performance in Multiprocessor Systems · SIAM J. Comput. 2000 |
Empirical software engineering
software metrics |
0.0 | 1 | 2007 | Company-Wide Implementation of Metrics for Early Software Fault Detection · ICSE 2007 |
Embedded and real-time systems › real-time scheduling
multiprocessor scheduling |
0.0 | 1 | 1998 | Using Recorded Values for Bounding the Minimum Completion Time in Multiprocessors · IEEE Trans. Parallel Distributed Syst. 1998 |
Electronic design automation › high-level synthesis
scheduling |
0.0 | 1 | 1998 | Using Recorded Values for Bounding the Minimum Completion Time in Multiprocessors · IEEE Trans. Parallel Distributed Syst. 1998 |
Parallel and multicore computing
parallel programming models |
0.0 | 2 | 2000 | Optimal Combinatorial Functions Comparing Multiprocess Allocation Performance in Multiprocessor Systems · SIAM J. Comput. 2000 An Optimal Execution Time Estimate of Static Versus Dynamic Allocation in Multiprocessor Systems · SIAM J. Comput. 1995 |
Memory systems › cache management
cache replacement |
0.0 | 1 | 2000 | Optimal Worst Case Formulas Comparing Cache Memory Associativity · SIAM J. Comput. 2000 |
Parallel and multicore computing › task allocation
process placement |
0.0 | 1 | 2000 | Optimal Combinatorial Functions Comparing Multiprocess Allocation Performance in Multiprocessor Systems · SIAM J. Comput. 2000 |
Parallel and multicore computing
parallel scheduling |
0.0 | 1 | 1998 | Using Recorded Values for Bounding the Minimum Completion Time in Multiprocessors · IEEE Trans. Parallel Distributed Syst. 1998 |
Parallel and multicore computing › task scheduling
process scheduling |
0.0 | 1 | 1995 | An Optimal Execution Time Estimate of Static Versus Dynamic Allocation in Multiprocessor Systems · SIAM J. Comput. 1995 |
Methods — techniques the papers use, named apart from their topics
measurement concept · 0.1case study · 0.1combinatorial analysis · 0.0worst-case ratio · 0.0worst-case analysis · 0.0combinatorial bounds · 0.0program transformation · 0.0combinatorial mathematics · 0.0extremal matrix analysis · 0.0
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2025 | Clustering-based adaptive data augmentation for class-imbalance in machine learning (CADA): additive manufacturing use caseabstractAbstract Large amount of data are generated from in-situ monitoring of additive manufacturing (AM) processes which is later used in prediction modelling for defect classification to speed up quality inspection of products. A high volume of this process data is defect-free (majority class) and a lower volume of this data has defects (minority class) which result in the class-imbalance issue. Using imbalanced datasets, classifiers often provide sub-optimal classification results, i.e. better performance on the majority class than the minority class. However, it is important for process engineers that models classify defects more accurately than the class with no defects since this is crucial for quality inspection. Hence, we address the class-imbalance issue in manufacturing process data to support in-situ quality control of additive manufactured components. For this, we propose cluster-based adaptive data augmentation (CADA) for oversampling to address the class-imbalance problem. Quantitative experiments are conducted to evaluate the performance of the proposed method and to compare with other selected oversampling methods using AM datasets from an aerospace industry and a publicly available casting manufacturing dataset. The results show that CADA outperformed random oversampling and the SMOTE method and is similar to random data augmentation and cluster-based oversampling. Furthermore, the results of the statistical significance test show that there is a significant difference between the studied methods. As such, the CADA method can be considered as an alternative method for oversampling to improve the performance of models on the minority class. Siva Krishna Dasari, Abbas Cheddad, Jonatan Palmquist, Lars Lundberg |
Neural Comput. Appl. | 4 |
| 2024 | Bibliometric Mining of Research Trends for Smart CitiesabstractUsing a novel method and tool in the form of a Python program, we present a bibliometric study based on 46,937 documents related to smart cities from the Scopus database. The study identifies important research directions and trends during the time period 2014 to 2023. We also present the growth of smart city research for five geographic regions. Citation analysis for research directions and regions is also performed. The results show that smart city research in general stopped growing around 2019. However, some research directions are still growing, e.g., smart city research related to machine learning and AI. India is the only geographic region where smart city research still is growing. We also see that the number of citations of a smart city document from North America is on average a factor 3.74 larger than the number of citations to a document from India. Lars Lundberg |
SMARTCOMP | 1 |
| 2021 | Active Learning to Support In-situ Process Monitoring in Additive ManufacturingabstractThis paper aims to address data labelling issues in process data to support in-situ process monitoring of additive manufactured components. For this, we adopted an active learning (AL) approach to minimise the manual effort for data labelling for classification models. In this study, we present an approach that utilises pre-trained models to extract deep features from images, and clustering and query by committee sampling to select the representative samples to build defect classification models. We conduct quantitative experiments to evaluate the proposed method’s performance and compare it with other selected state-of-the-art AL approaches using a dataset of additive manufacturing (AM) and a publicly available dataset. The experimental results show that the proposed approach outperforms AL with committee based sampling, and AL with clustering and random sampling. The results of the statistical significance test show that there is a significant difference between the studied AL approaches. Hence, the proposed AL approach can be considered an alternative method to reduce labelling costs when building defects classification models, whose generalizability is most likely plausible. Siva Krishna Dasari, Abbas Cheddad, Lars Lundberg, Jonatan Palmquist |
ICMLA | 3 |
| 2021 | Understanding the perceived relevance of capability measures: A survey of Agile Software Development practitioners
Sai Datta Vishnubhotla, Emilia Mendes, Lars Lundberg |
J. Syst. Softw. | 3 |
| 2020 | Performance evaluation of containers and virtual machines when running Cassandra workload concurrentlyabstractSummary NoSQL distributed databases are often used as Big Data platforms. To provide efficient resource sharing and cost effectiveness, such distributed databases typically run concurrently on a virtualized infrastructure that could be implemented using hypervisor‐based virtualization or container‐based virtualization. Hypervisor‐based virtualization is a mature technology but imposes overhead on CPU, networking, and disk. Recently, by sharing the operating system resources and simplifying the deployment of applications, container‐based virtualization is getting more popular. This article presents a performance comparison between multiple instances of VMware VMs and Docker containers running concurrently. Our workload models a real‐world Big Data Apache Cassandra application from Ericsson. As a baseline, we evaluated the performance of Cassandra when running on the nonvirtualized physical infrastructure. Our study shows that Docker has lower overhead compared with VMware; the performance on the container‐based infrastructure was as good as on the nonvirtualized. Our performance evaluations also show that running multiple instances of a Cassandra database concurrently affected the performance of read and write operations differently; for both VMware and Docker, the maximum number of read operations was reduced when we ran several instances concurrently, whereas the maximum number of write operations increased when we ran instances concurrently. Sogand Shirinbab, Lars Lundberg, Emiliano Casalicchio |
Concurr. Comput. Pract. Exp. | 2 |
| 2020 | Investigating the relationship between personalities and agile team climate of software professionals in a telecom company
Sai Datta Vishnubhotla, Emilia Mendes, Lars Lundberg |
Inf. Softw. Technol. | 3 |
| 2019 | A Utilization-Based Schedulability Test of Real-Time Systems Running on a Multiprocessor Virtual MachineabstractWe consider a real-time application that executes in a VM with multiple virtual cores. Tasks are scheduled globally using fixed-priority scheduling. In order to avoid Dhall’s effect, we classify tasks into two priority classes: heavy and light. Heavy tasks have higher priority than light tasks. For light tasks we use rate monotonic priority assignment. We propose a utilization-based schedulability test. If the task set is schedulable, we provide an assignment of priorities to tasks. The input to the test is the task set, the number of cores in the VM, the period, deadline and blocking time for the VM. We evaluate how jitter, when scheduling VMs on the hypervisor level, affects the schedulability of the real-time tasks running in the VM. The schedulability of the real-time tasks in the VM decreases when the hypervisor jitter increases, but on the other hand the schedulability on the hypervisor level increases if we allow more jitter, i.e. there is a trade-off. Our results make it possible to evaluate this trade-off and take informed decisions when selecting scheduling parameters on the hypervisor level. Simulations show that the priority assignment used by our algorithm schedules more task sets than using rate monotonic priority assignment. Christine Niyizamwiyitira, Lars Lundberg |
Comput. J. | 2 |
| 2018 | Realising Individual and Team Capability in Agile Software Development: A Qualitative InvestigationabstractSeveral studies have shown that both individual and team capability can affect software development performance and project success; a deeper understating of such phenomena is crucial within the context of Agile Software Development (ASD), given that its workforce is a key source of agility. This paper contributes towards such understanding by means of a case study that uses data from 14 interviews carried out at a large telecommunications company, within the context of a mobile money transfer system developed in Sweden and India, to identify individual and team capability measures used to form productive teams. Our results identified 10 individual and five team capability measures, of which, respectively, five and four have not been previously characterised by a systematic literature review (SLR) on this same topic. Such review aggregated evidence for a total of 133 individual and 28 team capability measures. Further work entails extending our findings via interviewing other software/software-intensive industries practicing ASD. Emilia Mendes, Davi Viana, Sai Datta Vishnubhotla, Lars Lundberg |
SEAA | 4 |
| 2017 | Classifying environmental sounds using image recognition networksabstractAutomatic classification of environmental sounds, such as dog barking and glass breaking, is becoming increasingly interesting, especially for mobile devices. Most mobile devices contain both cameras and microphones, and companies that develop mobile devices would like to provide functionality for classifying both videos/images and sounds. In order to reduce the development costs one would like to use the same technology for both of these classification tasks. One way of achieving this is to represent environmental sounds as images, and use an image classification neural network when classifying images as well as sounds. In this paper we consider the classification accuracy for different image representations (Spectrogram, MFCC, and CRP) of environmental sounds. We evaluate the accuracy for environmental sounds in three publicly available datasets, using two well-known convolutional deep neural networks for image recognition (AlexNet and GoogLeNet). Our experiments show that we obtain good classification accuracy for the three datasets. Venkatesh Boddapati, Andrej Petef, Jim Rasmusson, Lars Lundberg |
KES | 4 |
| 2016 | Performance Implications of Resource Over-Allocation During the Live MigrationabstractAs the number of cloud users are increasing, it becomes essential for cloud service providers to allocate the right amount of resources to virtual machines, especially during live migration. In order to increase the resource utilization and reduce waste, the providers have started to think about the role of over-allocating the resources. However, the benefits of over-allocations are not without inherent risks. In this paper, we conducted an experiment using a large telecommunication application that runs inside virtual machines, here we have varied the number of vCPU resources allocated to these virtual machines in order to find the best choice which at the same time reduces the risk of underallocating resources after the migration and increases the performance during the live migration. During our measurements we have used VMware's vMotion to migrate virtual machines while they are running. The results of this study will help virtualized environment service providers to decide how much resources should be allocated for better performance during live migration as well as how much resource would be required for a given load. Lars Lundberg |
CloudCom | 1 |
| 2015 | Performance implications of over-allocation of virtual CPUsabstractA major advantage of cloud environments is that one can balance the load by migrating virtual machines (VMs) from one server to another. High performance and high resource utilization are also important in a cloud. We have observed that over-allocation of virtual CPUs to VMs (i.e. allocating more vCPUs to VMs than there CPU cores on the server) when there are many VMs running on one host can reduce performance. However, if we do not use any over-allocation of virtual CPUs we may suffer from poor resource utilization after VM migration. Thus, it is important to identify and quantify performance bottlenecks when running in virtualized environment. The results of this study will help virtualized environment service providers to decide how many virtual CPUs should be allocated to each VM. Sogand Shirinbab, Lars Lundberg |
ISNCC | 2 |
| 2015 | Period assignment in real-time scheduling of multiple virtual machinesabstractThere are two levels of scheduling in real-time applications executing in a virtualized environment: traditional real-time scheduling of the tasks in the real-time application inside a Virtual Machine (VM), and scheduling of different VMs on the hypervisor level. In order to save more resources, we propose to schedule VMs that contains hard real-time application in an optimistic manner by considering VMs as a whole instead of being isolated. Based on the properties of the real-time applications inside the VMs, we obtain (worst-case) execution times and periods for the VMs containing the real-time applications. A VM's period will be chosen according to the requirement of the application that runs inside that VM. Through simulation, we investigate the impact of the length of different VMs' periods whether the VM context switching overhead is present or not. The tradeoff between resources consumption and period's length is presented. The results show that longer periods are better at handling higher overhead even with higher number of VMs that share the same hardware. Christine Niyizamwiyitira, Lars Lundberg |
MEDES | 2 |
| 2015 | Algorithms for automated live migration of virtual machines
Mattias Forsman, Andreas Glad, Lars Lundberg, Dragos Ilie |
J. Syst. Softw. | 3 |
| 2013 | Topic 8: Distributed Systems and Algorithms - (Introduction)
Achour Mostéfaoui, Andreas Polze, Carlos Baquero, Paul D. Ezhilchelvan, Lars Lundberg |
Euro-Par | 5 |
| 2013 | Performance evaluation and prediction of open source speech engine on multicore processorsabstractThis paper quantifies the performance of the core part of voice driven web using free and open source speech engine; the speech engine which is very high computation demanding, it consists of Automatic Speech Recognition (ASR) and Text To Speech (TTS). Two open source programs, Sphinx-4 and FreeTTS-1.2.2 are used for ASR and TTS respectively. These two programs are executed on 2 different hardware multicore processors with 4 hyperthreaded cores, and 8 cores respectively. The response time with respect to the load variance and the number of cores is measured and predicted using a linear regression model. Christine Niyizamwiyitira, Lars Lundberg |
MEDES | 2 |
| 2013 | Improving software security with static automated code analysis in an industry settingabstractSUMMARY Software security can be improved by identifying and correcting vulnerabilities. In order to reduce the cost of rework, vulnerabilities should be detected as early and efficiently as possible. Static automated code analysis is an approach for early detection. So far, only few empirical studies have been conducted in an industrial context to evaluate static automated code analysis. A case study was conducted to evaluate static code analysis in industry focusing on defect detection capability, deployment, and usage of static automated code analysis with a focus on software security. We identified that the tool was capable of detecting memory related vulnerabilities, but few vulnerabilities of other types. The deployment of the tool played an important role in its success as an early vulnerability detector, but also the developers perception of the tools merit. Classifying the warnings from the tool was harder for the developers than to correct them. The correction of false positives in some cases created new vulnerabilities in previously safe code. With regard to defect detection ability, we conclude that static code analysis is able to identify vulnerabilities in different categories. In terms of deployment, we conclude that the tool should be integrated with bug reporting systems, and developers need to share the responsibility for classifying and reporting warnings. With regard to tool usage by developers, we propose to use multiple persons (at least two) in classifying a warning. The same goes for making the decision of how to act based on the warning. Copyright © 2012 John Wiley & Sons, Ltd. Dejan Baca, Bengt Carlsson, Kai Petersen, Lars Lundberg |
Softw. Pract. Exp. | 4 |
| 2012 | Eliminating the effect of freezing frames on user perceptive by using a time interleaving technique
Hussein Muzahim Aziz, Markus Fiedler, Håkan Grahn, Lars Lundberg |
Multim. Syst. | 4 |
| 2011 | Slack-based multiprocessor scheduling of aperiodic real-time tasks
Lars Lundberg |
Real Time Syst. | 1 |
| 2009 | Static Code Analysis to Detect Software Security Vulnerabilities - Does Experience Matter?abstractCode reviews with static analysis tools are today recommended by several security development processes. Developers are expected to use the tools' output to detect the security threats they themselves have introduced in the source code. This approach assumes that all developers can correctly identify a warning from a static analysis tool (SAT) as a security threat that needs to be corrected. We have conducted an industry experiment with a state of the art static analysis tool and real vulnerabilities. We have found that average developers do not correctly identify the security warnings and only developers with specific experiences are better than chance in detecting the security vulnerabilities. Specific SAT experience more than doubled the number of correct answers and a combination of security experience and SAT experience almost tripled the number of correct security answers. Dejan Baca, Kai Petersen, Bengt Carlsson, Lars Lundberg |
ARES | 4 |
| 2009 | The maximum gain of increasing the number of preemptions in multiprocessor scheduling
Kamilla Klonowska, Lars Lundberg, Håkan Lennerstad |
Acta Informatica | 2 |
| 2008 | Slack-based global multiprocessor scheduling of aperiodic tasks in parallel embedded real-time systemsabstractWe provide a constant time schedulability test and priority assignment algorithm for an on-line multiprocessor server handling aperiodic tasks. Dhall's effect is avoided by dividing tasks in two priority classes based on their utilization: heavy and light. The improvement in this paper is due to assigning priority of light tasks based on slack - not on deadlines. We prove that if the load on the multiprocessor stays below (3 - radic5)/2 ap 38.197%, the server can accept an incoming aperiodic task and guarantee that the deadlines of all accepted tasks will be met. This is better than the current state-of- the-art algorithm where the priorities of light tasks are based on deadlines (the corresponding bound is in that case 35.425%). Lars Lundberg, Håkan Lennerstad |
AICCSA | 1 |
| 2008 | A model for software rework reduction through a combination of anomaly metrics
Lars-Ola Damm, Lars Lundberg, Claes Wohlin |
J. Syst. Softw. | 2 |
| 2007 | Quality Impact of Introducing Component-Level Test Automation and Test-Driven Development
Lars-Ola Damm, Lars Lundberg |
EuroSPI | 2 |
| 2007 | Company-Wide Implementation of Metrics for Early Software Fault DetectionabstractTo shorten time-to-market and improve customer satisfaction, software development companies commonly want to use metrics for assessing and improving the performance of their development projects. This paper describes a measurement concept for assessing how good an organization is at finding faults when most cost-effective, i. e. in most cases early. The paper provides results and lessons learned from applying the measurement concept widely at a large software development company. A major finding was that on average, 64 percent of all faults found would have been more cost effective to find during unit tests. An in-depth study of a few projects at a development unit also demonstrated how to use the measurement concept for identifying which parts in the fault detection process that needs to be improved to become more efficient (e.g. reduce the amount of time spent on rework). Lars-Ola Damm, Lars Lundberg |
ICSE | 2 |
| 2007 | Middleware Support for Performance Improvement of MABS Applications in the Grid Environment
Dawit Mengistu, Paul Davidsson, Lars Lundberg |
MABS | 3 |
| 2007 | Cibyl: an environment for language diversity on mobile devicesabstractWith an estimated installation base of around 1 billion units, the Java J2ME platform is one of the largest development targets available. For mobile devices, J2ME is often the only available environment. For the very large body of software written in C other languages, this means difficult and costly porting to another language to support J2ME devices. This paper presents the Cibyl programming environment which allows existing code written in C and other languages supported by GCC to be recompiled into Java bytecode and run with close to native Java performance on J2ME devices. Cibyl translates compiled MIPS binaries into Java bytecode. In contrast to other approaches, Cibyl supports the full C language, is based on unmodified standard tools, and does not rely on source code conversion. To achieve good performance, Cibyl employs extensions to the MIPS architecture to support low-overhead calls to native Java functionality and use knowledge of the MIPS ABI to avoid computing unused values and transfer unnecessary registers. An evaluation on multiple virtual machines shows that Cibyl achieves performance similar to native Java, with results ranging from a slowdown of around 2 to a speedup of over 9 depending on the JVM and the benchmark. Simon Kågström, Håkan Grahn, Lars Lundberg |
VEE | 3 |
| 2007 | Improving Fault Detection in Modified Code - A Study from the Telecommunication Industry
Piotr Tomaszewski, Lars Lundberg, Håkan Grahn |
J. Comput. Sci. Technol. | 2 |
| 2007 | Statistical models vs. expert estimation for fault prediction in modified code - an industrial case study
Piotr Tomaszewski, Jim Håkansson, Håkan Grahn, Lars Lundberg |
J. Syst. Softw. | 4 |
| 2007 | Guaranteeing Response Times for Aperiodic Tasks in Global Multiprocessor Scheduling
Lars Lundberg, Håkan Lennerstad |
Real Time Syst. | 1 |
| 2006 | A Method for an Accurate Early Prediction of Faults in Modified ClassesabstractIn this paper we suggest and evaluate a method for predicting fault densities in modified classes early in the development process, i.e., before the modifications are implemented. We start by establishing methods that according to literature are considered the best for predicting fault densities of modified classes. We find that these methods can not be used until the system is implemented. We suggest our own methods, which are based on the same concept as the methods suggested in the literature, with the difference that our methods are applicable before the coding has started. We evaluate our methods using three large telecommunication systems produced by Ericsson. We find that our methods provide predictions that are of similar quality to the predictions based on metrics available after the code is implemented. Our predictions are, however, available much earlier in the development process. Therefore, they enable better planning of efficient fault prevention and fault detection activities Piotr Tomaszewski, Håkan Grahn, Lars Lundberg |
ICSM | 3 |
| 2006 | The increase of productivity over time - an industrial case study
Piotr Tomaszewski, Lars Lundberg |
Inf. Softw. Technol. | 2 |
| 2006 | Results from introducing component-level test automation and Test-Driven Development
Lars-Ola Damm, Lars Lundberg |
J. Syst. Softw. | 2 |
| 2006 | The application kernel approach - a novel approach for adding SMP support to uniprocessor operating systemsabstractAbstract The current trend of using multiprocessor computers for server applications requires operating system adaptations to take advantage of more powerful hardware. However, modifying large bodies of software is very costly and time consuming, and the cost of porting an operating system to a multiprocessor might not be motivated by the potential performance benefits. In this paper we present a novel method, theapplication kernel approach, for adaption of an existing uniprocessor kernel to multiprocessor hardware. Our approach considers the existing uniprocessor kernel as a ‘black box’, to which no or very small changes are made. Instead, the original kernel runs operating system services unmodified on one processor whereas the other processors execute applications on top of a small custom kernel. We have implemented the application kernel for the Linux operating system, which illustrates that the approach can be realized with fairly small resources. We also present an evaluation of the performance and complexity of our approach, where we show that it is possible to achieve good performance while at the same time keeping the implementation complexity low. Copyright © 2006 John Wiley & Sons, Ltd. Simon Kågström, Håkan Grahn, Lars Lundberg |
Softw. Pract. Exp. | 3 |
| 2005 | Increasing the Efficiency of Fault Detection in Modified CodeabstractMany software systems are developed in a number of consecutive releases. Each new release does not only add new code but also modifies already existing one. In this study we have shown that the modified code can be an important source of faults. The faults are widely recognized as one of the major cost drivers in software projects. Therefore we look for methods of improving fault detection in the modified code. We suggest and evaluate a number of prediction models for increasing the efficiency of fault detection. We evaluate them against the theoretical best model, a simple model based on size, as well as against analyzing the code in a random order (not using any model). We find that using our models provides a significant improvement both over not using any model at all and using the simple model based on the class size. The gain offered by the models corresponds to 30% to 60% of the theoretical maximum. Piotr Tomaszewski, Lars Lundberg, Håkan Grahn |
APSEC | 2 |
| 2005 | Evaluating real-time credit-control server architectures implemented on a standard platform
Piotr Tomaszewski, Lars Lundberg, Jim Håkansson, Daniel Häggander |
IADIS AC | 2 |
| 2005 | A Cost-Efficient Server Architecture for Real-Time Credit-ControlabstractThe importance of mobile and electronic commerce results in much attention given to credit-control systems. There are high non-functional requirements on such systems, e.g. high availability and reliability. These requirements can be met by changing the architecture of the credit-control system. In this paper the authors suggested a new architecture and a number of alternative implementations of credit-control server. By quantifying the availability, reliability, performance and cost the designers enabled to make better trade-off decisions. The new architecture was compared with the current, "state-of-the-art" solution. Finally, suggestions for the system developers concerning the choice of an appropriate architecture implementation variant were presented. Piotr Tomaszewski, Lars Lundberg, Jim Håkansson, Daniel Häggander |
ICECCS | 2 |
| 2005 | Dynamic Software Updates in .Net - Selecting a Session State Transfer Model
Mattias Borgkvist, Markus Eliasson, Daniel Häggander, Lars Lundberg |
iiWAS | 4 |
| 2005 | Experiences from Implementing Multiprocessor Support for an Industrial Operating System KernelabstractThe ongoing transition from uniprocessor to multiprocessor computers requires operating system support. There is a large body of specialized operating systems which require porting in order to work on multiprocessors. In this paper we describe the design and implementation of a multiprocessor port of a cluster operating system kernel. The multiprocessor support is implemented with a giant locking scheme, which allowed us to get an initial working version with only minor changes to the original code. We also discuss performance and implementation experiences. Simon Kågström, Håkan Grahn, Lars Lundberg |
RTCSA | 3 |
| 2005 | Optimal recovery schemes in fault tolerant distributed computing
Kamilla Klonowska, Håkan Lennerstad, Lars Lundberg, Charlie Svahnberg |
Acta Informatica | 3 |
| 2005 | Software development productivity on a new platform: an industrial case study
Piotr Tomaszewski, Lars Lundberg |
Inf. Softw. Technol. | 2 |
| 2005 | Special Issue: Trade-off Analysis of Software Quality Attributes
Claes Wohlin, Lars Lundberg, Michael Mattsson |
Softw. Qual. J. | 2 |
| 2004 | Determining the Improvement Potential of a Software Development Organization Through Fault Analysis: A Method and a Case Study
Lars-Ola Damm, Lars Lundberg, Claes Wohlin |
EuroSPI | 2 |
| 2004 | A Novel Method for Adding Multiprocessor Support to a Large and Complex Uniprocessor KernelabstractSummary form only given. The current trend of using multiprocessor computers for server applications requires operating system adoptions for high performance. However, modifying large bodies of software is very costly and time-consuming, and the cost of porting an operating system to a multiprocessor might not be motivated by the potential performance benefits. We present a novel method, the application kernel approach, for adaption of an existing uniprocessor kernel to SMP hardware. Our approach considers the existing kernel as a "black box", to which no or small changes are made. Instead, the original kernel runs OS-services unmodified on one processor whereas the other processors execute applications on top of a small custom kernel. A prototype implementation illustrates that the approach can be realized with fairly small resources. We also present an initial performance evaluation where we show that the performance is good for user-bound applications. Simon Kågström, Lars Lundberg, Håkan Grahn |
IPDPS | 2 |
| 2004 | Using Modulo Rulers for Optimal Recovery Schemes in Distributed ComputingabstractClusters and distributed systems offer fault tolerance and high performance through load sharing. When all computers are up and running, we would like the load to be evenly distributed among the computers. When one or more computers break down the load on these computers must be redistributed to other computers in the cluster. The redistribution is determined by the recovery scheme. The recovery scheme should keep the load as evenly distributed as possible even when the most unfavorable combinations of computers break down, i.e. we want to optimize the worst-case behavior. We define recovery schemes, which are optimal for a larger number of computers down than in previous results. We also show that the problem of finding optimal recovery schemes for a cluster with n computers corresponds to the mathematical problem of finding the longest sequence of positive integers for which the sum of the sequence and the sums of all subsequences modulo n are unique. Kamilla Klonowska, Lars Lundberg, Håkan Lennerstad, Charlie Svahnberg |
PRDC | 2 |
| 2004 | Comparing the Optimal Performance of Parallel ArchitecturesabstractConsider a parallel program with n processes and a synchronization granularity z. Consider also two parallel architectures: an SMP with q processors and run-time reallocation of processes to processors, and a distributed system (or cluster) with k processors and no run-time reallocation. There is an inter-processor communication delay of t time units for the system with no run-time reallocation. In this paper, we define a function H(n,k,q,t,z) such that the minimum completion time for all programs with n processes and a granularity z is at most H(n,k,q,t,z) times longer using the system with no reallocation and k processors compared to using the system with q processors and run-time reallocation. We assume optimal allocation and scheduling of processes to processors. The function H(n,k,q,t,z) is optimal in the sense that there is at least one program, with n processes and a granularity z, such that the ratio is exactly H(n,k,q,t,z). We also validate our results using measurements on distributed and multiprocessor Sun/Solaris environments. The function H(n,k,q,t,z) provides important insights regarding the performance implications of the fundamental design decision of whether to allow run-time reallocation of processes or not. These insights can be used when doing the proper cost/benefit trade-offs when designing parallel execution platforms. Kamilla Klonowska, Lars Lundberg, Håkan Lennerstad, Magnus Broberg |
Comput. J. | 2 |
| 2003 | A Quality-Driven Decision-Support Method for Identifying Software Architecture CandidatesabstractTo sustain the qualities of a software system during evolution, and to adapt the quality attributes as the requirements evolve, it is necessary to have a clear software architecture that is understood by all developers and to which all changes to the system adheres. This software architecture can be created beforehand, but must also be updated as the domain of the software, and hence the requirements on the software system evolve. Creating a software architecture for a system or part of a system so that the architecture fulfils the desired quality requirements is often hard. In this paper we propose a decision-support method to aid in the understanding of different architecture candidates for a software system. We propose a method that is adaptable with respect to both the set of potential architecture candidates and quality attributes relevant for the system's domain to help in this task. The method creates a support framework, using a multi-criteria decision method, supporting comparison of different software architecture candidates for a specific software quality attribute and vice versa, and then uses this support framework to reach a consensus on the benefits and liabilities of the different software architecture candidates and to increase the confidence in the resulting architecture decision. Mikael Svahnberg, Claes Wohlin, Lars Lundberg, Michael Mattsson |
Int. J. Softw. Eng. Knowl. Eng. | 3 |
| 2003 | Software architecture - Engineering quality attributes
Jan Bosch, Lars Lundberg |
J. Syst. Softw. | 2 |
| 2002 | Using Components to Increase Maintainability in a Large Telecommunication SystemabstractWe consider the consequences of introducing a component-based architecture in a large real-time telecommunication system. The goal is to decrease the cost for software maintenance while preserving existing performance levels. We have developed a component-based prototype and compared this new architecture with the existing system architecture. Two aspects have been evaluated, viz. maintainability and performance. The evaluation indicated that the maintainability cost was reduced with approximately 20%. There was a marginal performance degradation when using one CPU in the component-based architecture. The component-based architecture was, however more efficient when using a multiprocessor. Henrik Algestam, Marcus Offesson, Lars Lundberg |
APSEC | 3 |
| 2002 | Performance of SOAP in Web Service Environment Compared to CORBAabstractWeb Services is a new concept that promises flexibility and interconnection between different systems. The communication in Web Services uses SOAP $Simple Object Access Protocol, which is based on XML. We have together with an industrial partner made experiments with SOAP in a Web Service environment to find out the response time using SOAP compared to CORBA. It turns out that a direct and naive use of SOAP would result in a response time degradation of a factor 400 compared to CORBA. We identified the major reasons for the poor performance of SOAP and evaluated some performance improvement techniques. After applying these the techniques, the performance of CORBA is 7 times better compared to SOAP. Robert Elfwing, Ulf Paulsson, Lars Lundberg |
APSEC | 3 |
| 2002 | A method for understanding quality attributes in software architecture structuresabstractTo sustain the qualities of a software system during evolution, and to adapt the quality attributes as the requirements evolve, it is necessary to have a clear software architecture that is understood by all developers and to which all changes to the system adheres. This software architecture can be created beforehand, but must also be updated as the domain of the software, and hence the requirements on the software system evolves. Creating an architectural structure for a system or part of a system so that the architecture fulfils the desired quality requirements is often hard. In this paper we propose a decision support method to aid in the understanding of different architecture structure candidates for a software system. We propose a method that is adaptable with respect to both the set of potential architecture structures, and quality attributes relevant for the system's domain to help in this task. The method creates a support framework, using a multi-criteria decision method, supporting comparison of different software architecture structures for a specific software quality attribute and vice versa. Moreover, given a prioritization of quality attributes for the software system, or part thereof, the most suitable software architecture structure can be indicated using the created framework. Mikael Svahnberg, Claes Wohlin, Lars Lundberg, Michael Mattsson |
SEKE | 3 |
| 2002 | Utilization Based Schedulability Bounds for Age Constraint Process Sets in Real-Time Systems
Lars Lundberg |
Real Time Syst. | 1 |
| 2001 | A Tool for Binding Threads to Processors
Magnus Broberg, Lars Lundberg, Håkan Grahn |
Euro-Par | 2 |
| 2001 | Quality Attribute Conflicts - Experiences from a Large Telecommunication ApplicationabstractModern telecommunication applications must provide high availability and performance. They must also be maintainable in order to reduce the maintenance cost and time-to-market for new versions. Previous studies have shown that the ambition to build maintainable systems may result in very poor performance. The authors evaluate an application called SDP pre-paid and show that the ambition to build systems with high performance and availability can lead to a complex software design with poor maintainability. We show that more than 85% of the SDP code is due to performance and availability optimizations. By implementing a SDP prototype with an alternative architecture, we show that the code size can be reduced with an order of magnitude by removing the performance and availability optimizations from the source code and instead using modern fault tolerant hardware and third party software. The performance and availability of the prototype is at least as good as the old SDP. The hardware and third party software cost is only 20-30% higher for the prototype. We also define three guidelines that help us to focus the additional hardware investments to the parts where it is really needed. Daniel Häggander, Lars Lundberg, Jonas Matton |
ICECCS | 2 |
| 2001 | A Method for Automatic Optimization of Dynamic Memory Management in C++abstractIn C++, the memory allocator is often a bottleneck that severely limits performance and scalability on multiprocessor systems. The traditional solution is to optimize the C library memory allocation routines. An alternative is to attack the problem on the source code level, i.e. modify the applications source code. Such an approach makes it possible to achieve more efficient and customized memory management. To implement and maintain such source code optimizations is however both laborious and costly, since it is a manual procedure. Applications developed using object-oriented techniques, such as frameworks and design patterns, tend to use a great deal of dynamic memory to offer dynamic features. These features are mainly used for maintainability reasons, and temporal locality often characterizes the run-time behavior of the dynamic memory operations. We have implemented a pre-processor based method, named Amplify, which is a completely automated procedure optimizes (object-oriented) C++ applications to exploit the temporal locality in dynamic memory usage. Test results show that Amplify can obtain significant speed-up for synthetic applications and that it was useful for a commercial product. Daniel Häggander, Per Lidén, Lars Lundberg |
ICPP | 3 |
| 2001 | Performance Optimization Using Extended Critical Path Analysis in Multithreaded Programs on Multiprocessors
Magnus Broberg, Lars Lundberg, Håkan Grahn |
J. Parallel Distributed Comput. | 2 |
| 2001 | Optimal Recovery Schemes for High-Availability Cluster and Distributed Computing
Lars Lundberg, Charlie Svahnberg |
J. Parallel Distributed Comput. | 1 |
| 2001 | A simple process for migrating server applications to SMP: s
Daniel Häggander, Lars Lundberg |
J. Syst. Softw. | 2 |
| 2000 | A distributed component architecture for a large telecommunication applicationabstractThe telecommunication domain contains many performance-demanding applications. These applications must also be flexible in order to meet new and changing requirements in a fast and cost-effective way. We have studied one such application-the Ericsson Billing Gateway. In order to reduce the cost for introducing new functionality, we broke up the application into distributable components. At the same time, we tried to keep the same or better performance characteristics. A prototype was implemented and compared to the existing application. The evaluations showed that the new architecture was not only easier to change; it also increased the throughput and scalability. Henrik Hermansson, Mattias Johansson, Lars Lundberg |
APSEC | 3 |
| 2000 | Optimal Combinatorial Functions Comparing Multiprocess Allocation Performance in Multiprocessor SystemsabstractFor the execution of an arbitrary parallel program P, consisting of a set of processes with any executable interprocess dependency structure, we consider two alternative multiprocessors. The first multiprocessor has q processors and allocates parallel programs dynamically; i.e., processes may be reallocated from one processor to another. The second employs cluster allocation with k clusters and u processors in each cluster: here processes may be reallocatedwithin a cluster only. Let T d (P,q) and T c (P,k,u) be execution times for the parallel program P with optimal allocations. We derive a formula for the program independent performance function $$ G(k,u,q)=\sup_{\mbox{{\footnotesize all parallel programs P}}} \:\frac{T_c(P,k,u)}{T_d(P,q)}. $$ Hence, with optimal allocations, the execution of P can never take more than a factor G(k,u,q) longer time with the second multiprocessor than with the first, and there exist programs showing that the bound is sharp. The supremum is taken over all parallel programs consisting of any number of processes. Overhead for synchronization and reallocation is neglected only. We further present a tight bound which exploits a priori knowledge of the class of parallel programs intended for the multiprocessors, thus resulting in a sharper bound. The function g(n,k,u,q) is the above maximum taken over all parallel programs consisting of n processes. The functions G and g can be used in various ways to obtain tight performance bounds, aiding in multiprocessor architecture decisions. Håkan Lennerstad, Lars Lundberg |
SIAM J. Comput. | 2 |
| 2000 | Optimal Worst Case Formulas Comparing Cache Memory AssociativityabstractIn this paper we derive a worst case formula comparing the number of cache hits for two different cache memories. From this various other bounds for cache memory performance may be derived. Consider an arbitrary program P which is to be executed on a computer with two alternative cache memories. The first cache is set-associative or direct-mapped. It has k sets and u blocks in each set; this is called a (k,u)-cache. The other is a fully associative cache with q blocks---a (1,q)-cache. We derive an explicit formula for the ratio of the number of cache hits h(P,k,u) for a (k,u)-cache compared to a (1,q)-cache for a worst case program P. We assume that the mappings of the program variables to the cache blocks are optimal. The formula quantifies the ratio $$ \inf_P \frac{h(P,k,u)}{h(P,1,q)}, $$ where the infimum is taken over all programs P with n variables. The formula is a function of the parameters n,k,u, and q only. Note that the quantity $h(P,k,u)$ is NP-hard. We assume the commonly used LRU (least recently used) replacement policy, that each variable can be stored in one memory block, and that each variable is free to be mapped to any set. Since the bound is decreasing in the parameter n, it is an optimal bound for all programs with at most n variables. The formula for cache hits allows us to derive optimal bounds comparing the access times for cache memories. The formula also gives bounds (these are not optimal, however) for any other replacement policy, for direct-mapped versus set-associative caches, and for programs with variables larger than the cache memory blocks. Håkan Lennerstad, Lars Lundberg |
SIAM J. Comput. | 2 |
| 1999 | Maintainability Myth Causes Performance Problems in SMP ApplicationabstractA challenge in software design is to find solutions that balance and optimize the quality attributes of the application. We present a case study of an application and the results of a design decision made on weak assumptions. The application has been assessed with respect to performance and maintainability. We present and evaluate an alternative design of a critical system component. Based on interviews with the involved designers we establish the design rationale. By analyzing the evaluation data of the two alternatives and the design rationale, we conclude that the design decision was based on a general assumption that an adaptable component design should increase the maintainability of the application. This case study is clearly a counter example to that assumption, and we therefore reject it as a myth. This study shows, however, that the myth is indeed responsible for the major performance problem in the application. Daniel Häggander, PerOlof Bengtsson, Jan Bosch, Lars Lundberg |
APSEC | 4 |
| 1999 | Optimal Bounds on the Gain of Permitting Dynamic Allocation of Communication Channels in Distributed Computing
Lars Lundberg, Håkan Lennerstad |
Acta Informatica | 1 |
| 1999 | Predicting and Bounding the Speedup of Multithreaded Solaris Programs
Lars Lundberg |
J. Parallel Distributed Comput. | 1 |
| 1998 | Fixed Priority Scheduling of Age Constraint Processes
Lars Lundberg |
Euro-Par | 1 |
| 1998 | Optimizing Dynamic Memory Management in a Multithreaded Application Executing on a MultiprocessorabstractThe Billing Gateway (BGw) is a large multithreaded object oriented C++ application running on Sun Solaris. Due to frequent allocation and deallocation of dynamic memory, the initial implementation of this system suffered from poor performance when executed on a multiprocessor. We compare two approaches for improving the performance of BGw. First we replace the standard Solaris heap with a parallel heap. In the second approach we optimize the application code by removing a number of heap allocations/deallocations. In order to do this, we introduce memory pools for commonly used object types and replace some heap variables with stack variables. The parallel heap approach resulted in a dramatic speedup improvement. The optimization of the application code did also result in a dramatic speedup improvement. For this approach the performance using a single processor computer was also increased by a factor of eight. The optimizations took approximately one week to implement. Daniel Häggander, Lars Lundberg |
ICPP | 2 |
| 1998 | Bounding on the Gain of Optimizing Data Layout in Vector ProcessorsabstractIn vector processors, the number of memory banks (m) is generally larger than or equal to the memory access time divided with the processor cycle time.This ratio is denoted t, i.e. rn 2 t.Data is moved between the vector registers and the memory using long sequences of memory accesses for which the addresses are separated by a fixed distance called the stride.For some strides, the performance is seriously degraded due to memory bank conflicts.Many scientific applications are based on large matrices, and for such programs it is well known that the most unfavorable strides can be avoided by adding a number of dummy columns or by using hardware skewing.We present an optimal upper bound on the number of access conflicts when optimizing the data layout in this way.Programs are categorized according to their strides, and the worst-case behavior for each such category is given in a theorem.The result shows that for worst-case scenarios the number of conflicts increases rapidly when t grows, e.g. if we want to keep the worstcase behavior relatively constant when t grows from 6 to 10, we need to at least double the number of memory banks.The result is valid for skewed as well as for non-skewed memory systems. Lars Lundberg, Daniel Häggander |
International Conference on Supercomputing | 1 |
| 1998 | Using Recorded Values for Bounding the Minimum Completion Time in MultiprocessorsabstractThe way the processes in a parallel program are scheduled on the processors of a multiprocessor system affects the performance significantly. Finding a schedule of processes to processors which results in minimum completion time is NP-hard. Therefore, one has to resort to heuristic schedules. However, it is often difficult to determine if a specific schedule is close to the optimal case or if it is worthwhile to look for other schedules. Based on information from previous executions of the parallel program, we present a formula for an upper bound on the minimum completion time of the program. The bound is a function of a set of parameters. Some of these parameters are obtained from the previous executions of the program and the others describe the target multiprocessor architecture for which we want to bound the minimum completion time. The bound is optimal when it is based on information from one previous execution. Using these results, we are able to decide if a certain schedule is close to optimal or if it is worthwhile to look for other schedules. This is demonstrated by evaluating the completion time of a specific schedule of a particular program. The proofs used for obtaining the bound are based on program transformations and combinatorial mathematics. Lars Lundberg, Håkan Lennerstad |
IEEE Trans. Parallel Distributed Syst. | 1 |
| 1997 | Bounding the Minimal Completion Time of Static Mappings of Multithreaded Solaris Programs
Lars Lundberg |
Euro-Par | 1 |
| 1997 | Evaluating the performance implications of binding threads to processorsabstractThe default scheduling algorithm in Solaris and other operating systems may result in frequent relocation of threads at run-time. Excessive thread relocation cause poor memory performance. This can be avoided by binding threads to processors. However, binding threads to processors may result in an unbalanced load. By considering a previously obtained theoretical result and by evaluating a set of multithreaded Solaris programs using a multiprocessor with eight processors, we are able to bound the maximum performance loss due to binding threads. The theoretical result is also recapitulated. By evaluating another set of multithreaded programs, we show that the gain of binding threads to processors may be substantial, particularly for programs with fine-grained parallelism. Lars Lundberg |
HiPC | 1 |
| 1997 | Predicting the speedup of multithreaded Solaris programsabstractPresents a method and a set of tools for predicting the speedup of multithreaded Solaris programs. The predictions are based on recordings from a single-processor execution of the multithreaded program. The routines in the thread library are overloaded with an instrumented thread library developed by us. We do not need to have access to the source code of the multithreaded program and no recompilation is needed. Using three multithreaded programs and a multiprocessor with eight processors, we are able to show that the predictions are very reliable, particularly for programs with a coarse-grained parallelism. The runtime overhead for the recordings is very small. The presented technique does not model I/O, and is therefore applicable only to CPU-intensive applications. Lars Lundberg, Mikael Roos |
HiPC | 1 |
| 1997 | Optimal Bounds on the Gain of Permitting Dynamic Allocation of Communication Channels in Distributed Processing
Lars Lundberg, Håkan Lennerstad |
OPODIS | 1 |
| 1995 | An Optimal Execution Time Estimate of Static Versus Dynamic Allocation in Multiprocessor SystemsabstractConsider a multiprocessor with k identical processors, executing parallel programs consisting of n processes. Let $T_{s}(P)$ and $T_{d}(P)$ denote the execution times for the program P with optimal static and dynamic allocations, respectively, i.e., allocations giving minimal execution time. We derive a general and explicit formula for the following maximal execution time ratio: $g(n, k) = \max T_{s}(P)/T_{d}(P)$, where the maximum is taken over all programs P consisting of n processes. Any interprocess dependency structure for the programs P is allowed only by avoiding deadlock. Overhead for synchronization and reallocation is neglected. Basic properties of the function $g(n, k)$ are established, from which we obtain a global description of the function. Plots of $g(n, k)$ are included. The results are obtained by investigating a mathematical formulation. The mathematical tools involved are essentially tools of elementary combinatorics. The formula is a combinatorial function applied on certain extremal matrices corresponding to extremal programs. It is mathematically complicated but rapidly computed for reasonable n and k, in contrast to the np-completeness of the problems of finding optimal allocations. Håkan Lennerstad, Lars Lundberg |
SIAM J. Comput. | 2 |
| 1994 | An optimal upper bound on the minimal completion time in distributed supercomputingabstractWe first consider an MIMD multiprocessor configuration with n processors. A parallel program, consisting of n processes, is executed on this system—one process per processor. The program terminates when all processes are completed. Due to synchronizations, processes may be blocked waiting for events in other processes. Associated with the program is a parallel profile vector v¯, index i (1≤i≤n) in this vector indicates the percentage of the total execution time when i processes are executing. Lars Lundberg, Håkan Lennerstad |
International Conference on Supercomputing | 1 |
| 1994 | Performance Bounds on Multiprocessor Scheduling Strategies for Chain Structured Programs
Lars Lundberg |
J. Parallel Distributed Comput. | 1 |
| 1991 | A Lockup-Free Multiprocessor Cache Design
Per Stenström, Fredrik Dahlgren, Lars Lundberg |
ICPP (1) | 3 |
| 1990 | A Protocol to Reduce Global Communication in Distributed Ada Tasking
Lars Lundberg |
J. Parallel Distributed Comput. | 1 |
| 1989 | A Parallel Ada System on an Experimental MultiprocessorabstractAbstract This paper describes the development of a parallel Ada system on an experimental MIMD multiprocessor. The system enables a single unmodified Ada program, with a number of tasks, to execute in parallel on different processors. Allocation and migration strategies are controlled by mechanisms in the run‐time system, and are thus transparent to the Ada programmer. The parallel Ada system is based on a validated portable front‐end compiler. Implementation issues related to the multiprocessor environment are pointed out, and solutions to these issues are suggested. The experimental multiprocessor environment, consisting of both hardware and software, is described. Applicable resource allocation strategies in, and feasible experiments with, the Ada system are discussed. The complete experimental system provides unique possibilities to experiment with, and monitor the effects of, design decisions at different levels in a multiprocessor environment. Lars Lundberg |
Softw. Pract. Exp. | 1 |