The development of complex software requires the implementation of functions over a variety of recursively defined data structures. The design (and modeling) of structures can it...
Developers of programs for distributed systems spend considerable time designing solutions to various complex decision-making problems. The work described in this paper applies th...
Most software is fragile: even the slightest error, such as changing a single bit, can make it crash. As software complexity has increased, development techniques have kept pace t...
Programs to solve so-called constraint problems are complex pieces of software which require many design decisions to be made more or less arbitrarily by the implementer. These dec...
concerns, abstraction (particularly hierarchical abstraction), simplicity, and restricted visibility (locality of information). The overall goal behind these principles was stated ...