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. This may be an interview question and the correct answer can be very important for your future career,
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.
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 Owner, Scrum Master, Developers and eventually 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.
There is no train but this is a metaphor used in agile to specify a special meeting on larger companies where many smaller projects can be released at a particular date together into a system or product. The train is going away if you are ready or not. So if a smaller project or epic is not ready to be integrated into the larger project it is left behind for next release.
For release train every team is preparing a presentation to report epics that are included in the releases and epics that are not finished. During the release train a new meeting is prepared where teams work together to prepare a plan for next release. They will present this plan to the other teams int the release planning meeting.