A systematic survey of CMM experience and results The capability maturity model* ( C M M ) The CMM describes five levels of process maturity. Each level has a number of key process areas (KPAs) that represent the primary issues the organization needs to address in order to mature its process. At the initial level of maturity, software projects rely on the skills, and too often the heroic efforts, of individual engineers. The risk of "runaway" projects is high, and developers are forced to lurch from one emergency to another. The KPAs for the repeatable level focus on effective project management, which aims to improve the ability to make and meet reasonable schedule and budget commitments. At the defined level, improvement focuses on developing tailorable software processes and other organizational assets, so that organizational learning can span projects. Next is the managed level, in which priority is given to monitoring software processes. Finally, in the optimizing level, quantitative data are consistently used for continuous process improvement.The CMM is not without its critics (e.g., [3]). It is sometimes claimed, for example, that adopting the CMM encourages too much bureaucracy, or that the CMM is incomplete or flawed. This debate is partly concerned with scope, policy issues, and conceptual questions, e.g., whether the model harmonizes appropriately with international standards such as ISO-9000. But the debate also focuses on the supposed consequences of adopting the CMM as the basis for SPI efforts. Will the organization get bogged down in red tape or suffer other damage, or will it benefit and show improved performance? Unlike some other improvement models, the CMM does not explicitly require the results of each change to be measured. It is here that valid and reliable empirical evidence is desperately needed. [7] . A larger study of SPI in 13 organizations showed improvements in cycle time, defect density, and productivity [8]. The data also indicate high ratios of benefits to cost, all figures in the range of 4:l to almost 9: 1. As these studies indicate, the evidence is accumulating that CMM-based software process improvement appears to be paying off, at least for some Organizations.The Assuming that some organizations are more successful than others, it is important to understand the enabling and inhibiting factors, particularly those under management control, so that more organizations can become more successful in their process improvement efforts.As part of our ongoing effort to empirically test the critical ideas and claims about the CMM, we designed this survey specifically to address the most significant limitations of previous studies. A carefully conducted survey is an effective way to look at a broad cross-section of a population. In particular, it offers the possibility of examining the results experienced both by highly successful and less successful organizations. The goals of this survey were 1) to find out what typically happens to SPI efforts after assessments, 2 ) to learn as much as possible about the reasons for success or failure, and 3) to see if the performance reported by more mature organizations is in fact superior to the performance reported by less mature organizations.2: Empirical methodologyAs a first step in a cycle of process improvement, many organizations conduct an appraisal of their software processes, using the CMM as the reference model. The Software Engineering Institute (SEI) maintains a database of appraisal results, which it receives directly from software organizations who have conducted internal appraisals, and from independent vendors. All were performed by authorized appraisers, indicating that they are familiar with the CMM and its associated appraisal methods. The database now has well over 400 appraisals.We limited the sample to appraisals conducted no less that one year ago (so that there was time for change to take place) and no more than three years ago (so we could find people able to give good accounts of what happened after the appraisals). We also limited the sample to organizations in the United States and Canada, to avoid the expense and difficulty of trying to communicate across great distances and time zones. In order to get a broad and balanced perspective, we decided to try to contact, for each appraisal, a senior technical person and a project manager as well as a member of the software engineering process group (SEPG).We found 155 appraisals that met our selection criteria in the SEI database. It required an enormous amount of staff time and effort to sift through incomplete records and track down names and addresses through third-party sources. All told, we were able to obtain contact information about 167 individuals representing 61 assessments.The questionnaire consisted of 8 pages of mostly closed-ended questions. The topics covered by the questions included 8 the value and accuracy of the appraisal, current performance of the organization, degree of success in addressing the recommendations that were based on the appraisal, and and the SPI effort background information about the organization The Capability Maturity Model* (CMM) for software [ 1,2] plays a major role as a reference model for software process improvement (SPI) efforts in hundreds of software organizations worldwide. The model is used as a standard for appraising the current state of the organization's software process, as well as a guide for identifying and prioritizing the actions comprising the SPI effort.. * Capability Maturity Model and CMM are service marks of Carnegie Mellon University.

O O B O O B O O O B I I O O O O O O O O O O O B O O O O O O O O B O O O O O O O O B O O O O O O O O B O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O B O O O O B I I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B B O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O B O O O O O O O O O O O O O O B O O O O O O O O B O O O O O O O B O B O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O B O O O O O O O O O O O O O O O O O O O O O O B O B I I O O B O O O O O O O O O B O B I I O O O O O B O O O B O O O O O O O O O O O O O B B O O O O O O O O O O O O O O O O B I I O O O O O O O O O


A dynamic self-scheduling scheme for heterogeneous multiprocessor architectures Today's heterogeneous architectures bring together multiple general-purpose CPUs and multiple domainspecific GPUs and FPGAs to provide dramatic speedup for many applications. However, the challenge lies in utilizing these heterogeneous processors to optimize overall application performance by minimizing workload completion time. Operating system and application development for these systems is in their infancy.In this article, we propose a new scheduling and workload balancing scheme, HDSS, for execution of loops having dependent or independent iterations on heterogeneous multiprocessor systems. The new algorithm dynamically learns the computational power of each processor during an adaptive phase and then schedules the remainder of the workload using a weighted self-scheduling scheme during the completion phase. Different from previous studies, our scheme uniquely considers the runtime effects of block sizes on the performance for heterogeneous multiprocessors. It finds the right trade-off between large and small block sizes to maintain balanced workload while keeping the accelerator utilization at maximum. Our algorithm does not require offline training or architecture-specific parameters.We have evaluated our scheme on two different heterogeneous architectures: AMD 64-core Bulldozer system with nVidia Fermi C2050 GPU and Intel Xeon 32-core SGI Altix 4700 supercomputer with Xilinx Virtex 4 FPGAs. The experimental results show that our new scheduling algorithm can achieve performance improvements up to over 200% when compared to the closest existing load balancing scheme. Our algorithm also achieves full processor utilization with all processors completing at nearly the same time which is significantly better than alternative current approaches. Future chip multiprocessors (CMPs) will feature hundreds of simple cores connected to a high-throughput on-chip network. The power consumption of running all cores concurrently will exceed the power budget of the chip. Moreover, for SIMD-based scientific This work is supported by the National Science Foundation under grant CCF-0905509. Authors' addresses: M. E. Belviranli (corresponding author), L. N. Bhuyan, R. Gupta, Computer Science and Engineering Department, University of California Riverside; email: ebelviranli@gmail.com. Permission to make digital or hard copies of part or all of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies show this notice on the first page or initial screen of a display along with the full citation. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, to republish, to post on servers, to redistribute to lists, or to use any component of this work in other works requires prior specific permission and/or a fee. Permissions may be requested fromloads, the energy per instruction (EPI) of processors is highly inefficient compared to the emerging hardware accelerator (HA) technologies, such as GPUs and FPGAs.. Heterogeneous multiprocessor systems featuring hardware accelerators have been used for a wide range of applications yielding significant speedups compared to CPUonly execution. Each type of hardware accelerator, such as FPGA or GPU, provides substantial performance improvement for the applications within its target domain. Image processing [De Ruijsscher et al. 2006] , data mining [Baker and Prasanna 2005] , and bioinformatics [Harris et al. 2007 ] are examples of applications with hardware implementations on FPGA and K-means [Che et al. 2008] , AES encryption [Yamanouchi 2007] , and network packet processing [Smith et al. 2009 ] are examples of GPU accelerated applications. Heterogeneous architectures like Cray XD1 [Fahey et al. 2005] and SGI Altix 4700 [SGI 2008 ] employ FPGAs as accelerators, whereas nVidia Tesla [Lindholm et al. 2008] employs GPUs for acceleration.. Heterogeneous systems provide a hybrid execution environment that allows applications to run concurrently on accelerators and CPUs. However, programming heterogeneous architectures requires careful consideration of underlying computational capabilities and memory bandwidth between the host and the accelerators. To achieve maximum gain and resource utilization on these architectures, the computation workload in an application should be distributed across accelerators and CPUs according to their computational capabilities. Workload partitioning often involves both input data distribution and assignment of different application tasks.. Static partitioning techniques are ones where the developers estimate running times of tasks and/or time to process a range of data so that accelerator and CPU utilization can be maximized. Estimations are based on theoretical accelerator capabilities, compile-time parameters, or an offline training period over a fraction of the input dataset. Many applications [Galanis et al. 2005; Yeung et al. 2008; Scrofano et al. 2007; Tripp et al. 2005; Tsoi et al. 2011 ] have employed various compile-time data partitioning and task partitioning schemes. However, many of them deal with either reconfigurable or GPU architectures without considering simultaneous execution on the CPUs as well. One of the most notable research work on heterogeneous systems, Axel , models communication and computation capabilities specific to each hardware configuration. For each processor, data transfer and execution times are estimated offline based on bandwidth speed as well as processor count and frequencies of the processor. The disadvantage is that the model must be updated for each application based on how it performs on that specific hardware. Also, theoretical capabilities of accelerators are very prone to misrepresenting actual runtime performance. Qilin , another important study on static workload partitioning, builds performance models per accelerator and CPU by measuring transfer and execution times during predefined training runs. These models are used to estimate the workload balance across processing units for the actual run. The models are again application specific and only represent the actual performance for a limited subset of the data. Therefore, static partitioning techniques fail to address runtime dynamics of the application and underlying architecture.. Dynamic partitioning, on the other hand, can more accurately balance task and data workload among heterogeneous processors [Augonnet et al. 2009; Hermann et al. 2010; Tse et al. 2010] , and can better utilize all computational units during execution. It requires proper monitoring mechanisms for each accelerator type, identification of tasks and data as computational blocks, and accurate performance estimation throughout the execution. Studies in Augonnet et al. [2009] and Hermann et al. [2010] use work stealing schemes which are also not suitable for accelerator-based systems due to possible redundant data transfers. The work to be stolen by CPU should have already been transferred to GPU, therefore the time spent on data transfer will be wasted. The work in Tse et al. [2010] uses two basic scheduling policies, exponential incremental and linear incremental. These schedulers increase task size exponentially (by a factor of m) or linearly (increasing by n) for each time a processor requests a block. In both cases, faster processing units reach bigger task sizes more quickly as execution progresses. However, exponentially growing task sizes increases the likelihood of load imbalance due to assignment of large blocks to slow processors towards the end of the execution. On the other hand, increasing linearly causes the use of excessive amount of blocks which decreases accelerator utilization.. An ideal dynamic load balancing scheme should be able to achieve minimum possible amount of execution time without any offline runs. For heterogeneous architectures, two factors are critical to achieve such an ideal balancing: (1) accurate measurement of computational weights per each processing unit and (2) the ideal size of computational task and data (i.e., block size) that is sent to an accelerator during each task assignment. If the block size is too small, data transfer to the device will take most of the time due to underutilization of DMA and the device initialization overhead will be excessive. On the other hand, large blocks will lead to better performance in accelerators; however, taking this to an extreme will result in workload imbalance. Finding the right block size will minimize underutilization and load imbalance, thus yielding the shortest execution time. Moreover, performance of an accelerator is significantly better when the block size is a multiple of its number of parallel threads. To best of our knowledge, none of the existing dynamic heterogeneous scheduling algorithms has considered effects of block sizes on accelerator performance.. In this article, we present HDSS, a Heterogeneous Dynamic Self-Scheduler, a new dynamic load balancing scheme for loop iterations on heterogeneous architectures. HDSS uses weighted self-scheduling to fully utilize all available processing units in the system during the application lifetime. Our algorithm dynamically resizes blocks to prevent underutilization and load imbalance of GPUs or FPGAs due to small or large block sizes. Unlike existing approaches, HDSS does not require an offline training period or device-and application-specific performance calculations. Moreover, HDSS is also able to schedule loops with dependent iterations as well via wavefront parallelization.. The new algorithm has two phases. The adaptive phase determines computational weights of processors using the smallest possible amount of data. During this phase we start with small block sizes and increase them gradually while continuously monitoring the performance. Computational weights are readjusted after execution of each block until they become stable. In this phase, we use the least squares estimation technique for quick convergence to accurate weights by predicting right amount of next block size. The second phase is the completion phase where the remainder and majority of the computation is done based on the computed weights. This phase uses a modified version of Guided Self-Scheduling (GSS) [Polychronopoulos and Kuck 1987] algorithm to achieve near minimum number of blocks. Once computational weights are accurately determined in the previous phase, our modified version of the original guided self-scheduling (GSS) [Polychronopoulos and Kuck 1987] algorithm (MGSS) ensures that executional units (CPUs and accelerators) finish execution at nearly the same time in the completion phase.. We have evaluated our scheme on two different heterogeneous platforms: a CPU+GPU system featuring nVidia Fermi C2050 GPU and a CPU+FPGA system (SGI Altix 4700) employing Xilinx Virtex 4 FPGA. For CPU+GPU experiments, we have used four applications, Blackscholes, Histogram, BoxFilter, 2D Heat equation, and String matching. For CPU+FPGA experiments, we have developed FPGA versions of Blackscholes and Histogram applications. We have implemented and compared our load balancing scheme with the recent major studies on heterogeneous load balancing: Axel , Qilin , and Monte-Carlo [Tse et al. 2010] . The results show that HDSS provides performance improvements of up to 219% when compared to its closest load balancing scheme. Results also show that HDSS is able to minimize processor idle times throughout the execution. We present HDSS along with a generic C++ API for easy adaptation.. This article makes the following contributions.. -A new self-scheduling algorithm, HDSS, optimized for heterogeneous architectures is presented. The algorithm is block size aware and achieves near-optimal utilization for all processors without any need for offline training. -The algorithm has been implemented and tested on CPU+GPU and CPU+FPGA platforms. Our algorithm is able to increase performance by up to 219% when compared to the best performing existing algorithm. Moreover, HDSS achieves running times that are very close to those achieved by ideal partitioning. -An API has been developed for easy adaptation of the algorithm for new/existing parallel applications.. The remainder of this article is organized as follows: Section 2 presents motivations behind our scheme. Section 3 describes how HDSS works in detail. Section 4 presents our performance evaluation and comparison to previous approaches. Section 5 describes additional related work. The last section is conclusion and future work. In a typical data-parallel application, parallel threads simultaneously process a specific portion of the shared input data in chunks (blocks). When all data is processed, parallel threads merge and the application either terminates or proceeds to the next phase of computation. Determining the amount of data for each thread during this parallel processing phase is the responsibility of the workload scheduler.. HDSS is a self-scheduling scheme which assigns blocks of loop iterations (i.e., input data) to each processing unit (i.e., CPUs, GPUs, FPGAs) when they become idle. The overall mechanism of HDSS is given in Figure 3 . In HDSS, each processing unit P i is represented by a dedicated parallel thread T i (i.e., representative thread) which is responsible for fetching the next available block and executing device-specific binary for the retrieved block of iteration. For CPUs, representative threads are basically main threads which handle the execution, whereas they are responsible for transferring input/output data and launching the computation kernel for GPUs and FPGAs.. HDSS Dispatcher. Fetch request is satisfied by the HDSSDispatcher which internally calls the HDSS algorithm to find the right block size B(T i ) for the requesting thread T i . Once a block size B(T i ) is determined, the next unprocessed iteration block, Block(T i ), with size B(T i ) is created by the Block Assigner and returned to the requesting thread. HDSS is a noncentralized scheduler, where the scheduling algorithm is run by the thread requesting the block. Scheduling overhead is distributed across representative threads, therefore increasing the scalability of our scheme considerably. Parallel runs of the HDSS algorithm need only to be synchronized when the global data pointer for the processed data needs to be advanced after a block assignment. However, no computation is needed during this synchronization and the overhead is very small and negligible.. API and Usage. HDSS provides a simple API, HDSSDispatcher class, to communicate with the parallel threads representing heterogeneous processors. As shown in Figure 4 , HDSSDispatcher has a constructor that takes the total number of iterations, number of processors, initial block sizes for each processor, block size factors for each processor, and maximum length of the adaptive phase as parameters. Initial block sizes and block size factors have a default value of 128 and maximum length of the adaptive phase is taken as 20% of total number iterations by default. fetch block method simply takes thread id as argument and returns start and end indicies of the iteration space that is assigned by HDSS to requesting thread. Figure 5 shows the usage of HDSS. For each application, a shared instance of the HDSSDispatcher object is created. Whenever a representative thread for a processor becomes idle, fetch block is called to get new workload. This method is blocking when there are no available blocks whose dependency constraints are satisfied. Once Figure (a) , on the left, illustrates the assignments dispatched during the adaptive phase. In this figure, block size axis is shown in logarithmic scale for a better separation of block assignments in the chart. Figure (b) , on the right, shows the two phases of the algorithm separated with a clear jump in assigned block sizes just after computational weights are determined and stabilized. a block size is retrieved, the programmer must call processor-specific implementations (kernels) of her application on the determined data block. In this study we have proposed a new scheduling and workload balancing algorithm, HDSS, for loops with independent or dependent iterations on heterogeneous multiprocessor systems. The algorithm runs in two phases. The first phase is dedicated for learning accurate computational weights for each processor and the second phase distributes the remaining workload using computed weights. Our algorithm uniquely considers the impact of block sizes on performance on heterogeneous multiprocessor systems without an offline run or a prior knowledge of application or architecture specifications.. We have evaluated and tested our algorithm on two different heterogeneous systems, nVidia FERMI (CPU+GPU) and SGI Altix (CPU+FPGA), for 7 benchmarks in total. We have also compared our results with recent major studies on static and dynamic scheduling of heterogeneous multiprocessors. Results showed that our algorithm gives best performance in all cases and provides improvements up to 219% when compared to its closest load balancing scheme on certain applications. In our results, HDSS algorithm caused processors to finish their execution near to each other and the workload partitioning was very close to the ideal partitioning. Our results also showed that, although some dynamic schemes (e.g., linear incremental) are able to balance workload properly, they were not giving the same speedups as HDSS due to underutilization of accelerators with small block sizes. This important observation showed that keeping processors busy all the time is not enough by itself for the ideal workload balancing. Processor capabilities should also be fully utilized by giving the right amount of work.. We are planning to extend our experiments with 2 or more GPUs and also on more recent GPUs and FPGAs like nVidia Kepler and Virtex 6. We will also improve support for dependent loops and add more applications that employ such loops.

O B I O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O


Rapid on-line temporal sequence prediction by an adaptive agent Robust sequence prediction is an essential component of an intelligent agent acting in a dynamic world. We consider the case of near-future event prediction by an online learning agent operating in a non-stationary environment. The challenge for a learning agent under these conditions is to exploit the relevant experience from a limited environmental event history while preserving flexibility.We propose a novel time/space efficient method for learning temporal sequences and making short-term predictions. Our method operates on-line, requires few exemplars, and adapts easily and quickly to changes in the underlying stochastic world model. Using a short-term memory of recent observations, the method maintains a dynamic space of candidate hypotheses in which the growth of the space is systematically and dynamically pruned using an entropy measure over the observed predictive quality of each candidate hypothesis.The method compares well against Markov-chain predictions, and adapts faster than learned Markov-chain models to changes in the underlying distribution of events. We demonstrate the method using both synthetic data and empirical experience from a gameplaying scenario with human opponents. Robust sequence prediction is an essential capability for an intelligent agent interacting in a dynamic environment. By making accurate predictions, the agent is able to reduce the space of future events which, in turn, facilitates better decision making and Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. To copy otherwise, to republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. reduced planning, and permits multi-agent coordination without communication.. In this paper we consider the case of an agent that must learn to make predictions on the fly while acting in a non-stationary environment. Making predictions under these conditions is quite challenging. Agents must learn rapidly in order to adapt to changes in event generating processes, limiting the amount of historical data that can be considered. Because the agent is operating while learning, the learning process must also be online and time/space efficient.. Existing sequence prediction methods like HMMs are not designed for this problem. Most methods require the process to be stationary, with an abundance of data. Many learning methods (such as the EM algorithm) are better suited to offline learning. Thus, the challenge for a learning agent in a rapidly changing environment is to exploit the relevant experience while preserving flexibility.. We propose a solution that employs short-term memory to rapidly store regularly occurring patterns in sequences of observations. These sub-sequences (representing candidate predictors) are filtered by finding those that produce high and reliable prediction performance. This solution is qualitatively similar to the human sequence prediction strategy suggested by recent research [6] , in that humans appear to use a combination of short-term memory and the detection of apparent non-randomness in sensory input to rapidly learn regularly occurring patterns in sequences of observations.. One of the key aspects of the proposed solution is to exploit basic, low-level predictability in temporal sequences. Low-level predictability can be modelled via a variable-length order-n Markov chain, where n is the number of consecutive observations needed to predict the next observation. Recall that the joint probability distribution of a sequence of observations o 1:n = o 1 , o 2 , . . . , o n can always be factored as. The full joint distribution becomes intractable as the sequence length increases, however a fixed finite length n Markov model. P (o t |o T −n:T −1 ). is poorly suited to capture regularities with variable lags and multiple time scales. Our short-term memory approach extracts subsequences with variable lags, overcoming some of the problems of fixed length Markov chains. The results of this paper suggest that a machine learning approach that exploits basic, low-level predictability may overcome the problems introduced by online learning in a non-stationary environment. We have demonstrated a novel algorithm that utilizes "predictive quality" as a basis for learning temporal sequences. The ability to discard historical information with limited predictive value yields a space-efficient method, and by using limited context history, a time-efficient method suitable for use in realtime environments is achieved.. The ELPH algorithm is capable of learning complex temporal sequences in non-stationary environments in real-time using limited memory resources while adapting rapidly to changes in the underlying stochastic process. We demonstrated its potential for use in domains where rapid adaptability is of paramount importance.. Straightforward extensions of the algorithm include variable length windows instead of the fixed length windows we presented, and multiple input streams. The algorithm can be extended to longer time scales by treating embedded sequences with high predictability as higher order temporal streams. The problem of determining predictive sequences in time-ordered databases has been addressed by a significant body of data mining literature, starting with the seminal work of Agrawal and Srikant [1] . However, these approaches (including [1] ) generally utilize a number of passes (forward and/or backward) through the data and do not meet the "on-line" or "real-time" criteria essential for dynamic agent performance. In addition, the prevalent data mining techniques generally do not handle changes in the underlying stochastic model.. The ELPH algorithm can be viewed as a method to learn a sparse representation of an order-n Markov process via pruning and parameter tying. Because sub-patterns occur more frequently than the whole, our reliability measure preferentially prunes larger patterns. Because prediction is then performed via the best sub-pattern, we are effectively tying probability estimates of all the pruned patterns to their dominant sub-pattern.. Previous approaches to learning sparse representations of Markov processes include variable memory length Markov models (VLMMs) [5, 8, 10, 2] and mixture models that approximate n-gram probabilities with sums of lower order probabilities [9] . VLMMs are most similar to our approach in that they use a variable length segment of the previous input stream to make predictions. However, VLMMs differ in that they use a tree-structure on the inputs, predictions are made via mixtures of trees, and learning is based on agglomeration rather than pruning.. In the mixture approach, n-gram probabilities p(o t |o t−1 . . . o t−n ) are formed via additive combinations of 2-gram components. Learning in mixture models is complicated by using EM to solve a credit assignment problem between the 2-gram probabilities and the mixture parameters. We believe the relative merits of our algorithm to be its extreme simplicity and flexibility.. Rock-paper-scissors is one of the stochastic games used by Bowling and Veloso [3] as a demonstration of their WoLF algorithm. WoLF (Win Or Learn Fast) applies a variable learning rate to gradient ascent over the space of policies, adapting the learning rate depending on when a specific policy is winning or losing. The WoLF principle is to learn quickly when losing and more cautiously when winning.. In contrast to this work, ELPH makes no effort to directly learn a policy based on reward, and, in fact, makes no determination as to whether it is winning or losing. ELPH simply makes predictions based on past observations and discards past knowledge if it fails to predict future play. ELPH makes no assumption on the rationality of the opponent's policy. If the opponent exhibits any predictability in play, ELPH will exploit that predictability and choose an action that will better the opponent with a frequency matching the statistical bias. If the opponent's policy is to play purely randomly, then ELPH should play to a draw.. Since WoLF starts playing at the Nash equilibrium, when ELPH plays against it, they consistently play to a draw. WOLF does not perform well against ELPH in the non-stationary environments presented here. WOLF requires playing millions of games before converging on the policy and so it does not perform well given the rapid non-stationary policy switches we used (approximately every 20 plays) and the (relatively) short games of 1000 plays.

O O O B I O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O


A hybrid biometric cryptosystem for securing fingerprint minutiae templates Security concerns regarding the stored biometric data is impeding the widespread public acceptance of biometric technology. Though a number of bio-crypto algorithms have been proposed, they have limited practical applicability due to the trade-off between recognition performance and security of the template. In this paper, we improve the recognition performance as well as the security of a fingerprint based biometric cryptosystem, called fingerprint fuzzy vault. We incorporate minutiae descriptors, which capture ridge orientation and frequency information in a minutia's neighborhood, in the vault construction using the fuzzy commitment approach. Experimental results show that with the use of minutiae descriptors, the fingerprint matching performance improves from an FAR of 0.7% to 0.01% at a GAR of 95% with some improvement in security as well. An analysis of security while considering two different attack scenarios is also presented. Pervasive use of biometrics is imminent due to its numerous advantages over the surrogate identities, e.g. passwords and smart cards. Biometric traits have very high discriminative capability to identify an individual and at the same time, unlike ID cards and passwords, one does not have to worry about losing them (Jain et al., 2008a) . However, protecting stored biometric templates is important due to potential misuse of the stolen templates. Cappelli et al. (2007) and Ross et al. (2007) have shown that commonly used templates, that are supposed to be compact, informative and usable representation of biometric traits, have not been designed with the objective of their secure storage. Thus if an adversary is able to access a template, he can create a spoof biometric (e.g. gummy finger) from the template (Cappelli et al., 2007) and present it to the system. Due to limited liveness detection capability of current biometric readers, the spoof may be accepted by the system providing an illegitimate access to the adversary. Further, an adversary can cross link the stolen templates with other biometric databases, allowing him to track the activities of an enrolled person, thereby compromising his privacy.. Most template protection approaches can be categorized into following two classes: (i) transformation based approaches and (ii) biometric cryptosystems (Jain et al., 2008b) . Transformation based approaches transform the biometric features using a user specific password such that the matching can be performed in the transformed domain. Such a technique is secure since at no time the original biometric is explicitly present in the database. Though a number of transformation based schemes have been proposed (Teoh et al., 2007; Ratha et al., 2007; Savvides and Vijaya Kumar, 2004; Boult et al., 2007) , an optimal transformation that is non-invertible and at the same time preserves the matching accuracy to a large extent is yet to be found. Biometric cryptosystems (Dodis et al., 2006; Hao et al., 2006; Nandakumar et al., 2007; Sutcu et al., 2007) , on the other hand, are techniques that associate an external key with a user's biometric to obtain helper data. The helper data should not reveal any significant information about the template or the key and at the same time it can be used to recover the key when the original biometric is presented. In this paper we shall focus on improving the matching performance and security of a fingerprint based biometric cryptosystem, called fingerprint fuzzy vault (Nandakumar et al., 2007) .. A fuzzy vault is preferred to secure fingerprints because of its ability to secure biometric data that is represented as an unordered set of points; fingerprint minutiae fall in this category. In order to construct a fuzzy vault, the external key is converted into a polynomial and the minutiae are evaluated on that polynomial. These evaluations are stored along with the original minutiae as tuples. The biometric information is then secured by storing the tuples among a large number of randomly generated chaff points. During authentication, the query biometric is used to identify the legitimate minutiae in the set containing the minutiae as well as the chaff points. to the secured polynomial are then used to reconstruct the polynomial thereby revealing the key. Though fuzzy vault is able to effectively secure the fingerprint templates, the recognition accuracy of the resultant system is significantly lower compared to the accuracy on the original template. One reason for this is the inability of the fuzzy vault to effectively utilize salient information in a fingerprint other than minutiae. We address this limitation of fuzzy vault by incorporating minutiae descriptors in the vault construction. Figs. 1 and 4 show the fuzzy vault encoding and decoding procedures along with the technique to incorporate minutiae descriptors.. Minutia descriptors consist of the ridge frequency and ridge orientation information around a minutia point (Feng, 2008) . Note that storing the descriptors along with minutiae in the vault is not recommended as the descriptors can be used to verify whether two neighboring minutiae belong to the same fingerprint or not. Thus, instead of explicitly storing the minutiae descriptors in the vault, we ''encrypt" the ordinate values corresponding to the minutiae using the associated minutiae descriptors. Due to the intra-user variations in the minutiae descriptor values, standard cryptographic algorithms such as the Advanced Encryption Standard (AES) cannot be used to encrypt the ordinate values. Therefore, another bio-crypto algorithm called the fuzzy commitment technique (Juels and Wattenberg, 1999 ) is used to associate the ordinate value, which serves as the key, with a minutia descriptor. Since the actual matching descriptors will be able to ''decrypt" the ordinate values, and hence decode the vault with a higher probability than a non-matching descriptor, the proposed hybrid cryptosystem improves the matching performance as well as security of the vault.. One limitation of a fuzzy commitment scheme designed using typical algebraic codes [e.g. BCH codes (Reed and Chen, 1999) ] is that these codes do not meet the Hamming bound (see Reed and Chen, 1999, p. 105) . As a result, such codes may produce a decoding failure when one attempts to use a non-matching descriptor to release the key. Consequently, an adversary can decrypt the ordinate values individually by trying all possible descriptors (which is not difficult given the low discriminability of descriptors). We experimentally show that such an attack is indeed feasible when the dimensionality of descriptor is high (see Section 6). Further, we show that principal component analysis (Duda et al., 2000) and sequential forward floating search (Pudil et al., 1994) can be effectively used to reduce the dimension of the descriptors thereby reducing the chances of a successful attack. A technique for encrypting ordinate values using just minutia orientation was also proposed by Mihailescu (2007) but without any implementation.. Section 2 describes the helper data extraction procedure which consists of (i) fuzzy vault encoding and (ii) securing ordinate values using fuzzy commitment. Section 3 describes the authentication procedure. In Section 4, different stages involved in obtaining a binary vector from a minutia descriptor are described. Section 5 provides the experimental results corresponding to different binarization schemes used for descriptors. Section 6 describes techniques to measure the security improvement using the proposed approach. In this section, we also discuss some strategies that an adversary can use to compromise the system and the security of our system against those strategies. Section 7 summarizes our conclusions and the future enhancements. Template security is critical to the integrity of a biometric system. In this paper we have shown that both the matching performance and security of a fingerprint fuzzy vault can be improved by incorporating minutiae descriptors. Experiments on a public domain fingerprint database demonstrates that the use of minutiae descriptors leads to an order of magnitude reduction in the False Accept Rate without significantly affecting the Genuine Accept Rate. Further, the vault security measured in terms of number of tries an adversary has to make in order to guess the secure key is increased. As future work, we plan to investigate nearest neighbor decoding implementations of certain error correcting codes in order to reduce the decoding failures. Since the descriptors corresponding to neighboring minutiae are correlated, we plan to investigate if an adversary can leverage such information to increase his chances of a successful attack and to what extent. We used the FVC2002 DB2 fingerprint database to compare the fuzzy vault performance with and without minutiae descriptors. As in (Nandakumar et al., 2007) , only the first two impressions of the 100 different fingers the database were used in the experiments, one as the template and the other as the query. During both

O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O B I O O B I O O O O O O O O O O B I O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O B I O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O


CONQUEST: A Coarse-Grained Algorithm for Constructing Summaries of Distributed Discrete Datasets Abstract. In this paper we present a coarse-grained parallel algorithm, CONQUEST, for constructing boundederror summaries of high-dimensional binary attributed data in a distributed environment. Such summaries enable more expensive analysis techniques to be applied efficiently under constraints on computation, communication, and privacy with little loss in accuracy. While the discrete and high-dimensional nature of the dataset makes the problem difficult in its serial formulation, the loose-coupling of distributed servers hosting the data and the heterogeneity in network bandwidth present additional challenges. CONQUEST is based on a novel linear algebraic tool, PROXIMUS, which is shown to be highly effective on a serial platform. In contrast to traditional fine-grained parallel techniques that distribute the kernel operations, CONQUEST adopts a coarsegrained parallel formulation that relies on the principle of sampling to reduce communication overhead while maintaining high accuracy. Specifically, each individual site computes its local patterns independently. Various sites cooperate in dynamically orchestrated work groups to construct consensus patterns from these local patterns. Individual sites may then decide to continue their participation in the consensus or leave the group. Such parallel formulation implicitly resolves load-balancing and privacy issues while reducing communication volume significantly. Experimental results on an Intel Xeon cluster demonstrate that this strategy is capable of excellent performance in terms of compression time, ratio, and accuracy with respect to post-processing tasks.

O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O


Presentations of finitely generated cancellative commutative monoids and nonnegative solutions of systems of linear equations Varying methods exist for computing a presentation of a finitely generated commutative cancellative monoid. We use an algorithm of Contejean and Devie [An efficient incremental algorithm for solving systems of linear diophantine equations, Inform. and Comput. 113 (1994) 143-172] to show how these presentations can be obtained from the nonnegative integer solutions to a linear system of equations. We later introduce an alternate algorithm to show how such a presentation can be efficiently computed from an integer basis. © 2006 Elsevier B.V. All rights reserved.Keywords: Finitely generated commutative cancellative monoid; Presentation; System of linear equationsSeveral approaches can be found in the mathematical literature to the problem of computing a presentation of a given finitely generated cancellative commutative monoid. These different approaches can be mainly divided into three different groups.The implementations of the first group are based on the computation of the kernel of a ring morphism. This computation can be performed, after a trick that enables us to work with torsion free monoids, using the implicitation algorithm or using specializations of this algorithm to the case of morphisms between the ring of polynomials and the semigroup ring of a finitely generated commutative cancellative and torsion free monoid (see [6, 22] ; in [9] a realization based on the algorithm appearing in [6] is given for Maple). The efficiency of these types of implementations depends on the efficiency of the computation of a Gröbner basis. The advantage of using this group of implementations is that they are easy to implement in any of the existing programmable software packages that include Gröbner basis computations Several approaches can be found in the mathematical literature to the problem of computing a presentation of a given finitely generated cancellative commutative monoid. These different approaches can be mainly divided into three different groups.. The implementations of the first group are based on the computation of the kernel of a ring morphism. This computation can be performed, after a trick that enables us to work with torsion free monoids, using the implicitation algorithm or using specializations of this algorithm to the case of morphisms between the ring of polynomials and the semigroup ring of a finitely generated commutative cancellative and torsion free monoid (see [6, 22] ; in [9] a realization based on the algorithm appearing in [6] is given for Maple). The efficiency of these types of implementations depends on the efficiency of the computation of a Gröbner basis. The advantage of using this group of implementations is that they are easy to implement in any of the existing programmable software packages that include Gröbner basis computations 1 The first author completed part of this work while on an academic leave granted by the Trinity University Faculty Development Committee. 2 The second and fourth authors are supported by the project MTM2004-01446 and FEDER funds.. E-mail addresses: schapman@trinity.edu (S.T. Chapman), pedro@ugr.es (P.A. García-Sánchez), dllena@ual.es (D. Llena), jrosales@ugr.es (J.C. Rosales). (singular, Maple V, Mathematica, etc.). The underlying idea is to eliminate several auxiliary variables used to define the kernel homomorphism. By using the same elimination procedure, in [18] an algorithm to compute the presentation of any finitely generated commutative submonoid of a finitely generated monoid is given.. The algorithms of the second group are based on a generalization of the algorithm appearing in [15] for the computation of a minimal presentation of a numerical semigroup. Though the enactment of this algorithm is highly efficient, neither the generalization appearing in [1] nor the generalization introduced in [19] have yielded efficient implementations of the problem (our students have implemented the algorithm described in [19] , but the resulting software is much slower than the one appearing in [9] ).. The last approach was proposed in [17] . The cancellative law implies linearization as we will see in Section 1, and thus the existing algorithms for finding the set of nonnegative integer solutions to linear systems of equations can be used. Again, several approaches exist for this problem: some use Dickson's lemma and Gröbner bases (see for instance [10] ), others Elliot's trick (see [7] ) or a generalization of Clausen-Fortenbacher's ( [3] ) geometrical point of view (see [4] ). As a consequence of the nature of the problem, the number of variables needed to compute a presentation becomes considerably large. Roughly speaking, this is due to the fact that in order to describe a single integer you need two nonnegative integers.. Our work in this paper is organized into three sections. In Section 2 we use the algorithm presented in [4] to illustrate how nonnegative integer solutions to linear systems of equations yield presentations for finitely generated monoids. The systems of equations appearing are quite special, and the algorithms existing in the literature do not take advantage of this (obviously this is because they were studied for other purposes). In Section 3 we introduce an alternative method to compute presentations starting from an integer basis and thus no "duplication" of the number of variables is needed. The algorithm is easy to implement and it is based on the critical pair completion idea. In Section 1, we review for the reader the definitions, notation and basic results which are used in Sections 2 and 3.

O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O


General evolutionary theory of information production processes and applications to the evolution of networks Evolution of information production processes (IPPs) can be described by a general transformation function for the sources and for the items. It generalises the Fellman-Jakobsson transformation which only works on the items. The informetrics of information production processes (IPPs) can be described via the so- where denotes the density of the sources in item density j: this is the continuous extension for the classical = number of sources with j items and we let also be limited to a maximal item density (see also Egghe (2005) but there a ; here we use a general a since we have an application of this case -see further). A classical example is the law of Lotka, where f is then a decreasing power law; this case will also be considered after the general theory. where denotes the inverse function of g. It is clear from (3) that 1 g − ( ) g r denotes the item density in the source on rank density r: this is the continuous extension of the discrete rankfrequency function where = number of items in the source on rank r and where T denotes (also in the continuous setting) the total number of sources.. ( ) g r. The equivalence of the functions f and g is seen as follows: (3) Egghe (2005) ). It is also well-known (see Egghe and Rousseau (1990) or Egghe (2005) ) that, in case f is a decreasing power law (i.e. Lotka's law), g is the so-called law of Mandelbrot (which we will describe in detail below).. In Egghe (2004) , see also Egghe (2003) one studies positive reinforcement of IPPs, where one applies a transformation on the function g i.e. g is transformed into , where has certain properties, e.g.. ϕ ≥ x for all x and ϕ strictly increasing. In Egghe (2003 Egghe ( , 2004 , the connection of positively reinforced IPPs with linear 3-dimensional informetrics (i.e. the composition of 2 IPPs) is highlighted and the concentration properties of these positively reinforced IPPs are indicated using the theorem of Fellman and Jakobsson -see Fellman (1976) , Jakobsson (1976) ; see also Egghe (2006) .. In Egghe (2003 Egghe ( , 2004 and Egghe and Rousseau (2006a) , a transformation of g in the following sense has been studied: In view of the above it is clear what to do: the transformation ϕ above, in its full generality, works well to describe changes (dynamics) of items. So "all we have to do" is to introduce another transformation, called ψ below, in order to describe the changes (dynamics) of the sources.. In the next section the second transformation ψ will act on the rank densities r. So, instead of the transformation. we will generalise (6) as follows:. so that also the source rankings are transformed. This very general model (7) will be studied in the next section and its equivalent size-frequency function will be calculated.

O O O O O O O O O O O B O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O


Do background colors improve program comprehension in the #ifdef hell? Abstract Software-product-line engineering aims at the development of variable and reusable software systems. In practice, software product lines are often implemented with preprocessors. Preprocessor directives are easy to use, and many mature tools are available for practitioners. However, preprocessor directives have been heavily criticized in academia and even referred to as "#ifdef hell", because they introduce threats to program comprehension and correctness. There are many voices that suggest to use other implementation techniques instead, but these voices ignore the fact that a transition from preprocessors to other languages and tools is tedious, erroneous, and expensive in practice. Instead, we and others propose to increase the readability of preprocessor directives by using background colors to highlight source code annotated with ifdef directives. In three controlled experiments with over 70 subjects in total, we evaluate whether and how background colors improve program comprehension in preprocessor-based implementations. Our results demonstrate that background colors have the potential to improve program comprehension, independently of size and programming language of the underlying product. Additionally, we found that subjects generally favor background colors. We integrate these and other findings in a tool called FeatureCommander, which facilitates program comprehension in practice and which can serve as a basis for further research. Preprocessors are frequently used in practice to implement software product lines. However, they introduce threats to program comprehension and are even referred to as "#ifdef hell". To improve readability of preprocessor-based software, we proposed to use background colors, such that source code annotated with ifdef directives is highlighted and can be easily perceived at first sight.. In three controlled experiments, we revealed both benefits and drawbacks of background-color usage with regard to supporting program comprehension in preprocessor-based SPLs. The results clearly showed that background colors have the potential to improve program comprehension. We could show that background colors positively influence program comprehension in terms of locating feature code, independently of size and language of the underlying projects. Additionally, we found in all experiments that subjects favor background colors. This is an important result, because the attitude of developers toward the tool they are working with can significantly affect their performance (Mook 1996) , for example, because they may stick longer with a task (and not get frustrated by the tool). This effect is exploited in many tools, which typically have numerous customizing options, so that users can adjust the tool according to their preferences.. However, we also found that colors have to be chosen with great care. Otherwise, they could slow developers down. Our results indicate that bright, saturated colors, such as we used in our first setting, are distracting and cause visual fatigue. Consequently, developers need more time when working with colors, for example, because of a need to rest the eyes. Hence, developers should be able to customize color settings according to their needs (e.g., like we provided in the second and third experiment). For example, when a developer has located a code fragment that she suspects to cause a problem, she can turn colors off or adjust the saturation to a low degree.. Based on the results of our experiments, we implemented the prototype FeatureCommander, in which we realized scalable background-color usage. Developers can efficiently adjust color settings to their needs, for example by adjusting opacity. Thus, customizable background-color concepts as implemented in FeatureCommander can increase the efficiency of maintenance developers and reduce the cost of software development. Michael Schulze is technology project leader of the pure-systems GmbH. He received his diploma degree in computer science from the University of Magdeburg, Germany in 2002. After some years in the industry he went back to the University of Magdeburg to work on his PhD that he received in 2011. His research was focused on embedded and operating systems, adaptable event-based communication middleware, and on mechanisms and concepts for resource constraint devices. At pure-systems he leads national and international technology projects and works also as consultant mainly in the area of product-line development.. Raimund Dachselt is a professor for User Interface & Software Engineering at the University of Magdeburg, Germany. In 2004, he finished his PhD thesis on the component-based development of interactive 3D applications and Information Rich Virtual Environments at TU Dresden, Germany. Currently, his research focuses on the field of novel visualization and interaction techniques for future user interfaces combining multiple input modalities and interactive displays.. Maria Papendieck is a master's student with the major Computational Visualistics at the University of Magdeburg. She received her bachelor's degree in Computational Visualistics from the University of Magdeburg in 2011. During her work as student assistent for the department of User Interface and Software Engineering, she was responsible for the implementation of FeatureCommander. In this section, we present the analysis of our data. It is necessary to strictly separate data analysis from interpretation (which follows in Section 5.3), so that a reader can draw her own conclusions of our data and other researchers replicating our experiments can compare their data with ours.. We show only the information necessary to evaluate our hypothesis. Figure 6 shows how subjects switched between the annotation styles in each task (light gray: ifdefs; dark gray: colors). Each row denotes the performance of a subject. For example, if we look at the first row, we can see that for W0 (warming-up task), the subject switched between annotation styles (light and dark gray alternate). For all remaining tasks, the subject used background colors only.. The lengths of the bars indicate the time subjects spend with a task. For example, the first subject needed considerable more time to solve M1 than to solve M2.. An interesting result can be seen in M4, the task, in which the target code was annotated with a red background color and subjects of the color group performed significantly worse in our first experiment. Although subjects of our first experiment complained about the background color, most subjects of our follow-up experiment used mainly the color version; only 3 of 10 4 of 10 subjects spent more time with the ifdef version. In this figure, we included the warming-up task W0 (counting the number of features), because it allows an interesting observation: We can see that all subjects switched between the annotation styles in this task. As the experiment went on, subjects tend to stick with the color version. Hence, we have to reject our research hypothesis.. In prior work, we described the first experiment (Feigenspan 2009; Feigenspan et al. 2009 ). It was conducted as part of the first author's master's thesis (Feigenspan 2009 ). We subsequently briefly summarized the results in a workshop paper, motivating the necessity of empirical research and explaining the path we took toward this paper (Feigenspan et al. 2009 ). The primary intent was not to present the experiment nor its results, but to analyze the feasibility of program-comprehension experiments in the context of feature-oriented software development (Apel and Kästner 2009 ). The present work is the first time we present the experiment as well as its results and their implications in detail.. We published our third experiment with focus on our tool FeatureCommander and the implementation of concepts to support a developer in her comprehension process (Feigenspan et al. 2011b) . We also published a tool demo of FeatureCommander, in which we only focus on the tool, not on the evaluation (Feigenspan et al. 2011a) .. Our first experiment was based on the background-color concept implemented in CIDE (Feigenspan et al. 2010; Kästner et al 2008) . CIDE was developed to support a programmer in decomposing legacy applications into features. Besides background colors, it provides code folding of feature code (i.e., it hides source code of selected features) and different views on source code. Furthermore, it enforces disciplined annotations, leading always to syntactically correct code when feature code is removed to create a variant. For example, an opening bracket can only be annotated with a corresponding closing one. Furthermore, we provide FeatureIDE (Kästner et al. 2009b ), a tool that also supports the development of SPLs. In contrast to FeatureCommander, FeatureIDE supports more SPL-implementation techniques in addition to preprocessor directives and aims at the complete development process of SPLs (i.e., from the design phase to the maintenance phase).. Another tool of our's is View Inf inity, which also aims at improving program comprehension in preprocessor-based SPLs (Stengel et al. 2011) . In addition to background colors, ViewInfinity provides semantic zooming from the feature-model level over the file structure to the source-code level. An empirical evaluation focused on how experienced SPL developers use and like the semantic-zooming concept, not on background-color usage on source-code level.. In a parallel line of work independent of colors, visualization, and tooling, we explored the discipline and granularity of ifdef directives in 40 medium-to largescale software systems (Liebig et al. 2010 (Liebig et al. , 2011 . We found that developers use ifdef directives to a large extent, and that most directives are disciplined and occur in the source code at a fine grain. This supports our argument that ifdef directives can cause problems and that their readability can be improved with background colors. In literature, the C preprocessor is often heavily criticized. Numerous studies discuss the negative effect of preprocessor usage on code quality and maintainability (e.g., Adams et al. 2008; Ernst et al. 2002; Favre 1995 Favre , 1997 Krone and Snelting 1994; Spencer and Collyer 1992) . However, researchers have also explored different strategies to deal with these problems.. One group of approaches attempts to extract structures from the source code (e.g., nesting, dependencies, and include hierarchies) and visualize them in a separate view (Krone and Snelting 1994; Pearse and Oman 1997; Spencer and Collyer 1992) . We follow this line of work and use similarly simple structures, but we focus on supporting developers directly in working with the annotated source code and integrate a visual representation of annotations with the underlying source code.. The model editors fmp2rsm (Czarnecki and Antkiewicz 2005) and FeatureMapper (Heidenreich et al. 2008 ) allow a user to annotate model elements to generate different model variants. Both tools can represent annotations with colors. The tool Spotlight (Coppit et al. 2007 ) uses vertical bars in the source-code editor to represent annotations, which are more subtle than background colors. Spotlight aims at improving the traceability of scattered concerns, which are represented by different colors. SeeSoft (Eick et al. 1992 ) represents files as rectangles and sourcecode lines as colored pixel lines. The color is an indicator of the age of the according source-code line. In contrast to our work, the influence of visualizations of these tools on program comprehension has not been assessed empirically.. In addition to visualizations, also views on configurations have been explored, which show only part of the feature code and hence reduce complexity (Atkins et al. 2002; Chu-Carroll et al. 2003; Hofer et al. 2010; Kästner et al 2008; Singh et al. 2007) . A view on a variant or a view on a feature displays only feature code of selected features and hides all remaining code. Some tools even hide annotations completely, such that a developer only works on one variant and may not even be aware of other variants or features (Atkins et al. 2002) . In an analysis of the change history of a large telephone switching software system, Atkins et al. showed a productivity increase of 40%, when developers work with views provided by the Version Editor. However, hiding feature code may not always be feasible: For example, when code of a hidden feature shares code with a feature in which a developer fixes a bug, she might introduce bugs into the hidden feature code without knowing it (Ribeiro et al. 2010) . In this case, a developer needs the context of the complete SPL to fix a featurespecific bug. Hence, views on source code and background colors complement each other for different tasks.. Furthermore, a severe problem for many approaches is precise fact extraction from unpreprocessed C code, especially if one wants to reason not only about the preprocessor directives, but also about their combination of C code. Many researchers have attempted analysis and rewrite systems for unpreprocessed C code (Aversano et al. 2002; Baxter and Mehlich 2001; Garrido and Johnson 2005; Hu et al. 2000; Livadas and Small 1994; Overbey and Johnson 2009; Tartler et al. 2011; Vidacs et al. 2004 ). For example, Ernst et al. (2002) identify problematic patterns and quantify them in a large code base, Tartler et al. (2011) search for code blocks that are dead in all feature configurations, and Hu et al. (2000) use control flow graphs to analyze the inclusion structure of files. However, all these approaches aim not directly at improving program comprehension by developers, but form underlying mechanisms and can be used to build tools.. Whereas we focused solely on conditional compilation, also lexical macros can pose significant stress on program comprehension. Several researchers have investigated analysis and visualizations strategies that can explain macro expansion and add debugging tasks. For example, Spinellis (2003) provide an automated approach to rewrite macro expansions. Kullbach and Riediger (2001) present folding to hide or show preprocessor-annotated code as needed. These mechanisms are complementary to our approach.. To overcome preprocessor understanding problems in general, many researchers recommend to abandon preprocessor usage in favor of more disciplined implementation approaches, such as feature-oriented programming (Prehofer 1997 ) and aspectoriented programming (Kiczales et al. 1997) , or syntactic preprocessors such as ASTEC (McCloskey and Brewer 2005) . Several researchers have even investigated automated refactorings (Adams et al. 2009; Kästner et al. 2009a) . But preprocessors are still prevalent in practice and the vast amount of legacy code will not disappear soon. Hence there is still significant need for tools like ours that support developers when forced to deal with legacy code.. Finally, the idea of using colors to support a developer is not new. Early empirical work was published in 1986 (Rambally 1986) . In this experiment, Rambally found that annotating source-code fragments with colors according to their functionality improves program comprehension, compared to control-structure color-coding scheme (e.g., loops, and if-then-else statements), and no colors at all. Furthermore, color usage for various tasks is evaluated by several research groups, for example, highlighting source code for error reporting (Oberg and Notkin 1992) or merging (Yang 1994) . In 1988, the ANSI/HFS 100-1988 standard 20 was published, which included recommendations about the contrast of background colors and foreground colors. Today, syntax highlighting (i.e., coloring of syntactic elements) is an integral part of most IDEs (e.g., Eclipse). However, to the best of our knowledge, the use of background colors in preprocessor-based software has not been evaluated empirically.

O O O O B I O O O O O O O O O O O O O O O O O O O B I I O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O B I O O O O O O O O O O O O B O O O O O O O B I I O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O B I O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O


Designing for a Moving Target Abstract User centered design is a relatively young design approach. Over the years, user centered design changed its scope. However, the concept of usability does not just expand by broadening the view on ease of use and learning. Experience is added in the nineties and in 2006 we find Apple suggest its iPod users to "Enjoy Uncertainty." The history of user centered design (or human-computer interaction, or cognitive ergonomics) shows the development of the design approach as a movement in different dimensions:• from the reign of functionality to attention to individual users in context; • from user control to experience and entertainment; and • from a culturally defined cost-benefit goal to perspective on a multitude of design cultures and cultures of use. User centered design is a relatively young design approach. In fact, the concept of "usability" can be traced back to General Motors [12] . Over the years user centered design changed its scope. The (German) DIN norms of 1988 consider suitability for the task, conformity with user expectations, and user controllability to be the defining characteristics of usable systems [9] . The European Agency for Safety and Health at Work, just 3 years later [5] includes appropriate format and pace of information presentation as well as ease of use in the definition. The ISO standard 9241 part 10 [6] broadens the view by including self-descriptiveness G.C. van der Veer ( ) Open University of the Netherlands, Heerlen, The Netherlands e-mail: gerrit@acm.org and suitability of learning. Interestingly, the "official" visions on user centered design criteria started as national efforts and gradually expanded to true international standards. However, the concept of usability does not just expand by broadening the view on ease of use and learning. Experience is added in the nineties [14] and in 2006 we find Apple suggest its iPod users to "Enjoy Uncertainty.". The author's experiences of 30+ years of teaching user centered design in many countries like Romania, Spain, Italy, and the Netherlands, in curricula like Cognitive Psychology, Ergonomics, Computer Sciences, and Architecture, reflect this changing world. Different national and discipline-based education systems combined with different cultural values regarding the balance of benefit to individual users versus economic costs of design and implementation lead to a growing awareness that culture itself is an issue. In parallel to this personal development contacts with colleague in education worldwide showed a growing diversity of relevant knowledge domains. Where first mainly Ergonomics and Cognitive Psychology contributed, Computer Science and its developing specialism Software Engineering soon showed to be relevant. In the same way Industrial Design joined the field as did Multi Media Design and various artistically grounded design disciplines.. Another continuing basis for growing understanding is the ongoing development of international societies and related conference series in this field. Starting with mostly single country based developments of a user centered focus on artifact design in the "classical" ergonomics, visionaries like Brian Shackel [10] initiated conferences focusing on the relation between human users and the, at that time emerging, computer. In this way, the first European Conference on Cognitive Ergonomics was organized in 1982 in Amsterdam, the first conference on Human factors in Computing systems was in the same year in Gaithersburg, and the first INTERACT was held in 1984 in London. Each of these led to the subsequent foundation of a society: resp., the European Association of Cognitive Ergonomics EACE, ACM's originally mainly North American Special Interest Group on Computer Human Interaction SIGCHI, and the officially international but in fact at the start Europe focused IFIP TC 13 on Human Computer Interaction. Each of these professional societies (with their conference series that currently still are alive and running) started with their own visions and focus and each developed a growing awareness of differences in occupationally as well as geographically different cultural aspects of user centered design.. In fact the history of user centered design (or humancomputer interaction, or cognitive ergonomics) shows the development of the design approach as a movement in different dimensions:. • From the reign of functionality to attention to individual users in context; • from user control to experience and entertainment; and • from a culturally defined cost-benefit goal to perspective on a multitude of design cultures and cultures of use. Lessons from the history of human cultural developments can be applied to the design of computer supported artifacts and facilities. In this contribution we have shown how the focus of user centered design moved from only functionality through the addition of usability and experience to the inclusion of cultural awareness. Design as a profession continues to meet new challenges. Teaching design seems an ideal way to learn: through the diversity of students' cultures and through the continuous changes in technologysupported culture. However, attention to experience and culture does not allow designers to move away from a sound start in analysis, nor does it make explicit design decisions and design space analysis superfluous.

O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O


Mean and Variance of the Sampling Distribution of Particle Swarm Optimizers During Stagnation Abstract-Several theoretical analyses of the dynamics of particle swarms have been offered in the literature over the last decade. Virtually all rely on substantial simplifications, often including the assumption that the particles are deterministic. This has prevented the exact characterization of the sampling distribution of the particle swarm optimizer (PSO). In this paper we introduce a novel method that allows us to exactly determine all the characteristics of a PSO sampling distribution and explain how it changes over any number of generations, in the presence stochasticity. The only assumption we make is stagnation, i.e., we study the sampling distribution produced by particles in search for a better personal best. We apply the analysis to the PSO with inertia weight, but the analysis is also valid for the PSO with constriction and other forms of PSO.

O O O O O B I O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O B O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O