# Help with choosing the program design of complex projects.



## valsorym (Nov 12, 2011)

Good time of day all!
I need your help. I raise my own level of programming. 
I recently switched from Windows to FreeBSD, and I more poorly oriented.
Now my tools are: devel/gcc compiler, devel/geany editor (very often editors/vim editor) and interesting tool, has name valgrind.

Experience shows that if you write a draft beforehand, the no attention to detail - it has to be rewritten again. Then again rewrite. And then again.

So sometimes I use graphics/dia. But the possibilities of this program as it is not enough or I plow.

What programs do you use for the design of large projects?
* program must be installed on FreeBSD.

Need a program in which we could explore the details of the program and then move on to implementation.

Added (after a few hours):
--------------------------
Like here, for example, the FreeBSD-developers are developing a project OS? 
There's a lot of code, all this must be documented and as a visual display (in the form of block diagrams, UML diagrams, etc.).
* I wonder how often FreeBSD-developers use UML? The use of such programs as Rational Rose?

Added (after one night):
------------------------
By studying this question, found to be interesting program Umbrello  and UML plugin for Eclipse. 
[!] Have not tried it myself. As I understand it to install Umbrello need to install the whole package kdesdk4:
`# pkg_add -r kdesdk4`
`# exit`
`# /usr/local/kde4/bin/umbrello`

Though perhaps it is not necessary at all. So what programs you use?


----------



## xibo (Nov 13, 2011)

A flipchart 

TeX, doxygen, subversion, clang, ...


----------



## plamaiziere (Nov 13, 2011)

doorways said:
			
		

> Added (after one night):
> ------------------------
> By studying this question, found to be interesting program Umbrello  and UML plugin for Eclipse.
> [!] Have not tried it myself. As I understand it to install Umbrello need to install the whole package kdesdk4:



Yes, umbrello is part of the kdesdk (you will need kdelibs and so on too).

I've used Umbrello for a small project (in Java). That's enough for high level design to get an idea about the architecture of the program. But imho that's all. Don't try to revert code to UML, Umbrello will destroy all your nice diagrams. That is very frustrating  

For up-to-date documentation and diagram you may use dioxygen, I think it is able to produce UML diagrams from the code. For java, umlgraph is good for this ; it's not pure UML but it gives a good idea of the interaction between classes (ex: http://user.lamaiziere.net/patrick/...ri/jtacl/equipments/openbsd/PacketFilter.html).


----------



## valsorym (Nov 13, 2011)

> Originally Posted by *xibo.*
> A flipchart


It's funny. I sometimes use a windows in my room, and a black marker. 


> Originally Posted by *xibo.*
> TeX, doxygen, subversion, clang ...


TeX it is good program, but as far as I know it is the environment layout (convenient application for mathematicians, physicists).

doxygen - excellent documentation  generator on the code, I have long to look after him (* I think I'm not quite so wanted to say).

subversion and "clang"  up to this point I was not familiar with.
The first program - a program version control, and a second program - I did not understand what it was about (the problem with translation).

** In these programs, there is something in common - they can be used only after the how project is planned and  implemented using the programming language (C/C++, C#, Java, Ruby, Python .. . .. .).

And my question a little not about that! My question is how to formalize the idea then it can be implemented. 

Ie, If we had the idea to write a search function of the greatest number of three numbers (in ideal conditions), we use a block diagram. Yes, yes, a block diagram drawing algorithm. Thus, we will design an idea to its realization.

And only after that we will use: TeX for writing documentation; doxygen - to generate developer documentation; subversion - Version control of write code.

But thanks! For that remember about these tools! 
I thought about using doxygen and now think about subversion.! Thank you!



> Originally Posted by *plamaiziere.*
> Don't try to revert code to UML, Umbrello will destroy all your nice diagrams.


I do not plan to use the auto-generation code. I need a medium in which I can only visually design the project (A flipchart - good idea). The code I write separately - I do not like it when a program tries to myself to write something for me. 



> Originally Posted by *plamaiziere.*
> ... use dioxygen, I think it is able to produce UML diagrams from the code.


I did not even think that he is able.

But again the same: it is a bit wrong!
Imagine you decided to write a control program by air at the airport. (management of all: boarding passengers, baggage loading, aircraft dispatch, reception of other aircraft (helicopters/aircraft/UFO), etc.).

1. First you spend analysis!
2. Then you have to prepare a draft in the form of "rock art".
3. Now you should structure your images and convert them into a flow chart!
And then begin to write the program and documentation.

You do not want to write program code first, and then use (such) dioxygen look what we have planned?



> Originally Posted by *plamaiziere.*
> Yes, umbrello is part of the kdesdk (you will need kdelibs and so on too).


Thank you for clarify this point! And talked about her shortcomings.


**(Sorry if somewhere in the text seems to you that I scold or blame someone else - it is not! It's the fact that I do not know much English, and maybe it looks bad. Sorry me.)**


----------



## Crivens (Nov 14, 2011)

Usually Pen&Paper, which have the great additional benefit of being available also without electrical power, in a train, in bed, ...
As for TeX, never underestimate the power of the great old one. After looking at my screen with a TeX compile which produced "[1] [2] [3] [5] [7] [11] [13] ..." I was finally convinced that you could do almost anything with it. Still looking for the 'vmunix.dvi' file, tough...


----------



## Maredelamer (Nov 14, 2011)

*Perhaps graphics/dia ?*

graphics/dia looks like it has some support for UML, and seems functional. I installed it earlier today so I have not had much time to use it as of yet however.


----------



## valsorym (Nov 14, 2011)

> Originally Posted by *Maredelamer*.
> graphics/dia looks like it has some support for UML, ...


Oh, yes, I use this tool.


> Originally Posted by *doorways*.
> So sometimes I use graphics/dia. But the possibilities of this program as it is not enough or I plow.


This is a great tool! But to me (why I do not know)  is not convenient to work in it.
But judging by the comments I will have to use it further.

I do not want use Umbrello - it's necessary to put the whole package kdesdk4. I do not like everything associated with KDE, particularly Qt  (it really slow and large - or I just do not know how to configure it).



> Originally Posted by *Crivens*.
> As for TeX, never underestimate the power of the great old one.


I do not underestimate this package. This is a powerful tool! But this is not a bit what me need in the current situation.

I wonder how often the FreeBSD developers attend these posts? I would like to know how they adjust to work on ideas with each other?! 
The FreeBSD project is huge - really they do not use UML?

Maybe I'm biased to the situation? Maybe not on the same UML has three elephants and keep this world? Maybe there's something better (similar).


----------



## Crivens (Nov 14, 2011)

doorways said:
			
		

> I do not underestimate this package. This is a powerful tool! But this is not a bit what me need in the current situation.



Sorry, this was a mix of a StarWars- and H.P.Lovecraft reference. Maybe the translation broke it.


----------



## valsorym (Nov 14, 2011)

Oh, sorry me. I have a translation problem.


----------



## fluca1978 (Nov 14, 2011)

When possible I use some kind of IDE, eclipse if programming in Java, QtCreator when dealing with C++/Qt Code.
For other projects I use Emacs as my default editor, and I use etag to move within the code. I use Dia for almost every kind of diagram. And finally Doxygen for code documentation.


----------



## valsorym (Nov 14, 2011)

Thank fluca1978! This is a really useful tip.


----------



## valsorym (Nov 15, 2011)

Trying to sort out this issue, I came to the conclusion that even so better to use a graphics/dia - diagram editor (including UML).
I see that this project develops - this is good. Also, I see that FreeBSD ports enabled these utilities:
devel/autodia - a program to convert Perl, Java, PHP and C++ code in the Dia-UML image.
devel/dia2code - is a small utility used to generate code from a Dia diagram.
Although for me it does not matter, because the code is always going to write by hand. But it shows the popularity of graphics/dia.
In addition, the use of java/eclipse or java/netbeans I do not want - too big programs.


----------



## fluca1978 (Nov 16, 2011)

I didn't know of autodia, I will give it a try!


----------



## valsorym (Nov 16, 2011)

fluca1978 said:
			
		

> ... I will give it a try!



Good luck! 
* Perhaps, you will share your impressions here.


----------



## fonz (Nov 17, 2011)

fluca1978 said:
			
		

> When possible I use some kind of IDE


When possible I avoid an IDE. The last IDE I found even remotely usable was Borland Pascal/C/C++ and that was a long time ago. As mentioned above: if one needs UML modelling or something, the best app is Pen-And-Paper - and it's free and open source to boot 

Fonz

P.S. Whatever you do, stay away from Borland Together. It's pure evil. Trust me, I know.


----------



## valsorym (Nov 18, 2011)

> Originally Posted by *fonz*
> P.S. Whatever you do, stay away from Borland Together. It's pure evil. Trust me, I know.



I understand your feelings. I grew up on the products Borland: Borland Turbo Pascal 7.0, Borland Delphi 6/7/2007, Borland Turbo C 3, Borland Builder 6, Borland Developer Studio 2006 (very bad), Borland CodeGear RAD Studio 2007/2009.
That is to say: "Child Borland"! 
* Although Borland has both pluses. (Compared with Microsoft Visual Studio, he liked me more).
But the real ecstasy of editors/vim/devel/geany + devel/gcc. (I just recently switched from Windows to UNIX).


----------



## fluca1978 (Nov 18, 2011)

fonz said:
			
		

> When possible I avoid an IDE.



The IDE vs plain-old-editor is a long-story battle....
I use an editor for almost every work, but having an IDE will save your time if you know the product you are using. This does not mean that the ide must do everything for you, you still have to be able to compile from the command line...


----------

