Agile Software development
Software development is like any other production process; it involves defined tasks to design, write, test and deliver code that generates an end result. There are a number of specialties in software development and these include:
- Applications Development which is problem solving-based and does not involve web application systems. This is a server-side desktop application language system designed to create applications that sit on operating systems.
- Systems Development is the designing and coding of background software that is linked to a specific operating system and used to support application development.
- Web Development is the design and creation of web-based applications and is graphic intensive with SEO text considerations.
Embedded Systems Development is to develop non-desktop/web/mobile software applications, these are dedicated applications found in computer systems such as car computers.
Apart from these four categories, there are a plethora of roles within the systems being developed, and these include algorithm writers, database managers, graphic content designers, and quality control testers as a few of the supporting roles.
Each role is critical for the performance of the final product and as such, it is key to have a proper project management system in place.
Agile was developed as an emergent project management system to counter the rigidity of Waterfall, which is a stepwise PM system. The waterfall is still used today, and is a comprehensive process, but not Agile. While Agile is a Waterfall derivative and relies on the stepwise process but manages it in a more adaptable environment.
Waterfall does not require client interaction within the process. A client will give a software development system the requirements, and on occasion will be asked about specific app performance during the process. Agile is more client intensive, where every module is designed with the client on point, and tested with the client’s approval before integration. According to It-Rate.co, the main difference between the two approaches is that Agile creates ready to use modules during the process, while Waterfall produces a finished product with all the modules at the end of the process.
The Agile Approach
The best way to describe the Agile approach is to describe how a project is managed in an Agile system.
Step 1: Concept- This is where the client and the development team sit down and discuss the application. Clients will always present what they want, while the software developer will always provide the client with what they need. There is a subtle difference between the two, where want is perceptual, it is a result, and need is a solution or method to reach want. As such, creating ready to use modules has an advantage, but in comprehensive systems, it can confuse the client. With this in mind, the concept stage defines the modules required to deliver the results. At the same time, a Gantt is created for PM, where the modules are broken down into creation tasks. Dependent on the type of application, you will see how the system aligns itself to a comprehensive approach rather than a molecular one.
Step 2: Design- In this stage, the module creation tasks are assigned to the teams. Every team will include anywhere from 3 to 7 people, and each one has a specific task. The main tasks involved will be code writing, graphic design, testing, and client approval. In this way, every stage of the process is authorized by the client and the team can then move onto the next module. Database driven systems are built differently, where the database has to be designed in full before the modules can be created. The reason for this is to assure that the field and relations and the queries do not require database changes further down the production process. After the design process has been created and approved, the teams assigned will begin development.
Step 3: Develop and Test- In this stage the teams interact and develop together both the code and the GUI, essentially creating a complete module as part of a modular integrated system. As the code is created, it is tested, and once complete can be used in other applications since it has been proven to work. This helps speed up development when certain processes are used in multiple modules.
Step 4: Integrate and Deliver- In this stage, all the modules are integrated into one working package and tested before the UX. Once the client has gone through the whole system and has been trained in the system, the developers have completed their tasks and remain on board for upgrades and maintenance.
The Agile Difference
Agile is an umbrella or framework that recognizes teamwork and collaboration as the main focus for success. As such, Agile is a proactive and “agile” system that adapts and evolves as the development progresses.
The downside of this system is that it will take longer to develop a complete result since the client interface and the constant evolution of the product hinder completion. On the other side of the coin, the client gets exactly what they want as an end product.
Scrum Software development
Scrum is part of Agile, where Agile is a software development project management system used to manage software development projects. To understand scrum, you must first understand what is Agile. So this article will present Agile and the Scrum that is inside it.
A scrum is a term taken from Rugby; it is when a group of team members come together and attack a situation. The scrum in Agile is the creation of teams that work on specific modules, and interact with each other, designing, developing, testing, and delivering modules and snippets of code with client approval at all stages.
A scrum, therefore, is a term used for a team of developers working together within an Agile environment.
A module or segment of development is called a sprint; this is a time-dependent task, where outcomes are the goal set within a time constraint. In other words, a scrum will work in sprints, where outcomes define sprints success. In comparison, most other project management systems in software development work according to the ETVX principle, which defines each task with Entry criteria, Task definitions, Validation criteria, and Exit criteria. This is not time constrained but task constrained.
A scrum is also a social exercise where all the team members are considered equal in the overall success of the operation, and each team member must be proactive and provide input that will empower the team to reach their goals ahead of time and in full effectivity. A scrum does have managers. However, these are not as a conventional role. There is a Scrum Master, this is more of a coach that is used to urge and push the team to succeed through nurturing experience, and then there is the Product Owner (PO) who is the clients face in the scrum, and it is the PO that defines the features and characteristics of the product being developed by the scrum.
As mentioned above, scrums work in sprints, and these are time-based activities. As such, the common time frames are either a month or two weeks. The scrum is given tasks that are made to be fulfilled within a time frame, rarely are tasks made to be too intensive, since the end goal is to provide a quality code or module for use in the entire project. A sprint will start with a planned meeting, and the scrum will decide how many components of the project they can commit to delivering within the sprints. Each sprint will deliver a coded and tested instance that is ready for integration into any other module that requires it.
Every sprint day starts with a scrum meeting where all the teams are present, that includes the scrum members, the Scrum Master, and Product Owner. A daily sprint meeting is time-limited to 15 minutes.
When a sprint is concluded, the scrum team in full compliment meet again to review and demonstrate what they have done and provided all stakeholders with proof of work and success.
The scrum model is used to synchronize and time box all activities, providing a much easier task management control for complex projects that use more than one scrum for delivering a project to a client.
The Main Scrum Components
The main component of a scrum is the product. The product is only considered to be complete if it is a stand-alone code or module that has been proven through test validation. As such, the product can be used anywhere it is required.
The daily meetings are core components for placing all team members on the same page as to where each team member is located within the development process of the sprint.
The sprint backlog is a list of scrum tasks that have yet to be completed and is used as the sprint burndown checklist, where progress is shown in terms of tasks needed to complete the sprint.
The progress report generated by the daily meeting is used by the project managers to review their overall project progress.
The closing meeting, where the product is shown and shipped off for integration acts as a check-off an item on the project control board (Gantt) and provides the project manager with an updated status of the projects progress.
Agile is about teamwork; it is about creating a project structure but allowing the content of the structure to be fluid and change as the client progresses with the team during development. It is a popular system and is applicable in many instances from small projects that have three collaborators (client, developer, and manager) to complex projects with multiple teams working on varied modules. Agile is not one system or method but is a conceptualization of how to work within project management structures.
Scrum is a methodology used in Agile; it is not the only methodology used but one of them. Scrum is only good for multi-task projects that require a number of scrums to deliver a complex integrated project. The minimum member of scrum members without the Scrum master and PO should be three. Therefore, the actual minimum scrum number in a meeting will be 5.
The Scrum master’s job is to focus the team on delivering the sprint on time and to protect the team from distraction. The PO is the chief designer and may change objectives during a sprint based on interim outcomes or client decisions.
The bottom line is that Scrum is a system of software development management that allows for a time framed contributive processing of incremental units within an overall Agile environment.