CMPS 262: Advanced Programming
Software development is hard, especially in larger groups. There has to be some process or some organization such that the software under development will be delivered on time, works, and is relatively bug free. From a historical perspective, the waterfall development model was the first major widespread development process. There are several stages, requirements, design, implementation, verification, and maintenance that are executed in order once. This is also a major drawback and the reason why the waterfall model has declined in popularity: it is very hard to design everything upfront since the implementation and verification stages often provide valuable new insights. In other words, designing and implementing software is a learning process.
The software development can be modified to account for this. Something that is really powerful is to develop a prototype first, from which lessons are drawn for the next version of the software. This also means that software development becomes iterative. Currently the most popular iterative approach is known as agile development, where requirements and solutions evolve through the collaborative effort of self-organizing cross-functional teams. It is based on the Manifesto for Agile Software Development. We will look at different software development methods and their tradeoffs.
- Describe the tradeoffs for different development processes
- Follow a prototype based and iterative development process
- Apply the software development process in a team context
- Read about the different software development processes
- Read this overview on agile software development
- Read this detailed article about Agile software development
- Discussion Board
- Programming Project
For Further Study
- Read more about Agile on Wikipedia