The Sensible Assembly Methodology is an approach to development that is rooted in the teachings of "Object Think", the original ideas from which Object Oriented Programming evolved. Its approach to software development follow many of the teachings of OOP purists, and rejects many of the ideas and tools commonly perceived to be object oriented software development best practices. These perceptions and tools are rejected in favor of a more "common sense" approach to development. Though based primarily on object think theory, SAM also enourages practices and development techniques taken from the agile, object oriented, and aspect oriented schools of thought. Only those techniques and recommendations that have proven themselves to work with success in the 'real world' are included in SAM. This approach to software development is best described by the term "sensible assembly" because it encourages the development of applications with a common sense approach, who's construction consists of distributed cooperation and communication between intelligent objects and a presentation tier consisting of assembled object APIs. In order to understand and appreciate SAM, a developer must be mindful of the fact that the largest expense in owning software is maintenance and that the ultimate goal of every task they perform is to promote ease of maintenance. The resulting infrastructure of a SAM application will appeal to even the most non-technical person, provided that they are familiar with the business domain, as being simple to understand... or 'sensible'. It could be said that SAM is "organically object oriented" in nature.
The benefits of using SAM on a project or within an organization are plain enough to see. The objects that comprise a SAM application are solely derived from the business domain model and are the truest representation of real world entities possible, which typically results in a smaller code base. Aside from a few practical mechanisms, if an object is not part of the domain, it does not exist in the code. As such, these entities make sense to any domain expert, including the non-technical. One result of this is better communication and understanding between developers and domain experts, often time known as 'clients'. SAM also encourages encapsulation and delegation of responsibility to objects in such a way that developers will find it easier to "follow code" and maintain logic in an application. This results in maximized code reuse. Designers will find it simple to implement complex logic that has been developed using SAM due to its approach to encapsulation and encouraged use of tag-based APIs and User Interfaces. No price can be put on the value of having a simple interface for leveraging reusable code and such a sensible representation of business objects.
The core ideas behind SAM are applicable to software development with any programming language but the methodology, as documented and described in this site, is intended to be applied to programming for the Adobe ColdFusion Application Server. The SAM FAQ provides more detail about the reasons that ColdFusion was chosen, as well as answering many other questions and explaining SAM.
In order to get started with SAM, study the documents hyperlinked below, and study the sample applications and diagrams. Remember that the Sensible Assembly Methodology is not a framework, it is a set of guidelines that suggest the best way to develop software. It can only be implemented succesfuly as the result of changing the way that a developer or architect approaches his or her craft.