In computer science there is an important concept Software Development Life Cycle (SDLC). This describe the process for creating and maintaining a software system or an application.
Many developers are study a computer language but do not pay attention to this subject. This is not a trivial matter and can influence the program quality and team productivity.
To research and be aware of SDLC is very important for a developer before working into a programming team. Even open source projects require basic knowledge about it.
In general there are several standard steps for building an application. These steps are repetitive. Therefore application development process is cyclic. Most basic process has at least following steps:
Any software application has a life-cycle. If the life cycle is planned and documented then the application is considered a project. Projects have other parts not only a life cycle.
A project describe the requirements, the resources and the planning. To build a project there is an entire branch of software development that is referring to Software project management.
Project management is about planning and managing the resources for the project. It is the decision process that is part of planning. Usually a project has a project manager or project owner. This person will supervise all the steps in the development cycle.
There are many software development models and methods that are available in computer industry. It is a choice to decide what method to use. This may be crucial in the success or failure of a project.
- Waterfall model
- V model
- Incremental model
- RAD model
- Agile model
- Iterative model
- Spiral model
I will focus on 2 models: Waterfall model and Agile model.
In the waterfall model the steps are unique. This is a linear model not repetitive.
Every step has an unknown length. During each phase we can have delays and blocking issues that need time to be resolved. Customer is involved only in the first step and in the last step.
On February 13, 2001, at a snowboard ski resort in the Utah, seventeen people met to talk, ski and relax. What emerged was the Agile Software Development Manifesto:
We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:
- Individuals and interactions over processes and tools;
- Working software over comprehensive documentation;
- Customer collaboration over contract negotiation;
- Responding to change over following a plan.
That is, while there is value in the items on the right, we value the items on the left more.
In agile model the customer is involved in all steps of software development. The customer is represented by a product owner that will take part into all Agile meetings and take part into decisions.
In agile steps are repeated and not unique like in watterfall model. There is a period of 2 weeks for every development cycle that is called a sprint period. The process can be represented like this:
In agile organization there are several specific roles:
- Scrum Master – organize scrum meetings;
- Product Owner – negociate with the customers;
- Agile Coach – train developers for agile;
One important characteristics of an agile team is the lack of roles. All team meber are software developers and that’s it. We do not have a front end developer, back-end developer or database developer. Also we do not have an architect or a tester.
Developers work together, learn from each other and can do any task. Agile teams can have a permanent Scrum Master that organize and moderate the meetings. Most of the time Scrum Master is one of the developers who have the required training.
An agile sprint starts with a planning usually on Monday morning. The planning can take 2 hours up to 4 hours. On this meeting Project Onwer, Scrum Master, Developers and eventualy a Coach are presents.
During the planning the project is split into Epics and Stories. An Epic can have multiple stories. Every story has a difficulty level decided by the team and is assigned to one developer.
An agile team has a short meeting of 10 to 30 minutes every day in the morning that is called the scrum meeting. During this meeting developers will collaborate and will give a short status report to each other. Project owner is not part of this meeting. Only scrum master and the agile team.
A key feature of the agile model is that after each cycle there will be a software release. The customer has a decision to make. Is this going to continue or we change the plan? This decision is during sprint review that can take up to 4 hours and is the last meeting in the sprint. On this meeting Product Owner, Scrum Master and Developers must be present.
See also: Agile Data Model