In addition to a classic object-oriented common patterns and practices there are several areas and problems not very easy and conveniently expressed by object oriented approach. Few of so called declarative patterns are presented below : * **Dependency resolution** Starting at some level of complexity every software project usually faces need of managing dependencies of some kind like package dependencies, components and versions dependency. Dependencies are easily represented by declarative means and moreover usually do not change drastically at runtime. Thus dependency management is good candidate for static/compile-time resolution. See [[articles/declarative_patterns#dependency-resolution|details]]. * **Supply and demand** A big amount of a problems could be expressed in terms of supply and demand of interacting components. See [[articles/declarative_patterns#demand-and-supply|details]]. * **Share or joint use**(as planning in terms of space): Examples: first/last use determination, share use planning and allocation(memory, etc).See for example [[concepts/usage| resources usage]]. * Planning in time. Examples: Time Machine * **Verification and Adaptation** TODO expand on verification and adaptation. Upstream/downstream * **Preferences** Abitility to express preferences(like/dislike) allows recognize situation ... * **Distibuted information in no particular order ** Information gathered from different sources. ===Demand and supply=== ===Share or joint use===