Life Cycles

--Originally published at Computer Systems Engineering

When we want to develope a program, the best thing we could do is follow this phases that we call program developement life cycle. This cycle consists of 6 steps:

  1. Problem definition
  2. Analysis
  3. Algorithm Developement
  4. Coding and Documentation
  5. Testing and Debugging
  6. Mantainance

1) The planning is the most fundamental part, we need to analize the problem, this is the key: focusing on defining the problem before thinking about the solution. It has to be very clear what are we  trying to solve, put boundaries to the issue, understand the problem and what the solution must or mustn’t do. Unfortunately, this is often the most rushed part for us young developers because we just want to start working right away and we throw a solution really quickly without taking our time to understand the problem that we have to resolve for the client.

2) On the next phase, analysis, we start defining the goals as functions for the program. This is when we link problem-solution, we also need to look into posible issues that could rise when meking the project. It’s in this moment that a Software Requirement Specification document should be created, but in reality as students, if the teacher doesn’t ask for it, who actually bothers to  make one?
giphy (7)

3) In the design phase we see more technical stuff like data flow, modules and the architecture of the problem solution overall, when we make this of course we need to take into account the things that were defined on the previous phases

4) Implementation is the phase we look forward the most (or at least that’s waht i think) because we start creating the solution and we can actually see progress. We see code being written as work being completed which is different then the previous

tenor (3)
tenor (4)
tenor (2).gif
in whis is a lot of analyzing and defining but not actually making the solution. The problem is that we depend on the previous phases for this one because otherwise we wouldn’t know what we are supposed to code. Along with coding we also need to document what we are doing but my (wrong) thought about that is:

tenor (3)

5) During testin we check if what we coded is actually solving the problem we are targeting and if it meets the requieremnts defiend previously. We check if the program is able to recieve certain inputs and if the outputs are the desired ones. We get rid of the bugs and make sure it is reliable.

tenor (4)

6) When we are done with the past 5 phases, the solution is ready to be deployed and when this is done we need to monitor how the program behaves while being used by the costumers and if any problem arrises we need to follow the cycle again and make sure to correct any mistakes in order to have a well functioning tool.

Overall, it’s fundamental to have a methodology to follow when developing anything for a team to have order and define and schedule tasks for the members to do. Also it is important because if we don’t do this king of cycle, we might find ourselves coding useless things without realizing until we take a step back to look at the problem and try to understand it. What this leaves me is: take your time in each step because you need the previous one done well in order to have the next one to also work, there is a dependency.

That’s it for life cycles.

tenor (2).gif

 

References: