Ralf Westphal | 1 Jul 2011 17:02
Picon
Gravatar

Re: Communicating design

On 30 Jun., 13:47, Ron Jeffries <ronjeffr...@...> wrote:
> How do you determine whether the FD you draw is the FD that
> implements what you understand the problem / solution to be?

Very simply by executing it.

For that, however, the operations of the FD model need to be
implemented.
(Operations: leafs of the tree of behaviors, lowest level of the
stratified design)

To do that is up to the programmer. If she wants to do it using TDD
that´s just fine. But for each operation that´s a straightforward
task, because through FD you decompose the overall behavior into
operations that are fairly small, sometimes just 5 line of code,
sometimes 200 LOC (plus test code).

All those operations are independent of each other. So testing is very
easy.

--

-- 
You received this message because you are subscribed to the Google Groups "software_craftsmanship" group.
To post to this group, send email to software_craftsmanship@...m.
To unsubscribe from this group, send email to software_craftsmanship+unsubscribe@...
For more options, visit this group at http://groups.google.com/group/software_craftsmanship?hl=en.

David Wilde | 1 Jul 2011 17:06
Picon

Re: Re: Communicating design

Ralf,


Do you have any examples of FD alongside code? I would like to see it in action to get a clearer picture of it.

David

On 1 July 2011 16:02, Ralf Westphal <info <at> ralfw.de> wrote:
On 30 Jun., 13:47, Ron Jeffries <ronjeffr...-HInyCGIudOg@public.gmane.org> wrote:
> How do you determine whether the FD you draw is the FD that
> implements what you understand the problem / solution to be?

Very simply by executing it.

For that, however, the operations of the FD model need to be
implemented.
(Operations: leafs of the tree of behaviors, lowest level of the
stratified design)

To do that is up to the programmer. If she wants to do it using TDD
that´s just fine. But for each operation that´s a straightforward
task, because through FD you decompose the overall behavior into
operations that are fairly small, sometimes just 5 line of code,
sometimes 200 LOC (plus test code).

All those operations are independent of each other. So testing is very
easy.

--
You received this message because you are subscribed to the Google Groups "software_craftsmanship" group.
To post to this group, send email to software_craftsmanship-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org.
To unsubscribe from this group, send email to software_craftsmanship+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org.
For more options, visit this group at http://groups.google.com/group/software_craftsmanship?hl=en.


--
You received this message because you are subscribed to the Google Groups "software_craftsmanship" group.
To post to this group, send email to software_craftsmanship-/JYPxA39Uh4Ykp1iOSErHA@public.gmane.orgm.
To unsubscribe from this group, send email to software_craftsmanship+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
For more options, visit this group at http://groups.google.com/group/software_craftsmanship?hl=en.
Ralf Westphal | 1 Jul 2011 17:22
Picon
Gravatar

Re: Communicating design

Thx for the links, Andy.

BON I did not really know about.

For a while DCI looked promising to me - but in the end - to me - it
remained too much in the OO world to be efficient in design.

On 30 Jun., 17:20, Andy Dent <d...@...> wrote:
> On 30/06/2011, at 6:47 PM, Ralf Westphal wrote:
>
> > FD scales very well. A whole application is a functional unit like the
> > code running in a single process of the application like maybe
> > filtering records or formatting data is. FD is a visual language for
> > "stratified designs" (see "Structure and Interpretation of Computer
> > Programs", p. 140). But it does not contain control structures like
> > if, while etc. It´s just data flowing and being transformed. Because
> > software is about just that: transformation of input into output.
>
> After a brief look at your web pages (I intend further but want to get this in the thread of email) I think I
know some fellow-thinkers :-)
>
> I have a suspicion you'd find some useful similarities in Bon diagrams, see my blog post from
2006http://www.artima.com/weblogs/viewpost.jsp?thread=158340for an example and links. Bon is the
diagramming and design method for the Eiffel language.
>
> The original Visual Design Language VDL from Solution Based Modelling and many of the SBM principles
would be of a lot of interest although sadly it has dropped by the wayside as John Brugge blogs
abouthttp://jbrugge.com/blog/2007/05/10/ode-to-solution-based-modeling/which also points to
my postinghttp://www.artima.com/forums/flat.jsp?forum=106&thread=158300and reading my summary
of their points, I'm struck again by their anticipation of the agile principles (twenty years ago).
>
> I've not had time to read and digest it properly but I also suspect you have some significant crossover with
the DCI principles Cope espouses in his new Lean Architecture book, a good starting point for which
ishttps://sites.google.com/a/gertrudandcope.com/www/thedciarchitecturewhich has a brief
overview and many links.
>
> I hope you enjoy these links as much as I've enjoyed this thread
>
> Andy

--

-- 
You received this message because you are subscribed to the Google Groups "software_craftsmanship" group.
To post to this group, send email to software_craftsmanship@...m.
To unsubscribe from this group, send email to software_craftsmanship+unsubscribe@...
For more options, visit this group at http://groups.google.com/group/software_craftsmanship?hl=en.

Raoul Duke | 1 Jul 2011 17:59
Picon

Re: Re: Communicating design

On Fri, Jul 1, 2011 at 8:22 AM, Ralf Westphal <info@...> wrote:
> BON I did not really know about.

& i thought BON was more for static relationships, than the important
and often hard to grok runtime dynamic relationships?

--

-- 
You received this message because you are subscribed to the Google Groups "software_craftsmanship" group.
To post to this group, send email to software_craftsmanship@...
To unsubscribe from this group, send email to software_craftsmanship+unsubscribe@...
For more options, visit this group at http://groups.google.com/group/software_craftsmanship?hl=en.

Andy Dent | 2 Jul 2011 03:27
Picon
Gravatar

Re: Re: Communicating design


On 01/07/2011, at 11:59 PM, Raoul Duke wrote:
> 
> & i thought BON was more for static relationships, than the important
> and often hard to grok runtime dynamic relationships?

I have used the Dynamic Bon diagrams within UML and casual diagramming tools very successfully for
documenting the dynamic aspects of an architecture. One of the nice things is their dynamic diagram shows
diagrams with numbered edges between objects then pulls out the numbers into a separate textual scenario
that can be read linearly.

For a given set of relationships, it is a trivial exercise to alter the numbering (if necessary) and change
the wording of the scenario. Often the collaborating objects remain the same but the sequences and
details of communications change in different scenarios.

This worked well for us developing an architecture for a broad spatial industry tender where the domain
expert was able to continue refining the wording of the scenarios (except for the fragiility of multiple
Visio diagrams pasted into Word tables!).

--

-- 
You received this message because you are subscribed to the Google Groups "software_craftsmanship" group.
To post to this group, send email to software_craftsmanship@...m.
To unsubscribe from this group, send email to software_craftsmanship+unsubscribe@...
For more options, visit this group at http://groups.google.com/group/software_craftsmanship?hl=en.

Ralf Westphal | 2 Jul 2011 07:53
Picon
Gravatar

Re: Communicating design

There are quite a few samples if you follow the links on the
FD resource page http://clean-code-advisors.com/ressourcen/flow-design-ressourcen

But how about this: you come up with a challenge and I solve it it the
FD/EBC way.
That way you are sure I dont fake the solution ;-) And I will need to
go off my treaden paths.

Check out the AppKatas to get an idea of the size of such an exercise:
http://geekswithblogs.net/theArchitectsNapkin/archive/2011/06/25/appkata---enter-the-next-level-of-programming-exercises.aspx

It should be from a domain I can get into without asking too many
questions, it should not be trivial (like "store user data and query
it"), it should not require heavy infrastructure.

I would publish the solution with explanations in my English blog.

How's that?

On 1 Jul., 17:06, David Wilde <djwi...@...> wrote:
> Ralf,
>
> Do you have any examples of FD alongside code? I would like to see it in
> action to get a clearer picture of it.
>
> David
>
> On 1 July 2011 16:02, Ralf Westphal <i...@...> wrote:
>
>
>
> > On 30 Jun., 13:47, Ron Jeffries <ronjeffr...@...> wrote:
> > > How do you determine whether the FD you draw is the FD that
> > > implements what you understand the problem / solution to be?
>
> > Very simply by executing it.
>
> > For that, however, the operations of the FD model need to be
> > implemented.
> > (Operations: leafs of the tree of behaviors, lowest level of the
> > stratified design)
>
> > To do that is up to the programmer. If she wants to do it using TDD
> > that´s just fine. But for each operation that´s a straightforward
> > task, because through FD you decompose the overall behavior into
> > operations that are fairly small, sometimes just 5 line of code,
> > sometimes 200 LOC (plus test code).
>
> > All those operations are independent of each other. So testing is very
> > easy.
>
> > --
> > You received this message because you are subscribed to the Google Groups
> > "software_craftsmanship" group.
> > To post to this group, send email to
> > software_craftsmanship@...
> > To unsubscribe from this group, send email to
> > software_craftsmanship+unsubscribe@...
> > For more options, visit this group at
> >http://groups.google.com/group/software_craftsmanship?hl=en.

--

-- 
You received this message because you are subscribed to the Google Groups "software_craftsmanship" group.
To post to this group, send email to software_craftsmanship@...m.
To unsubscribe from this group, send email to software_craftsmanship+unsubscribe@...
For more options, visit this group at http://groups.google.com/group/software_craftsmanship?hl=en.

John Daniels | 2 Jul 2011 10:48
Picon

Re[2]: Re: Communicating design

UML has come in for a lot of stick in this discussion, and I feel
moved to say something in its defence.

Yes, it's seriously flawed as a graphical communication language; yes,
it's overblown and lacks focus; and, yes it has been inextricably
linked with the failure of MDA. But just bear in mind when you're next
standing at the whiteboard sketching some ideas that what you're
drawing is almost certainly a form of UML.

For all its failings, UML *has* got us to the point where there is a
standard graphical language for at least the basics. We're in a much
better position than we were before we converged on UML.

It's true that not all UML sketcher's are clear about the semantics
of what they are drawing, and routinely confuse precision with
completeness, but that's not UML's fault (or at least, not mainly
UML's fault).

So by all means criticize MDA, or the fear uncertainly and doubt
caused by ill-conceived CASE tools and processes, but please try to
see UML as something separate.

Thanks,

--John Daniels

--

-- 
You received this message because you are subscribed to the Google Groups "software_craftsmanship" group.
To post to this group, send email to software_craftsmanship@...
To unsubscribe from this group, send email to software_craftsmanship+unsubscribe@...
For more options, visit this group at http://groups.google.com/group/software_craftsmanship?hl=en.

Markus Gaertner | 2 Jul 2011 17:17
Gravatar

Early artifacts

Google Groups seems to abandon the pages and files from their groups.
While I waded through the downloaded pages, I found some treasures
from our early days. I put them in a blog entry in the hope that these
artifacts - the ethics, the first brainstorming ideas that led to the
manifesto, and questions for interviewers - won't get lost.
http://www.shino.de/2011/07/02/some-software-craftsmanship-treasures/

Best
Markus
-- 
Dipl.-Inform. Markus Gärtner
http://www.shino.de/blog
http://www.it-agile.de
Twitter:  <at> mgaertne

--

-- 
You received this message because you are subscribed to the Google Groups "software_craftsmanship" group.
To post to this group, send email to software_craftsmanship@...m.
To unsubscribe from this group, send email to software_craftsmanship+unsubscribe@...
For more options, visit this group at http://groups.google.com/group/software_craftsmanship?hl=en.

Ron Jeffries | 2 Jul 2011 18:19
Picon
Favicon
Gravatar

Re: Re: Communicating design

Hello, Ralf.  On Friday, July 1, 2011, at 8:02:52 AM, you wrote:

> On 30 Jun., 13:47, Ron Jeffries <ronjeffr...@...> wrote:
>> How do you determine whether the FD you draw is the FD that
>> implements what you understand the problem / solution to be?

> Very simply by executing it.

> For that, however, the operations of the FD model need to be
> implemented.
> (Operations: leafs of the tree of behaviors, lowest level of the
> stratified design)

> To do that is up to the programmer. If she wants to do it using TDD
> that愀 just fine. But for each operation that愀 a straightforward
> task, because through FD you decompose the overall behavior into
> operations that are fairly small, sometimes just 5 line of code,
> sometimes 200 LOC (plus test code).

> All those operations are independent of each other. So testing is very
> easy.

How do you determine that the FD you draw is the FD that is
implemented?

Ron Jeffries
www.XProgramming.com
How do I know what I think until I hear what I say? --  E M Forster

--

-- 
You received this message because you are subscribed to the Google Groups "software_craftsmanship" group.
To post to this group, send email to software_craftsmanship@...m.
To unsubscribe from this group, send email to software_craftsmanship+unsubscribe@...
For more options, visit this group at http://groups.google.com/group/software_craftsmanship?hl=en.

Ron Jeffries | 2 Jul 2011 23:01
Picon
Favicon
Gravatar

Re: Re: Communicating design

Hello, Ralf.  On Tuesday, June 28, 2011, at 6:55:35 AM, you wrote:

> What I know hear, though, is openess for a different view of the
> programming world where TDD does not work for me (and others). It愀
> not good enough. I feel pain.

I still think that if you feel pain when programming you should do
something else. Pain is nature's way of telling us not to do stuff.
So it makes sense that you might try drawing diagrams.

I do suspect, however, that you do not do things the way I do them,
and I suspect that if you got close to that way, you'd feel less
pain. I could be wrong ... but that's what I suspect.

> To answer that by suggesting people who think differently are either
> not passionate about programming or are just plain less skilled, well,
> is not very polite and in the end does not really further the
> profession, I悲 say.

I can assure you that when programming causes me pain, for example
when I'm trying to make some stupid installation work, I stop doing
what I'm doing, and try something else. I offer that advice quite
sincerely.

Now as for TDD working ...

> I keep hearing "It works for me."
> Then I惴 presenting arguments why there are limitations to what
> "reading the source" can offer.

So far, I guess those limitations do not strike us as limitations we
encounter. I'm not sure why. I suspect they are not specific enough,
or that we have evolved ways of not finding ourselves in the
situations you find painful. Or possibly, we have skills that we
have not mentioned or described, that would alleviate your pain as
well.

> Unfortunately hardly any of my arguments have been taken up by you or
> others to actually discuss them (not just discount them).

First of all, I and others have said, sure, draw diagrams and
discuss them with people. That's not discounting. It seems to me
(and others?) that you have some special kind of diagram that is the
only one that satisfies you. That is interesting but we are not
dissatisfied with what we have.

Second, if we sincerely do not feel the need the kind of diagrams
you do, and we do not feel the pain of programming that you do, does
it not seem reasonable that we may know something about working the
way we do that we have not managed to get across? Does it not seem
reasonable that if you knew it, you, too, might have the same
results we have?

Isn't that kind of how we do science: replicate others' experiments
and then determine how well they work? Isn't it fair for us to
explore whether you've replicated our experiment?

> For example the fundamental argument of text being a poor
> representation of almost anything. Text has its benefits, sure. But it
> 愀 so much harder to understand than more "natural representations" of
> music, math, electrical circuits, bridges and whatnot.

Well actually music and math are specialized forms of text, it seems
to me. Electrical diagrams and bridge pictures, sure. What those
are, it seems to me, is incomplete specifications for how something
is to be built.

And that is the fundamental issue with software diagrams versus
software text. As today's systems work, only the text is truly
definitive about what the software is.

There can be programs that draw diagrams for people to look at.
Those are nice, but they are pictures of the program at a moment in
time, and they are incomplete. The text is (in essence) not
incomplete. Even if we observe that it is still incomplete, for
example because we do not have a library source, the text is still
more complete than any other form.

Even systems where the diagrams generate code have this property.
Generally, the diagram only generates the shell of the program,
inside which we need to put text to represent the rest.
Alternatively, diagrammatic schemes that do allow representation of
all the logic have all turned out to be tedious, not easy to read
after all, and severely limited in what they can do.

The common element today, the one element that can do everything, is
text. We all recommend other diagrams in various ways, and surely
most of us draw them, sketch them, or toss around CRC cards. We've
been saying that in this thread for a month now.

And somehow, despite the fact that what we do satisfies us, it does
not satisfy you. With the greatest respect, I think that puts the
responsibility on you to solve your personal problem, either on your
own or by putting us in a situation where our methods do not satisfy
us, so that we can experience your pain.

> Any design can be codified as text. But except for programmers no
> other craftsman (or engineer or musician) would recommend the textual
> version over a more rich graphical/multi-dimensional version.

In the case of (almost all) programming, the text is a necessary,
final, human form. We are not producing a bridge or an audible song.
We are producing a textual computer program. This changes the value
of the text ... because we cannot get by without writing it.

And still we all recommend drawing pictures as needed.

> This unwillingness to actually discuss TDD (or any other practice) in
> a critical manner is what frustrates me most.

I am not aware of a discussion here of TDD in a critical manner. I
am aware of a bunch of people saying "it works fine for me, in
conjunction with these other practices like whiteboard diagrams,
conversations, tests, ..." ...

I am aware of you saying TDD is not enough for you, and that
programming in text causes you pain. Perhaps, if you really want to
discuss TDD "in a critical manner", we should get more specific.
What I would like to see, though I have no real hope of it, is a
specific example of some smallish problem and solution, worked out
in code plus diagrams your way, and in other people's ways, for
comparison.

Looking at your diagrams, they appear to me to have a fairly
substantial learning curve. I do not see that they offer me enough
benefit to want to undertake to learn them, because the tools,
diagrams, and knowledge I have seem to suffice rather nicely for me.

I think many of us here are in that situation. What we are doing
works for us. What we are doing does not cause us pain. We
understand that if what we were doing were causing us pain we would
be looking for something else. We understand that you feel pain and
therefore want something else. We do not understand why you feel
pain when you do what you //think is// what we do, and we suspect
that you aren't really doing quite the same thing as we do.

Once we determined that you were doing what we do, and saw you point
to some really good code, or some really good sketched diagram and
say "That, that right there. That causes me pain." we might better
understand.

Right now, what we do is satisfying us. We don't understand why you
are not satisfied.

Ron Jeffries
www.XProgramming.com
It is not the strongest of the species that survive, not the most
intelligent, but the one most responsive to change.  --Charles Darwin

--

-- 
You received this message because you are subscribed to the Google Groups "software_craftsmanship" group.
To post to this group, send email to software_craftsmanship@...m.
To unsubscribe from this group, send email to software_craftsmanship+unsubscribe@...
For more options, visit this group at http://groups.google.com/group/software_craftsmanship?hl=en.


Gmane