Salamanca is a Business Applications Software Factory. It is aimed at building more reliable business applications through a set of dedicated libraries, patterns, languages, tools and good practices.

Overview | Rationale | To Do | News


  • A business application created with Salamanca has a specific architecture.
  • A set of libraries has been developed to help developers implement this architecture in their project.
  • The use of these libraries is leveraged through DSLs designers and code generation, wrapped in a guidance package (yes, a Software Factory).


We define a business application as a software that handles business specific data while implementing parts of business specific processes (which we will call activities) and enforcing business specific rules.

There are a few things we can infer from this definition :
  • to handle business specific data, we will deal with a database backend ; more often than not a real RDBMS like Sql Server or Oracle, but also possibly a web service or even a simple file (XML, CSV...). For instance, a hotel room booking application would be built upon a proper database, with structured data such as the rooms, their rates, their vacancies...
  • the data lifecycle has to be integrated into well defined activities. At all times, from the state that we know the system is in, there are only a few well known actions that can be taken. Without this concept, an application like Excel would fit into our definition. For instance, a basic activity involving a hotel room and a customer would be : book, then check in, then check out.
  • rules must be enforced at all times. Some of them are specific only to some piece of data, some others can be also specific to a specific activity. For instance, a booking date in the system cannot be anterior to the date the hotel was built : this is a general rule. But for new reservations, the same booking date has to be in the future : this is a rule that applies to the same data, but that is specific to the activity called "book a room in the hotel".

Our vision with Salamanca is to be able to design a business application in terms of data, activities and rules and be able to generate a complete and functional (if not user-friendly) software.

But we also want to leave the developer at the center of our factory. There are many libraries and tools (think of code generators) out there in the field that work very well, provided you respect their predicates (data structure, software architecture...). But in real life, you almost always have to adapt your code to business specific conditions : already existing databases, specific procedures, architecture... Applications built with Salamanca must be open to adaptations by developers.

Through the concept of activities, we also created a new way to clearly separate the concerns of presentation from the core application. Once created the core of your business application (data handling, activities and rules), you can develop your HMI layer in any (.NET related) technology you like : Windows Forms, Windows Presentation Foundation, ASP .NET... Or in all of them. Or, maybe wiser, you could develop part of your application as an ASP .NET application, and part of it as a Windows Forms application (on Windows TabletPC or Windows Mobile for instance), while reusing the same set of core libraries with your business specific data, activities and rules.

To Do

  • Documentation
  • SDML (work in progress) :
    • Software Factory experience via DSL Tools and GAT.
  • SAML :
    • Software Factory experience via DSL Tools and GAT.
  • Data Access :
    • integration with Unity.
    • ability to serialize trees of objects.
    • JSON serialization.
    • LINQ integration.
    • Powershell integration.
    • SSIS integration.
  • Data Activities :
    • ASP .NET AJAX integration.
    • jQuery integration.
    • WPF integration.
  • Data Rules :
    • Define and implement a DSL to design business rules, that could be plugged into the SDML and the SAML.

 Salamanca News Feed 
Wednesday, August 19, 2009  |  From Salamanca
Wednesday, July 01, 2009  |  From Salamanca
Monday, June 29, 2009  |  From Salamanca
Monday, June 22, 2009  |  From Salamanca
 Salamanca News Feed 

Last edited Jan 13, 2010 at 9:47 AM by cartoixa, version 27