Core Values

The following core values were originally articulated at a birds-of-a-feather session at OOPSLA 2003 and serve as an initial straw man:

  1. We strive to automate software construction from domain models; therefore we consciously distinguish between building software factories and building software applications
  2. We work with domain-specific assets, which can be anything from models, components, frameworks, generators, to languages and techniques
  3. We support the emergence of supply chains for software services, which implies domain-specific specialization and enables mass customization
  4. We see Open standards, Open Source test beds and reference implementations as driving interoperability
  5. The methodologies we use conform with the values of the Agile Manifesto

The rationale behind these specific core values

  1. It is a fundamental architectural principle to group items that are subject to a similar rate of change. This principle facilitates the partitioning of large pieces of work, and it can be used to provide a sufficiently stable environment for building modules within the context of large systems.
  2. There is increasing evidence that formal, domain-specific, and compact modeling notations are the most elegant vehicle to replace mysterious rituals by accessible domain knowledge. In contrast, hastily articulated software solutions in general purpose programming languages provide only limited opportunity for uncovering deep domain knowledge, and lead to spurious complexity in the form of verbose and obscure code.
  3. Any state-of-the-art software development and deployment method needs to be able to take advantage of specialized knowledge and resources irrespective of location. The web and web based services have opened the door for approaches that were inconceivable a decade ago.
  4. Durable, functionally rich, and maintainable infrastructure software can only be the result of Darwinian software evolution. We can design software-in-the-small, but we can probably only guide evolution of software-in-the-large. The most economical way to achieve software evolution is via exploitation of and contribution to the mind-boggling soup of working implementations, including both commercial and Open Source software. The size of the community building working implementations means that very real Darwinian selective forces are at work and sometimes lead to surprising results.
  5. Without sufficient agility the risk of developing a solution for the wrong problem is unacceptably high. The use of techniques that honor the agile principles provides a collaborative environment where the interests of software users and software developers are aligned.

The set of core values for industrialized software construction is being refined and related fundamental principles are being defined by the KISS Initiative.

Next Chapter » Lessons From Other Industries

Add a New Comment
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License