Send Close Add comments: (status displays here)
Got it!  This site "robinsnyder.com" uses cookies. You consent to this by clicking on "Got it!" or by continuing to use this website.  Note: This appears on each machine/browser from which this site is accessed.
Iterative stepwise refinement
by RS  admin@robinsnyder.com : 1024 x 640


1. Iterative stepwise refinement

2. Iterative
The term iterative means over and over again, as in repetition. Repeat 5

3. Stepwise
The term stepwise means in stages, as in going up the stairs step by step. Stepwise refinement

4. Refinement
The term refinement means slowly progressing, as in towards a goal.

Refined sugar is sugar from which "impurities" are removed.

Sports teams refine their techniques as the season progresses.

5. Stepwise refinement
The term iterative stepwise refinement refers to making progress towards a goal in stages. Book: Systematic programming: an introductionStepwise refinement (Wirth, 1971) implements a solution bottom-up in steps as a progressive elaboration of essential parts of the solution. As part of risk avoidance, stepwise refinement can allow certain decisions to be delayed until they are necessary.

Information sign More: Niklaus Wirth
What is stepwise refinement in terms of solution implementation? Give a specific example in terms of computer program implementation.


6. Design
Programs are designed using systems analysis and design techniques.

Choices:

7. First iteration
First iteration: develop a working prototype

Automate the entire process so you can come back to it.

8. UML
UML (Unified Modeling Language) is an object-oriented visual modeling language for systems design, analysis, and implementation.

9. OOP
An OOP (Object Oriented Programming) language is useful for use with UML.

10. Implementation
Program are implemented using iterative stepwise refinement.

11. Not a good way
Wrong way: Type a lot of text into a program and then try to get it working.

Is this how many beginning programmers start a program?

Do they then expect to get help using a bad programming methodology?

12. Better way
Right way: Start with a minimal working program, add little pieces of code, in stages, such that after each small change, the program still compiles and does something. Each stage gets closer to the final working program.

This works from programs of a few lines to programs consisting of thousands of pages of code.

It is a very scalable way to program.

13. Help
What happens if you come to me with a large piece of code that does not work?

If you come to me with a large piece of code that does not work, I will ask to see the most recent version that did work.

I will usually ask you to go back to that previous version and work from there until you find the problem.

That's what I do. That's what most programmers do. You should not use techniques that do not work well and that most programmers do not use. One way to iteratively refine your program is as follows. That way, you can easily go back to a previous version.

14. Version control
A sophisticated version control system will manage this for you. In a simple system, you need to manage this.

What is Microsoft's version control system?

Microsoft's version control system is Visual SourceSafe.

15. Iterative refinement
Why is iterative refinement used?

Otherwise, you can spend/waste a lot of time trying to get a program working.

16. Programs
Programs are not typed in from beginning to end. Programs are developed in stages.

An artistic masterpiece is not painted from upper left to lower right.

A program is not to be read from top to bottom, textually.

17. Builds
A build is a compilation of the software system that results in an executable program.

A compiler compiles one piece of code (in a file) from source code to object code.

A build compiles many pieces of code (in many files) from source code to object code, and links them together such that the entire software system can be run.

18. Help about
Most "Help", "About" screens show the build number.

Usually, an IDE (Integrated Development Environment) will have an option to automatically increment the build number every time that the project is compiled.

19. Microsoft
To keep projects from getting bogged down, Microsoft uses daily builds.

The daily build attempts to minimize the problems of getting a large amount of code working. It was working yesterday, so it should work today. Windows 2000 was a few years late, but build 2195 being sent to manufacturing in December, 1999. Microsoft likes to have at least one build done every working day, for their sync and stabilize software development strategy, so this took a few years.

No one wants their code to "break" the build.

If your part of project causes the build to fail, or not work properly, you usually get to stay late that day.

Briefly explain the Microsoft sync and stabilize approach to software development and how it compares to an iterative and incremental software development process.

20. End of page

by RS  admin@robinsnyder.com : 1024 x 640