Exists a step-by-step procedure for bottom-up design from the beginning of the first line of code?
Exists a step-by-step procedure for bottom-up design from the beginning of the first line of code?
I'm searching for a kind of design patterns,idioms, concepts with the buttom-up design approach.
For example:
I finished with the design and analysis cycle for a banking system. The requirements, features, uses cases and use diagramms etc. are ready made. (Top-down)
Now for the implementation phase I'm switching to the buttom-up approach to code the first feature (after writing the unit-test).
Here is the main question: Exists articles, books, links about a step-by-step process like refactorings (Kent, Fowler etc) for buttom-up design from the beginning of the first line of code?
Something like a decision graph.
Like implementing first variable -> method, functions, events etc. -> refactorings -> OO: first class, first object -> composition, inheritance, poly -> refactoring to patterns -> modules -> system, framework and so on.
I continue with the banking example to clarify it more:
My first question in the decision graph asks me:
Do you need a variable, data?
'Yes' - proceed to 2.
'No' - proceed to 6. (Because DB exists already for example)
What kind of type has it to be?
'For my resource it is money and I use int, because I decided to compute it with cent-units (performance decision)' - Make it int-type and give domain depentend name!
Is it a global var?
'Yes' - Make it static
'No' - proceed to 4.
'Yes' - Make it final and goto 6 (final can not be setted anymore)
'No' - proceed to 5.
Until I have the first variable and method, then it goes further to say that I should create the first class and refactor this var and method into it with the goal of OO-design.
And every new step proceed further up in the decision tree until I have a 'Best practiced'-system. Best maintainable, extensiable, encapsulated, performant. All concepts involved from the beginning 'til the end.
So you go more abstract until it fits the level of abstraction where you stop with top-down.
Sorry for this looooong post,
But thank you for reading
I'm searching for a step-by-step procedure from zero-code to system architecure.
– PriNova
1 hour ago
Design patterns are not concerned with project management, they're completely orthogonal matters.
– Dai
58 mins ago
1 Answer
1
There is no step-by-step procedure that will take you from zero code to a complete system architecture. What generally happens is that some set of requirements are gathered to determine what, if anything, needs to be written. This can involve talking with customers, thinking up ideas on your own or in a group, or comparing what competitors offer and what their strengths and weaknesses are.
You might think that once you have a set of requirements that you can then start coding. But the fact is that a) this leaves you with a long list of tasks that need to be done with no clear order in which to do them, and b) requirements are going to change either because your customers change or because you realize that the existing requirements are either insufficient, unrealistic, or beyond your expertise.
Applications are often separated into various libraries and modules that handle difference concerns. You might use a database to hold the data model. You'll probably use a UI framework, maybe with some sort of MVC layer to handle user input and output. You'll need other pieces that might not fall into well-known patterns. Some of these things can be designed in parallel, possibly by different people or teams. Or you might just randomly pick a place to start and start working there.
In 30+ years of professional programming, I've never seen anyone follow a step-by-step procedure for any program of any size and produce anything useful. An architecture is rarely thought up and then implemented. It often takes several iterations of trying things, seeing what works and where there are mismatches between pieces, or problems with speed, memory usage, or usability, and redesigning parts as you go. This is a multigenerational issue where you might have to release your product with some architectural problems that can only be cleaned up at a later date when you have the time and funding.
I agree with what you say. In my example I finished this design and analysis phase to a certain level/layer of abstraction. The next stage will be at some point of time the first iteration phase of implementing the features/requirements to hit the goal. Starting from concrete to a certain layer. The same like refractoring from procedural to OO-Design but at some lower-levels. I miss this piece of puzzle especially for beginners.
– PriNova
5 mins ago
By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.
It's unclear what you're asking. Are you asking if there exists a procedure for starting to write a new program?
– user1118321
2 hours ago