The Software Development Process

Software Development Processes are the basic models that give us a rough guideline on how to organize all of the work involving the creation of a software product.

All of the methodologies are based on the Software Development Life Cycle.

Paul Downey  Development process
Paul Downey
Development process

Here are some of the main approaches:

WATERFALL ( read a bit more… )
A linear model that follows a sequential flow, work is split into many phases and development happens first in one phase, gets completed and then moves to the next phase, the phases don’t overlap.

This was the first approach invented, it is very straight forward and easy to understand. This process works best for projects that do not change requirements in late stages of development because it is very hard to make changes and implement new features after early stages.

PROTOTYPING
This model focuses on creating protoypes for the client so he/she gets a better idea of how the requirements they gave are being implemented. This is a good model for testing and reduces the misunderstanding gap between developer and client.

Some types of prototyping methodologies are:
-Throwaway Prototyping
-Evolutionary Prototyping
-Incremental Prototyping

Although it is better for user involvement it can also lead to confusion over the protoypes and the final product.

SPIRAL
This method involves combining design and prototyping. This model is used mostly for expensive and complex projects, these project is composed mostly of small waterfall models, the phases go in the same order, and then prototypes are built and simulated.

This model is good for budget estimating and issue discovery at early stages of development, but it also involves a lot of time and high costs and has quite limited re-usability.

AGILE or EXTREME PROGRAMMING (read a bit more… )

OTHERS

-Lightweight Methodologies
-Rapid Application Development
-Code Continue reading "The Software Development Process"

Waterfall Method Basics

The Waterfall Model was the first Software Development Process ever created. It is a linear model of the life cycle development model and uses no iterations, this makes it very easy to understand and use. This method requires every phase to be complete before being able to move to the next phase, there can be no overlapping. The success of this model relies on very good planning and documentation.
This model is kind of the opposite of the Agile Model.
The phases:

img10

1. Requirement Gathering & Analysis: Ask the client what their needs and expectations are.
2. System Design: Requirements for the System and Hardware specification to define overall architecture.
3. Implementation: Program is developed in small units and tested (Unit Testing).
4. Integration and Testing: All units are put together and tested for faults and failures.
5. Deployment: After functional and non functional testing, the product is delivered.
6. Maintenance: Regular updates and issue resolving.

This model is called the waterfall method because the each phase cascades into the next one and there is no overlapping.
Advantages: Easy to understand and manage because of how specific each phase is. It allows a lot of control and departmentalization, scheduling and deadlines because of its strict order.
Disadvantages: It allows for very little revision and correction, it is very hard to go back to a previous stage after it has been completed. If documentation is not good it is very hard to maintain the product. This method has high amounts of risk and uncertainty and does not allow for flexible requirements.

Here is a little video on Agile vs Waterfall for better understanding.

Sources:

http://www.tutorialspoint.com/sdlc/sdlc_waterfall_model.htm

Waterfall model

Waterfall.png

The waterfall model is a popular version of the systems development life cycle model for software engineering. Often considered the classic approach to the systems development life cycle, the waterfall model describes a development method that is linear and sequential.

The advantage of waterfall development is that it allows for departmentalization and managerial control.

The disadvantage of waterfall development is that it does not allow for much reflection or revision. Once an application is in the testing stage, it is very difficult to go back and change something that was not well-thought out in the concept stage.

The Waterfall method makes the assumption that all requirements can be gathered up front during the Requirements phase (Kee, 2006). Communication with the user is front-loaded into this phase, as the Project Manager does his or her best to get a detailed understanding of the user’s requirements. Once this stage is complete, the process runs “downhill” (Hoffer, et al, 2008).

The Design phase is best described by breaking it up into Logical Design and Physical Design subphases. During the Logical Design phase, the system’s analysts makes use of the information collected in the Requirements phase to design the system independently of any hardware or software system (Hoffer, et al, 2008). Once the higher-level Logical Design is complete, the systems analyst then begins transforming it into a Physical Design dependent on the specifications of specific hardware and software technologies (“Software Development Lifecycle”, n.d.)


What about the waterfall method?

Briefing:

Known as linear-sequential life cycle model, the waterfall method was the first process model to be introduced. Basically, no further phase can begin if the previous one hasn’t finished. This means that phases never overlap each other.

Model design:

To ensure the success of the project, the waterfall method was the first SDLC to be used. As a Software Development Life Cycle, it divides the process into phases, where the outcome of each phase works as an input for the next phase.

sdlc_waterfall_model

1. Requirements needed for the software to be developed.

2. Requirements are studied, and designing a system.

3. Inputting the design of the system, programs (or units) are created

4. All units are combined into a single system to test the software system.

5. The product is released into the market for customers to buy.

6. Release patches to fix issues in customers systems, enhance the functionality of the product.

Greatest benefits:

It is very simple to use and document. Also, each phase has a specific product and review process. Clearly defined objectives, goals, milestones, purposes, etc. Processes are easily arranged. Each phase is completed one at a time, which ensure success for that specific phase.

References:

  1. http://www.tutorialspoint.com/sdlc/sdlc_waterfall_model.htm

Waterfall method

Waterfall methodology is one of the first Software Development Processes, it was firsts used in hardware but now it has moved to software.

The steps of this methodology are followed in order one after another after checking that the previous steps are completed. The steps are:
  1. System and software requirements: captured in a product requirements document.
  2. Analysis: resulting in models, schema, and business rules.
  3. Design: resulting in the software architecture.
  4. Coding: the development, proving, and integration of software
  5. Testing: It consists on debugging.
  6. Operations: the maintenance
Imagine a waterfall with different levels, here is an ilustration:


Now imagine that each level is a step and the development course is the water. It can only flow in one direction, passing through each level until it reaches the end that is the maintenance.

I think that watefall methodolgy is one of the simplest one because it follows the normal software lifecycle. You think about the desgin, implement it, test it and then do the maintenace. The good part of the waterfall methodogy is that it takes it time to do well on each steps. Contrary to other methodogies that focus only on the developing, waterfall methodology cares about what is done before the coding because thats the plan and documentation you are going to follow. 

Now enjoy the music:



source:
https://en.wikipedia.org/wiki/Waterfall_model
http://istqbexamcertification.com/what-is-waterfall-model-advantages-disadvantages-and-when-to-use-it/

Waterfall method

Waterfall methodology is one of the first Software Development Processes, it was firsts used in hardware but now it has moved to software.

The steps of this methodology are followed in order one after another after checking that the previous steps are completed. The steps are:
  1. System and software requirements: captured in a product requirements document.
  2. Analysis: resulting in models, schema, and business rules.
  3. Design: resulting in the software architecture.
  4. Coding: the development, proving, and integration of software
  5. Testing: It consists on debugging.
  6. Operations: the maintenance
Imagine a waterfall with different levels, here is an ilustration:


Now imagine that each level is a step and the development course is the water. It can only flow in one direction, passing through each level until it reaches the end that is the maintenance.

I think that watefall methodolgy is one of the simplest one because it follows the normal software lifecycle. You think about the desgin, implement it, test it and then do the maintenace. The good part of the waterfall methodogy is that it takes it time to do well on each steps. Contrary to other methodogies that focus only on the developing, waterfall methodology cares about what is done before the coding because thats the plan and documentation you are going to follow. 

Now enjoy the music:



source:
https://en.wikipedia.org/wiki/Waterfall_model
http://istqbexamcertification.com/what-is-waterfall-model-advantages-disadvantages-and-when-to-use-it/

Software Development Life Cycle

In this world, things tend to behave as cycles. We have a new president every 6 years, which it seems, does no difference, but we go through the same process. Every year we start with great promises, and as soon as time goes, we forget them.

Software development is not an exception. Why? Because even the best developed program can fail, not because it’s bad, but because people’s needs change. This scheme tries to generalize development in general: not focusing on details such as roles, time lapses and more. Instead, it breaks software development into 5 simple steps (some sources believe 6 or even 7):

  • Planning: What do you need? How will you develop?
  • Design: Are we using NoSQL this time? Is RoR better than Django? Is a binary tree better than a hash table?
  • Implementation: Coding, coding, coding…
  • Testing: Not only PEBCAKs tend to happen. Let’s prevent the ones in our side.
  • Evolution: This might be the hardest step to explain. Basically, software prepares for the next cycle.

One can notice this pattern in the waterfall method such as in agile development.

flickr photo by Sam Howzit https://flickr.com/photos/aloha75/7778968110 shared under a Creative Commons (BY) license
flickr photo by Sam Howzit https://flickr.com/photos/aloha75/7778968110 shared under a Creative Commons (BY) license

Software Development Processes

A software development process or life cycle is a structure imposed on the development of a software product. There are several models for such processes, each one of them describing an approach to a variety of tasks or activities that take place during the development process. There are different points of view depending on the customer’s and project needs.

For example, the Capability Maturity Model, is focused on how mature the software is. Then there is the agile development process, which I described here. Another one is called the waterfall process, which you can read in here, too.

There are tons of SDPs that you can use in order to successfully complete a project. You can choose between them by establishing priorities depending not only on your customer, but also taking into account you and your team’s working style.