System Design Pointer
-
What tool do you use to design your class interaction? 1. Pencil and paper 2. Visual Studio 3. Mind Mapping program 4. or something else Most of the things I have worked on before have been small projects or ones that pretty much had just one solution. I have to rewrite our main product. It is suppose to be all inclusive, containing all of the tools that live outside the product now. I'm upgrading it from VB6. There is a lot of inline functionality that I want to break into reusable classes and make the project more modular to simplify upgrading in the future. Everyone refers to it as the house of cards because any changes usually make the whole crash. I'm just stuck as to where to start with designing the class layout and interaction. I have toyed with Visual Studio and XMind for roughing out the classes. Both have their advantages and disadvantages. Where do you start?
Brad Deja Moo - When you feel like you've heard the same bull before.
Mostly P&P, but when it gets too complicated I may resort to sequence diagrams using Enterprise Architect (link already provided above). (actually I start with class diagrams, and only bother with interaction if I'm dubious about the details: figuring out the interaction can greatly help to shape the class interface) I don't see how VS or Mind Mapping would be any help, as they're tools meant for totally different purposes. It's not like you normally use either a swiss army knife or chop sticks for eating chicken broth. Both may be helpful for dealing with the tangible bits, but for the most part you may just as well not use them at all.
-
Mostly P&P, but when it gets too complicated I may resort to sequence diagrams using Enterprise Architect (link already provided above). (actually I start with class diagrams, and only bother with interaction if I'm dubious about the details: figuring out the interaction can greatly help to shape the class interface) I don't see how VS or Mind Mapping would be any help, as they're tools meant for totally different purposes. It's not like you normally use either a swiss army knife or chop sticks for eating chicken broth. Both may be helpful for dealing with the tangible bits, but for the most part you may just as well not use them at all.
-
What tool do you use to design your class interaction? 1. Pencil and paper 2. Visual Studio 3. Mind Mapping program 4. or something else Most of the things I have worked on before have been small projects or ones that pretty much had just one solution. I have to rewrite our main product. It is suppose to be all inclusive, containing all of the tools that live outside the product now. I'm upgrading it from VB6. There is a lot of inline functionality that I want to break into reusable classes and make the project more modular to simplify upgrading in the future. Everyone refers to it as the house of cards because any changes usually make the whole crash. I'm just stuck as to where to start with designing the class layout and interaction. I have toyed with Visual Studio and XMind for roughing out the classes. Both have their advantages and disadvantages. Where do you start?
Brad Deja Moo - When you feel like you've heard the same bull before.
I use paper/pencil, and usually away from the computer. However, I don't go farther than a few objects at a time unless I have a really clear idea where things are. That said, if I do find I'm making a large model, I'll open up a word processor and do a multi-level bulleted list. That way, I can add things as I need. Where an outer item points back into the model later (such as a sport team under Rugby pointing back into a location under countries/cities), I'll put that in parentheses afterwards. I'll do this in cycles until the entire model is done.
-
What tool do you use to design your class interaction? 1. Pencil and paper 2. Visual Studio 3. Mind Mapping program 4. or something else Most of the things I have worked on before have been small projects or ones that pretty much had just one solution. I have to rewrite our main product. It is suppose to be all inclusive, containing all of the tools that live outside the product now. I'm upgrading it from VB6. There is a lot of inline functionality that I want to break into reusable classes and make the project more modular to simplify upgrading in the future. Everyone refers to it as the house of cards because any changes usually make the whole crash. I'm just stuck as to where to start with designing the class layout and interaction. I have toyed with Visual Studio and XMind for roughing out the classes. Both have their advantages and disadvantages. Where do you start?
Brad Deja Moo - When you feel like you've heard the same bull before.
-
What tool do you use to design your class interaction? 1. Pencil and paper 2. Visual Studio 3. Mind Mapping program 4. or something else Most of the things I have worked on before have been small projects or ones that pretty much had just one solution. I have to rewrite our main product. It is suppose to be all inclusive, containing all of the tools that live outside the product now. I'm upgrading it from VB6. There is a lot of inline functionality that I want to break into reusable classes and make the project more modular to simplify upgrading in the future. Everyone refers to it as the house of cards because any changes usually make the whole crash. I'm just stuck as to where to start with designing the class layout and interaction. I have toyed with Visual Studio and XMind for roughing out the classes. Both have their advantages and disadvantages. Where do you start?
Brad Deja Moo - When you feel like you've heard the same bull before.
My answer as to what to use to design the class interactions would be "all of the above." A more specific and, perhaps, more helpful answer would be to classify your tools on a scale of "informal and free-form" verses "formal and rigid" and pick your tools as you design your software system moving from the left hand of the scale (informal) to the right hand of the scale (formal.) For example, if you have no clue where to begin and you need to overcome the static friction in the design process (that is, "get the ball moving") using pen and paper or, perhaps better, SimpleDiagrams. In this way, your tool allows you the maximum amount of freedom in designing the system. As you overcome the static friction in the design process, though, you will want to use tools that enforce more of a rigid, orderly design process (UML, ERD, flow charts, et. al.). There are several good tools out there that allow you to do this. Dia is one such tool, and is Open Source. Microsoft's Visio tool is another such tool. I've herd lots of good things about VS's UML diagramming tools, but I haven't used them myself, so I can't stump for them. Hope this helps!
Robert Miesen
-
What tool do you use to design your class interaction? 1. Pencil and paper 2. Visual Studio 3. Mind Mapping program 4. or something else Most of the things I have worked on before have been small projects or ones that pretty much had just one solution. I have to rewrite our main product. It is suppose to be all inclusive, containing all of the tools that live outside the product now. I'm upgrading it from VB6. There is a lot of inline functionality that I want to break into reusable classes and make the project more modular to simplify upgrading in the future. Everyone refers to it as the house of cards because any changes usually make the whole crash. I'm just stuck as to where to start with designing the class layout and interaction. I have toyed with Visual Studio and XMind for roughing out the classes. Both have their advantages and disadvantages. Where do you start?
Brad Deja Moo - When you feel like you've heard the same bull before.
-
What tool do you use to design your class interaction? 1. Pencil and paper 2. Visual Studio 3. Mind Mapping program 4. or something else Most of the things I have worked on before have been small projects or ones that pretty much had just one solution. I have to rewrite our main product. It is suppose to be all inclusive, containing all of the tools that live outside the product now. I'm upgrading it from VB6. There is a lot of inline functionality that I want to break into reusable classes and make the project more modular to simplify upgrading in the future. Everyone refers to it as the house of cards because any changes usually make the whole crash. I'm just stuck as to where to start with designing the class layout and interaction. I have toyed with Visual Studio and XMind for roughing out the classes. Both have their advantages and disadvantages. Where do you start?
Brad Deja Moo - When you feel like you've heard the same bull before.
You may wish to consider a more agile approach... I would recommend reading "applying uml and patterns" by Craig Larman. The answer to your question then becomes Whiteboard.
-
VS2010 ultimate comes with UML diagram editors
Pedis ex oris Quidquid latine dictum sit, altum sonatur
Ah, forgot about that. I dimly remember seeing the feature in the trial version, but I never bothered to even look at it because I already had EA. ;)
-
mixture of: - pen && paper - Whiteboard (and occasionally surrounding wall, but then even as a child i had trouble colouring within the lines) - brain (entirely optional) - trial && error (mainly the latter) - dreams (true story, once went to bed with a design problem on my mind, woke up to find the answer scribbled on a piece of paper along with 2 other problems i needed to solve and hadn't previously thought of!)
Pedis ex oris Quidquid latine dictum sit, altum sonatur
How about a keyboard and start typing furiously?
-
What tool do you use to design your class interaction? 1. Pencil and paper 2. Visual Studio 3. Mind Mapping program 4. or something else Most of the things I have worked on before have been small projects or ones that pretty much had just one solution. I have to rewrite our main product. It is suppose to be all inclusive, containing all of the tools that live outside the product now. I'm upgrading it from VB6. There is a lot of inline functionality that I want to break into reusable classes and make the project more modular to simplify upgrading in the future. Everyone refers to it as the house of cards because any changes usually make the whole crash. I'm just stuck as to where to start with designing the class layout and interaction. I have toyed with Visual Studio and XMind for roughing out the classes. Both have their advantages and disadvantages. Where do you start?
Brad Deja Moo - When you feel like you've heard the same bull before.