With the team at NoFlow going public with an early beta I have had a chance to further develop some ideas that were previously just cloudy thought bubbles.
Assuming that the development team is morphing into a multidiscipline team of logic designers and component programmers then the question is where does one begin when there is an empty pallet? This is a particularly difficult question when the designer needs building blocks to connect and when the programmer needs requirements in order to construct the components. The chicken and the egg argument has never been so clear.
In my vision I see that everything is made up DNA. There is a network DNA and a component DNA. Depending on signatures; instances of each can connect and interact. (in a very, high school, biomechanics way). Therefore, the designer can layout the network using very basic component and pathway definitions; and later refine the network with more precisely named channels and add individual requirements for each component in order to help the component programmer.
The empty components are put into a work queue that the component programmers work from. The programmers take the requirements, implement them and the necessary test cases. I, personally, prefer that the components limit the usage of conditionals and loops because that makes them harder to test. I do not limit the use of 3rd party libraries because I expect that those tools have been adequately tested. (life experience suggests that this is wrong but at least I’m taking a stand with several ways out)
So that sums it up. (1) Simple point of entry to describe the work. (2) Simple way to implement and test the details. (3) Simple way to refine everything.
PS: One thing that I like about the NoFlow project is that they are pretty close. The intent of the NoFlow project is to map the application network, however, the interface is dependent on the existence of the components. So somewhere in there they designer and programmer already collaborated to build components that were later assembled. To the contrary I want to capture the design before implementing any code or engaging programmers.