$\require{cancel}$
The Software Development Process
- Programming is part of the software development process.
- We will look at parts of this process through the semester.
- You will study this topic in far more detail in Senior Project and other classes.
- The Wikipedia article is a good introduction.
- Ya, it is Wikipedia, but it is OK.
- What we do in this class is very primitive
- This is an evolving thing, we are still learning.
- But we need to be aware of the process.
- The basic idea is
- Problem Specification
- Listed as Requirements gathering and analysis.
- What is the problem we are solving?
- What is the input?
- What is the output?
- What other constraints exist (computer usage, performance, ...)
- We will need to do most of these things this semester.
- Planning and Design
- How will we solve the problem? (develop an algorithm)
- We will need to do this part this semester.
- What is the timeline, what parts need to be done first?
- What resources will be needed? (programmers, hardware, ...)
- Development
- Turn the design into code.
- This is mostly what we will be doing this semester.
- Testing and quality assurance
- Does the implemented code do what it is supposed to?
- You will need to do this for the next 15 weeks.
- Deployment and implementation
- Actually put the code into use.
- Integrate it with other systems.
- Train the users
- This will not be a concern for us this semester
- Maintenance and support
- Fix bugs that occur.
- Fix security holes
- Supporting users
- In 1956 Herbert Benington introduced a version of this called the Waterfall Model.
- This is a much maligned method, but it works to illustrate the process.
- And it is probably what you will do for this semester.
- There are more modern methods, but that is for later.
- In the basic waterfall method, tasks flow from the first step to the last.
- In the modified method, you might move back to a previous task.
- (From Dale, Programming and Problem Solving with C++)
- We have used the word algorithm several times.
- An algorithm is a set of instructions to solve a problem in a finite amount of time.
- Note this is not necessarily a program, altho a program is an algorithm in a specific language.