Distributed applications development is complex. Besides the current difficulties associated with software development, distributed application development is harder due to the diverse domains involved and to the implementation environment. To cope with these problems we are developing the DASCo (Development of Distributed Applications with Separation of Concerns) approach based on a "divide and conquer" strategy. This strategy helps to identify minimal domain-specific solutions and how to combine them in different contexts. Moreover, DASCo enforces an incremental development process which incorporates the domain-specific solutions in a stepwise manner and delays implementation in the final target environment.
DASCo deals with complexity at both, problem and solution space. Three pattern languages, defining the stepwise development process, are being defined for partitioning, concurrency and robustness concerns at the problem space. The development process is supported by a three-layered object-oriented framework providing design solutions for solution space concerns: concurrency, synchronization, recovery, replication, naming, configuration and communication. Furthermore, the framework also supports multiple concern combinations. For each concern, object-oriented design patterns are being designed such that encapsulation, extensibility, modularity and reusability are qualities present in the solution.