Processing of data streams requires the continuous re-computation of end-user applications over the long and steadily increasing sequences of data items. Design and implementation of the applications is always affected by the specific properties of their domains. This work considers the design and implementation of data stream processing applications in the domains where the limited computational resources, constraints imposed on the implementation techniques and specific properties of applications exclude the use of a general purpose data stream management system. We start from an abstract view of a data stream processing application as an n-ary operation on the input streams and we show how to decompose such an operation into an expression over the binary operations on windows and materializations of intermediate results. Then, we show how to implement an application through the integration of atomic applications, each one processing one data stream at a time. The implementation techniques described in the paper include the representation of atomic application as sequences of operation in an XML based language and translation of XML specifications into the programs in an object-oriented programming language.