A multi-agent system for collaborative bookmarking In this paper we describe a new distributed collaborative bookmark system, called COWING (for COllaborative Web IndexING system). The COWING system is composed of a set of assistant agents, called WINGS, and a central agent that manages the user's organization. Each user is assisted by a Wing agent that performs two tasks: learning the user's strategy in classifying her/his own bookmarks and interacting with other WING agents in order to fetch new bookmarks that match the local user information need. The most intelligent agents that browse and index sites on the World Wide Web (the Web hereafter) still to be humans. Consequently, an effective way to locate relevant information on the Web is to locate people who are likely to know where to find the searched information [11] . Normally, users save addresses of relevant Web sites in a bookmark directory (or favorites list). Almost all Web browsers available today provide users with bookmaking facility. A major reason behind the popularity of bookmarks is their ease of use. A user's bookmark collection can be a valuable information source for other users. Bookmarks are valuable for two main reasons. First of all, bookmarks are often the results of tedious and hard information searching process. If users are enabled to share others bookmarks they can spare the required information searching effort. Lastly, because bookmarks are explicitly and intentionally added and organized by the user, they give precise evidences about the user information interests. By applying some collaborative filtering algorithms communities of users that share the same interests can be identified. A number of academic and industrial systems have recently tackled the problem of building collaborative or shared bookmarking systems. Systems like Mylynx (http://mylynx.com) enable users to save their bookmarks on a remote server. Users can select if they wish to make certain of their bookmarks public or keep them as a private resource. Other systems such as WebTagger [7] makes the bookmark pool sharable and searchable by a group of users. The GAB system can automatically merge different user's bookmark lists in a single and a seamless hierarchy [11] . Other systems allow to build and identify communities of interests by analyzing users bookmarks. Communities are manually defined in Pharos [2] , semi-automatically identified in GroupMark [10] and computationally identified in KnowledgePump [4] . Amazingly, almost all existing collaborative bookmark management systems seems to ignore major lessons learned in the last decade by the Computer Supported Collaborative Work (CSCW) community [5, 6, 9] . Almost all these systems are built according to a centralized architecture, they pay little or no attention to users privacy protection, they require active user participation and ask users to adapt to the system rather adapting the system to the users. All these are factors the reduce the usability of collaborative application by group of users [9] .. In this article, we outline an original collaborative bookmarking system called CoWing (for Collaborative Web IndexNG) that enables an organized group of users to share their bookmark in an implicit, secure and effective way. By implicit, we mean that users are not required to do extra work to share their bookmarks pools. The only additional work to do is to define other's access rights on their own repositories. A role-based access control service is provided in order to ease this task. Secure sharing refers to the capacity of each user to control who knows what about her/his own bookmark collection. Finally, effectiveness is ensured by recommending users with relevant bookmarks that are computed by applying a distributed collaborative filtering algorithm. Experiments made on synthetic data show that our approach is valid. However, we believe that some enhancements should in order to make the system operational in real work settings. One important issue concerns the cold start problem. The applied recommendation computation approach makes the hypothesis that users have organized their bookmarks in a hierarchy of folders. Each folder has some semantic sense. While lot of users do use hierarchical bookmark structures, some still using flat organization structures [1] . Another related problem is the witnessed low overlapping between different users bookmark repositories [3] . We are working on proposing solutions to these two problems.

O O O O O O O O B O O O O B 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 O B O O O O B O B O O O O O B O O O O B O O O O O O O B O O O O O O O B O O O B O O O O B B I 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 B 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 B 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 B 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 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 B O O O O O O O O O O O B 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 B 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 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 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 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 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 B 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 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 O O O O O 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 O O O O


Bridging the Algorithm Gap: A Linear-time Functional Program for Paragraph Formatting In the constructive programming community it is commonplace to see formal developments of textbook algorithms. In the algorithm design community, on the other hand, it may be well known that the textbook solution to a problem is not the most e cient possible. However, in presenting the more e cient solution, the algorithm designer will usually omit some of the implementation details, thus creating an algorithm gap between the abstract algorithm and its concrete implementation. This is in contrast to the formal development, which usually presents the complete concrete implementation of the less e cient solution.We claim that the algorithm designer is forced to omit some of the details by the relative expressive poverty of the Pascal-like languages typically used to present the solution; the greater expressiveness provided by a functional language allows the whole story to be told in a reasonable amount of space. We therefore hope to bridge the algorithm gap between abstract and concrete implementations, and thereby to facilitate communication between the two communities. The paragraph formatting problem 12] is a favourite example for demonstrating the effectiveness of formal methods, and two particularly convincing derivations can be found in 1, 13] . The algorithms derived in these references are applications of dynamic programming, and their time complexity is O(min(wn; n 2 )), where w is the maximum number of words on a line, and n is the number of words to be formatted.. Among algorithm designers it is well-known that one can solve the paragraph problem in O(n) time, independent of w 7, 8, 9, 10] . The presentations of these linear algorithms This paper is Technical Report CMS-TR-97-03 from the School of Computing and Mathematical Sciences, Oxford Brookes University. It is currently being submitted for publication. do however ignore some details (for instance that the white space on the last line does not count), thus creating an algorithm gap between the abstract algorithm and its concrete implementation. This contrasts with the formal developments cited above, which present concrete code, albeit for a less e cient solution.. This paper is an experiment in bringing formal methods and algorithm design closer together, through the medium of functional programming. It presents a linear-time algorithm for paragraph formatting in a semi-formal style. The algorithm is given as executable code; in fact, the L A T E X le used to produce this paper is an executable Gofer program. In writing this paper we hope to convince the reader that a functional style can be suitable for communicating non-trivial algorithms, without sacri cing rigour or clarity or introducing an algorithm gap.. Of course there exist algorithms that are di cult to express functionally. In fact, it came as a surprise to us that the algorithm presented here can indeed be implemented without resorting to any non-functional language features. One of us (OdM) rst attempted to explain the algorithm (which is very similar to that in 8]) two years ago, and then implemented it in Modula-2; when that program was discussed at the Oxford Problem Solving Club, it met with a lot of disappointment because of the need for destructive updates. Only recently we realised how the algorithm could be expressed functionally. This paper is therefore also a contribution to the ongoing e ort of determining what can be done e ciently in a purely functional style. This paper was an experiment in using a functional language for presenting a non-trivial algorithm in a semi-formal style. We personally believe that for a large class of problems, this style of presentation is adequate, at once closing the algorithm gap and reconciling algorithm design with formal methods. The comparison with the hand-coded conventional implementations indicates that for non-trivial algorithms like the one presented here, the performance gap is rather small too. There are, however, two unsatisfactory aspects of the material presented here:. First, we are not entirely satis ed with the semi-formal style of this paper. Up to the introduction of trim, the program derivation is absolutely standard, and no invention is involved in synthesizing the program. That part of the paper could easily be cast in calculational form, given the right machinery. The invention of k, and its role iǹ forecasting the future', is however rather ad hoc, and escapes, at present, an elegant calculational treatment. This is unsatisfactory, especially since the technique seems more generally applicable. Second, we are very dissatis ed with the way one has to program di erencing in a functional language. In a sense this is the least interesting part of the programming process, and yet it is quite error-prone. Moreover, di erencing destroys some of the delightful elegance that characterises the functional expression of the standard algorithm. Meta-programming features in the spirit of Paige's invariant construct 14] might be used to circumvent this problem, but unfortunately we do not know of any modern functional language that supports those ideas.. Finally, the algorithm presented here is representative of a large class of ingenious algorithms, collectively known under the name sparse dynamic programming 7]. It would be nice to see whether a generic treatment of this class of algorithms is possible, in the style of 6]. It seems that such a generic approach is within reach, but we have not investigated this in any depth. The text processing package given below is explained in 5]. It provides primitives for converting between strings and lines, lines and words, and paragraphs and lines. In each case, the forward direction can be programmed using the generic solution do, and the backward conversion using undo. The de nitions of unlines, lines, unwords and words have been commented out because they are already de ned in the standard Gofer prelude. The function id is the identity function.

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 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 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 B I 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 O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O 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 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 O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O


Code reordering on limited branch offset Since the 1980's code reordering has gained popularity as an important way to improve the spatial locality of programs. While the effect of the processor's microarchitecture and memory hierarchy on this optimization technique has been investigated, little research has focused on the impact of the instruction set. In this paper, we analyze the effect of limited branch offset of the MIPS-like instruction set [Hwu et al. 2004 [Hwu et al. , 2005 on code reordering, explore two simple methods to handle the exceeded branches, and propose the bidirectional code layout (BCL) algorithm to reduce the number of branches exceeding the offset limit. The BCL algorithm sorts the chains according to the position of related chains, avoids cache conflict misses deliberately and lays out the code bidirectionally. It strikes a balance among the distance of related blocks, the instruction cache miss rate, the memory size required, and the control flow transfer. Experimental results show that BCL can effectively reduce exceeded branches by 50.1%, on average, with up to 100% for some programs. Except for some programs with little spatial locality, the BCL algorithm can achieve the performance, as the case with no branch offset limitation. The ever-increasing gap in performance between memory and processor introduced the need for fully utilizing the existing memory hierarchy. Since the 1980's, code reordering has gained popularity as an important way to improve the spatial locality of the programs without introducing any hardware cost. Code reordering successfully reduces the instruction cache miss rate and the execution time of the programs, as well as power consumption. 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 direct 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 from the Publications Dept., ACM, Inc., 2 Penn Plaza, Suite 701, New York, NY 10121-0701 USA, fax +1 (212) 869-0481, or permissions@acm.org. The reordering effect is influenced by memory hierarchy and the microarchitecture of the processor. Another point that may have been ignored is the instruction set. A flexible instruction set will provide great support for code reordering, while some limitations of the instruction set, such as a short branch offset, will decrease the benefits.. Our study is based on Godson 2C [Hwu et al. 2005] processor, the first general-purpose microprocessor developed in China. It is a 64-bit, 4-issue, outof-order execution RISC processor. It implements MIPS-like instruction set, which includes a MIPS-III instruction set and several newly defined instructions. The 16-bit branch offset of the branch instructions in MIPS-III sets limitations to reordering optimization.. The rest of this paper is organized as follows: in Section 2, we discuss the previous work on code reordering. Section 3 describes the limitation of branch offset on code reordering of SPEC2000 integer benchmark and discusses the factors that lead to exceeded branches. In Section 4, we give two simple methods to handle the exceeded branches. We then propose the bidirectional code layout (BCL) algorithm to reduce the number of exceeded branches and analyze the performance improvement. Finally Section 5 concludes. Previous code reordering algorithms mainly focused on reducing instruction cache miss rate and later on reducing control-flow transfers in the context of multi-issue processors. Yet for larger benchmarks and system applications, such as OSes and databases, applying reordering algorithm might cause the branch offset to exceed the limit on some instruction sets, such as MIPS. This paper explores two simple ways (direct jumping and distant jumping) to handle the exceeded branches and proposes the bidirectional code layout (BCL) algorithm to minimize the number of exceeded branches. The algorithm carefully keeps a balance on four main issues: the distance of related blocks, the instruction cache miss rate, the memory size required, and the control-flow transfer of the code. Results show that the BCL can effectively reduce the number of exceeded branches by 50.1%, on average. For programs exhibiting high spatial locality, the reduction can reach up to 80-100%. BCL improves program spatial locality, decreases cache miss rate, control-flow transfer, and execution time of the program. When compared with the ideal case, experimentation shows that, except for some large programs, BCL can achieve ideal performance. Many reordering algorithms have been proposed to improve instruction cache performance.. Early work, such as McFarling [1989] , proposes a basic block-remapping algorithm. They use basic block execution frequency as the criterion for reordering and incorporate instruction exclusion to increase instruction cache hit rate. Pettis and Hansen [1990] use edge execution frequency as a reordering criterion (the PH algorithm) after showing that the hottest basic blocks do not necessarily account for the hottest execution trace. The edges between the basic blocks contain the local information of the execution path, so the algorithm surpasses the previous work by exploiting more spatial locality. Using basic block reordering, procedure ordering, and procedure splitting, the proposed algorithm builds a call graph by traversing edges in decreasing edge weight order with a closest-is-best strategy. Pettis and Hansen's work serves as the basis for many later code-reordering algorithms [Gloy et al. 1998; Cohn and Lowney 2000; Ramirez et al. 2005] . Hashemi et al. [1997] take a new approach to reduce cache conflict misses by proposing a cache-line coloring algorithm. The algorithm keeps track of the cache blocks (colors) used by each procedure to take into consideration the call graph, procedure size, and cache line size. Their work can accurately map procedures in a "popular call graph", even if the size of the graph is larger than the size of the instruction cache.. Unlike Hashemi et al. [1997] , Kalamatianos et al. [1998] take the higherorder generation conflict misses into consideration. Their work uncovers conflict misses between procedures, many procedures away on a call chain, as well as on different call chains. The proposed technique exploits procedure-level temporal interaction, using a structure called a conflict miss graph (CMG). In CMG, every edge weight is an approximation of the worst-case number of misses between two competing procedures. The edge weights are used for color-based mapping to reduce conflict misses between procedures lying either in the same or in different call chains.. Both Hashemi et al. [1997] and Kalamatianos et al. [1998] work at procedure level. They avoid basic block reordering because this step introduces extra code and complicates compilation. However, basic block reordering is advantageous, as suggested in both papers: it will produce more compact procedure body and facilitate the coloring step by reducing the actual number of colors required by each procedure. Parameswaran et al. [2001] take a heuristic approach when relocating the selected sections of code within the main memory to reduce the conflict misses. Code is reordered by examining the execution frequency of basic blocks and by placing code segments with high execution frequency next to each other within the cache. Parameswaran et al. [2004] improve the work of Parameswaran et al. [2001] by proposing a methodology that can be applied for configurations with cache line size or associativity greater than one. Parameswaran et al. [2001; work on basic block level. Their work is different from the PH algorithm in that they first place the basic blocks in the cache, then map them into main memory. In order to reduce conflict misses, the blocks are spread apart in the memory. The gaps will be filled by later blocks, but the memory size required by the program is inevitably increased. In addition to the issues of memory size, this approach will not fully exploit the fetch efficiency of the processors. When hot blocks are packed together, it is possible that the fetch of one hot block will fetch in the first several instructions of the next hot block. However, when these blocks are far away in memory, the fetch width will not be fully utilized.. The code-reordering techniques reviewed so far all belong to static time optimizations. Recently, researchers have been exploring other optimizing opportunities through runtime optimization [Bala et al. 2000; Lu et al. 2004] . The speedup obtained by the method proposed by Bala et al. [2000] is comparable to that of the best static optimization. Because the analysis and optimization of the program both incur runtime overhead, it is hard to achieve an additional improvement as static optimization has achieved. Lu et al. [2004] utilize the performance counter of itanium-64 to reduce the overhead of program analysis, obtaining a speedup of about 4%, in the best case.. These previous works mainly focus on the benefit that code reordering can introduce. In this paper, we present the influence of the instruction set on reordering optimization and our way of dealing with the problem.

B I 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 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 B I 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 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 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 B I 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 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 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 O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O 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


Weak

signal

identification

with

semantic

web

mining

We

investigate

an

automated

identification

of

weak

signals

according

to

Ansoff

to

improve

strategic

planning

and

technological

forecasting.

Literature

shows

that

weak

signals

can

be

found

in

the

organization's

environment

and

that

they

appear

in

different

contexts.

We

use

internet

information

to

represent

organization's

environment

and

we

select

these

websites

that

are

related

to

a

given

hypothesis.

In

contrast

to

related

research,

a

methodology

is

provided

that

uses

latent

semantic

indexing

(LSI)

for

the

identification

of

weak

signals.

This

improves

existing

knowledge

based

approaches

because

LSI

considers

the

aspects

of

meaning

and

thus,

it

is

able

to

identify

similar

textual

patterns

in

different

contexts.

A

new

weak

signal

maximization

approach

is

introduced

that

replaces

the

commonly

used

prediction

modeling

approach

in

LSI.

It

enables

to

calculate

the

largest

number

of

relevant

weak

signals

represented

by

singular

value

decomposition

(SVD)

dimensions.

A

case

study

identifies

and

analyses

weak

signals

to

predict

trends

in

the

field

of

on-site

medical

oxygen

production.

This

supports

the

planning

of

research

and

development

(R&D)

for

a

medical

oxygen

supplier.

As

a

result,

it

is

shown

that

the

proposed

methodology

enables

organizations

to

identify

weak

signals

from

the

internet

for

a

given

hypothesis.

This

helps

strategic

planners

to

react

ahead

of

time.

A

successful

planning

of

research

and

development

(R&D)

requires

an

overview

on

current

and

future

environmental

conditions

(Choi,

Kim,

Park,

to

predict

the

arising

of

new

technological

approaches

-the

technology

push

(Thorleuchter,

and

to

predict

changes

in

consumers'

needs

-the

market

pull

(Thorleuchter,

Van

den

Poel,

Prinzie,

by

time.

Literature

introduces

a

concept

of

environmental

scanning

(Abebe,

Angriawan,

Tran,

Tabatabei,

that

enables

this

prediction

by

extracting

and

analyzing

information

from

the

environment

especially

to

identify

events,

trends,

and

relationships

(Choo

Auster,

The

concept

of

environmental

scanning

realizes

a

predictive

view

by

applying

a

weak

signal

approach

(Ansoff,

A

weak

signal

is

an

event

or

a

development

where

an

accurate

estimation

of

its

impact

on

a

target

(e.g.

on

organization's

R&D)

cannot

be

given

because

a

single

weak

signal

probably

appears

by

chance

(Ansoff,

However,

identifying

several

_______________________________________________________________________

weak

signals

from

different

sources

aiming

at

a

common

target

is

probably

a

hind

that

this

target

will

be

impacted

in

future.

Thus,

environmental

changes

can

be

predicted

in

advance

that

show

future

problem

areas

and

opportunities.

This

enables

the

use

of

weak

signals

as

early

warning

system

for

strategic

planning..

As

shown

by

Decker,

Wagner,

and

Scholz

the

internet

is

a

valuable

information

source

for

an

environmental

scanning

and

thus,

for

detecting

weak

signals.

A

website

or

a

document

itself

is

normally

not

a

weak

signal

however;

it

might

be

that

a

website

or

a

document

contains

a

textual

pattern

that

represents

a

weak

signal

(Uskali,

Thus,

a

full

text

access

to

information

in

the

internet

is

necessary

to

identify

these

weak

signals.

Performance

reasons

based

on

the

large

number

of

internet

websites

enforces

a

(semi-)

automated

approach

e.g.

web

mining

rather

than

a

human

based

manual

scanning

(Gericke

et

al.,

Tabatabei,

Especially

for

R&D

planning,

information

about

three

areas

has

to

be

considered

(Thorleuchter,

Van

den

Poel,

Prinzie,

the

science

for

new

technological

aspects

(technology

push),

the

users

for

new

product

ideas

(market

pull),

and

the

industry

for

new

product

development

aspects

(the

link

between

technology

and

market).

Technological

research

results

are

described

in

articles

published

in

scientific

journals,

in

conference

proceedings,

and

in

various

scientific

document

repositories.

In

recent

years,

access

to

the

full

text

of

these

articles

using

the

internet

becomes

much

easier

because

of

the

increased

number

of

open

access

journals

and

articles

available

today.

Further,

some

publishers

(e.g.

Elsevier)

offer

open

archives

that

enable

a

full

text

access

to

articles

after

a

specific

embargo

period

of

time.

Additionally,

some

publishers

allow

manuscript

posting

where

accepted

manuscripts

can

be

posted

on

authors'

personal

or

institutional

websites.

The

Google

Books

initiative

enables

full

text

access

to

selected

pages

of

conference

proceedings

published

in

books.

This

shows

that

in

contrast

to

several

years

ago,

the

full

text

access

to

a

large

number

of

scientific

articles

is

available

today

using

the

internet

(Thorleuchter,

Van

den

Poel,

Prinzie,

Information

about

new

product

development

can

be

found

on

companies'

websites

and

in

business

magazines.

Today,

many

magazines

publish

articles

on

their

websites

and

thus,

a

full

text

access

on

this

information

is

also

available.

Patents

as

representative

for

both,

scientific

results

and

industrial

products

are

also

published

with

full

text

in

the

internet

(Thorleuchter,

Van

den

Poel,

Prinzie,

Information

about

new

product

ideas

from

the

users

can

be

found

in

internet

forums,

blogs,

micro

blogs,

review

sites

etc.

The

full

text

access

to

this

information

using

the

internet

is

possible,

too.

Overall,

the

planning

of

R&D

can

be

supported

by

an

environmental

scanning

and

weak

signals

detection

using

the

full

text

information

in

the

internet

today..

The

proposed

methodology

uses

semantic

text

classification

combined

with

an

automated

web

mining

approach

for

environmental

scanning

and

weak

signals

detection.

This

is

in

contrast

to

related

research,

where

knowledge

structure

based

text

classification

approaches

are

used

(Yoon,

The

use

of

semantic

text

classification

considers

the

fact,

that

weak

signals

are

formulized

by

different

persons,

in

different

languages,

and

in

different

contexts.

It

might

be

that

two

textual

patterns

representing

weak

signals

are

related

to

a

specific

topic

even

if

they

do

not

share

a

common

word.

This

relationship

can

only

be

identified

with

semantic

approaches

that

consider

aspects

of

meaning

rather

than

aspects

of

words

(Thorleuchter

Van

den

Poel,

This

work

proposes

a

new

methodology

that

enables

the

automated

identification

of

weak

signals

for

strategic

forecasting.

Weak

signals

are

extracted

from

an

organization's

environment

as

represented

by

internet

information.

Based

on

a

given

hypothesis

about

the

future,

related

websites

are

identified

and

textual

information

is

extracted.

LSI

with

a

new

weak

signal

maximization

approach

is

applied

on

this

textual

information

to

identify

weak

signals.

The

identified

weak

signals

describe

trends

and

future

developments

and

it

is

analyzed

whether

they

are

in

accordance

to

the

given

hypothesis

or

not.

The

websites

standing

behind

an

identified

weak

signal

can

be

analyzed

concerning

language

aspects

to

identify

the

spacial

distribution

of

this

weak

signal.

Further

the

website

address

also

can

be

used

to

identify

relevant

organizations

or

companies

related

to

the

weak

signal.

This

enables

strategic

planners

to

identify

new

trends,

the

spatial

distribution

of

these

trends,

and

the

corresponding

players

(e.g.

competitive

organizations)

ahead

of

time..

Future

work

should

focus

on

the

optimization

of

the

parameters

by

applying

a

parameter

selection

procedure.

This

enables

an

improved

weak

signal

maximization

approach.

Further,

the

development

of

weak

signals

over

time

can

be

investigated

by

this

methodology.

For

this,

web

mining

has

to

retrieve

the

data

at

different

points

of

time.

An

optimal

value

of

k

is

identified

with

Thus,

semantic

textual

patterns

are

identified.

Three

patterns

can

be

identified

that

are

impacted

by

more

than

of

all

documents.

Eight

patterns

are

identified

where

the

percentage

of

the

impacted

documents

is

between

and

Further,

two

strong

signals

and

three

weak

signals

have

been

identified.

Comparing

them

to

the

hypothesis

shows

that

the

strong

signals

are

not

related

to

the

hypothesis.

This

is

because

they

deal

about

cryogenic

air

separation

techniques

and

the

transportation

of

high

pressure

gas

cylinders..

Two

of

the

three

weak

signals

are

related

to

the

hypothesis.

The

first

weak

signal

with

impacted

documents

describes

various

aspects

of

PSA

based

oxygen

generators

producing

purity.

This

is

in

accordance

to

the

first

sentence

of

the

hypothesis..

The

second

weak

signal

based

on

a

small

number

of

impacted

documents

and

it

shows

a

new

technological

development

that

enables

PSA

based

oxygen

generators

to

produce

medical

oxygen

with

purity

in

a

multi-stage

process.

The

increase

of

purity

can

be

realized

with

low

additional

costs.

Oxygen

generators

based

on

this

technique

can

be

used

in

Europe

as

well

as

in

many

non-European

states

and

they

are

independent

of

future

legislation

amendments.

This

weak

signal

is

not

in

accordance

to

the

first

sentence

of

the

hypothesis

because

in

future,

it

might

be

that

purity

PSA

generators

are

increasingly

used

for

on-site

medical

oxygen

production.

The

number

of

documents

with

impact

on

the

first

and

second

weak

signal

is

sorted

by

language

(see

Table

e.g.

documents

in

English

language

(EN))

have

an

impact

on

the

first

weak

signal.

Further

of

all

documents

with

impact

on

the

first

weak

signal

are

English

language

documents.

They

are

compared

to

the

distribution

of

all

documents

e.g.

of

all

documents

are

English

language

documents.

Table

shows

that

more

English

and

French

websites

are

related

to

the

first

weak

signal

than

it

would

be

expected

(increase

from

to

and

from

to

In

contrast

to

this,

Romanian

websites

do

not

mention

the

weak

signal

as

often

as

it

would

be

expected

(decrease

from

to

Table

also

shows

that

on

Czech

and

Polish

websites

the

purity

PSA

medical

oxygen

on-site

production

is

seldom

mentioned

related

to

the

number

of

Czech

and

Polish

websites

in

total.

Further,

it

shows

that

information

about

on-site

medical

oxygen

generators

with

purity

often

can

be

found

on

English

and

French

websites.

This

is

not

in

accordance

to

the

second

sentence

of

the

hypothesis

because

the

topic

is

not

equally

distributed

in

European

states..

The

URLs

of

the

documents

with

impact

on

the

first

weak

signal

are

also

evaluated

concerning

companies'

websites.

As

a

result,

the

following

list

of

companies

is

identified:

'Linde,

Air

Liquide,

Praxair,

Messergroup,

Pangas,

Westfalen-ag,

Basigas,

DAEnergietechnik,

Iga-gas,

Airco-Druckluft,

Cryotec,

Airtexx,

IGS,

Oxymat,

Oxyplus,

Oxair'.

This

list

contains

established

medical

oxygen

suppliers

as

well

as

companies

in

the

domain

of

machinery

and

plant

engineering.

This

is

in

accordance

to

the

third

sentence

of

the

hypothesis.

B I O O O B I 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 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 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 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 B I O B 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 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 I 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 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 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 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 B I 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 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 B I 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 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 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 B I 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 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 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 O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O 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


Fast and loose reasoning is morally correct Functional programmers often reason about programs as if they were written in a total language, expecting the results to carry over to non-total (partial) languages. We justify such reasoning.Two languages are defined, one total and one partial, with identical syntax. The semantics of the partial language includes partial and infinite values, and all types are lifted, including the function spaces. A partial equivalence relation (PER) is then defined, the domain of which is the total subset of the partial language. For types not containing function spaces the PER relates equal values, and functions are related if they map related values to related values.It is proved that if two closed terms have the same semantics in the total language, then they have related semantics in the partial language. It is also shown that the PER gives rise to a bicartesian closed category which can be used to reason about values in the domain of the relation. It is often claimed that functional programs are much easier to reason about than their imperative counterparts. Functional languages satisfy many pleasing equational laws, such as. (1) * This work is partially funded by the Swedish Foundation for Strategic Research as part of the research programme "CoverCombining Verification Methods in Software Development," and by the Royal Swedish Academy of Sciences' funds.. 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. (fst x, snd x) = x, and (2). and many others inspired by category theory. Such laws can be used to perform very pleasant proofs of program equality, and are indeed the foundation of an entire school of program transformation and derivation, the Squiggolers [BdM96, Jeu90, BdBH + 91, MFP91] . There is just one problem. In current real programming languages such as Haskell [PJ03] and ML [MTHM97] , they are not generally valid.. The reason these laws fail is the presence of the undefined value ⊥, and the fact that, in Haskell, ⊥, λx.⊥ and (⊥, ⊥) are all different (violating the first two laws above), while in ML, ⊥, (x, ⊥) and (⊥, y) are always the same (violating the third).. The fact that these laws are invalid does not prevent functional programmers from using them when developing programs, whether formally or informally. Squiggolers happily derive programs from specifications using them, and then transcribe the programs into Haskell in order to run them, confident that the programs will correctly implement the specification. Countless functional programmers happily curry or uncurry functions, confident that at worst they are changing definedness a little in obscure cases. Yet is this confidence justified? Reckless use of invalid laws can lead to patently absurd conclusions: for example, in ML, since (x, ⊥) = (y, ⊥) for any x and y, we can use the third law above to conclude that x = y, for any x and y. How do we know that, when transforming programs using laws of this sort, we do not, for example, transform a correctly terminating program into an infinitely looping one?. This is the question we address in this paper. We call the unjustified reasoning with laws of this sort "fast and loose", and we show, under some mild and unsurprising conditions, that its conclusions are "morally correct". In particular, it is impossible to transform a terminating program into a looping one. Our results justify the hand reasoning that functional programmers already perform, and can be applied in proof checkers and automated provers to justify ignoring ⊥-cases much of the time.. In the next section we give an example showing how it can be burdensome to keep track of all preconditions when one is only interested in finite and total values, but is reasoning about a program written in a partial language. Section 3 is devoted to defining the language that we focus on, its syntax and two different semantics: one set-theoretic and one domain-theoretic. Section 4 briefly discusses partial equivalence relations (PERs), and Section 5 introduces a PER on the domain-theoretic semantics. This PER is used to model totality. In Section 6 a partial surjective homomorphism from the set-theoretic semantics to the quotient of the domain-theoretic semantics given by the PER is exhibited, and in Section 7 we use this homomorphism to prove our main result: fast and loose reasoning is morally correct. Section 8 provides a more abstract result, showing how the PER gives rise to a category with many nice properties which can be used to reason about programs. We go back to our earlier example and show how it fits in with the theory in Section 9. We also exhibit another example where reasoning directly about the domain-theoretic semantics of a program may be preferable (Section 10). Section 11 recasts the theory for a strict language, Section 12 discusses related work, and Section 13 concludes with a discussion of the results and possible future extensions of the theory.. Most proofs needed for the development below are only sketched; full proofs are available from Danielsson's web page [Dan05] . The notion of totality used above is very similar to that used by Scott [Sco76] . Aczel's interpretation of Martin-Löf type theory [Acz77] is also based on similar ideas, but types are modelled as predicates instead of PERs. That work has been extended by Smith [Smi84] , who interprets a polymorphic variant of Martin-Löf type theory in an untyped language which shares many properties with our partial language L2; he does not consider coinductive types or seq, though. Beeson considers a variant of Martin-Löf type theory with W -types [Bee82] . W -types can be used to model strictly positive inductive and coinductive types [Dyb97, AAG05] . Modelling coinductive types can also be done in other ways [Hal87] , and the standard trick of coding non-strict evaluation using function spaces (force and delay) may also be applicable. Furthermore it seems as if Per Martin-Löf, in unpublished work, considered lifted function spaces in a setting similar to [Smi84] .. The method we use to relate the various semantic models is basically that of Friedman [Fri75] ; his method is more abstract, but defined for a language with only base types, natural numbers and functions.. Scott mentions that a category similar to PER∼ is bicartesian closed [Sco76] .. There is a vast body of literature written on the subject of Aczel interpretations, PER models of types, and so on, and some results may be known as folklore without having been published. This text can be seen as a summary of some results, most of them previously known in one form or another, that we consider important for reasoning about functional programs. By writing down the results we make the details clear. Furthermore we apply the ideas to the problem of reasoning about programs, instead of using them only to interpret one theory in another. This is quite a natural idea, so it is not unreasonable to expect that others have made similar attempts. We know about [Dyb85] , in which Dybjer explains how one can reason about an untyped partial language using total methods for expressions that are typeable (corresponding to our total values). We have not found any work that discusses fast and loose reasoning for strict languages.. Another angle on the work presented here is that we want to get around the fact that many category-theoretic isomorphisms are missing in categories like CPO. For instance, one cannot have a cartesian closed category with coproducts and fixpoints for all morphisms [HP90] . In this work we disallow all fixpoints except well-behaved ones that can be expressed as folds and unfolds. Another approach is to disallow recursion explicitly for sum types [BB91] . The MetaSoft project (see e.g. [BT83, Bli87] ) advocated using "naive denotational semantics", a denotational semantics framework that does not incorporate reflexive domains. This means that some fixpoints (both on the type and the value level) are disallowed, with the aim that the less complex denotational structures may instead simplify understanding.. A case can be made for sometimes reasoning using a conservative approximate semantics, obtaining answers that are not always exactly correct [DJ04, discussion] . Programmers using languages like Haskell often ignore issues related to partiality anyway, so the spirit of many programs can be captured without treating all corner cases correctly. The methods described in this paper in a sense amount to using an approximate semantics, but with the ability to get exactly correct results by translating results involving ∼ to equalities with preconditions.. There is some correspondence between our approach and that of total and partial correctness reasoning for imperative programs, for example with Dijkstra's wp and wlp predicate transformers [Dij76] . In both cases, simpler approximate methods can be used to prove slightly weaker results than "what one really wants". However, in the w(l)p case, conjoining partial correctness with termination yields total correctness. In contrast, in our case, there is in general no (known) simple adjustment of a fast and loose proof to make a true proof of the same property. Nevertheless, the fast and loose proof already yields a true proof of a related property.. Sometimes it is argued that total functional programming should be used to avoid the problems with partial languages. Turner does that in the context of a language similar to the total one described here [Tur96] , and discusses methods for circumventing the limitations associated with mandatory totality.

O O O O O O O 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 B O O O O O O O O O O O O O O O O O B I 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 O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O 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 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 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 O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O 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 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 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 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 B I 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 O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O 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 O O O O O O O O O O O O O O O O O O O O O O O O O O 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 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


Applying adaptation design patterns Dynamic adaptation may be used to prevent software downtime while new requirements and responses to environmental conditions are incorporated into the system. Previously, we studied over thirty adaptation-related projects to develop twelve adaptation-oriented design patterns that can be leveraged from one adaptive system to another. This paper presents a case study in which we apply our adaptation patterns in the design of a dynamically adaptive news web server. This pattern-based design separates the functional logic from the adaptive logic, resulting in a system that supports dynamic adaptation and is easier to maintain and analyze. Furthermore, to address assurance concerns, we applied automated formal verification techniques to ensure instantiated pattern models satisfy invariant properties specified in each adaptation pattern. Dynamic adaptation may be used to prevent costly software downtime while new requirements and responses to environmental conditions are incorporated into the system. A current lack of reusable design expertise that can be leveraged from one adaptive system to another complicates the design, verification, and validation of adaptive and autonomic systems. Previously, we studied over thirty adaptationrelated projects to develop adaptation-oriented design patterns [3] . Each adaptation pattern comprises key fields that specify when to apply the pattern, captures the generalized solution through UML diagrams, gives templates for specifying constraints that must be satisfied by the instantiated models, and enumerates potential consequences as a result of applying the pattern. These adaptation patterns can be categorized according to their main objective as monitoring, decision-making, and reconfiguration. Moreover, each adaptation pattern can be selectively combined with other design patterns as required.. This paper overviews ZAP.com, a re-engineered version of Z.com, the adaptive news web server originally presented by Garlan et al. [1] . Both applications were designed to address the "slashdotting effect" where news sites that are widely publicized are unable to handle the large number of content requests, and either suffer from high latency or are unable to serve content altogether. We built ZAP.com from scratch by instantiating combinations of our monitoring, decisionmaking, and reconfiguration design patterns. Specifically, our monitoring patterns provide an infrastructure to observe both an application and its environment. Similarly, our decision-making patterns focus on interpreting monitoring data and selecting reconfiguration plans when appropriate. Lastly, our reconfiguration patterns specify the steps required to safely reconfigure the application at run time.. From this case study, we see that our collection of adaptation patterns provide a valuable resource for developers seeking to leverage adaptive design experience. For instance, our patterns facilitate the development of systems amenable to change by separating the functional logic from the adaptive logic. Similarly, developers can select and instantiate adaptation patterns that will be required at run time, potentially avoiding applications bloated with adaptive functionality that may not be required. Moreover, to address assurance concerns, developers can leverage automated formal verification tools, such as Hydra [2] , to ensure instantiated models satisfy the properties specified in each pattern. For this case study, we augmented ZAP.com's business logic with monitoring, decision-making, and dynamic reconfiguration capabilities by applying our adaptation patterns. Since the resulting design separates the functional logic from the adaptive logic, it is possible to extend the functionality of ZAP.com or to substitute our patterns without severely impacting the overall application. Furthermore, we can assure that ZAP.com will not reach an inconsistent state as a result of a reconfiguration by verifying the instantiated patterns satisfy specific safety and liveness properties. We also note that, in general, developers should leverage adaptationoriented frameworks [1] when the application's context is compatible with the framework's services. Nonetheless, if the application's context and adaptation needs differ significantly from the existing adaptation-oriented frameworks, then our adaptation patterns may provide a more flexible development alternative.

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 O O O O O O O O O O O O O O O O O O O O O O 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 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 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 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


Some Compartmentalized Secure Task Assignment Models for Distributed Systems Abstract-This paper formulates abstract problems of assigning subtasks to agents (processors) in a distributed system with a goal that they can perform its global task efficiently. The paper models the distributed system with a graph that describes the communication capabilities of the constituting agents. This graph is referred to as the "organizational graph." In addition, the desired task-performing activity is modeled with another graph describing the required communications. Then, a few variants of the task assignment problem are formulated with potentially conflicting objectives (or constraints) of load balancing and communication costs. For some of these variants this paper provides efficient algorithms that solve the assignment problem. Some problems are proven NP-complete, and some others are left open. This paper formulated a new class of design problems for distributed systems. We have derived solution procedures for some of these design problems, and we have seen that another variation leads to NP-hard problems. It is believed that these formulations capture some generic features of distributed system design problems.

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 O O O O O O O O O O O O O O O O O O O O O O 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 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 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


Energy efficient distributed image compression in resource-constrained multihop wireless networks Abstract-Efficient compression and transmission of images in a resource constrained multihop wireless network is considered. Distributed image compression is proposed as a means to overcome the computation and/or power limitation of individual nodes by sharing the processing of tasks. It has the additional benefit of extending the overall lifetime of the network by distributing the computation load among otherwise idle processors. Two design alternatives for energy efficient distributed image compression are proposed and investigated with respect to energy consumption and image quality. Simulation results show that the proposed scheme prolongs the system lifetime at a normalized total energy consumption comparable to centralized image compression. Advances in visual sensors [1] , [2] and wireless communication have enabled the development of low-cost, low-power visual multihop wireless networks, which have recently emerged for a variety of applications, including environmental and habitat monitoring, target tracking and surveillance [3] , [4] . However, representing visual data requires a large amount of information, leading to high data rates, which in turn requires high computation and communication energy. Consequently, visual sensor networks present several challenges beyond those common to low data rate sensing, such as acoustics, temperature or pressure.. We consider compressing and transmitting images in a multihop wireless network. We focus on the design and performance evaluation of distributed image compression algorithms. Distributed image compression in sensor networks is beneficial for two common scenarios. One scenario is when nodes have extremely constrained computation power. Hence, any single node may not have sufficient computation power to completely compress a large raw image. In this case, a distributed method to share the processing task is necessary. Another scenario is that even when nodes are not extremely computation power constrained, but are battery operated, distributing the computation load among otherwise idle processors of other nodes extends the overall lifetime of the network.. In this research, we have made a first attempt at the design and performance evaluation of distributed image compression in energy constrained multihop wireless (e.g. ad hoc or sensor) networks. By exploiting the characteristics of the Discrete Wavelet Transform (DWT), we propose a distributed image compression scheme where nodes compress an image while forwarding it to the destination subject to a specific image quality constraint. In particular, we propose two data exchange methods of distributed wavelet transform and investigate their performance in terms of energy consumption and image quality over a multihop wireless network. Simulation results show that our scheme prolongs the system lifetime by up to 4 times and has a total energy consumption comparable to the centralized algorithm.. In Section II, we examine related work. The system model is described in Section III. Section IV introduces the distributed image compression schemes. Simulations of the proposed schemes are presented in Section V. We conclude the paper in Section VI. Up to our knowledge, distributed image compression in wireless ad hoc networks has not been studied in the literature. However, our work has been inspired by a variety of other research efforts. We describe below some of the ideas and basic concepts that inspired our work, and reflect on how our work relates to current research in the area of sensor network applications.. While early research efforts in wireless sensor networks did not investigate the issues of node collaboration, focusing more on issues in the design and packaging of small, wireless devices [5] , [6] , more recent efforts (e.g. [7] , [8] ) have considered node collaboration issues such as data "aggregation" or "fusion". Our approach of distributed image compression falls within the domain of techniques that apply the concept of in-network processing, i.e. processing in the network by computing over the data as it flows through the nodes. It is worth noting that current aggregation functions (e.g., "maximum" and "average" [7] ) are limited to scalar data. Our approach can be viewed as an extension to vector data aggregation. Previous distributed signal processing/compression problems (e.g. [9] , [10] ) exploit correlations between data at close-by sensors in order to jointly compress or fuse the correlated information resulting in savings in communication energy. Fusion of correlated images is not discussed in this paper.. In parallel distributed computing theory [11] , a problem (or task) is divided into multiple sub-problems (or sub-tasks) of smaller size (in terms of resource requirements). Every node solves each subproblem by running the same local algorithm, and the solution to the original problem is obtained by combining the outputs from the different nodes. Our approach to the design of distributed image compression is similar in concept, in that we distribute the task of image encoding/compression to multiple smaller image encoding/compression sub-tasks. However, a key difference is that distributed computation theory typically focuses on maximizing the speed of execution of the task while our primarily concern here is reducing the total energy consumption subject to a required image quality.. Thus, our proposed approach of image compression intersects with the literature on parallel wavelet transform, which primarily focuses on parallel DWT on special purpose hardware (e.g., application specific VLSI architectures [12] , FPGAs [13] , DSPs [14] ) or general purpose multiprocessor systems [15] , [16] . The difference, of course, is that previous parallel wavelet transform research assumes the energy cost of data movement between processors to be zero or very small compared to the wavelet transform computation. This assumption is no longer valid in multihop wireless networks due to costly wireless communication among nodes. Furthermore, the main objective of previous parallel wavelet transform is to speedup the transform. Wireless nodes operating on battery power will possibly have their primary objective as the conservation of their energy reserves rather than algorithm run time.. Distributed Fast Fourier Transform (FFT) in a sensor network was considered in [17] . Our work on DWT is similar in spirit, in the sense that FFT and DWT are two signal processing techniques. However, our problem has two additional dimensions. First, DWT is just one component of the image compression and transmission problem, and in that sense our problem includes more complex network-wide challenges. Second, while the spectrum of possible outcomes of an FFT is limited, in the sense that the FFT is either successfully computed or not, the image encoding and transmission problem offers a wide continuum of solutions in terms of the received image quality.. Recently, applications of classical image processing techniques in sensor networks have gained a lot of interest for the parallels between image processing and sensor networks. By mapping individual sensors as pixels in an image, [19] examined cleaning of uncorrelated sensor noise, and the decentralized detection of edges. Ganesan et al. [20] have proposed a generalized hierarchical architecture for multiresolution querying of regularly placed sensor networks that is based on wavelet transforms. Servetto [21] also exploits wavelet transforms to decorrelate sensor data to address the sensor broadcast problem where every sensor observes only one pixel. These works focus on the correlation between sensor nodes. In this paper, we consider nodes observing an image instead of a pixel and investigate the problem of compressing and transmitting images in sensor networks.. A comment regarding our previous work on image compression in sensor networks is in order. Traditionally, maximal image compression (source coding) is implemented at the source in order to reduce the number of bits transmitted thus reducing the communication energy. The goal of our previous work [18] is to minimize the overall energy consumption of the network by computing the optimal compression parameters as a function of the network density. (It turns out that maximal compression at the source is not always optimal). Centralized image compression was used at the source nodes which may limit the lifetime of the network. Distributed image compression was not discussed in [18] .. Finally, we believe it is appropriate to also mention some of the projects related to visual sensor networks. In [22] , a data centric routing protocol is proposed for efficient image retrieval in wireless ad hoc networks by using metadata of images. The issue of the transmission/encoding of the image, once located, is not studied. A topology control approach to maximize the network lifetime of a wireless video surveillance network by arranging nodes location is presented in [23] .

B I B B I O O O O O O O O O O O O O O O O O O O O B 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 B I B 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 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 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 B B I O B B I 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 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 B B I O O O O O O O O O B I O O O O O O O O O O O O O B 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 O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O 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 I O O O O O O O O O O O O O O O O O O O O O O B 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 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 B 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 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 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 B 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 O O O O O O O O O O O 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 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 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 B I 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 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 B I O O O O O O O B I 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 B I O O O O O O O O O O O O O O B B I 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