Originally posted by Chris Johnston:
I guess my real question is: Am I expecting too much of these tools? Am I missing the way that they are suppose to be used? Is a sequence diagram not suppose to be used to help discover classes and class methods?
The soul is dyed the color of its thoughts. Think only on those things that are in line with your principles and can bear the light of day. The content of your character is your choice. Day by day, what you do is who you become. Your integrity is your destiny - it is the light that guides your way. - Heraclitus
Originally posted by Ilja Preuss:
I mostly use UML As Sketch, by the way, so most of the programs you tried are already much to heavyweight (and constraining) for me...
Originally posted by Chris Johnston:
But why would you want to go to all the trouble of creating a diagram that communicates your design and then have to recreate all of that in code? I can understand the need to sketch out one aspect of existing code, but does it not make more sense to use a tool that can automate this process for you? In addition, if you are designing a part of a system, does it not make sense to use a tool, that once the design is done can create the code for you?
I guess I don't fully understand the point of UML as Sketch, I tend to see UML more in the UML as Blueprint way.
Books: Pragmatic Unit Testing in Java, Agile Java, Modern C++ Programming with TDD, Essential Java Style, Agile in a Flash. Contributor, Clean Code.
Originally posted by Jeff Langr:
The main goal of these UML sketches is to think through a problem and offer some possible approaches for a solution.
...
In short, the value of UML as sketch is in problem solving and quick communication of ideas, not about saving time by drawing a picture.
UML as sketch makes a lot of sense to me, and UML as Programming Language makes some sense from an idealistic standpoint
Originally posted by Jeff Langr:
But UML as Blueprint goes too far toward the flawed idea that you can produce a perfect design to throw over the wall.
Originally posted by Chris Johnston:
Can you explain this a little bit more. Why is this idea "flawed"? I realize that design is iterative, however, should not the UML reflect the code in each iteration?
I guess I think that if one is using UML to its fullest, you should be able to look at the UML and gain a full understanding of what the system is doing. Obviously you can not express individual method algorithms using UML, but you should be able to express the method calls between objects and this should communicate what the overall system does.
The soul is dyed the color of its thoughts. Think only on those things that are in line with your principles and can bear the light of day. The content of your character is your choice. Day by day, what you do is who you become. Your integrity is your destiny - it is the light that guides your way. - Heraclitus
Originally posted by Chris Johnston:
Why is this idea "flawed"? I realize that design is iterative, however, should not the UML reflect the code in each iteration?
I guess I think that if one is using UML to its fullest, you should be able to look at the UML and gain a full understanding of what the system is doing. Obviously you can not express individual method algorithms using UML, but you should be able to express the method calls between objects and this should communicate what the overall system does.
However, as I said, this may be a rather naive and utopian view of UML. If it is, please let me know (I am a UML newbie trying to understand how it is actually used in the industry and how tools relate to that usage). So far, my understanding has definitely broadened. Thanks.
Books: Pragmatic Unit Testing in Java, Agile Java, Modern C++ Programming with TDD, Essential Java Style, Agile in a Flash. Contributor, Clean Code.
Books: Pragmatic Unit Testing in Java, Agile Java, Modern C++ Programming with TDD, Essential Java Style, Agile in a Flash. Contributor, Clean Code.
42
The soul is dyed the color of its thoughts. Think only on those things that are in line with your principles and can bear the light of day. The content of your character is your choice. Day by day, what you do is who you become. Your integrity is your destiny - it is the light that guides your way. - Heraclitus
Books: Pragmatic Unit Testing in Java, Agile Java, Modern C++ Programming with TDD, Essential Java Style, Agile in a Flash. Contributor, Clean Code.
Books: Pragmatic Unit Testing in Java, Agile Java, Modern C++ Programming with TDD, Essential Java Style, Agile in a Flash. Contributor, Clean Code.
Originally posted by Jeff Langr:
I wouldn't say that the only way to discover classes and methods and so on is through the creation of code. There is still some value to producing an initial design, using whatever mechanisms you think are helpful. Some people like to have a CRC design session. Other people like to detail requirements in use cases and use them as a basis for helping come up with candidate objects. Some people like to model complex flows or state using sequence or state diagrams. I don't have a problem with any of that--it still has some value.
Originally posted by Jeff Langr:
If you don't keep the design of your system clean at all times, any form of incremental design and development will ultimately collapse.
A good question is never answered. It is not a bolt to be tightened into place but a seed to be planted and to bear more seed toward the hope of greening the landscape of the idea. John Ciardi
Originally posted by Chris Johnston:
I think what I was trying to say, albeit, very poorly, was that UML and design can only take you so far and in the end, the only way to truely understand the problem and discover the solution is through code. As you say, you can plan for a trip, but the only way to fully understand the trip is to take it.
I find that to be an interesting insight and it means I need to do a lot more coding!
And yet, without first planning for the trip, you make the execution that much more difficult. In fact, if you do not do some planning, the only way to actually go on the trip is if you fully understand the trip to begin with, i.e., if you have done it before.
The idea of keeping a system and a design clean is an interesting one. Actually, it seems rather self-evident, but there may be something more to this than what appears on the surface.
Can you elaborate more on what you mean by this and what would make for a clean design and system?
The soul is dyed the color of its thoughts. Think only on those things that are in line with your principles and can bear the light of day. The content of your character is your choice. Day by day, what you do is who you become. Your integrity is your destiny - it is the light that guides your way. - Heraclitus
Originally posted by Jeff Langr:
I'm not saying that past knowledge can't help, either. Given experience and feedback, you can hope to do a better job of coming up with an initial design each time you tackle a problem. You might even spend a few more minutes on things like method flow, since you've seen it all before.
Of course, that's reality for up-front design as well.
The soul is dyed the color of its thoughts. Think only on those things that are in line with your principles and can bear the light of day. The content of your character is your choice. Day by day, what you do is who you become. Your integrity is your destiny - it is the light that guides your way. - Heraclitus
Originally posted by Chris Johnston:
The classic argument that if a programmer gets hit by a bus and dies (not sure why it is always a bus) the rest of the team should be able to look at the UML and see exactly what that programmer was working.
The soul is dyed the color of its thoughts. Think only on those things that are in line with your principles and can bear the light of day. The content of your character is your choice. Day by day, what you do is who you become. Your integrity is your destiny - it is the light that guides your way. - Heraclitus
Books: Pragmatic Unit Testing in Java, Agile Java, Modern C++ Programming with TDD, Essential Java Style, Agile in a Flash. Contributor, Clean Code.
Originally posted by Jeff Langr:
Great points Ilja. I do almost zero up-front design anymore, at least on paper. It's either all in my head or emerges via TDD.
The soul is dyed the color of its thoughts. Think only on those things that are in line with your principles and can bear the light of day. The content of your character is your choice. Day by day, what you do is who you become. Your integrity is your destiny - it is the light that guides your way. - Heraclitus
Originally posted by Ilja Preuss:
In the version I know, it's a truck. I also heard people suggest to use a lotto prize instead, because it's more political correct (no developer got hurt in this metapher). Actually the problems can already arise during a simple vacation.
Originally posted by Ilja Preuss:
The problem with UML is that it typically isn't very good at catching the most important information: what was the developer thinking when deciding about the design? *Why* did he do it that way, what forces drove him?
42
Originally posted by Jeroen Wenting:
In fact I've serious doubts as to whether forcing a tool or methodology on people ever does much more than move the problem elsewhere while making them unhappy.
The soul is dyed the color of its thoughts. Think only on those things that are in line with your principles and can bear the light of day. The content of your character is your choice. Day by day, what you do is who you become. Your integrity is your destiny - it is the light that guides your way. - Heraclitus
42
42
The soul is dyed the color of its thoughts. Think only on those things that are in line with your principles and can bear the light of day. The content of your character is your choice. Day by day, what you do is who you become. Your integrity is your destiny - it is the light that guides your way. - Heraclitus
42
Books: Pragmatic Unit Testing in Java, Agile Java, Modern C++ Programming with TDD, Essential Java Style, Agile in a Flash. Contributor, Clean Code.
The soul is dyed the color of its thoughts. Think only on those things that are in line with your principles and can bear the light of day. The content of your character is your choice. Day by day, what you do is who you become. Your integrity is your destiny - it is the light that guides your way. - Heraclitus
Originally posted by Jeroen Wenting:
the traditional argument is that people working in pairs produce less buggy code because there's an extra pair of eyes on what's being produced and that they also work faster because they (each) spend less time thinking and more time coding.
Personally I think especially the latter argument is bogus
I find I work best with a small group, each working on separate but related tasks, in which people aren't afraid to ask each other questions.
That way everyone gets to do his own thing yet can ask for help from the others if needed.
The soul is dyed the color of its thoughts. Think only on those things that are in line with your principles and can bear the light of day. The content of your character is your choice. Day by day, what you do is who you become. Your integrity is your destiny - it is the light that guides your way. - Heraclitus
Originally posted by Chris Johnston:
One question though regarding the use of pair programming: How can pair programming be faster or more productive having two programmers working on the same code as opposed to each programmer working on separate code? Should it not be faster to have each programmer working on their own thing, that way you get two things done instead of one?
Now the only real question is how to influence all the managers above me when I am at the bottom of the heap, hmm...
The soul is dyed the color of its thoughts. Think only on those things that are in line with your principles and can bear the light of day. The content of your character is your choice. Day by day, what you do is who you become. Your integrity is your destiny - it is the light that guides your way. - Heraclitus
Whoever got anywhere by being normal? Just ask this exceptional tiny ad:
Gift giving made easy with the permaculture playing cards
https://coderanch.com/t/777758/Gift-giving-easy-permaculture-playing
|