Is there any Diagramming component that is freely available for a C# project? If possible one that allows you to click and edit the diagram nodes.
Well, here is the beginning of one.
Well I don't know if you are looking to model just some basic logic steps, or get really in depth and model classes and functions themselves. But, for most design work I do, and this include diagrams, I like to use ArgoUML. It's free, and pretty powerful, though you do have to understand UML, but otherwise I think it is a great tool.
Related
I can't believe I can't find this. At work I use VS2010's CSS Builder tool. It isn't WYSIWYG, really all it does is help one remember the available CSS commands, and their possible values, and stuff it in a selector.
I can't seem to find a tool that does this as a standalone product. I believe CSS Edit did that, but it is now part of $80 Espresso.
I tried CSS3 Toolkit, which is really nothing more than a button generator, and a waste of my $2.99.
Coda does this as well, but again, I don't feel that this is an $80 tool.
Simple CSS does pretty much exactly what I need, and is free, but it is extremely clunky to use IMHO. You have to export the file every time before you can view changes in browser, no save button. Live preview isn't a requirement, but it bugs me that the one in Simple CSS is broken... it doesn't cascade.
Anyone know of a good simple CSS tool for mac? I am tempted to just code one. It is just a matter of taking all the available fields, and all options from W3, putting in a form, and spitting out a file.
You can go for Eclipse and Netbeans you could argue that these two are more geared towards programming in languages such as Java, they can just as well be used for HTML/CSS/javascript.
Bet you can try Aptana which is built specifically for web developers using the Eclipse engine. It is not only free but, it is quite robust, and it supports Eclipse plugins.
A good article that compares CSS editors (not all free bt a quick guide): http://css-tricks.com/reviews-of-mac-css-editors/
And not to miss here are some free CSS editors: http://speckyboy.com/2008/09/15/7-free-css-editors-which-is-the-best-you-choose/
Hello is there any tool/api available to generate a customize sequence diagram based on certain user input?
One way to attack this would be to use Visio (if your licensing scheme is compatible):
Here is a codeplex project that is supposed to make this easier from .NET (I haven't used it):
http://visioautomation.codeplex.com/
Another way to do this would be to just write some WPF code. I think that there are a number of open source projects that might help you in this effort as well.
A really expensive (but really good) implementation is from yWorks - it's yEd. I've used it and it's extremely powerful.
VS2010 provides such a feature, you might need the premium or ultimate version. If you need a whole bunch, you might write a macro or even an extension to VS.
It's very surprising that there are no real tools to fully generate code from a model. All UML tools I've seen are not really practical except this one:
http://www.intrinsarc.com/
A hierarchical component model with full connectors
At the heart of Evolve is a hierarchical component model with full connectors. Connectors act like
wires between components, making it simple and intuitive to express detailed structures that are
difficult or impossible in other approaches such as dependency injection.
Resemblance and evolution
These two constructs provide unprecedented levels of support for component reuse.
Resemblance
is a form of component inheritance. Evolution builds on this to allow the structure of an existing
system to be remodeled, without destroying the original definition. These facilities can be used to
create variants of a system, or to switch in test components.
Did someone try it : what do you think ? It seems like based on UML but not on UML class but other types of diagrams.
Any other tool which can do real code generation UML or not ?
What I mean by real: EMF is not such a tool it's only a framework for building UML Tool as far as I can see not a tool by itself which facilitates the building and maintenance of an application.
Same for Visual Studio Ultimate. Though the UML tool inside is quite good it's just yet another UML tool that doesn't really help ypu model but just do graphically what you can do by typing code.
I wrote the Evolve system which the question is about.
Evolve generates code to connect up classes from UML component models. It can also generate full code for state diagrams, which is incredibly handy. You can easily import and connect up your own classes. It effectively allows you to create software in a way like how you might plug together chips into an electronics circuit board.
The real advantage though is that it aligns software creation, reuse and evolution. In other words, you can create a system, pass it to a colleague, and they can evolve or extend it in any way, even without the source code, and without you having to pre-plan the extension points. You can extend and reuse state charts also.
It does sound magic, but it has a very strong foundation - it was the outcome of recent phd research, and it is actually one of the more sophisticated design tools on the market. The professors who supervised the research also influenced Microsoft's COM work.
Here is a small video of it in action: http://intrinsarc.com/movies/evolve.html
Try it and let us know how you go! The manual has a tutorial which shows you how to build up to a GWT/Hibernate working example.
(BTW Evolve uses EMF under the covers for storing the UML models)
I use Sybase Powerdesigner and custom Ruby code (to access the data model) to generate my ORM model from UML. It can be tough to generate code against UML because there are many ways you can customize the model. I have stereotypes that are not really classes, but are being used for other code generation purposes that are custom to the problem I'm solving. How would a generic code generator understand my custom uses of the model?
Eclipse EMF generates complete Java code from EMF models (ECore). EMF generates classes to represent instances of the model in-memory with support for XML or XMI serialization / deserialization, hooks for validation, an optional editor, and more.
What I mean by real: EMF is not such a tool it's only a framework for building UML Tool as far as I can see not a tool by itself which facilitates the building and maintenance of an application.
You need to do more research before you make statements like that. EMF is a real tool for building real software based on real models. I've used it successfully for building and maintaining production software over a number of years.
Have you ever seen somebody using EMF to generate a full blown app with GUI etc?
Oh yes. Done it myself. Admittedly, I'm talking about specific kinds of applications, and specific kinds of GUIs.
i am a junior c# programmer and would like to learn silverlight.
is silverlight for progrmmers or for designers?
It is for neither - Silverlight is simply the branding for the runtime engine, library set, etc. The only thing that "uses" Silverlight directly is (broadly speaking) the browser.
The important thing for developers is Visual Studio (regular or Express:Web), and for designers: the Expression suite. Both can contribute to a Silverlight project. Also consider that you may be targeting Moonlight, so even "Silverlight" becomes misleading.
Silverlight is for both developers/programmers and designers.
The User Interface of a Silverlight application is defined in XAML script, which is based upon XML.
Microsoft explicitly target the Microsoft Expression (specifically Expression Blend) suite of products at designers, whilst Microsoft's Visual Studio is aimed at developers (although Visual Studio 2010 can be used for design work as well).
If you have a designer and a programmer working together to create the overall Silverlight application, you can utilise a programming design pattern called MVVM (Model-View-ViewModel) to help separate the concerns between the UI and the back-end functional program code. This effectively allow the programmer to not really care about the names and ID values of specific UI elements that may have been defined by the designer, but simply to "bind" together specific User Interface elements with their "back-end" program code counterparts to create the complete Silverlight application.
It is for both.
Both,
As a programmer it's good to be familiar with the programming model, the related MVVM pattern, the object model etc.
As a designer you can build your designs in Blend and XAML. Then integrate them with the rest of the software
Both.
Usually a developer will do it all, but using the Expression products, designers and developers can work on the same project to utilise their skills.
I guess like most peep said, it is for both.
Being a developer myself, I tend to sway towards the coding.
But when I want to do animation, I will go back to xaml, which is way more simpler than doing in the code behind.
One good thing about silverlight that certainly prove that it is suitable for both is that, no matter how a designer place his UI and animations, and no matter how a developer codes, as long as 1 focus on functionality, another focus on UI.
Things will work out perfect, unless the designer deleted some UI that is suppose to have functionality. :)
It's for both.
However you're also going to need both developer and designer to make it quite good.
Currently the project I'm working with does not have completely fixed models (due to an external influence) and hence I'd like some flexibility in writing them. Currently they are replicated across three different layers of the application (db, web api and client) and each has similar logic in it (ie. validation).
I was wondering if there is an approach that would allow me to write a model file (say in ruby), and then have it convert that model into the necessary c# files. Currently it seems I'm just writing a lot of boilerplate code that may change at any stage, whereas this generated approach would allow me to focus on much more important things.
Does anyone have a recommendation for something like this, a dsl/language I can do this in, and does anyone have any experience regarding something like this?
This can be easily done with ANTLR. If the output is similar enough you can simply use the text templating mechanism—otherwise it can generate an abstract syntax tree for you to traverse.
I have seen a system that used partial classes and partial methods to allow for regeneration of code without affecting custom code. The "rules engine" if you will was completely generated from a Visio state diagram. This is basically poor mans workflow but very easy to modify. The Viso diagram was exported to XML which was read in using powershell and T4 to generate the classes.
The above example is of an external DSL. I.E. external to the programming language that the application runs in. You could on the other hand create an internal DSL which is implemented and used in a programming language.
This and the previous article on DSLSs from Code-Magazine are quite good.
In the above link Neal Ford shows you how to create an internal DSL in C# using a fluent interface.
One thing he hasn't mentioned yet is that you can put this attribute [EditorBrowsable(EditorBrowsableState.Never)] on your methods so that they don't appear to intellisense. This means that you can hide the non-DSL (if you will) methods on the class from the user of the DSL making the fluent API much more discoverable.
You can see a fluent interface being written live in this video series by Daniel Cazzulino on writing an IoC container with TDD
On the subject of external DSLs you also have the option of Oslo (CTP at the moment) which is quite powerful in it's ability to let you create external DSLs that can be executed directly rather than for the use of code generation which come to think of it isn't really much of a DSL at all.
I think you are on the right track.
What I usually do in a situation like this is design a simple language that captures my needs and write a LL1 (Recursive Descent) parser for it.
If the language has to have non-trivial C# syntax in it, I can either quote that, or just wrap it in brackets that I can recognize, and just pass it through to the output code.
I can either have it generate a parse tree structure, and generate say 3 different kinds of code from that, or I can just have it generate code on the fly, either using a mode variable with 3 values, or just simultaneously write code to 3 different output files.
There's more than one way to do it. If you are afraid of writing parsers (as some programmers are), there is lots of help elsewhere on SO.