Punch of Suggestions

Feb 21, 2009 at 2:56 AM

First of all, thank you sculpture team of the impressive effort you did so far.

Last summer, I was thinking to start develop something very similar to sculpture then I started to investigate and learn similar ideas. Recently I found a contribution post in http://www.lhotka.net about sculpture so you may guess the rest of the story; download, install, learn, saw the introduction video (excellent idea for attraction and demonstrating the features of sculpture), and finally rather than reinvent the wheel I decided to contribute with my ideas.

            “Object Manager”

1-      Create a common repository (other than the sculpture module designer) to become the centralize location for all objects (Entities, Data Contracts, Services, etc.) and its specifications so later from this centralized location you can add them to multiple designer.

2-      Create an interface for that repository and I suggest calling it “Objects Manager”. Very similar to sculpture explorer (sculpture explorer should remain to increase, enhance, and speedup to locate the objects in the model viewer).

3-      Objects Manager can filter, search, group, create, rename and delete. (From the user perspective: Association requires the model viewer).

4-      Store each object separately using XML format (in separate files, or common Database).

5-      I suggest , not to store the objects as part of the project , because in our development environment we are working on a project that have  50,000+ entities, and of course not all of them related to each other directly but all working under the same umbrella.
so if these objects are loaded in Visual studio this will raise a performance issue.

6-      Common repository existence will make it possible and easier to have an impact analysis report, or viewer.

7-      Consider the source control for objects.

 

“Code generation and refactoring”

8-      Select single, multiple or all objects to be generated

9-      Select what to generate, business objects, Data access object or User Interface objects.

10-   With delete an object give the option to delete all related generated objects.

11-   Rename entity members should be reflected on all generated code without regenerate them in order not lose custom changes.

12-   Generated DB script should be moved automatic to the Database project.

13-   Reserve the changes by the user and this include and limited to ( custom code regions on existing code , user interface changes, etc)

14-   Combine the User interface template generators to project module so user define his templates for this particular project also can store them in the source control.

 

“Entities enhancement”

15-   Group Entity member with a logical grouping mechanism and this later can be reflected as Tabs, frames or tables, etc.

“Sculpture Model viewer enhancements”

16-   Adding  Entities, services, data contracts, etc using the context menu ( I mean  right click the mouse à add entity)

17-   Drag-drop the members from the entity to data contract to define contract members.

18-   Do something very similar to PowerToys for the Class Designer and Distributed System Designer http://www.codeplex.com/modeling .

19-   Add Zoom in/out feature for the sculpture model viewer.

20-   Add a toolbar with the same functions available in the details window.

21-   Show all sculpture properties in the original property window (why to have another window for the properties).

 

Questions:
-Why the source code is not source control under code plex ttps://Sculpture.svn.codeplex.com/svn ?
-What will be relased in Version 1.0 and what is planed so far for version 1.1 or version 2?
-How can I contribute with this effort and be part of the team?

Coordinator
Feb 23, 2009 at 12:58 PM
Edited Feb 23, 2009 at 1:01 PM
Hi orajab,


I am most grateful to your participation by this punch of suggestions, it’s really great and adds a lot to Sculpture, We already started in some of them and some are totally new for us.


About “Object Manager”

Maybe we need to discuss more about the end user benefits of this feature when the export supports partial model exportation. (Why the user will need a centralized repository for an abstracted solution of a specific problem?).

 

“(Sculpture explorer should remain to increase, enhance and speedup to locate the objects in the model viewer)”

  • In the ongoing plan.

 “Code generation and refactoring”

8-       Select single, multiple or all objects to be generated

  • In the ongoing plan.

9-       Select what to generate, business objects, Data access object or User Interface objects.

  • In the ongoing plan.

10-    With delete an object give the option to delete all related generated objects.

11-    Rename entity members should be reflected on all generated code without regenerate them in order not lose custom changes.

13-    Reserve the changes by the user and this include and limited to (custom code regions on existing code, user interface changes, etc)

  • As we are most interested in the abstraction layer (Modeling), refactoring the underlying code is come in low priority while the “Generate” command will put all things in its right place.

12-    Generated DB script should be moved automatic to the Database project.

  • In the ongoing plan.

14-    Combine the User interface template generators to project module so user define his templates for this particular project also can store them in the source control.

  • The user can copy the molds anywhere to change it for a specific project.

 

“Entities enhancement”

15-    Group Entity member with a logical grouping mechanism and this later can be reflected as Tabs, frames or tables, etc.

  • Can be done by adding a “Group” property for the member type.

 

“Sculpture Model viewer enhancements”

16-    Adding Entities, services, data contracts, etc using the context menu (I mean right click the mouse à add entity)

  • In the ongoing plan.

17-    Drag-drop the members from the entity to data contract to define contract members.

  • May be done in the copy and paste that we are going to support.

 

18-    Do something very similar to Power Toys for the Class Designer and Distributed System Designer http://www.codeplex.com/modeling .

  • Great resource I did not see it before, we might borrow some features from it to our designer.

19-    Add Zoom in/out feature for the sculpture model viewer.

  • In the ongoing plan.

20-    Add a toolbar with the same functions available in the details window.

  • In the ongoing plan.

21-    Show all sculpture properties in the original property window (why to have another window for the properties).

  • In the ongoing plan.

 

Questions:
-Why the source code is not source control under code plex ttps://Sculpture.svn.codeplex.com/svn ?
Till now we prefer to use our internal SVN.

-What will be relased in Version 1.0 and what is planed so far for version 1.1 or version 2?
We still negotiate the Sculpture plan but within two weeks i will post in my blog the plan of upcoming releases of Sculpture.

-How can I contribute with this effort and be part of the team?

Sure, You are welcome, Just contact me from here or at  (a[dot]negm[at]dawliasoft.com), Attach a brief summery of your experience and description of the contributions you plan to make to the project (maybe some of the above suggestions:) ).

Thank you and best regards,

Negm
.

Feb 24, 2009 at 10:47 PM
Edited Feb 24, 2009 at 10:49 PM

Hello ANegm,

Thank you for your reply and for your professional care. Its my pleasure to add something for sculpture team. 


About “Object Manager”
Maybe we need to discuss more about the end user benefits of this feature when the export supports partial model exportation. (Why the user will need a centralized repository for an abstracted solution of a specific problem?).

I will tell you about the needs so you can understand better why I come up with this suggestion. The needs are:

1-       Ability to share the entities with other developers or reuse the entity in another Model in the same project, because in many cases these entities are common between them.
 In most cases common shared entities are lookup tables. In other cases common entities are not lookups example Employee table.

2-
       Now if any developer need to change with the specifications (data members or data functions) of a common entity; he need to do an impact analysi. With sculpture it will become much easier to analyze the impact analysis in all areas (DB, Business, UI, etc) or you can look at it from another view :which models will be effected and which related services and entities will be effected as well by a change.

3-
       Medium to large scale projects have a very big number of entities in this case loading all entities in the development pc memory will be a performance issue. As I mentioned before we have an enterprise project that contains more than 50,000 entities and many of them are common. So loading all the entities is an issue also locating them in which model they are living in is another issue.
( I made an assumption here that we will be using sculpture for developing such a project, by the way we are using a modeling tool called CA PLEX http://www.ca.com/us/products/product.aspx?id=258 , something very similar to sculpture and generates .Net and java code as well and it can be configured with different patterns[what you call it molds] to generate different application types).





“Entities enhancement”

15-Group Entity member with a logical grouping mechanism and this later can be reflected as Tabs, frames or tables, etc.
Can be done by adding a “Group” property for the member type.

I searched for “Group” property and I could not find it, would you please instruct me in steps for how I can set it?<o:p></o:p>



 
14-    Combine the User interface template generators to project module so user define his templates for this particular project also can store them in the source control.

I found a round solution. But it will great if you tell me how to configure the mold to load its template from a specific path within the project.



Q: why its entitled as “Members” for the data members of an entity, and “Custom Methods” for the member functions?

In “E-R Data modeling” data member are called Attributes and normally data models do not care about Operations (functions and procedures).

Best Regards,

ORajab 

Coordinator
Mar 3, 2009 at 9:25 AM
Hi ORajab,
Sorry for being late, but the last week was so busy for us while finalizing the last release of Sculpture 1.0.
May be you get disappointed from the last release that does not contain any of the features that I describe it as "In the ongoing plan."
But you may excuse us if you read the short summery I post about our next plan Sculpture 2.

Let's return to your suggestions:

I will tell you about the needs so you can understand better why I come up with this suggestion. The needs are:

1-       Ability to share the entities with other developers or reuse the entity in another Model in the same project, because in many cases these entities are common between them.
 In most cases common shared entities are lookup tables. In other cases common entities are not lookups example Employee table.

2-
       Now if any developer need to change with the specifications (data members or data functions) of a common entity; he need to do an impact analysi. With sculpture it will become much easier to analyze the impact analysis in all areas (DB, Business, UI, etc) or you can look at it from another view :which models will be effected and which related services and entities will be effected as well by a change.

3-
       Medium to large scale projects have a very big number of entities in this case loading all entities in the development pc memory will be a performance issue. As I mentioned before we have an enterprise project that contains more than 50,000 entities and many of them are common. So loading all the entities is an issue also locating them in which model they are living in is another issue.
( I made an assumption here that we will be using sculpture for developing such a project, by the way we are using a modeling tool called CA PLEX http://www.ca.com/us/products/product.aspx?id=258 , something very similar to sculpture and generates .Net and java code as well and it can be configured with different patterns[what you call it molds] to generate different application types).


Yes these are true challenges for most Enterprise applications that will lead us to rethink about the "Object Manager". And when we get a final shape of its functionality I will consult you (If you don't mind).


I searched for “Group” property and I could not find it, would you please instruct me in steps for how I can set it?<o:p></o:p>

Indeed there is no "Group" property for the type "Member" but you can add it in the MoldBase (or whatever Mold you need it there) and it will be available in the member properties window (for more information about how to add a dynamic property please watch the second video "Customizing Sculpture").

I found a round solution. But it will great if you tell me how to configure the mold to load its template from a specific path within the project.





From the "Mold Manager" (The first button in the editor window toolbar) you can specify the path for each mold.

Q: why its entitled as “Members” for the data members of an entity, and “Custom Methods” for the member functions?

In “E-R Data modeling” data member are called Attributes and normally data models do not care about Operations (functions and procedures).

About the word "Member" it is just a naming convention (ERD name it "Attribute", LINQ to SQL & Entity Framework name it "Property") may be here because we have data contracts that hold properties we call members for entity attributes.
About "Custom Methods" it is not related to the Entity itself it is a custom data access methods, it will not be generated in the Entity class, instead it will be generated in the Data Access class of this Entity, so we still keep the entity isolated from its operations (that's will be generated in its DAO).

Thanks for your interest,
Negm