Sunday, September 7, 2008

Sculpture 1.0 Beta is available

Sculpture 1.0 Beta is available now for download,

This release is the first formal release of sculpture that contains all the feature we planned for 1.0 final.

We hope that this release satisfy your needs, and we wait your comments and suggestions.

In the next versions we will be more accurate in the delivering time.

Download the release from here.

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.
2. MYSQL.
• 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.

Tuesday, July 8, 2008

Sculpture - The New Vision

After 1 month from publishing the CTP version of Sculpture, and some wide discussions with group of architects and developers, we collect great feedback about the current state and the future of sculpture.
Here I will draw a clear picture about the new vision of sculpture.
Sculpture with the current version is powerful tool but very restricted, from the model elements to its properties to validations to templates, all of that in one package, so you must use Sculpture as it is, no flexibility available, we will not spend our time in discussion the shortage points of the current version of Sculpture, let’s talk about the new one.

Sculpture Definition:
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 also contains a Guidance Package for building your own Mold or customize existing ones. Using this Guidance Package, you can build a custom code generator with your favorite Technology. All of these raise 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, mold is not another definition of the templates.

With Mold you can:

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 tool window that host 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.

With this vision you can use the Out-of-the-box Molds, or build your own mold that serves your custom needs.

This is a quick overview of the new vision of Sculpture; we are planning to produce a release at the end of July.

Thanks to all advisors who provided invaluable assistance in this new vision!!

Sunday, June 15, 2008

DSL Editor Powertoy in VS2008

It’s pleasure to Sculpture team to announce that they succeeded in migrating DSL Editor Powertoy to VS2008,

So you can develop DSL projects with DSL Editor Powertoy in VS2008 as the same manner as VS2005
with full functionality (Guidance Package , Editor Configuration Diagram).

This release of DSL Editor Powertoy works identically as the previous one.


Note: It’s not an official release, but Sculpture Team believes that DSL Editor Powertoy is vital for all DSL Designers, so they try to provide a community version that supports VS2008.


We hope it will be useful for all DSL Editor Powertoy users.


Downloads:

DSL Editor Powertoy 2008 Binary Installer (1.37 MB)
DSL Editor Powertoy 2008 Source Code (6.08 MB)


For more information about migrating your DSL project to Visual Studio 2008 see the previous post (DSL from 2005 to 2008)

Monday, June 9, 2008

Second CTP version for Sculpture

A new version of sculpture published on codeplex.

In this version:
• Many bug fixes, along with a number of functional improvements.
• Support for Visual Studio 2008.
• Some improvements in the Power Point presentation (add a section that describes how to consume the generated code).
• Remove the topics related to Microsoft .NET Framework 3.0 from the version that work under VS2005, so it can be run under .NET Framework 2.0.

You can download it form here

Surviving with DSL Editor PowerToy in Visual Studio 2008

As I described in The last post (DSL from 2005 to 2008) that the last problem face us while migrating Sculpture to VS2008 was DSL Editor PowerToy, still does not supported in VS2008, I hope to see new version soon.

First I must declare our idea about Surviving with DSL Editor PowerToy in Visual Studio 2008
• We already build our DSL editors in the VS2005 version.
• We just want the framework to be running under Visual studio 2008.
• We don’t need the DSL Editor PowerToy guidance package or even the DSL Editor PowerToy Diagram.

The first point is about including the DSLEditors folder to your project, set the custom tool for all DSL Editor templates to none (the code is already generated in VS2005 we don’t need the templates).

The second point is about the references, When you add a DSL Editor PowerToy to your DSL project by its guidance package there are four new references added to the DSLPackage project, we have to convert the corresponding projects to these DLLs to VS2008 so it can be a replacement of the previous dlls, we download the source code of DSL Editor PowerToy and convert these four projects to VS2008, some reference problems fixed then we build the projects and get the new dlls, add references to these dlls in your DSLPackage project, it work fine.

The third and last point is about Commands, which converted from CTC to XML with extension VSCT in VS2008 as we discussed in the previous post. Fortunately the DSL Editor PowerToy Command.ctc file does not have a big change from project to another, so you can use the following one with minor changes.

You can download the DLLs and Commands XML file from here.

Conclusion:
If you have DSL project in VS2005 that include DSL Editor PowerToy, you can run it under VS2008 by the next steps:
1. Include the DSLEditor folder in your DSLPackage project.
2. Set the custom tool property for all the templates in this folder to none.
3. Download the new dlls and CustomCmd.vsct from here.
4. Add references to these dlls in your DSLPackage project.
5. Add the downloaded CustomCmd.vsct to Commands.vsct.
6. Run and enjoy with your Editors run on VS2008.

DSL from 2005 to 2008

Spending 2 days for migrating Sculpture from VS2005 to VS2008 is unexpected time, we expect that we will convert it by the Visual Studio 2008 wizards, and then press F5 to test the framework.

I shocked when I read the article that shipped with Visual Studio SDK 2008 tell us:
To migrate your project from VS2005 to VS2008 Create a new solution and copy your code files to it

Its ok we follow the guide and migrate the project, some problems face us while converting that take some time to fix it, I want to explain these problems here to avoid the readers from take the same time.


1. VS2008 don’t copy the DLLs to GAC during the debugging mode, that’s great new feature but let us confused a little to be familiar with this new manner, the problem that if you have a copy of the dsl.dll and dslpackage.dll in your GAC, the debugging mode will run from them neglecting any other version on your machine, so you update the code and build then run and nothing change, so you must keep in mind that never debug your DSL project while you have a version installed in the GAC.


2. Commands, which converted from CTC to XML with extension VSCT, consuming some time to be familiar with this new format, we try Perl script [ConvertCTCToVSCT.pl] but it does not work correctly, where we add the commands by including Header file to the CTC file, so we convert it manually, after some of work it seems nice and easy to work with.

As a short Description about the new format

• To make groups use:

Just change the Group id, and the Parent id to your needs

• To Make Buttons use:


• The final thing you must know Symbols, where each of the previous IDs (groups and buttons) must be set its value in the Symbols section as follow:
Change the “guidCmdSet” value to match the one in your GeneratedVSCT.vsct file.

3. The last problem face us while migrating to VS2008 was DSL Editor PowerToy, still does not supported in VS2008, I hope to see new version soon, I will discuss how we overcome this problem in a dedicated post to be available for all DSL Editor PowerToy lovers.