Introduction

This paper examines the design process in three very different design disciplines with a view toward elucidating their common properties and their differences. By examining practices that are successful across disciplines, the authors draw conclusions hoped to be helpful to practitioners in each of the fields.

The three fields discussed in this paper are the design of software systems, the design of sustainable human habitats using the disciplines and techniques of Permaculture, and the art of building character as taught and practiced in modern-day Sufism. We first introduce the three disciplines and then state some general principles of successful design drawn from our experience as designers. We then illustrate the principles in reference to each of the three disciplines. We hope that practitioners familiar with any one of them may learn something about the others. We conclude with some lessons that each of the different disciplines suggests to practitioners of the other disciplines.

The authors  one a designer of software and the other a designer of landscapes and habitats  are consultants who prepare designs for their clients or customers. We have also undergone extensive training in many schools of yoga and Sufism. Our aim is to satisfy and delight our customers. This aim informs our understanding of design and the design process.

The intended audience of this paper is twofold: designers in many disciplines and persons interested in attaining mystical experience and engaged in practice to that end. We hope that it will also be of interest to others in the general public.

The three sections describing the disciplines are independent. The paper can be read straight through, or the reader can skip to sections of interest.

The Disciplines

This section briefly describes the three disciplines considered in this paper, software system design, Permaculture and the Sufi art of building character.

Software System Design

Software system design is the design of automated information systems in order to accomplish desired goals using computer software. The activity consists of exploring and clarifying a customer's needs and wants, determining the required characteristics of the software system and designing the system such that the requirements are satisfied in a timely, cost-effective and robust way.

Software system design is typically done as part of the larger project of actually building a software system. As such, it is one phase in a larger sequence of phases, often called a lifecycle, the intended outcome of which is the installation and successful use of a software system. Done correctly, the design phase can facilitate the larger project by making the construction of the software straightforward and easy. If the design phase is done ineptly or, as is too often the case, not at all, the construction phase can take more time than expected, cost more than desired and fail to produce a system with all features desired by the customer.

Software practitioners will note that we are actually conflating two of the classical development phases, Requirements Analysis and Design, as defined in, for instance, IEEE Standard 1074 [IEEE 1074]. Our reason for doing this is to emphasize the context in which successful design must happen, namely the accurate capture of the requirements of the ultimate users of the system.

Permaculture

Permaculture is a design system for creating sustainable human environments [Mollison 1994, p. 1]. The term was coined in 1978 by Australian ecologist Bill Mollison and his student David Holmgren as a contraction for Permanent Agriculture. The term has been expanded to mean Permanent Culture, for food production is only one of many activities needed for healthy, sustainable environments for humans. Permaculture is an interdisciplinary practice focusing on sustainable food production, energy-efficient building, recycling, waste-water treatment, land stewardship, and just and workable social structures and economies.

The Sufi Art of Building Character

Sufism has historically been the mystical element within the religion of Islam. In the twentieth century a Sufi mystic from India, Inayat Khan, expanded the practice to include the mystical elements within all the great world religions [Khan VIII, pp. 18-20]. The goal of mysticism is a direct intuition of the Divine, a direct contact with and absorption in the source and ground of all being [Khan VIII, pp. 24-27].

The goal of Sufism may be seen as two-fold:

The penultimate goal is to quiet the mind in order to be open to the Spirit of Guidance, which is known in the Judeo-Christian-Islamic traditions and the Hindu traditions as the Will of God, in Buddhism as the Buddha Nature, and in Chinese traditions as the Way (Tao) of the universe.

The ultimate goal is to remove the sense of a separate self, to experience one's unity with all that is, with divinity, with The God (the literal English translation of the Arabic word al-Lah [Armstrong 1993, p. 135]).

Every upright religious practitioner hopes and expects to see God after death. "The Sufis are the impatient ones. They want God now ... and are willing to undergo the disciplines that make that possible [Fadiman and Frager 1997, p ix]." One of those disciplines is the art of character development.

In order to acquire divine intuition, one must remove from oneself the impressions and habits of character that prevent it and cultivate qualities that nurture it. Thus, one actively molds one's own personality in order to live, day by day, in the awareness of divinity. The Sufi art of building character can be seen as a design process in which one is oneself the designer, the client and the medium.

Characteristics of Successful Design

This section discusses three characteristics of successful design. The term "design," of course, is both a noun and a verb. As a noun we take its meaning to be a plan or scheme, a physical representation of something to be created or accomplished. As a verb we take its meaning to be the activity of producing the plan or scheme [Webster 1960].

We consider a design to be successful if it meets the following criteria:

It is elegant, that is aesthetically pleasing in itself, without reference to its aim.

It has utility, i.e. it accomplishes the client's goal or goals.

It is good; that is, it accomplishes goals that are nurturing or beneficial to the client and the client's environment.

Elegance

One of the meanings of the term "design" is akin to one of the meanings of "pattern," an ornamentation or repetitive figure, the intent of which is to produce a pleasing aesthetic effect [Webster 1960]. It is this sense which informs our first criterion. If a design is ugly, jarring, or discordant, we have found that it is unlikely to have as much utility and goodness as one that is aesthetically pleasing. An ugly design does not inspire the client's confidence. An ugly design is harder to work from than an elegant design, so the construction phase is more difficult. An ugly design is often a signal that the client's requirements are not well understood or that the client has failed fully to think through and clarify his or her requirements.

By contrast, an elegant design gives something of worth to the client regardless of whether the system, landscape or habitat is actually constructed. (Careful design sometimes reveals that the desired project is not feasible under the client's budget or time constraints.) An elegant design is easy to work from, so the construction phase can proceed gracefully. An elegant design gives the client confidence that the system to be built will in fact have the features desired.

Utility

The goal of the process of design is to produce a plan from which something  a software system, a landscape, a building, an appliance, or even a work of art  can be constructed. The success of the design in this sense is dependent on a clear understanding of the client's wants and needs, or requirements. (The term "wants and needs" is used more often in Permaculture; the term "requirements" is used more often in software system design. Both refer to the same thing.)

In designing and building something for a client, there are four considerations, the first three of which are necessary and last of which is desirable:

Meet the stated requirements. The stated requirements are those that the client has explicitly told you (the designer) at the beginning of the engagement or that you have elicited through interviews and conversations. If the design and the subsequent construction do not meet these requirements, the system will be deemed a partial or complete failure.

Meet the unstated requirements. The unstated requirements are those that the client has not explicitly told you but, if unmet, will produce a system that is not to the client's liking. This is the trickiest ground for the designer to traverse. Sometimes the client does not fully know what she or he wants; sometimes the client assumes knowledge that the designer does not have. In pathological cases, requirements are concealed from the designer in order to fulfill a hidden agenda of system failure. You must make every effort to uncover these unstated requirements and make them visible so that design and construction will produce a satisfactory result.

In order to accomplish these two goals, you must, of course, clarify the client's requirements and decide how you will know if they have been met. You must define the criteria for success, the observable outcomes that will indicate that the requirements have been met. In software design, for instance, this entails writing a suitable test plan.

Satisfy the client. The reason the designer wants to meet the requirements, stated and unstated, is to satisfy the client. Client satisfaction is good in itself, in that it is a goal of the design process. It is also instrumentally good for the designer in that it enhances the designer's reputation and may lead to repeat business from the same client or additional business from others.

However there is a potential trap here. If the requirements are not met, the client will surely be dissatisfied, but the absence of a negative is not the same as the presence of a positive. Meeting the requirements does not guarantee client satisfaction. The client may simply be indifferent. That is why the fourth consideration is important.

Delight the client. Delighting the client involves going beyond the requirements to provide extra, unexpected benefits. These need not be large or out of scale with the stated requirements. In fact, if they are, the client may feel suspicious or vaguely guilty. Delight comes from little extra touches that indicate caring and concern on the part of the designer. For instance, a software system can provide extraordinary ease of use; a landscape can be inexpensive to maintain as well as beautiful and functional. Client delight entails and ensures client satisfaction.

Goodness

Beyond the utility of meeting the client's wants and needs is the goal of providing something of true value and benefit to the client and to the client's environment. We seek to create something that promotes the health and welfare of the client and the environment. This is related to the goal of meeting the unstated requirements, but goes beyond it. If the client is satisfied, even delighted, but the system or product is ultimately unhealthy for the client or his or her environment, then, in the broader view, the system is not a success.

This perspective is too often overlooked in the design process, but the consequences of overlooking it are not hard to find. Lack of this perspective produces, for example, the following:

Software systems that function as intended but do not further the goals of the organization in which they are placed, leading to inefficiency or, in the worst case, to business failure.

Unsustainable land designs that waste resources.

Brittle people, unhappy and out of touch with themselves.

This last point wants clarification. If we think of spiritual practice as a design discipline we see the danger of goals that are too limited. One can pray, for instance, for a new house or a new car, for material success, rather than for, say, humility and compassion. The result is likely to be that one acquires the material item; prayer does work and one often gets what one prays for. But possessing the house or car does not guarantee happiness. In fact, often the reverse is true; having too many material possessions inhibits true happiness. (This is a perspective from the point of view of one living in a prosperous, industrialized economy, of course.) The Sufi art of building character addresses the causes of true happiness.

We say that goodness entails promoting the health and welfare of the client's environment as well as the client because the environment nourishes and sustains the client. If the environment is unhealthy, the results are not likely to be good for the client.

Principles of Successful Design

Three general principles, or broad approaches to the design process, underlie the many things that successful designers do. These principles are listening to the client, listening to the medium, and making skillful use of good tools. This section briefly describes the principles. Following sections describe how the principles are applied in each of the disciplines.

Listen to the Client

The designer must find out what the client wants and needs. "Listen," of course, is a metaphor. One might also use a visual or tactile metaphor: The designer must see the client's needs clearly or have a firm grasp of the client's requirements. This is necessary to achieve the goal of utility (see above).

The way this is accomplished is similar in software design and Permaculture.

Listen to the Medium

The designer must pay attention to the constraints of the medium in which the design is to be implemented or constructed. (Again, "listen" is a metaphor.) The designer must know the capabilities and limitations of the medium and design the solution accordingly.

The constraints of the medium are one important way in which the disciplines differ.

Use Good Tools

There are several aspects to this principle. The designer must have good tools to create the design, and he or she must employ good techniques for using the tools. In addition he or she must know and design for the capabilities of the tools that will be used to build the system or habitat.

Principles Applied to the Disciplines

This section tells how the three principles of successful design can be applied in the three disciplines, software design, Permaculture, and the Sufi art of building character.

Software System Design

Software system design is the design of automated information processing systems. For the purpose of this paper, we include in the term "design" the activities commonly known in the field as requirements gathering, requirements analysis and design.

Listen to the Client

Software design and Permaculture design are very similar in the ways they gather customer requirements or wants and needs. The process consists of interviewing the client, iterative development of requirements and design, and prototyping the design solution.

Requirements

Customer requirements, sometimes called functional requirements. These are the things that the customer wants the product or system to do, the benefits the customer wants from the product or system.

Software requirements, sometimes called derived requirements. These are the things the product or system logically has to do in order to fulfill the customer requirements. A software requirement is a condition or capability that must be met by software in order to solve a problem or achieve an objective [IEEE 830]. Software requirements are derived from the customer requirements and are a step in the direction of design.

For example, your client might want an accounting system to keep track of orders, customer names, addresses and phone numbers, and account balances. The client might want to be able to enter new orders, check on account balances, update customer records, etc. The list of things the client wants to keep track of and the things the client wants to do with them are customer requirements. These imply certain software requirements: a data structure that enables easy entry, retrieval and update of the data; a process model that defines the functions of the system and how data is transformed and stored by those functions; etc. The Software Requirements Spec typically includes such things as a data flow diagram, entity relationship diagram, a process flow chart, etc. In object-oriented development it may include use case diagrams, class diagrams, sequence or collaboration diagrams, etc. These diagrams tell us what the components of the system will be.

The importance of accurately capturing the customer's requirements is illustrated by the primacy that activity is given in the Software Capability Maturity Model (CMM) published by the Software Engineering Institute [SEI 1993]. The CMM is a document that provides a framework for assessing the capability of an organization to produce high-quality software. It divides the overall process of building software into a number of Key Process Areas (KPAs), sets of activities that each achieve a specific goal or goals within the overall endeavor. The very first KPA recommended in the document is Requirements Management. The software developer must discover the requirements, document them, and keep the document under control; otherwise the developer does not know what to build.

Client interview

The purpose of the client interview or interviews is to discover the functional requirements. The designer meets with the client (customer) or clients, listens to their concerns, asks elucidating questions, and writes down what he or she learns about the functional requirements. At this point the deliverable is simply a list of requirements, perhaps organized into sections relating to the different areas of the problem domain. The designer prints the list and shows it to the client for validation.

Software requirements

Having documented and validated the functional requirements, the designer constructs the software requirements. A good way to start is by separating the functional requirements into nouns, verbs ands business rules. From the nouns one can extract the data requirements. From the verbs one can extract the processing requirements, the nature of the major processes and the flow of data from one to another. From the business rules one can extract the algorithms by which the data will be processed.

When software requirements are known, the designer can make an estimate of how much effort, time and money it will require to design and construct the system. Three things are needed to provide accurate estimates:

Deliverables: what you will deliver to the client. This includes the component elements of the system you will build as well as other deliverables such as technical documents. You need to have a list of, for instance, web pages, back-end processing, reports, etc. that will make up the final system. The component elements must fulfill the functional requirements.

What phases and stages of activity you will go through in order to build the system. The phases and stages make up the lifecycle model.

How much effort (in person-hours) it typically takes to build each element. For small projects this can be the total effort for all stages for each element. For more complex projects this should be the effort it takes by stage for each element.

The intersection of deliverables and lifecycle phases gives you the major part of a work breakdown structure (WBS), the list of tasks to be accomplished. (Do not forget to add other tasks such as project management, installation and training, etc., that may not be associated with a particular deliverable.) By applying known effort factors to the WBS you can derive a reasonable estimate of the effort required to build the system. From the effort estimate you can create a project plan that includes a schedule of activities including a target completion date. From the effort estimate you can also compute the cost of the project, by applying a monetary rate to the number of person-hours required.

At this point the client has enough information to make an informed decision as to whether to go ahead with the project or to scale it back or to abandon it completely.

Design

From the functional requirements the designer produces a set of documents that describe the system design. This varies from project to project and is based on the characteristics of that project. Typical deliverables include elaboration of the requirements diagrams to partition the system into code modules and pseudo-code documenting the algorithms to be used in each module.

Iterative development

Rarely will the designer discover all the functional requirements in the first interview. One needs to iterate through the process of gathering and documenting functional requirements and then elaborating the functional requirements into software requirements. After each cycle, one goes back to verify the requirements with the client.

Prototyping

One of the best ways to verify the requirements with the client is to create a prototype of the application. A prototype is a model of the application, often a working model. The designer shows it to the users early in the life cycle. The model does not have to be complete, but it should show the major features of the system. Then the users have a chance to give feedback. Having something tangible in front of them, the users will think of additional things they want the system to do, or things they want it to do differently. In this way, the true requirements are discovered.

Prototyping is most useful in two situations: (1) when the user interface and visual appearance of the system is critical, such as in an internet application for the general public; and (2) when the tools or the algorithm to be used or both are uncertain or carry some risk, in which case the prototype can serve as a proof of concept.

There is an analogy with the work of an architect. The architect produces blueprints that communicate details of the design to builders. The architect also builds a scale model to show the customer what the building will look like. Analysis documents such as data flow and entity-relationship diagrams or object model diagrams are like the architect's blueprints. The prototype or working model is like the architect's scale model. One is for communicating with other professionals; the other is for communicating with the customer.

Listen to the Medium

For software design, this principle means the designer must be aware of the hardware, software and network constraints of the environment into which the system will be installed as well as the skill set of the staff which will ultimately maintain the system. In addition, the designer must know the strengths and weaknesses of the various technologies available and suggest a technology appropriate to the goals of the design.

The range of technologies available for software designers and programmers is vast and continually changing. It is beyond the scope of this paper to discuss all of them. As an example, we examine two different system architectures in current use for multi-user applications, the two-tier client-server architecture and the three- (or more) tier web-based (internet or intranet) architecture. Both are robust and in wide use. Their different strengths and weaknesses suit them for different applications.

In order to discuss them we must first introduce the concept of architectural layers.

Architectural Layers

A software system can be thought of as containing several components, often called layers, prominent among which are the presentation layer, that part of the system which presents data to the user and with which the user interacts, the business logic layer, that part of the system that manipulates and transforms user input and stored data according to rules stored in the system, and the data layer, that part of the system where data is stored for current and later use. The different software architectures handle these layers differently.

Client-Server Architecture

Client-server architectures typically implement the different layers in two tiers, as illustrated in the following diagram:

An application called a client running on a user's workstation or personal computer incorporates both the presentation layer and the business logic layer. The client communicates over a local area network with a database server, a central computer on which a database resides. The database is the data layer. Many users can run instances of the client and communicate simultaneously with a single database server. Because the client typically incorporates all or most of the business logic as well as the presentation layer, it is called a "fat client".

Note that this use of the term "client" denotes something different from the human being or organization that is the designer's client. In this section we use the term "customer" to denote the designer's client and the term "client" to denote a software component that makes requests of another component. Thus, in a client-server architecture the client component requests access to data from the server. The server, in response to such requests, provides the needed access in the form of data insertions, updates and retrievals.

Web-based Architecture

Web-based applications run over the internet or an intranet, a subset of the internet at a customer's site. They implement the different layers in three tiers, as illustrated in the following diagram:

The diagram is simplified for purposes of discussion. The box labeled "Application Server" actually encompasses both the application server and the http or web server, and it may contain multiple tiers of business logic, for instance by connecting to a variety of objects running on the same server or on others. In general, however, there are three tiers. The client provides the presentation layer; the application server provides the business logic; and the database server provides the data.

The client software is a web browser running on a workstation or personal computer. The user interacts with the system through the browser. The web browser provides the presentation layer, but typically contains little or no business logic. The function of the browser is simply to render HTML code for human viewing. (The browser can also run JavaScript code or, less frequently Java applets, which can contain some minimal business logic such as form validation, but the business logic primarily resides elsewhere.) This is called a "thin client" architecture since the client, the web browser, is limited to the presentation layer.

The user uses the browser to send requests to one or more servers residing elsewhere on the internet or an intranet. If the request is for a static web page, one that is not connected to a database and has no dynamic content, the server simply fetches the requested page and sends it back to the client. The more interesting case is that in which an application residing on the server contains business logic and is connected to a database server. The user request goes to the application server, which applies business logic and fetches data from or updates data in a database server. The application server then constructs HTML to send back to the client, which renders it for viewing by the user.

Comparison

The following table lists the relative strengths and weaknesses of the two architectures:

Client-Server Advantages

Faster response time because user interaction with the business logic resides entirely on the client.

Less network traffic because the client communicates with the server only for data, not business logic.

More precise control over the user interface.

Generally easier to program the user interface.

Client-Server Disadvantages

Difficult to deploy. Updates need to be installed on every workstation.

Web-Based Advantages

Easy to deploy. Workstations require only a standard web browser. Updates to business logic can be made in one place, the application server.

Web-Based Disadvantages

Response time may be slower due to the need to communicate with the application server for business logic.

More network traffic.

User interface limited to the capabilities of HTML. Interface may be inconsistent under different browsers.

Which one to choose? The answer depends on the client's needs and priorities. If there are to be a great many simultaneous users and if network contention is an issue, then a client-server solution may be indicated, particularly if there is a way to update the clients over the network. If users are spread over many locations, if some of them will be accessing the application remotely, for instance through dial-up access, and if the application is not logic-intensive, then a web-based solution may be indicated. If the application will be used over the internet, as for instance an e-commerce web site would be, then the web-based architecture is mandated. The preferred solution arises out of the interaction between the customer's requirements and the capabilities of the media (the two different architectures).

Use Good Tools

"Tools" can refer to equipment used to get a job done or to techniques used to accomplish something with the equipment. We use the term in the latter sense. It is beyond the scope of this paper to discuss all or even most of the various software applications that can be used in software design. In fact, the only indispensable tools in that sense are a word processor, a spreadsheet and a drawing program. What are more interesting are the techniques a designer can use to extract a design from the software requirements.

Chief among the designer's goals are the design of an appropriate data structure, an accurate process model, and a usable interface. These three can be likened to legs on a stool. If all three are firmly in place, the system stands and can support its load. If any are weak or missing, the system is unreliable.

Data

Data is to a software system what the skeleton is to an animal; it provides the fundamental structure on which everything else is hung. In the authors' opinion, it is imperative to design a data structure that accurately and flexibly models the problem domain. These goals are best met by using a relational database and normalizing the data to at least third-normal form [Kent 1983].

Normalization is the process of transforming data that is inflexibly and perhaps redundantly structured to a form that is logically coherent and provides maximum flexibility for update and retrieval. Typically it involves taking data stored in single files (or modeled in single entities) with lots of fields and breaking it down into separate tables (entities) with fewer fields (columns, attributes) each. The advantages of normalization are many: it reduces redundancy and inconsistency, increases flexibility, eases programming of ad hoc queries, and makes it easier to extend the data structure to add new functionality to a system.

In some cases, full normalization may impose unacceptable performance penalties, although this danger is reduced with each increase in the capabilities of the underlying hardware. If the designer needs to de-normalize the design for performance, he or she should start with a clearly normalized structure so that such decisions can be made consciously and deliberately from a firm foundation.

Function

If data is the skeleton, then function represents the muscles of a system; it is what makes things happen. The design of function  the processing in traditional data processing, the manipulation and transformation of data  is as important as the design of data.

Most systems are too complex and include far too much detail for the mind to grasp at once. The solution is to divide and conquer. The designer does a top-down analysis and partitions the system into subsystems. If the subsystems are still too large, he or she divides them into sub-subsystems and continues the process until there is something reasonable  that is, easy to grasp or see  at each level. First one creates a context diagram, which models the system as a whole without reference to internal details. It shows the net inputs and outputs to the system, and it has only one function, to delineate the domain of study. Then one models the major transformations of data in the system. One further decomposes each transformation until a level of detail is reached that low enough to be unambiguously specified in a single page.

Ease of Use

The user interface may be likened to the skin of an organism; it is where the system meets the outside world. The user interface is a critically important part of a software system. A system that is easy to use will gain user acceptance. A system that is hard to use will cause users to be frustrated and reject the system, even if it contains the functions that the users want.

It is often hard for software developers to design truly usable systems. Too often they design software that is easy to program, but not easy to use. To design usable systems requires them to think in a new way. It requires them to think as communicators rather than engineers. Software designers need to think from the user's point of view, not from a programming or system implementation point of view.

User-interface design has been studied for a number of years. Principles that pertained to mainframe dumb-terminal or single-user personal computer applications are still germane: put the user in control, be consistent, build a clear conceptual model, minimize the burden on the user's memory, make the interface transparent, use good graphic design, and design for speed or usability as required by the customer [Dumas 1988].

The speed-vs.-usability issue is important. There is always a tradeoff between making an application speedy and making it easy to use. For instance, those who know operating system commands can get many things done much faster with a command-line prompt than with a visual environment. Even though most interactive applications are now designed for a graphical operating system, the principles still apply. For speed, give the user lots of keyboard shortcuts, cram a lot of data onto each screen, and avoid confirmation messages that require the user to issue a keystroke or mouse click to dismiss them. For ease of use, make everything accessible by mouse, include step-by-step "wizards," hide less-frequently-used functions in lower menu levels, include more confirmation messages, and make the screens look uncluttered.

This discussion, of course, refers to systems used interactively; some systems, such as embedded device-control systems, have little or no user interface. In such systems the interfaces to the device or to other systems are analogous to the user interface. They need to be defined clearly and in such a way as to be easy to implement and extend.

Object-Oriented Design

When designing software modules, it is wise to keep related functions together. Functions should be tightly coupled and loosely bound. In other words, put functions that act in a similar way on a set of data in a module together. Put functions that act in a different way or on a different set of data in a different module. Then clearly define the interfaces between the modules to minimize side effects.

The ultimate form of this design principle is object-oriented design, which results in an object-oriented system. In such a system a single software module, called a class, contains both data structures and the processing logic that acts on the data contained in it. Objects are instantiations of classes; they come into being at run time. Classes are the abstract descriptions of objects. Interactions between objects are defined such that other objects can act on the data only through public interfaces (interfaces that the object's class declares as accessible to other objects).

As a programming technique, object orientation has a number of advantages: reduced likelihood of unintended side-effects, easier verification and validation, and ease of reuse. As an analysis and design technique, proponents say that object orientation facilitates communication with users, creation of the software and management of change and complexity [Alhir 1998, p. 47]. These benefits come about fundamentally because the object-oriented approach models the real world, which contains physical objects that interact with each other, more accurately than other methods.

A major issue in object-oriented design is how to define the objects. Our approach is to treat data as fundamental. We define the things about which data is to be stored (the entities in entity-relationship diagrams), then associate processing (methods) with each entity. An entity with its methods becomes the class to be constructed. This is not the only or even the best approach; others start with functionality or collaboration. It is simply the one most comfortable to the authors. In any case, object-oriented analysis and design must take into account the static aspects of the problem domain (represented as data), the dynamic aspects (represented as functionality or methods), and the communication and interaction between real-world objects (represented as method invocations).

Visual modeling

It is useful to model the system graphically. Pictures can easily encapsulate details and show overall structure. Structured methods such as entity-relationship and data flow diagramming and more recent methods such as the various flavors of object models provide a relatively easy way for designers to conceptualize the design. In addition, with very little training, users can grasp the meaning of a picture, so the diagrams become a way to communicate the design to the customer and provide a basis for discussion.

The advantages of a well-done set of diagrams are many:

The specification can be read top-down. Managers can get the big picture by looking at the high-level diagrams. Users and implementers can find the details they want without being bothered by details in other parts of the system they are not interested in.

Each page is a functional unit. A reader does not have to find another page and continue reading to get the whole description of that particular level of detail.

All diagrams fit on a single page. In addition to making them easy to understand, this makes them easy to reproduce and publish.

Reuse

The successful designer reuses artifacts, ideas and techniques from previous designs. One does not, as the American phrase goes, re-invent the wheel. The kinds of things that can be reused include interview forms, document templates, graphical elements such as components of diagrams, etc. Reusing such elements enables the designer to produce designs quickly, focusing his or her attention on the pieces that are unique to the system under consideration.

One important form of reuse is the use of various design patterns in object-oriented design. A design pattern is a description of a problem commonly found in designing software systems and a description of a common solution. The solution is framed in general terms so it can implemented in many languages. "A pattern is like a template that can be applied in many different situations .... [It] provides an abstract description of a design problem and how a general arrangement of elements ... solves it [Gamma et. al. 1995, p. 3] ."

Generally it takes a little longer and costs a little more to create a reusable component  for instance a spreadsheet template for calculating effort and cost estimates  than it does to create one solely for the task at hand. But the cost is more than repaid in subsequent uses.

Permaculture

Permaculture is a design system for human habitats based on ecology and ethics. It began in Australia in the 1970s as a way to develop farms and gardens that were as rich, productive and resilient as old-growth forests. Permaculture integrates human and natural systems in ways that are beneficial for all the elements engaged, human and non-human, living and lifeless [PDI].

The practice of Permaculture is based on two things:

Observation of healthy, natural systems.

Design of human systems on the basis of the patterns observed in the natural systems.

Permaculture practitioners have observed that the richness, productivity, resilience and beauty of a natural system increases with the number and quality of beneficial relationships among the elements and forces in the system. Examples of elements include such things as nitrogen-fixing plants, gray water, gophers, driveways, roofs, conifers, humans, cattle, etc. Examples of forces include the dynamics of sun, wind, fire, water, traffic, etc. Over the years Permaculture has amassed a great deal of knowledge regarding the patterns found in nature and practical experience with building sustainable habitats on the basis of those patterns.

Ethics

Unique to Permaculture is its emphasis on ethics. The practice of Permaculture is based on three ethical principles: care for the earth, care for the people and sharing of surpluses.

Care for the Earth

Care for the earth means to ensure that all the elements that contribute to a healthy ecosystem are nourished and conserved, not degraded. It is the earth which sustains every one of us, so it behooves us to take care of it. Permaculture recognizes that each element plays an important role in many systems at once. Cooperation, not competition, is the key to mutually beneficial relationships.

Care for the People

Caring for the earth includes caring for the people who inhabit it. This principle affirms that humans are not separate from the natural world and each person, like each wild thing, has important contributions to make. It calls on all of us to cultivate our inherent capacities for kindness, creativity, joy and generosity. When we accurately identify and fulfill people's basic needs, we cultivate healthy human settlements and alleviate pressures that lead to destructive acts.

Sharing of Surplus

The co-founder of Permaculture, Bill Mollison, says

The third component of the basic 'care for the earth' ethic is the contribution of surplus time, currency and energy to achieve the aims of earth and people care. This means that after we have taken care of our basic needs and designed our systems to the best of our ability, we can extend our influence and energies to helping others achieve this aim as well [Mollison 1994, p. 3].

Every element in a natural system consumes resources from other elements and provides resources to them, most often in a different form. Resources that are provided above and beyond what can be used by the other elements are surplus. Unused surplus becomes pollution (i.e. material that gets in the way). Sharing the surplus means to make the surplus available to elements in surrounding systems, including other people. In human terms it means contributing one's extra time, money and energy to worthwhile endeavors. Sharing the surplus provides a number of benefits: it reduces pollution, it nourishes other elements and other people, and it enlivens the one who shares.

Permaculture aims to create bounty. It welcomes abundance, recognizing that surplus serves all things well when we plow it back into our communities and landscapes.

Listen to the Client

The Permaculture design process begins with gathering and documenting the client's wants and needs. The term "wants and needs" denotes the same thing as the term "functional requirements" in software design: the set of benefits that the client wants from the system. (There is no concept analogous to software requirements. Instead the set of functional requirements leads directly to design.)

The process is very similar to software development. The designer interviews the client, lists the wants and needs, asks elucidating questions, etc., documents the wants and needs, and asks the client to verify them.

As in software design, the process is iterative. However, in Permaculture the iteration always involves the second principle, listening to the medium, because the client's wants and needs are inevitably constrained by the particular site on which he or she wishes to build something. The characteristics of the site not only limit what is feasible, but also suggest new possibilities to the client.

Listen to the Medium

Listening to the medium means, in Permaculture, listening to the land to find out if and how what the client wants to do can fit there. In contrast to software development, two separate activities are involved: (1) carefully observing the site and its surroundings; and (2) researching things about the site that are not directly observable, such as its history, applicable legal codes, etc.

The land tells the designer how to meet the client's wants and needs: how to place the elements and what patterns to use. Typically the designer walks the land, investigates the neighboring land, talks to the neighbors, determines things like prevailing wind and sun, researches annual rainfall, observes the flow of animals through the land, investigates legal restrictions and the availability of electricity, water and other utilities, and in many other ways gathers as much information as possible.

Iterative Development

Having gathered this information, the designer works with the clients to clarify their wants and needs and designs a solution that will fit the land. This is often very educational for the client; possibilities emerge that were not thought of before. At the end, the client has a very rich design for the site.

Use Good Tools

In this section we cover techniques and strategies used in Permaculture design rather than physical tools. (The tools are simple: pencil, paper, templates for drawing shapes, etc.) Permaculture designers have accumulated vast knowledge about natural laws and principles. This accumulated knowledge informs the designer's approach to any given site. This section lists some of Permaculture's tricks of the trade and gives examples of their application [Mollison 1994, pp. 5-31].

All of the tools are based on the fundamental principle of designing with nature:

In designing with nature, rather than against it, we can create landscapes that operate like healthy natural systems, where energy is conserved, wastes are recycled and resources are abundant [Mollison 1994, p. 72].

Permaculture design makes use of this principle on two levels:

The designer applies overarching laws and principles that pertain in any climate, cultural condition and scale of project and construction technique.

The designer applies insights and techniques that are specific to the particular region, site, individual and situation under consideration.

Relative location

Every element such as a house, pond, road, etc., is placed in relationship to others so that they assist each other. For example, the garden is placed between the house and the chicken pen so that garden refuse is collected on the way to the pen and chicken manure is easily shoveled over to the garden. The designer sets up working relationships between the elements so that the needs of one element are filled by the yields of another.

Each element performs multiple functions

The designer chooses and places each element so it performs as many functions as possible. A pond, for example, can be used for irrigation, watering livestock, growing aquatic crops or fish, fire control, habitat for wild fowl, a firebreak, etc.

Each function is supported by many elements

Important basic needs such as water, food, energy and fire protection are served in more than one way. For instance, a house with solar hot water would also have a wood-burning stove with a water jacket. On a sea coast, winds can be contained by a strong windbreak of trees and shrubs as well as semi-permeable fences and trellises. Fire protection can be obtained from ponds, slow-burning windbreak trees, driveways cut to serve as firebreaks, etc.

Planning for energy efficiency

Planning for energy use is planning for economics, as all economic good depends on energy. To this end, Permaculture analyzes a site into zones, sectors, and slope.

Zones are portions of the site used at different frequencies, such as daily, weekly, monthly, and less frequently. Structures and features that are needed for daily activity are placed near each other and close to the house; features needed less frequently are placed farther away. This reduces the energy used to get to them and streamlines the infrastructure.

On a broader scale, one places housing, working and shopping areas close together so that a whole community uses energy efficiently.

Sectors are directions from which natural energy comes to the site from outside it, energy such as wind, sunlight, water, wildfire, etc. The designer places components to manage incoming energy. For instance, the designer would place plants and structures in order to accomplish the following:

Block out or screen unwanted incoming energy such as excessive wind or late afternoon sun in the summer.

Channel energy for special uses, such as harvesting wind for power.

Capture energy where desired, such as sunlight and rain for crops.

Slope is the contour of the land in profile, the relative elevation of each part. One places elements on the land to take advantage of flow and convection, placing, for instance, water holding tanks on higher ground than buildings and fields that need to use the water, thus reducing the need to pump.

Using biological resources instead of fossil fuels and chemicals

A site designed using Permaculture principles uses nitrogen-fixing plants instead of nitrogen fertilizer, geese instead of a lawnmower to keep weeds down, biological insect control instead of pesticides, etc. For example, a farmer in England has trained his geese to recognize and migrate toward a distinctive flag. He hires out the geese to clean insect pests from fields. He plants several flags on one side of a field and releases the geese on the other side. The geese make their way across the field, eating insects as they go. At the end of the day, the farmer collects his geese and his fee, and the field is free, or nearly so, of harmful insects.

Energy cycling

Energy is one of the critical resources on any site. The Permaculture designer wants to be as efficient as possible in its use. Permaculture systems seek to stop the flow of nutrients and energy off the site and instead turn them into cycles. Kitchen wastes are turned into compost; animal manure is used to produce biogas or compost; household graywater (water that has been used for cleaning) is directed to the garden for irrigation; nitrogen-fixing plants are planted next to other plants that need the nitrogen, etc.

Small-scale intensive systems

Large-scale industrial agriculture requires lots of energy input in the form of fossil fuels to power farm machinery and chemical fertilizer to feed the mono-crops. Permaculture reduces the need for both by planting densely and in small plots. Permaculture sites use the land efficiently and thoroughly.

Natural plant stacking and succession

Permaculture works in more dimensions than industrial agriculture. It works in the vertical dimension of space by stacking useful plants. It works in the dimension of time by planning the succession of plants through the seasons and years.

Stacking emulates a natural forest, in which plants of varying heights grow together. To increase the yield of a plot of land one would plant root crops such as radishes or bulbs, ground cover such as herbs or clover, low shrubs such as pumpkin or squash or berries, taller plants such as climbing beans, and trees such as fruit trees or quality hardwood all in the same area.

The Permaculture designer also increases yields by planning the succession of plants through time. One would plant annual food crops, perennial bushes, and longer-living nut or fruit trees all at the same time. In the early years the land yields produce from the food crops, later it yields useful products from the shrubs and finally from the trees.

Polyculture and diversity of species

A Permaculture site includes many species of plants and animals. The yield of any one of them may be than it would be if the site were planted in a monoculture of that species, but the sum of the yields of all of them is much greater. In addition diversity protects the growers from adversity; if frost wipes out the fruit crop, other produce is available to eat or sell.

A Permaculture site is marked by cooperative diversity of species, called guilds. A guild is an association of mutually-beneficial species often clustered around a central element. Companion planting in gardens and beneficial crop mixes in agriculture are examples.

The Permaculture designer aims, however, not for diversity as such but for useful diversity. Says Mollison: "... the importance of diversity is not so much the number of elements in a system; rather it is the number of functional connections between those elements. It is not the number of things, but the number of ways in which things work [Mollison 1994, p. 25]."

Increase edge within a system

By "edge" we mean the boundary between one area or subsystem and another, for instance between field and forest, or between two media such as between water and air or water and land. The edge is the most fertile and abundant region; more species inhabit the edge, and more interesting things happen there, because the edge gets resources from two different environments. By increasing edge we increase abundance of yield. One way increase edge is to construct ponds and woodlands on the site, if none are there to begin with. Another is to lay out the plots so their edge is maximized. Instead of a straight path through a garden, one might lay it out with short protrusions into the surrounding space, making it easier to get to the whole garden.

The Sufi Art of Building Character

Sufism  which encompasses the mystical element in all religions  has amassed over the centuries a plenitude of techniques for enabling human beings to realize their essential connection with the divine. It is, perhaps, a new thought to consider the spiritual disciplines to be an effort in design. This section explores how what we know about design can be applied to the mystical task.

In traditional schools the designer is the teacher (Sheikh) and the medium is the student's personality. In modern Sufism, introduced by Inayat Khan, the student, while still being guided or mentored by the teacher, takes on greater responsibility for his or her own development. The student takes on the role of designer. We may view the spiritual path, then, as a design process in which the student is him- or herself the designer, the client and the medium.

A note on terminology: Sufism recognizes that there is more to life than meets the eye. Realms of reality not apprehensible by the physical senses are called "spiritual." Spiritual disciplines are those in which people engage in order to become conscious of the spiritual realms, to open what is called, metaphorically, the "eye of the heart" [Ozturk 1988, p.1].

There are many spiritual realms. The highest (again, a metaphor; one could say the deepest, or the most interior, or the most universal) are those in which one experiences the essential nature of the divine, the source of all being. These we call "mystical," and the work one does to prepare oneself for that vision we call the mystical task or the mystical quest.

The distinction is important because not all spiritual realms are realms of wisdom.

Listen to the Client

The spiritual endeavor is unique in that the designer, the client and the medium are all the same. What does it mean, then, to listen to the client? It means knowing your own goals and desires, knowing what you yourself want from the process, knowing why you wish to engage in the mystical quest.

Spiritual practices can be a lot of work and take a long time to achieve a desired effect. One can engage in them with many aims: to gain power, to feel included in a group, to gain wealth, to be of service, to alleviate suffering, to experience happiness, to experience and know God. It is wise to determine just why you want to go to all the effort.

Typical motivations include the desire to cease suffering, to experience happiness, to have one's life guided by a superior wisdom, to experience more love, to find meaning in one's life, to experience the joy of divine intoxication. All these are laudable. But one can also engage in spiritual practice to stand out in one's peer group or to attain hidden knowledge so that one can feel superior to others. The latter motivations are dangerous in that they strengthen rather than weaken the sense of separation of oneself from others. This is antithetical to the true aim of the mystical quest, to experience one's unity with the source of all that is.

Listen to the Medium

Since the designer, the client and the medium are the same, listening to the medium  i.e., paying attention to and understanding its capabilities and constraints  means, as the ancient Greek oracle at Delphi said, to know yourself. (Paradoxically this is both a technique and, in sense, the goal of the process.)

What we mean by this is two-fold. You need to know what it is to be a human being in general, and you need to know yourself as an individual, a unique specimen of humanity. In other words, you need to understand human nature, what is true of all humans, and you need to know your own unique talents, limitations, abilities, desires, needs, etc.

Human Nature

What is true of humans generally covers a vast range. In this paper we focus only on a few characteristics salient to the mystical quest: intelligence, love, power and enthusiasm. (Please note that this selection is not based on traditional Sufi teachings, but rather the authors' experience.)

First and foremost, humans are intelligent. By "intelligent," the authors mean that humans have the ability to think rapidly and accurately and to come up with an exact, appropriate response to every situation. Part of human intelligence consists in the ability to know, to be fully conscious of and understand, the universe surrounding us to whatever level of precision one needs or desires. The mystical quest involves expanding this awareness to the most universal perspective.

Second, humans are loving and cooperative. Humans are social beings; as babies we would die in isolation, and as children and adults we thrive in the company of others like us. We are inherently connected with other people, indeed the entire world. Our natural way of feeling about each other is love, and our natural way of interacting with each other is to cooperate to accomplish our chosen goals. That is why the mystical paths urge us to cultivate our capacity for compassion and love. Doing so diminishes our sense of separation and leads to a recognition of our true connection with all that is.

Third, humans have great personal power and the ability to decide at any moment how to approach life and what actions to take. By "power" the authors mean simply the ability to get things done, to accomplish what we have decided to do. Our fundamental nature is to say to life's challenges "I can" and "I will." This trait is necessary for successful spiritual practice. With regard to the mystical path, Inayat Khan says "the first thing that is necessary is mastery of mind ... [Khan I, p. 93]." One of the first things one notices when doing any sort of meditation is the propensity for one's mind to wander. Mastery of mind entails fixing one's attention on a chosen object of meditation and ignoring mental distractions. This strengthens the ability to focus one's intention on unity rather than separation.

Lastly, humans are inherently enthusiastic and zestful about life. The natural way for us to feel is vibrantly alive. We take great delight in enjoying and mastering our environment. This enthusiasm is a manifestation of the original creative force of the universe; its culmination is the experience of ineffable bliss which is the goal of the mystical quest; and its presence gives the spiritual practitioner energy for the task.

(It may not seem obviously true that humans are vastly intelligent, loving and cooperative, powerful, and enthusiastic. Many of us do not act this way. The reason we do not, in brief, is that we have been hurt, physically and especially emotionally. Emotional hurts that have not been healed impair our ability to think clearly, love and cooperate with each other, act powerfully, and enjoy life. Luckily, there are ways to heal our hurts and regain our true nature, but that discussion is beyond the scope of this paper. The reader is directed to the international Re-evaluation Counseling communities [RC].)

All of these characteristics can be of use in spiritual practice. How they play out in any particular case depends on the unique way in which they are manifested in the individual. For that reason, listening to the medium must of necessity involve knowing oneself as an individual.

Individual Nature

In order to develop your character to be more open to divine intuition, you need to know what the obstacles are and what characteristics you have that will facilitate the endeavor. Sufi teachers typically tailor the practices they recommend to the needs of the student. You can do the same. But what do you look for? Think of the goal: to remove the sense of a separate self. So what are things in your life that reinforce your sense of separation and isolation? Obviously the seven cardinal sins of the Christian tradition: pride, covetousness, lust, envy, gluttony, anger, and sloth. But also other traits such as impatience, lack of attention, etc. The list could be endless. Similarly, look at what qualities you have that are helpful, things such as loyalty, determination, kindliness, generosity, etc.

Your specific combination of character traits will inform your design decisions regarding what tools to use on your mystical quest.

Use Good Tools

Sufism offers many, many practices, done individually and in groups, that aim to develop the character and lead one to a greater awareness of the divine. This section lists some of the most important practices.

Meditation

Meditation consists of withdrawing one's attention from one's surroundings and daily life and fixing it one a single point. There are different forms of meditation. One may fix one's attention on a sound, repeated silently to oneself, called wazifa in Arabic and mantra in Sanskrit. One may fix one's attention on a visual symbol, either external to oneself or internal, in imagination. One may fix one's attention on the breath, observing the ongoing flow of breathing in and breathing out. There are other forms as well. All of them have the effect of calming the mind, which provides receptivity to divine intuition, and strengthening one's ability to focus attention.

Sound

Chanting has long been a practice in many spiritual traditions. Chanting focuses the mind and breath and can awaken feelings of love and devotion to the divine, expanding the sense of self to include more and more of reality. The Sufis practice a particular form of chanting called dhikr, an Arabic word meaning, literally "remembrance." An excellent account is found in Ozturk:

Dhikr usually consists of the mental or verbal repetition of one of the Divine Names or of a verse of the Koran. These prayerful repetitions are often accompanied by physical movements which help the worshipping Sufi achieve an ecstatic state.... Dhikr is basically a form of prayer. Sufis believe that by praying in this way they may draw near to God [Ozturk 1988, pp. 2-3].

The silent practice of dhikr is a form of meditation, another essential Sufi practice (see Meditation, above).

The repetition of wazifa (sound for concentration) may be done out loud or silently, as a meditation. In either case, the meaning of the phrase, as well as the sound of the syllables, has an effect on the practitioner. The phrase is usually one or more of the 99 names or attributes of God given in Islamic tradition [Bayrak 1985], such as power, beauty, wisdom, insight, etc. The teacher chooses a phrase for the student that will enhance some aspect of the student's personality or correct some defect in order to open the student to more intense experiences of the divine.

Movement

Movement, especially repetitive, focused movement, is an important Sufi practice. There are many forms. One of the most accessible is Dances of Universal Peace, a form of moving meditation celebrating the mystical element in many different cultural traditions. The Dances of Universal Peace are simple circle dances. Sacred phrases from many of the world's spiritual traditions are set to music and basic folk dance movements. As a moving meditation, or body prayer, their essence is to reveal the unity of all spiritual experience. The Dances were founded by Sufi master, Murshid Samuel Lewis [Lewis 1990], and are based on the teachings of Hazrat Inayat Khan and Ruth St. Denis. They exemplify the principle of the unity of religious ideals. The Dances are taught by a dance leader, and no prior experience is necessary. They are easy to learn, meditative, joyous and open to all, and they are an easy introduction to ecstatic states of consciousness [DUP].

In addition, many Sufis practice yoga, specifically the yoga of postures (asana) [Desikachar 1999]. By gently placing the body in certain positions and holding the pose one stretches and quiets the body, which has the effect also of calming the mind.

Breath

By regulating the breath, one regulates one's thoughts. By controlling and diminishing thought (by which we mean the incessant verbal chatter that occupies the mind so much of the time), one becomes more open to divine intuition and an experience of the unity of all existence. Sufis practice conscious regulation of the breath in many ways. Much like the yogic practice of pranayama, a practice called Qasab consists of breathing and holding the breath to a regular count while closing one nostril and then the other and then both. Another practice involves breathing and holding the breath to a count but without closing the nostrils. Others involve breathing to a count while walking. Different counts have different effects.

All of these practices can quite quickly induce extraordinary states of consciousness, which can be disorienting. They should be practiced only under the guidance of an experienced teacher.

Self-awareness

By self-awareness we mean more than the knowledge about oneself described above under "Listen to the Medium." We mean direct observation of one's physical sensations, thoughts, emotions and actions, moment by moment. The Buddhists call this "mindfulness." Sufis call it "presence" [Helminski 1992, viii and 19-21].

Being aware of oneself in this way diminishes the effects of early impressions so they do not control one or direct one's life in unconscious ways. Sufis have long noted the seemingly mechanical aspect of much of life. What appear to be conscious, intentional acts are actually unwitting habitual reactions to events and circumstances. Bennett, following his teacher, Gurdjieff, calls such reactions "automatic energy," energy without intention or choice [Bennett 1964, pp. 15-16]. The Sufi desires to transcend such unconscious behavior because only by transcending it can one achieve a direct intuition of the Divine.

Silence, Fasting and Retreat

Sometimes the Sufi keeps silent for a period of time or refrains from eating. Sometimes he or she goes on retreat, staying away from other people in order to be free from the distractions of everyday life. These practices have a number of useful effects. One is to provide a contrast to one's ordinary life, which makes self-observation easier. Whenever something is put in a different context from usual, certain of its features are more easily noticed; this is true of oneself as well. Another effect is to weaken the ego, the everyday sense of self, so that a deeper sense may emerge. Another is to strengthen one's mastery over one's appetites. Whenever one enhances one's mastery, one has more ability to focus on one's spiritual practices and to free oneself from the unconscious tyranny of ordinary routine. By removing oneself from the world and abstaining from speech, food or social interaction, one becomes quieter and more open to divine intuition.

Paradox

The goal is to remove the sense of a separate self. This is paradoxical  by one's own will, one removes oneself. So who is it that is removing the self, and who is it that is removed? The paradox is actually one of the tools of the discipline, akin to the Zen koan, a riddle that is not intended to be answered but to engage the mind in such a way that one's perception of duality is overcome [Ansari 2000, p. 71].

The well-known teaching stories about the Mulla Nasrudin are another form of this practice [Shah 1971]. Nasrudin does unusual things that are outside social conventions. The stories are, on one level, humorous jokes. On another they reveal the human situation in a new way, leading the hearer to a deeper understanding of life.

Daily Conduct

The point of the Sufi art of building character is to acquire character traits that enable one to respond appropriately to the Spirit of Guidance and to discard traits that inhibit such response. Inayat Khan in his classic Creating the Person [Khan 1995; see also Khan III, pp. 197-228] lists a number of such traits: will power, self-control, generosity, gratefulness, harmonious relationships with others, lack of complaint, gentleness, self-respect, keeping one's word, etc. Some of the practices listed above, particularly the repetition of wazifa, have the effect of strengthening such traits. In addition, the student is encouraged to develop habits of conduct in daily life that reinforce desirable traits. Sufism is not an other-worldly path. Instead of leading one away from daily life it encourages one to engage fully in life, while at the same time maintaining an awareness of the divine dimension of reality. Thus, building character through one's conduct is of vital importance.

The technology for acquiring good habits is well-known. The American psychologist William James lists the steps [James 1963, pp.141-144]:

To acquire a new habit, launch yourself with a strong an initiative as possible.

Never suffer an exception until the new habit is securely rooted.

Seize the very first opportunity to act on every resolution you make and on every emotional prompting you experience in the direction of the habits you aspire to gain.

Strengthen the will by a little gratuitous exercise every day.

James observes, "The hell to be endured hereafter, of which theology tells, is no worse than the hell we make for ourselves in the world by habitually fashioning our characters in the wrong way [James 1963, p. 144]." The Sufis would have no trouble agreeing. By corollary, one can live in heaven on earth by developing a heavenly character.

Some of the practices listed above are particularly helpful in this endeavor. We have mentioned the use of wazifa. In addition, the authors have found that meditation and breath control are superb ways to strengthen the ability to focus the will and to remove mental activity that masks intuition of the divine, which gives one guidance in daily affairs.

Lessons

Lessons for Software Designers

Broader Sense of "System"

The principle lesson designers of software can learn from Permaculture designers is to think of the systems they design more inclusively. A software system contains more than objects, processes, data, input screens, etc. It contains, as well, the context in which it is to be used, the users themselves and the organization of which those users are a part. This relates to usability, not in the sense of ease of navigation through screens but in the sense of how well the software system supports the achievement of the organization's goals. In what way will the system be embedded in the organization? How will it facilitate, for example, the movement of material through an assembly line or the sale of a company's goods or the control of time-sensitive biological material? If the designer wishes to design a system that will be good for its users and owners, he or she must look beyond the stated requirements and question how the system will be used to assist the goals of the organization as a whole.

If we think of a software system as analogous to a living system, we can liken it to a living entity in a living environment. Just as a plant or animal takes in food, water and air and produces products that are useful for its surroundings, a software system takes in and produces information. The software designer can examine its impacts not only on other software systems but on its users, the people who interact with its users, the cultural context in which it is used, etc. By looking at the larger context, the designer can provide something of true value and benefit to the client and to the client's environment.

Intuition

An expanded sense of system encourages the software designer to think of himself or herself as an element in the system being designed, specifically a user of the system. This is actually both too easy and too hard for many software professionals. It is easy to assume the role of user, but that is often misleading. Software designers tend to think that users think and act as they do, but they do not. End users are not, typically, software designers. One needs to pay attention to the real end users and to imaginatively place oneself in their place. An excellent aid to doing this is to develop one's intuition, and the various Sufi practices that develop the intuition can be of help. Intuition is particularly helpful during the client interview. One wants to discover the users' true concerns and a face-to-face reading of not only what they say but what they mean is of great value.

Lessons for Permaculture Designers

Tools from Software Design

The Permaculture designer focuses not just on the elements in a system but on their interconnections. The flow of material through a system  nutrients, waste products, etc.  and the flow of energy  sun, wind, water, etc.  are of primary importance. One of the visual tools used in software design, the data flow diagram, could be of use to Permaculture designers. It is an elegant way to model the flow of information through its various transformations within a system and could easily be adapted to model the flows of material and energy.

The use of hierarchical decomposition would also be useful for Permaculture designers. The Permaculture designer needs to model a great many things: the land's topography; the initial position of plants, structures and major land forms; the flow of animals; the flow of water; the direction of the wind and sun; the desired placement of structures, gardens, paths, orchards, etc. In addition one needs to record the detail of what species are to be planted in what locations, where the microclimates are or will be, etc. Often the designer uses a base map with semi-transparent overlays to show the different elements. This has the advantage of being able to see how different layers impact each other, but has the disadvantage of creating a very dense aggregate of information that can be hard to read. Another way would be to create a series of maps, each decomposing a portion of the previous to a greater level of detail.

Permaculture designers could perhaps make use of the software designer's technique of listening for nouns, verbs and business rules. Nouns tell what the client wants to have on the site, and verbs tell what the client wants to do there. Instead of business rules, the Permaculture designer would listen for constraints on the desired activities. The verbs are most important. By understanding what the client wants to do on the site, one can prioritize what kinds of structures and features to build.

Intuition

The development of intuition is even more important for a Permaculture designer than for a software designer. Just as for software designers, intuition is very useful for helping clients clarify their wants and needs. As important as listening to the client is listening to the land, and a piece of land is far more complex than a software system. The land, and each place within it, has a certain character, a certain quality, and that quality cannot be discerned by the physical senses alone. The best designs arise organically out of what the land calls for. The approach is stated well by the philosopher Alan Watts:

The external world is your own body extended, and an intelligent architect always goes up to the hill and says "Good afternoon. I very much want to build a house here, and I would want to know what kind of house you would like built on you [Watts 1995, page 15]."

How does one ask the land what it wishes to contain and how does one listen to the land well enough to hear the answer? By intuition. By walking the land and remaining quiet enough to hear the answers that arise from the confluence of the walking, the question and the land. How does one attain a clear vision of the highest and best possibilities that the land offers? By seeing, in short, with the eye of the heart.

Lessons for the Builder of Character

Character Development as Design

What the spiritual aspirant can learn from software systems design is simply to approach the task of molding one's character as an exercise in design. The essential element in design is to think about the task at hand, to plan the structure of what one will build and the sequence of activities. What this means for building character is to give conscious thought to what qualities one needs to cultivate and to choose suitable tools for the cultivation. As well, one needs to adopt an attitude of confidence that the task is doable, an attitude that many software practitioners will find familiar because they have lots of experience with accomplishment.

Many spiritual aspirants follow a guru or teacher (Murshid in Arabic), who tells the student what practices to do. The teacher is generally more knowledgeable than the student, so it make sense to follow the teacher's advice. In this sense, the teacher acts as the designer. But it is the student's choice to follow the teacher or not, or to follow this teacher instead of another. Ultimately it is the student who chooses, and it is wise to recognize the choice as a design choice.

Listening to the Deep Self

The most profound lesson for the spiritual aspirant comes from Permaculture's emphasis on working with nature, not against it.

The "Greater War"

The effort to mold oneself such that helpful characteristics are enhanced and unhelpful characteristics are diminished has too often been seen as a war that one wages against oneself. Sufis speak of the nafs, an Arabic word meaning the limited or separate self, as though it were in some way bad or flawed or in need of correction:

The sense of self as an individual apart from the whole is nafs. Nafs can be seen as a negative entity which is an obstacle between man and the oneness of Allah [Ansari 2000, p.17].

Classical Sufi literature, from the time of the prophet Muhammad, speaks of the internal struggle against the nafs as the "greater holy war" (al-jihad al-akbar) as opposed to the lesser, external, holy war against infidels [Burckhardt 1976, p. 120].

Such an idea is not limited to Sufism; it is found in many traditions. It corresponds to the Christian notion of original sin; that there is something inherently defective about the human being in its natural state. Even such an august person as the Dalai Lama speaks of doing battle with oneself: "... we can isolate parts of ourselves that we seek to eliminate and do battle with them. ...We may engage in combat with anger, hatred and other negative states of mind [Dalai Lama 1998, p. 236]."

Making Peace

Permaculture suggests that combat is an unfruitful approach, or at least one that is inefficient. Any time one works against nature  pushes the river, so to speak  one is using more energy than is needed. A better approach is to find ways to work with the energies at hand. How does one do this? Permaculture tells us to listen to the land. In the context of character building this means to listen to oneself  not just the surface self of the chattering mind, but the deeper elements of the self that reveal themselves in dream and vision.

Suppose you have identified a tendency to get angry as an obstacle you would like to remove. One approach would be to keep a stern vigilance and by sheer force of will to stop yourself from saying angry words whenever the anger is about to arise. That approach will work for a time, but has two shortcomings: (1) it bottles up the anger, which at some point is likely to burst forth with even more force; and (2) it uses a lot of your energy and attention, which would be better suited for enthusiastically enjoying life. A better approach would be to find the underlying source of the anger and deal with it there; and the way to do that is to listen with compassion to the deeper layers of yourself.

By "deeper layers" we mean two things. One is areas where physical and especially emotional hurts have been stored. (The other is sources of wisdom, discussed below.) Whenever a person gets hurt, tension is stored in the body and the mind (these are not separate but are two aspects of one being). The tension manifests in various automatic ways, such as getting angry whenever a certain situation arises, when your "button is pushed," as the American saying has it. The phrase indicates the seemingly mechanical nature of the process. Whenever there is a triggering event, the angry response arises. What we need to do is to find the hurt places and heal them. Recent developments in psychology offer two means for doing so: focused listening and applied intuition.

Focused Listening

The practice of focused listening is designed to heal such semi-mechanical processes. Focused listening is done in pairs or sometimes groups of people. One person takes the role of speaker and the other takes the role of listener. The listener simply pays attention to the speaker, exhibiting by posture and expression interested compassion, but not interrupting the speaker. The speaker has permission to talk about whatever he or she wants to. After an agreed-upon period of time, the two switch roles; the speaker becomes the listener and vice versa. Thus each party gets the benefit of the other's attention. The effect on the speaker is profound. Having the undivided attention of another person allows the stored tension caused by past impressions, particularly emotionally painful experiences, to dissolve. Typically the dissolution is accompanied by outward emotional release, such as laughing, yawning or crying.

With the relaxed and benign attention of another person it is possible to talk, for instance, about the situations where anger is triggered and how such situations remind you of earlier experiences of being hurt. By identifying the earlier experiences you can release the stored tension they have induced. Having released the tension, you will find that the triggering situation has less force; and the more tension you release, the less the triggering situation will impel you to an angry response. You will find more freedom to respond in a way more to your choosing, perhaps with compassion or humor.

This is a relatively new practice, although the beneficial effects of crying have long been recognized. (See, for example, certain passages from the famous Sufi mystic, Jelalludin Rumi [Barks 1990, p. 80].) It is taught primarily by the international Re-Evaluation Counseling communities [RC], which do not explicitly recognize its spiritual component.

Applied Intuition

The various practices for developing intuition can also be used to get in touch with and heal the hurt places within you. Every experience one undergoes leaves an impression on the body-mind. These impressions can be accessed in imagination. They coalesce around self-like centers so that they appear in intuition and in dreams as seemingly distinct beings  people or animals or formless beings. It is possible to engage in dialog with these inner beings. Jungian psychology calls the process "active imagination" [Johnson 1986, pp. 24-26]. By engaging in dialog with them, one learns how to heal them. This happens in two ways. First, the very process of listening to them is healing in itself. The eruption of anger is a way that these inner beings attempt to make themselves known. When they become known through your paying attention to them in imagination or intuition, they have less need to erupt in distorted ways. Second, one can learn things from them. One can find out what they need for healing or nourishment and start to give it to them deliberately in one's daily life. The particulars vary from person to person; often the inner beings lack things that are nurturing but which have been neglected, like beauty or play or contact with nature. Hearing from an inner person gives one more impetus to fill the lack.

Struggle

We do not want to suggest that effort and struggle are not necessary. Sometimes it takes great determination and strength of will to overcome long-standing patterns of behavior that that get in the way of joy and unity. One needs, initially, to act in ways that are not habitual, that are unfamiliar and uncomfortable. In so doing one may experience fear, anguish, grief or other very painful emotions. Such pain can tend to paralyze a person or cause a person to want to give up the struggle simply to avoid the pain. But giving up does not work. To take our earlier example of dealing with anger, you could try to avoid the anger by avoiding situations which provoke it. But this can have several undesirable consequences: (1) You probably will not be completely successful, as it is impossible to control life to such a degree. (2) By spending energy in avoidance you fail to develop skills to handle the anger-provoking situations when they do  despite your efforts  arise. (3) Even if you are successful, your life becomes narrow and constricted; there are places you cannot go, people you cannot meet, and things you cannot do. It would be far better to develop the determination and will power to meet and deal with the provocations. The more you allow your will to be weakened, the less strength you have for other challenges in life and the less stamina you have for the mystical quest.

Wisdom

In this struggle it is possible to find allies, and those allies can be found in the same way as one finds and heals one's inner hurts: by listening to the deep self. It is in the deeper layers of the self that we find, not only places that need healing, but also wisdom, compassion and a sense of our connection with all that is. These qualities can be revealed through dialog with inner beings or through a sense of connection with a greater wisdom, perhaps pictured as angels or divine beings, perhaps not pictured at all but only felt. By paying attention to the deep self one finds strength and inspiration to help one through the struggles of life.

The essential Sufi message is that all reality is one, that everything is connected to everything else (also one of the insights of Permaculture), and that it is possible to have a direct experience of that unity. The Permaculture practice of working closely with the materials at hand, of working in harmony with the way nature works both in general and in the particular instance, can be adopted by the spiritual aspirant as well. If all is, indeed, one, then all the tools one needs are at hand. The personality is the raw material, so to speak, and within it one can find the guidance one needs to proceed, inexorably and with greater and greater joy, toward the One.

[DUP] Information about the Dances of Universal Peace can be had by writing to
the International Network for The Dances of Universal Peace, 7400 Sand Point Way NE, Seattle, WA. 98115 USA or, on the World Wide Web, by visiting http://www.dancesofuniversalpeace.org.

[RC] Information about Re-Evaluation Counseling (RC) can be had by writing to the RC International Reference Person, 719 Second Avenue North, Seattle, WA 98109, USA or, on the World Wide Web, by visiting http://www.rc.org.

Appendix: Sufi Orders of Inayat Khan

Sufism has historically been splintered into many orders and communities based on different teachers and traditions. The tradition of Inayat Khan is continued in three orders:

The Sufi Order International, P.O. Box 30065, Seattle WA 98103, USA; on the world wide web at http://www.sufiorder.org. The Sufi Order is led by Pir Vilayat Inayat Khan, Inayat Khan's elder son, and Pir Zia Inayat Khan, Inayat Khan's grandson ("Pir" means "head of the order").

The Sufi Islamia Ruhaniat Society, P.O. Box 51118, Eugene OR 97405, USA; on the world wide web at http://www.teleport.com/~ruhaniat. The Society is led by Murshid Moineddin Jablonski, a student of Murshid Samuel Lewis, who was a student of Inayat Khan ("Murshid" means "senior teacher").

About the Authors

William Meacham is a software system architect, designer and programmer and is employed as a senior consultant by Renaissance Worldwide Inc., an international information technology consulting firm. He has over twenty years experience in the field. He holds a Ph.D. in Philosophy from the University of Texas at Austin, Texas, USA; is engaged in study in the International Permaculture Academy; and is a private scholar in the fields of ethics and comparative mysticism. He is a Certified Teacher of the Sufi practice Dances of Universal Peace. He lives in Austin, Texas, USA.

Patricia Michael has over twenty years experience as an environmental consultant and teacher of Permaculture. She is a Vice Chancellor of the International Permaculture Academy in Tyalgum, Australia and the owner of an environmental design consulting practice. She designs a wide variety of projects from broad-acre rural sites to mixed-use developments to small holdings, both urban and rural. Current projects include an ecological subdivision as well as numerous individual sites. She graduated Magna Cum Laude from Wichita State University, received her Master of Fine Arts from the University of Oklahoma, and is a graduate of the New Alchemy Institute in Ecology and Sustainable Agriculture. She has won numerous awards for her designs. She lives in Austin, Texas, USA.