Tuesday, August 19, 2008

'Sculpture 1.0 beta' within one week

Am happy to announce that Sculpture 1.0 beta will be shipped in one week, sorry for being late, but we trying hardly to deliver the best.
The last formal definition of sculpture as below:

What is Sculpture?

Sculpture is a .NET open source Model-Driven Development code generation framework ideal for creating and managing .NET Enterprise Applications.
With Sculpture you can model your application components, and then transform this model to deployable components for your favorite technology.
Sculpture comes with a host of ready-made Molds (The word “Molds” come from Molding) like (DAAB, NHibernate, LINQ, WCF, ASMX, SQL Server, MYSQL …).
Sculpture contains a Guidance Package for building your own Mold or customizes existing ones. If you have a custom architecture, using this Guidance Package, you can build a custom code generator with your favorite Technology to fit your needs.
Sculpture can generate any kind of text output using templates (source code, database scripts, web pages, XML, configuration files, etc.).
Sculpture raises the level of abstraction, for example the data access layer part in your model may be transformed to NHibernate implementation and with minor changes it can be transformed to LINQ implementation, and in the future can be transformed to “X” framework, which we don’t know it now.

Sculpture is divided into:
Sculpture Core Engine: it is a platform that hosts the molds, takes care of making all the Molds work together. It includes the Model Designer, Mold discovery and loader, generic validation engine, generic code generation engine, command holder, and editor controls holder.
Mold: The primary plug-in of the Sculpture framework, with Molds you can extend all the power of Sculpture to manage the model and the produced code as your needs, Molds provide the ability to process model elements.

The power of Sculpture comes from its Molds, when you develop Mold, you have the ability to:
1. Add new properties to the model elements, these properties will be shown in the Sculpture property window, so the user can set values for these dynamic properties, for example you can add property called “Table Name” to the Entity Element.
2. Add new validation to the model, you might need to set additional validations to your model, so when the user validates the model, the core engine calls the validation methods for all plugged Molds.
3. Add property monitor, which can be used to monitor any changes to the model elements, and notify the mold when property of specific element type changed, for example you can change the new property “Table Name”, when the entity name changed.
4. Add command set which will appear in the top of the tool window that hosts the editor controls, with these commands you can made any changes to the model, for example you can add command that adds elements to the model based on specific database.
5. Add user control editor to the model, with this user control you will notify when selection changed, so you can build your editors that can be used to simplify the access of model elements.
6. The last one is the template, the mold contains list of templates, and each template has some properties as (Output Pattern, Output Condition, Overwrite …), these properties configure how the engine will transform it.

Ready-made Molds:
• For Data Source Layer:
1. SQL Server.
• For Data Access Layer:
1. DAAB (Data Access Application Block).
2. NHibernate.
3. LINQ to SQL.
• For Service Layer:
1. Service Library.
2. ASMX (ASP.NET Web Service).
3. WCF (Windows Communication Foundation).

Why Sculpture?
Sculpture raises the level of abstraction so the solution separated from the implementation technology.
Sculpture gives you permanent preview to your Application, the model can be updated easily in any application life cycle phase, and see the reflections of these changes immediately.
Sculpture is not depending on (Database + Templates) to generate your CRUD operation, but with Sculpture you model your custom service layer and your business logic, so your code is so closed to how you configure the model. For example in the data access layer you do not want a delete operation for a specific entity, and need a custom method that do other actions, in most code generators, you are being forced to have all CRUD operations for entities.
Sculpture should not force you to adhere to a specific architecture.
• SQL Server Mold has reverse engineering engine that parses the database and translates it to model, so you can start your project from Database, additionally any updates in the database schema can reflect on the model easily without losing any metadata.
• The generated code follows Microsoft best practice.
• Ready-to-use Molds for common enterprise architectures (DAAB, NHibernate, LINQ, WCF, ASMX, SQL Server, MYSQL).
• Sculpture depends on Templates so you can customize it to get maximum profit.
Sculpture has its validation engine where the model can be validated, that will decrease the cost of fetching errors (with Molds you can write custom validations to the Model).
Sculpture developed by Domain-Specific Language (DSL), so:
o It integrates with visual studio.
o No need for any external tool.
o Very easy to use and understand the whole development cycle.
o Familiar by all .NET developers.
Sculpture should not be all-or-nothing, for example you can use Sculpture to generate only some reports in your development process.
Sculpture developed by professional team belongs to Dawliasoft, there will be a full support in the discussion and issue tracker, and a premium support will be available in the near future.
Sculpture provides a comprehensive Help (Videos, and Documentation), which can be used as quick start, and to get the overall structure of the framework.