Software Development Processes

Diving into a project with only an idea in mind is usually a bad idea. I get that sometimes the unexpected events and things that come out of nowhere are the best. However, that’s not the tendency. You usually want to plan what you want to do. Personally, I’m not very fond of the idea, but it really is important to plan.

When you’re planning for a software engineering related project you can usually follow the general convention of software development process. It actually makes sense, and it’s quite helpful to separate the concepts before starting to work. There’s more than one though. The basic ones are the Prototype method, the Waterfall method, and the Spiral method. The waterfall method is discuss in another of my blogs, so I’ll focus in the spiral and prototype method.

The main idea the prototype system is creating prototypes, or incomplete pieces of the software being developed. It follows 4 main principles:

  • Prototyping is not a standalone, complete development methodology, but rather an approach to try out particular features in the context of a full methodology.
  • Attempts to reduce inherent project risk by breaking a project into smaller segments and providing more ease-of-change during the development process.
  • The client is involved throughout the development process, which increases the likelihood of client acceptance of the final implementation.
  • While some prototypes are developed with the expectation that they will be discarded, it is possible in some cases to evolve from prototype to working system.

The spiral development is something that I’ve personally used. The name of the process describes a lot of it. It breaks down the process like in the waterfall method. It is broken down in four ways, and a repeated along the process of the development:

  1. Determine your objectives
  2. Identify and resolve risks
  3. File:Spiral model (Boehm, 1988).svg
    and Test
  4. Plan the next iterationFile:Spiral model (Boehm, 1988).svg

It follows the next principles:

  • Focus is on risk assessment and on minimizing project risk by breaking a project into smaller segments and providing more ease-of-change during the development process, as well as providing the opportunity to evaluate risks and weigh consideration of project continuation throughout the life cycle.
  • “Each cycle involves a progression through the same sequence of steps, for each part of the product and for each of its levels of elaboration, from an overall concept-of-operation document down to the coding of each individual program.”
  • Each trip around the spiral traverses four basic quadrants: (1) determine objectives, alternatives, and constraints of the iteration; (2) evaluate alternatives; Identify and resolve risks; (3) develop and verify deliverables from the iteration; and (4) plan the next iteration.
  • Begin each cycle with an identification of stakeholders and their “win conditions”, and end each cycle with review and commitment.